博客列表 >子元素的浮动和清除浮动、浮动定位和绝对定位布局实例--2019-09-05

子元素的浮动和清除浮动、浮动定位和绝对定位布局实例--2019-09-05

木槿昔年的博客
木槿昔年的博客原创
2019年09月05日 10:42:17862浏览

子元素的浮动和清除浮动

父元素没有设置高度,会被子元素撑起,当子元素有浮动的时候,父元素的高度会被折叠。

实例

<!DOCTYPE html>
<html lang="en">

<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">
    <title>Document</title>
    <style>
        .box1 {
            width: 300px;
            border: 1px solid red;
        }
        
        .box2,
        .box3 {
            width: 200px;
            height: 200px;
            background: lightseagreen;
        }
        
        .box3 {
            float: left;
        }
        
        .box4 {
            overflow: hidden;
        }
    </style>
</head>

<body>
    <div class="box1">
        <div class="box2">box2没有浮动,box1被子元素box2撑起</div>
    </div>
    <hr>
    <div class="box1">
        <div class="box3">box3浮动,box1元素高度折叠</div>
    </div>
    <div style="clear: both;"></div>
    <hr>
    <div class="box1 box4">
        <div class="box3">box4加上overflow: hidden; box1清除浮动再次有了高度</div>
    </div>
</body>

</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

0905094759.jpg

绝对定位布局

中间块main给一个固定高度,并且做相对定位,内部区域左右块做左右浮动,两边浮动块宽度相同,中间块左右居中。

实例

<!DOCTYPE html>
<html lang="en">

<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">
    <title>Document</title>
    <style>
        .header,
        .footer {
            height: 80px;
            background: lightslategray;
        }
        
        .main {
            height: 500px;
            position: relative;
        }
        
        .left {
            height: inherit;
            background: lightgreen;
            width: 20%;
            position: absolute;
            left: 0;
            top: 0;
        }
        
        .content {
            height: inherit;
            background: lightpink;
            width: 60%;
            /* margin: 0 20%; */
            margin: 0 auto;
        }
        
        .right {
            height: inherit;
            background: lightskyblue;
            width: 20%;
            position: absolute;
            right: 0;
            top: 0;
        }
    </style>
</head>

<body>
    <div class="header">header</div>
    <div class="main">
        <div class="left">left</div>
        <div class="content">content</div>
        <div class="right">right</div>
    </div>
    <div class="footer">footer</div>
</body>

</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

0190905100702.jpg

浮动定位布局

中间块main没有给高度,内部三个块有高度,并且有左浮动,给main一个overflow:hidden;清除对底部footer的影响。

实例

<!DOCTYPE html>
<html lang="en">

<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">
    <title>Document</title>
    <style>
        .header,
        .footer {
            height: 80px;
            background: lightslategray;
        }
        
        .main {
            overflow: hidden;
        }
        
        .left {
            height: 500px;
            background: lightgreen;
            width: 20%;
            float: left;
        }
        
        .content {
            height: 500px;
            background: lightpink;
            width: 60%;
            float: left;
        }
        
        .right {
            height: 500px;
            background: lightskyblue;
            width: 20%;
            float: left;
        }
    </style>
</head>

<body>
    <div class="header">header</div>
    <div class="main">
        <div class="left">left 左浮动 高500px</div>
        <div class="content">content 左浮动 高500px</div>
        <div class="right">right 左浮动 高500px</div>
    </div>
    <div class="footer">footer</div>
</body>

</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

66660190905102408.jpg

小结:浮动的元素对后面非浮动的元素有影响,会当它不存在,发生重叠现象;清除浮动的方法有在后面的块元素添加clear:both,在浮动元素父级添加overflow:hidden;相对定位relative,是相对于自身位置进行定位,定位后仍然占据原来的空间。绝对定位position,是距离第一个具有定位属性的父元素来定位,在没有父元素设置定位的话,默认就是以body来定位的。

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