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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!