閱讀99 返回首頁    go 阿裏雲 go 技術社區[雲棲]


CSS 有趣的邊框

今天看到一篇文章,是利用CSS邊框來做折紙效果,感覺很有意思,於是就對CSS的border研究了一下,發現還真有一些好玩的用法。

1.border折紙效果

首先是HTML代碼,為了簡單,就一個div:

<div >
	折紙效果
</div>
然後我們為它加上邊框效果:

.note{
	display:block; 
	margin:100px auto;
	width:100px;
	height:100px;
	background:#ff0;
	border:1px solid #000;
}
這是最簡單最醜的邊框效果了,看起來像這樣:

果然邊框太細了看不到細節,我們把邊框設粗一點,然後把每個方向的邊框顏色改一下:

.note{
	display:block; 
	margin:100px auto;
	width:100px;
	height:100px;
	background:#ff0;
	border-width:10px 10px 10px 10px;
	border-color:#aa0 #f0f #512 #a21;
	border-style:solid;
}
效果如下:



瞬間產生3D效果了有木有!我們繼續把邊框設粗,然後把容器的height設為0:

.note{
	display:block; 
	margin:100px auto;
	width:100px;
	height:0px;
	background:#ff0;
	border-width:50px;
	border-color:#aa0 #a21 #740 #a21;
	border-style:solid;
}

瞬間產生信封的效果了有木有!我們繼續把width也設為0,效果像這樣(代碼就不貼了):


是不是有一種金字塔的感覺呢!好了,就玩到這裏,之前說了做折紙效果,現在想想應該是SO EASY了,先看效果圖:


note還是原來的note,隻是給note加了一個before偽元素,設置偽元素寬度為0,內容為空,利用邊框做出三角形效果,然後通過絕對定位到右上角,最後加上陰影效果就ok啦。代碼如下:

.note{
	display:block; 
	margin:100px auto;
	width:100px;
	height:100px;
	background:#ff0;
	padding:50px;
	position:relative;
}
.note:before{
	content:"";
	width:0;
	border-color:#fff #fff transparent transparent;
	border-style:solid;
	border-width:20px;
	position:absolute;
	top:0;
	right:0;
	
	-webkit-box-shadow:-2px 2px 2px rgba(0,0,0,0.3);
	-moz-box-shadow:-2px 2px 2px rgba(0,0,0,0.3);
        box-shadow:-2px 2px 2px rgba(0,0,0,0.3);
}
原來的HTML代碼完全沒變,隻是更改了CSS樣式而已,完全不影響語義化。

另附上CSS 中 border的屬性:


另外,border-style本身也有支持3D效果的屬性,以下是border-style的可選值:


2.升級到CSS3

CSS3中增加了圖片邊框border-image,圓角border-raduis,多顏色邊框border-color。圓角用的比較多,多顏色邊框可以做到邊框顏色漸變效果(目前隻有FF30支持,兼容性不好),border-image效果很讚,能九宮格切分圖片,做到邊框尺寸自適應,學習參考:https://www.w3school.com.cn/cssref/pr_border-image.asp

總結:平時布局的時候都有一個常用的寫法,但是還有很多屬性值我們沒有用到,去發掘一下的話可能會有意想不到的驚喜!大家要是還有邊框的有趣玩法,歡迎分享~~


最後更新:2017-04-03 05:39:47

  上一篇:go java語言學習002_麵向對象編程思想
  下一篇:go $*和$@之間區別代碼分析