CSS之各種居中
本博客討論居中情況設定為 總寬度不定,內容寬度不定 的情況。(改變大小時,仍然居中)。
特別說明:在元素設置 position:absolute; 來設置居中效果時,除去博客下介紹的css3方法外,還可以使用負的 margin 來居中,這樣解決了兼容性的問題,但是只適用于寬高已知的情況(因為負的偏移量為元素寬高的一半)。寬高改變時,不再是居中效果。
在這些布局中的子元素,因為其屬性設置,都默認為內容寬度。
本博客所有居中的例子,只討論css的實現,html代碼統一如下:
<div class="parent">
<div class="child">demo</div>
</div>1. 水平居中
1.1 inline-block 配合 text-align
.parent{
text-align: center;
}
.child{
display: inline-block;
}優點:兼容性非常好,只需要添加只需要在子元素的css中添加 *display:inline 和 *zoom:1 就可兼容到IE6、7;缺點:內部文字也會水平居中,需消除影響。
1.2 table 配合 margin
.child{
display:table;
margin: 0 auto;
}優點:設置特別簡單,只需對子元素進行設置,支持IE8+,需支持IE6,7時,可更換子元素為表格結構。
1.3 abasolute 配合 transform
.parent{
position:relative;
}
.child{
position:absolute;
left:50%;
transform: translateX(-50%);
}優點:居中元素不對其他元素產生影響。缺點:CSS3新屬性支持IE9+,低版本瀏覽器不支持。
2. 垂直居中
2.1 table-cell 配合 vertical-align
.parent{
display: table-cell;
vertical-align:middle;
}優點:設置簡單,只需對父元素進行設置,兼容到IE8+,需兼容地版本瀏覽器時,可更換 div 為表格結構。
2.2 absolute 配合 tranform
.parent{
position:relative;
}
.child{
position:absolute;
top: 50%;
transform: translateY(-50%);
}優點:居中元素不對其他元素產生影響。缺點:CSS3新屬性支持IE9+,低版本瀏覽器不支持。
3. 水平+垂直居中
3.1 inline-block 配合 text-align 加上 table-cell 配合 vertical-align
.parent{
display: table-cell;
vertical-align:middle;
text-align:center;
}
.child{
display: inline-block;
}優點:綜合前兩中方法,兼容性好!支持IE8+,低版本瀏覽器也好兼容。缺點:設置較為復雜。
3.2 absolute 配合 transform
.parent{
position: relative;
}
.child{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}優點:居中元素不對其他元素產生影響。缺點:CSS3新屬性支持IE9+,低版本瀏覽器不支持。
4. 全能的 flex
css3新增布局屬性,布局簡單,強大,性能略差,只支持IE10+,在移動端使用較多。
4.1 水平居中
/*當父元素設置display: flex;時,子元素為flex-item,默認為內容寬度。*/
.parent{
display: flex;
justify-content: center;
}
/* 在設置子元素為margin: 0 auto;時,可刪除父元素的justify-content: center;同樣可以達到居中效果*/
/* .child{
margin: 0 auto;
}*/4.2 垂直居中
.parent{
display: flex;
align-items: center;
}4.3 水平垂直居中
.parent{
display: flex;
justify-content: center;
align-items: center;
}
/*如同flex布局的第一部分一樣這里也可以對子元素進行下面的設置:同時刪除上面的除去display外的其他屬性*/
/* .child{
margin:auto;
} */來自: http://guowenfh.github.io/2016/01/06/css-position-middle/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!