針對之前遇到過的一些特殊樣式的實現,我今天做個總結,目的有二:一是將這些方法記錄下來,以便將來需要用到時查找使用。二為將這些大神們智慧的結晶發揚光大,讓廣大前端程式猿們能夠少走彎路。此貼為更新帖,以後若有好的css樣式技巧,小哥我會不定期更新。 一、塊元素水平垂直居中(特別鳴謝:鑫生活。鑫哥出品必屬 ...
針對之前遇到過的一些特殊樣式的實現,我今天做個總結,目的有二:一是將這些方法記錄下來,以便將來需要用到時查找使用。二為將這些大神們智慧的結晶發揚光大,讓廣大前端程式猿們能夠少走彎路。此貼為更新帖,以後若有好的css樣式技巧,小哥我會不定期更新。
一、塊元素水平垂直居中(特別鳴謝:鑫生活。鑫哥出品必屬精品!小弟膜拜)
對於一個塊元素的水平垂直居中,水平居中的方式不必多說,一般用margin:auto;等方法即可實現。而對於垂直居中,儘管有vertical-align:middle屬性,但是由於其只適用於table標簽中,而table標簽效果不好控制的特點大家都懂。。。因此,我們一般常用的方法是:將子級元素設定inline-block屬性,並將其行高屬性:line-height的值設定為與父級元素相同的高度。在這裡,我想推廣一種方法,源自“鑫生活”
http://www.zhangxinxu.com/wordpress/2013/11/margin-auto-absolute-%E7%BB%9D%E5%AF%B9%E5%AE%9A%E4%BD%8D-%E6%B0%B4%E5%B9%B3%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD/
代碼如下:
html方面:
<body>
<div class="big">
<div class="small"></div>
</div>
</body>
css方面:
.big{
width:500px;
height:500px;
border:1px solid red;
position:relative;
}
.small{
width:200px; /*自己元素寬高可任意設定 */
height:200px;
position:absolute;left:0px;top:0px;right:0px;bottom:0px;
margin:auto;
}
在上述代碼中,子級元素的寬高是任意設定的。都可以實現此元素在父級元素中水平垂直居中顯示。在父級元素中,我們用了position的relative屬性。在子級元素中,我們將它的position屬性設定為absolute後,將四個方向的值都設定為0px。並且讓他的margin值自適應。從審查元素中我們可以發現,如此設定後,子級元素的margin區域會充滿整個父級元素,並且左右margin值是相等的,上下margin值亦如此。但是這並不符合,當代碼數值有衝突時,優先解析top值及left值的規律。因為究竟是什麼原理,小ge也不得而知。。如果有大神知曉,還望不吝賜教。但是這不失為一種好的辦法,希望大家活學活用。
二、after偽類清浮動
通常我們在對塊元素設浮動以後,需要對其清浮動,以免佈局混亂。常見的清浮動方法主要有兩種:1)、在後面的子元素css中寫"clear:both;"。2)在浮動元素的父級元素中寫"overflow:hidden"。現在,我們可以用第三種方法,利用after偽類寫一個浮動屬性,這樣只要有需要清楚浮動的地方,我們就給其父元素加上這樣一個浮動屬性就可以了。
代碼如下:
.clearfix:after{
content:"";
display:table; /*利用table不允許浮動的屬性來清除浮動。也可以替換成"overflow:hidden;"*/
clear:both;
}
這種方法有個好處,即可以將其寫入reset中,之後可以多次調用。