零基础学前端开发技术之第七章 浮动塌陷

Posted tea_year

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础学前端开发技术之第七章 浮动塌陷相关的知识,希望对你有一定的参考价值。

知识点:
1.浮动塌陷的概念
2.浮动塌陷的解决
1:浮动塌陷的概念

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>浮动塌陷的出现</title>
		<!--第2步:设计CSS样式;div:块状元素;特征:独占1行;
			float:left;含义;向左看齐;
			浮动塌陷:父容器没有设置高度;子容器设置浮动,则子容器会脱离父容器
			的管理。
		-->
		<style>
			#father{border:1px solid #f00;}
			div#son1{width:200px;background-color: aquamarine;float:left;}
			div#son2{width:200px;background-color: blanchedalmond;float: left;}
		</style>
	</head>
	<body><!--这是第1步,设计html网页-->
		<div id="father"><!--父容器-->
			<div id="son1">子容器一</div>
			<div id="son2">子容器二</div>
		</div>
	</body>
</html>

2.常见布局

总结:

布局,大致的页面框架,盒子结构图。综合使用标准流、浮动。



1.左右

2.三栏

3.通栏

通栏设计

         碰到白底的,先设计成其他色底部或加有色边框

技巧:

1.先标准流定父位置,浮动定子元素位置。

2.浮动影响后面的标准流,不影响前面的标准流。

3.浮动塌陷

1.原因

浮动的子元素,脱离标准文档流。

2.为什么要清除浮动

2.1 父级没高度

2.2 子盒子浮动

2.3影响布局,清除浮动

3.方法:

3.1 额外标签法

设置clear属性,下面为4个值;

  • none: 允许两边都可以有浮动对象

  • both: 不允许有浮动对象

  • left: 不允许左边有浮动对象

  • right: 不允许右边有浮动对象

    一般用clear:both,空标签必须是块级元素或br

思考?

问题:

  会在元素末尾,增加一个额外的标签(空div或br),我们前端设计人员看到这个额外标签的时候会发现

无内容,默认可能会删除。导致出现塌陷。这个是W3C推荐,但是我们不推荐用。

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #father {
            border: 1px solid #0f0;
        }

        img {
            width: 150px;
        }

        #father div:nth-child(1),
        #father div:nth-child(3) {
            border: 1px dotted blue;
            float: left;
            /* height: 80px; */
        }

        #father div:nth-child(2) {
            border: 1px solid yellow;
            float: right;
            height: 100px;
        }

        /* 设置空的div */
        #father div:last-child {
            /* clear: none;  相当于,我没有解决浮动塌陷 */
            /* width: 100%; */
            /* border: 1px solid purple; */
            /* float: right; */
            /* clear: left; */
            /*不允许左边有浮动塌陷;*/
            /* clear: right;  不允许右边有浮动塌陷 */
            /* clear: both;  清除左边和右边的浮动塌陷 */
            clear: both;
        }
    </style>
</head>

<body>
    <!-- 额外标签:额外的div或br -->
    <div id="father">
        <div><img src="img/1.jpg" alt=""></div>
        <div><img src="img/2.jpg" alt=""></div>
        <div><img src="img/3.jpg" alt=""></div>
        <div></div>
    </div>
</body>

</html>

3.2 父级元素修饰法

子不教,父之过:

父元素进行

 overflow:

			auto

         hidden 

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #fu {
            border: 1px solid #f00;
            /* 在父元素,增加限定的修饰 */
            /* auto:当子元素显示不全的时候,会出现滚动条,让下面的滚动显示. */
            /* overflow: auto; */
            /* hidden:只显示部分字体内容 */
            /* overflow: hidden; */
            /* 滚动模式:横 纵滚动条,现在只有纵向可以动; */
            overflow: scroll;
        }

        #fu div {
            width: 80px;
            height: 80px;
            background-color: red;
            margin-left: 10px;
            float: left;
        }
    </style>
</head>

<body>
    <div id="fu">
        <div>儿子1
            <!-- <p>设置或检索是否显示对象。与display属性不同,此属性为隐藏的对象保留其占据的物理空间
                如果希望对象为可视,其父对象也必须是可视的。
                对应的脚本特性为visibility。</p> -->
        </div>
        <div>儿子2</div>
    </div>
</body>

</html>

3.3 父级添加after伪类法

        .clear:after {
            content: "";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
        .clear {    父级元素;
            *zoom: 1;
            /*为了兼容老式IE6 7*/
        }
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #fu {
            border: 1px solid #00f;
        }

        #fu>div {
            width: 80px;
            height: 80px;
            margin-left: 5px;
            background-color: gray;
            float: left;
        }

        /* 父级元素伪类法:将第一种方式,结合伪类来做了操作;
            父级元素,下面有个伪类,after;表示父级元素的后面
            这种方式用的比较多,可以多加练习。
        */
        #fu:after {
            /* content:内容 */
            content: "";
            /* 块显示 */
            display: block;
            /* 设置高度为0,就不在父级元素了,相当于类似空的标签 */
            height: 0;
            /* 清除浮动 */
            clear: both;
            /* visibility: hidden; */
            visibility: hidden;
        }
    </style>
</head>

<body>
    <div id="fu" class="clear">
        <div>1</div>
        <div>2</div>
    </div>
    <p>想到了吗???</p>
</body>

</html>

3.4 父级添加双伪元素法

.clearFix::after,
        .clearFix::before {
            content: '.';
            line-height: 0;
            font-size: 0;
            height: 0;
            display: block;
            clear: both;
        }
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #fu {
            border: 1px solid #0f0f0f;
        }

        #fu>div {
            width: 80px;
            height: 80px;
            margin-left: 10px;
            background-color: wheat;
            float: left;
        }

        /*  伪元素选择器+父元素,有的厂商,mi 用这个;会兼容到之前低版本的浏览器.
            IE版本,上没有实现;换一种方式,来处理一下;
        */
        #fu::after,
        #fu::before {
            content: '.';
            line-height: 0;
            font-size: 0;
            height: 0;
            display: block;
            clear: both;
        }
    </style>
</head>

<body>
    <div id="fu">
        <div></div>
        <div></div>
    </div>
</body>

</html>

以上是关于零基础学前端开发技术之第七章 浮动塌陷的主要内容,如果未能解决你的问题,请参考以下文章

零基础学前端之定位

Web前端HTML5&CSS310-高度塌陷与BFC

Web前端之高度塌陷与BFC

PC端页面开发基础-问题总结

零基础学前端开发之CSS3深入选择器

零基础如何学 Web 前端开发?