Blogger Information
Blog 13
fans 0
comment 0
visits 10104
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
浮动,定位,文档流--2019年9月5号13点40分
上善若水的博客
Original
633 people have browsed it

子元素浮动对父元素的影响以及如何消除这类浮动的影响

一个块级元素div里面嵌套一个div元素。子元素浮动时,父元素会塌陷 子元素没有浮动之前代码和实际浏览图如下

实例

<!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>子元素浮动对父元素的影响</title>
    <!-- <link rel="stylesheet" href="static/css/demo2.css"> -->
    <style type="text/css">
        .main {
            width: 200px;
            border: 1px dashed green;
        }
        
        .box1 {
            width: inherit;
            height: 200px;
            background-color: lightblue;
        }
    </style>
</head>

<body>
    <div class="main">
        <div class="box1">
            子元素区块
        </div>
        <div class="clear"></div>
    </div>
</body>

</html>

运行实例 »

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

1567663182(1).jpg

子元素向左浮动,代码和浮动后实际情况

1567663253(1).jpg    1567663291(1).jpg

遇到这类问题不要慌,解决方法很多。方法如下:

一:给父元素添加 overflow:hidden; 此类方法简单有效,最常用,最直接。

隐藏溢出,当内容超过其父元素时,可以使用该属性和值将溢出的部分裁剪掉,使页面更加美观

清除浮动,当子元素浮动时,给父元素添加overflow:hidden,

按照它的第一个特性,应该将子元素超出的部分截掉,但是因为子元素有浮动,

无法裁剪,所有只能由父元素增加高度去包裹住子元素,使得父元素拥有了高度,

而这个高度是跟随子元素自适应的高度,这样就把浮动的子元素包含在父元素内了 

1567663624(1).jpg    1567663651(1).jpg

二:添加一个块级元素,并给此元素设置clear:both;清除浮动。

在很早之前用的就是这种解决办法,新建一个空的div,为这个div设置clear:both;

这样无疑是增加了无意义的标签,一个大型页面中,这种标签太多是不好的。 

<div class="clear"></div>
.clear{clear:both}

三:给父元素也添加float。这样让父元素与子元素一起脱离文档流浮动起来,保证子元素在父元素内,这样父元素就能自适应子元素的高度,但是此方法有一弊端,一定会影响父元素之后的元素排列,甚至影响布局。

四:给父元素一个固定高度,此方法适用于子元素高度已知并且固定的情况。

除了以上四种还有很多方法可以去除子元素的浮动对父元素的影响,比如说还有伪类。但是第一种方法是大家最为常用的们也是最有效的,最致命的,最简单的。

定位

定位:将元素在页面中重新排列

四大定位:1.静态定位,static,文档流定位,流动布局。

2.相对定位,relative,元素仍在文档流中,只是相对他原来的位置发生位移

3.绝对定位,absolute,元素脱离文档流,相对于离他最近的,具有定位属性的父级元素进行定位。

4.固定定位,fixed,始终相对于浏览器的窗口进行定位

使用绝对定位和浮动定位实现网页三列布局

1-1浮动定位

让左右两边部分浮动,脱离文档流后对中间部分使用margin来自适应

基本思路:

    1.左右两列采用浮动加上宽度

    2.间区域实际上margin挤出来的

    3.dom顺序不能乱,必须先写左右两列,然后书写中间主体部分

实例

<!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>使用浮动实现三列布局</title>
    <style type="text/css">
        .left {
            height: 500px;
            width: 200px;
            background-color: #3fed;
            float: left;
        }
        
        .right {
            height: 500px;
            width: 200px;
            background-color: #7ace;
            float: right;
        }
        
        .main {
            background-color: pink;
            margin-left: 210px;
            margin-right: 210px;
            height: 500px;
        }
    </style>
</head>

<body>
    <!-- <h4>基本思路:</h4>
    <p>左右两列采用浮动加上宽度</p>
    <p>中间区域实际上margin挤出来的</p>
    <p>dom顺序不能乱,必须先写左右两列,然后书写中间主体部分</p> -->
    <div class="left">左侧</div>
    <div class="right">右侧</div>
    <div class="main">主体</div>
</body>

</html>

运行实例 »

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

1-2使用绝对定位是实现网页三列布局

左右两栏选择绝对定位,固定于页面的两侧,中间的主体选择用margin确定位置

实例

<!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>三列布局使用绝对定位</title>
    <style type="text/css">
        .container {
            position: absolute;
            left: 0;
            right: 0;
        }
        
        .left {
            width: 200px;
            height: 600px;
            background-color: green;
            position: absolute;
            top: 0;
            left: 0;
        }
        
        .right {
            width: 200px;
            height: 600px;
            background-color: lightcoral;
            position: absolute;
            top: 0;
            right: 0;
        }
        
        .main {
            height: 600px;
            background-color: lightseagreen;
            margin-left: 210px;
            margin-right: 210px;
        }
    </style>
</head>

<body>

    <div class="container">
        <div class="left">左侧</div>
        <div class="right">右侧</div>
        <div class="main">主体</div>
    </div>
</body>

</html>

运行实例 »

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

总结:浮动和定位,看似简单,但是在实际运用中出现问题时还是很棘手的,。浮动和定位既是挑战有时助推器。浮动和定位在css中不可或缺。我们不仅要掌握他们,还要会合理运用。没事就要敲代码,多善用他们。








Correction status:qualified

Teacher's comments:正是因为浮动有这些问题, 所以现在有了许多的替代方案
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post