博客列表 >消除子元素浮动造成父元素高度折叠影响以及三列布局的实现--2019年9月4日22时

消除子元素浮动造成父元素高度折叠影响以及三列布局的实现--2019年9月4日22时

非常烟贩的博客
非常烟贩的博客原创
2019年09月08日 22:37:24730浏览
  • 问题目录

    1.实例演示如何消除子元素浮动造成父元素高度折叠的影响

    2.实例演示三列布局的实现原理( 绝对定位实现, 浮动定位实现)

1、子元素在父级区块中浮动,脱离文档流后,父区块无法再包裹住子元素,问题如下:

 <div class="box1">
        <div class="box2">
            子元素(区块)
        </div>
    </div>

/* 子元素box2的父级包含块/父级区块 */
.box1 {
    width: 300px;
    border: 5px dashed red;
}
.box2 {
    width: inherit;
    /*继承父元素的宽度300px*/
    height: 300px;
    background-color: lightblue;
}
/* 浮动后脱离文档流,父区块无法再包裹住 */
.box2 {
    float: left;
}

1.jpg

消除浮动影响方法:父元素添加overflower

/* 解决方案4 :父元素添加overflower,专用来清浮动-----采用*/
.box1 {
    overflow: hidden;
}

2.jpg

2、三列布局的实现原理( 绝对定位实现, 浮动定位实现)

  • 三列布局用绝对定位实现:给定位父级main设置定位属性

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="css/style8.css">
    <title>三列布局(绝对定位)</title>
</head>
<body>
    <div>
        <div>头部</div>
        <!-- 将中间改为三列 -->
        <div>
            <div>左侧</div>
            <div>内容区</div>
            <div>右侧</div>
        </div>
        <div>底部</div>
    </div>
</body>

/* 绝对定位 */
/* 定位父级 */
.main {
    /* 给定位父级main设置定位属性 */
    position: relative;
}
.left {
    position: absolute;
    left: 0;
    top: 0;
}
.right {
    position: absolute;
    right: 0;
    top: 0;
}
/* 内容区通过margin挤压出来 */
.content {
    margin-left: 200px;
    margin-right: 200px;
}

3.jpg

  • 左侧通过main父级的左上角定位

  • 右侧通过main父级的右上角定位

  • 内容区通过margin挤压出来

  • 三列布局用浮动定位实现:用消除浮动影响方法,给父元素添加overflower

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="css/style9.css">
    <title>三列布局(浮动定位)</title>
</head>
<body>
    <div>
        <div>头部</div>
        <!-- 将中间改为三列 -->
        <div>
            <div>左侧</div>
            <div>内容区</div>
            <div>右侧</div>
        </div>        <div>底部</div>
    </div>
</body>
</html>

.main {
    /* min-height: 800px; */
    background-color: lightblue;
    margin: 5px auto;
    /* 消除浮动影响方法:给父元素main添加overflower */
    overflow: hidden;
}

4.jpg










声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议