huakaiwuxing 2019-07-01
1.水平居中margin:0 auto;块级元素在块级元素中居中设置在子元素上,前提是不受float影响 2.text-align只对行级元素有用,行级元素设置浮动,或者设置定位之后。给它的父元素设置text-aglin:center不会使它在父元素中居中 3.margin:0 auto对于已经定位的元素没有作用,已经定位的元素靠left和top定位 4.text-align只能让其div包含的行级元素中的文字或者是行块级元素中的文字水平居中 5.text-align这个属性只作用于文本元素,在p标签中在没有border的情况下,作用于让文本在div中居中,在文本有border**的情况下,作用于让文本内容在border范围内居中。这时若是想让p标签整体在div中居中,则需要设置margin:0 auto来达到居中效果
<style> *{ margin: 0; padding: 0; } .box{ width: 300px; height: 300px; border:3px solid red; <!--1.text-align: center;--> /*1.对块级元素没有用,只对行级元素有用*/ /*1.当img是行级元素时text-align起作用*/ } img{ /*2.display: block;*/ width: 100px; height: 100px; /*2.margin: 0 auto;*/ } </style> </head> <body> <div class="box"> <img src="../resources/2.jpg" alt=""> </div> </body>
2.水平垂直居中
需要水平垂直居中的元素减去margin的宽高一半,这个方法同样适用于float的元素
<style> *{ margin: 0; padding: 0; } .box{ width: 300px; height: 300px; border:3px solid red; position: relative; } img{ /*display: block;*/ <!--无论img是行级元素还是块级元素定位都能使元素水平垂直居中--> width: 100px; height: 100px; position: absolute; top:50%; <!--使元素到距离参照元素的下面的百分之五十--> left: 50%; <!--使元素到距离参照元素的左面的百分之五十--> <!--此时元素位于参照元素中心的左下角--> margin-top:-50px ; <!--因此将元素往上移自己高度的一半--> margin-left: -50px; <!--往左移自己宽度的一半--> } </style> </head> <body> <div class="box"> <img src="../resources/2.jpg" alt=""> </div> </body>
margin-auto水平垂直居中
<style> *{ margin: 0; padding: 0; } .box{ width: 300px; height: 300px; border:3px solid red; position: relative; } img{ /*display: block;*/ width: 100px; height: 100px; margin: auto; position: absolute; top:0; left: 0; right: 0; bottom: 0; } </style> </head> <body> <div class="box"> <img src="../resources/2.jpg" alt=""> </div> </body>
水平垂直居中(三)
绝对定位和transfrom
很厉害的方式
<style> *{ margin: 0; padding: 0; } .box{ width: 300px; height: 300px; border:3px solid red; position: relative; } img{ width: 100px; height: 100px; position: absolute; top:50%; left: 50%; transform: translate(-50%,-50%); } </style> </head> <body> <div class="box"> <img src="../resources/2.jpg" alt=""> </div> </body>
水平垂直居中(四)
利用C3的新特性flex,在移动端使用完美,pc端有兼容问题
<style> *{ margin: 0; padding: 0; } .box{ width: 300px; height: 300px; border:3px solid red; display:flex; justify-content:center; align-items:center } img{ width: 100px; height: 100px; } </style> </head> <body> <div class="box"> <img src="../resources/2.jpg" alt=""> </div> </body>
/*垂直居中,div上边界距离窗口上边的距离为窗口高度的50%,并针对不同浏览器进行兼容。-- 在外层添加一个div,把行内容居中,添加.row .justify-content-center -->