在父元素上設置 text-align: center 使文字/圖片水平居中。css
.container { text-align: center; }
.container { width: 200px; margin: 0 auto; }
原理:設置塊級元素上下padding相等html
前提:沒有設置高度,高度由內容撐開。塊級元素若是設置了高度,就不知道如何設置padding的數值
democss3
<style> .ct{ padding: 40px 0; text-align: center; background: #eee; } </style> <div class="ct"> <p>好好學習</p> <p>每天向上</p> </div>
執行結果
佈局
(1)demo,
使用前提是塊級元素的寬高固定學習
<div class="dialog"> <div class="header">我是標題</div> <div class="content">我是內容</div> </div> <style> html,body { height: 100%; } .dialog { position: absolute; left: 50%; //使用絕對定位,讓dialog起點偏移到頁面的中央 top: 50%; margin-left: -200px;//經過負margin,偏移dialog寬高的一半,讓dialog處於正中 margin-top: -150px; width: 400px; height: 300px; box-shadow: 0px 0px 3px #000; } .dialog .header{ padding: 10px; background: #000; color: #fff; } .dialog .content{ padding: 10px; } </style>
(2)解析:
使用絕對定位 position: absolute,讓dialog起點偏移到頁面的中央flex
經過負margin,偏移dialog寬高的一半,讓dialog處於正中。不用relative的緣由是已經用了絕對定位了,因此只好用負margin。結果如圖spa
(3)塊級元素的寬高不固定,就不能用負margin了(margin使用百分比是相對於父元素的寬度)。咱們能夠用css3的一個transform的屬性,transform是相對自身的寬高來作偏移的。3d
原理:code
使用環境:塊級元素中設置行內元素水平垂直居中
代碼:demo
結果:orm
遇坑:一、固然使用絕對定位也能夠實現這個效果
二、僞元素設置display:block是有問題,須要設置爲inline-block
三、使用僞元素是爲了減小標籤
原理:把box設置爲表格元素(display: table-cell),經過vertical-align: middle對裏面的元素作垂直居中
缺點:把box設置爲display: table-cell,box再也不是塊級元素,若是不設置寬度就會收縮。
代碼:demo
結果:
代碼:demo
<div class="space"> <div class="earth"></div> </div> .space { width: 100vw; height: 100vh; /* 設置寬高以顯示居中效果 */ display: flex; /* 彈性佈局 */ align-items: center; /* 垂直居中 */ justify-content: center; /* 水平居中 */ } body { margin: 0; background: rgba(0, 0, 0, .95); } .earth::after { content: '🌏'; font-size: 85px; }