高度塌陷、清除浮动、元素垂直居中


高度塌陷:

定义:父元素没有设置高度,子元素设置了浮动(float)属性
解决办法:清除浮动(仅清除浮动的负面影响,不会影响其它元素)


清除浮动

目的:清除浮动是为了解决高度塌陷问题和元素重叠问题

清除浮动的常用方法:

1)添加空盒子

定义:在被浮动的元素(同级元素)后添加一个空的div,赋给空盒子.clean{ clean:both;}
不足:导致页面添加的空盒子太多,造成代码冗余

2)overflow:hidden;

定义:给浮动元素的父元素添加属性.clean{overflow:hidden;}文本溢出,具有清除浮动的功能。
缺点:在开发时,有些公司会严格要求技术特点

3)万能清除法

.box:after{display: block;clean: both;content: "";visibility: hidden;height: 0;}
.box{zoom: 1;}

        .box:after{          /*:after或::after,是伪对象,前面可以有:或::*/
            display: block;
            clean: both;
            content: "";    /*此句代码是和伪对象配合使用的*/
            visibility: hidden;
            height: 0;
        }
        .box{
            zoom: 1;
        }

开发常用此方法,使用伪对象,兼容IE浏览器


元素垂直居中的常用方法

1\2\3\4 的方法能让 所有类型元素 垂直居中,包括行内块元素img。

1)解决行内块元素{margin:0 auto;}不能居中问题

img的垂直居中问题

父元素:{text-align:center;}
子元素:{display:inline-block; vertical-align:middle;}
在当前子元素后面添加同级元素<span>,并进行如下设置:
{display:inline-block;vertical-align:middle; width:0;height:100%;}

2)定位(子绝父相:子元素绝对定位,父元素相对定位)

父元素:{position:relative;}
子元素:{position: absolute; left: 0;top: 0;right: 0;bottom: 0;margin: auto;}

        div{
            width: 500px;
            height: 300px;
            position: relative;
        }
        div p{
            width: 200px;
            height: 200px;
            position: absolute;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            margin: auto;
        }

注意:代码顺序可以改变

3)定位(子绝父相)

父元素:{position:relative;}
子元素{
position:absolute;
left:50%;
top:50%;
margin-left:子元素自身width的一半;
margin-top:子元素自身height的一半;
}
注意:此方法的语法是固定不变的,但人是灵活的

       div{
            width: 500px;
            height: 300px;
            position: relative;
        }
        div p{
            width: 200px;
            height: 200px;
            position: absolute;
            right: 50%;
            bottom: 50%;
            margin-right: -100px;
            margin-bottom: -100px;
        }
        div{
            width: 500px;
            height: 300px;
            position: relative;
            margin:0 auto;
        }
        div p{
            width: 200px;
            height: 200px;
            position: absolute;
            left: 50%;
            top: 50%;
            margin-left: -100px;
            margin-top: -100px;
        }

4)弹性盒(flexbox)

父元素:{display:flex;justify-center;align-items:center;}

       div{
            display: flex;    /*将div转为弹性盒*/
            justify-content: center; /*水平方向*/
            align-items: center;     /*垂直方向*/
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,806评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,543评论 5 15
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,736评论 1 45
  • 一箭上垛:比喻说话做事一次就成功。 一索得男:旧时指头胎生子。 一致百虑:趋向虽然相同,却有各种考虑。 一薰一莸:...
    文可阅读 487评论 0 0
  • 【微公益】【716】【每日经典,伴您早起】【20170410孟子190】 孟子曰:“附之以韩魏之家,如其自视欿然,...
    北冥_鲲阅读 276评论 0 1