HTML5+CSS3快速入门浮动,高度塌陷,伪元素清除浮动每日一篇day05

teacherDay05

布局第二大块 盒模型 行内块

行内块并排缺点:

  1. 中间有间距
  2. 文本内容行数 多少不一样的时候 会出现对不齐现象

浮动属性

作用: 专业解决并排

float: left左侧浮动/right右侧浮动/none不浮动;
float:none;默认值  标准状态

标准流 浏览器解析块元素从上到下一行一个 垂直排列 行内元素并排 中间有间距

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WJ6qK6UR-1605867640024)(media/标准流.png)]

浮动特点:

  1. 浮动只有水平移动 在父盒子区域内部进行左右移动

    float:left 靠近父盒子左侧边界 right 靠近父盒子右侧边界

  2. 浮动元素脱离标准流 ,不占据界面位置—》形成浮动流

  3. 浮动破坏标准流 但是不影响文本流

  4. 浮动元素遇到浮动元素立即停止浮动 (并排)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LTfthj8O-1605867640027)(media/浮动的影响.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cgXU2Aon-1605867640030)(media/浮动影响02.png)]

浮动—》想要并排—》但是浮动子元素形成浮动流,不占据位置 导致—》父盒子高度变为height:0 (高度塌陷)

本质原因:浮动元素不参与高度计算

清除浮动带来的影响

  1. 给父盒子定高度

    缺点:不实际 实际问题就是有时候父盒子高度不确定 auto

  2. 给父盒子加overflow:hidden属性

    overflow:hidden—》触发BFC规则 :有一条 如果这个盒子是BFC盒子 那么这个盒子里的浮动子元素也会参与高度计算

    缺点:overflow:hidden1.溢出隐藏。切掉 2. 触发形成BFC盒子

    会把我们故意想要溢出的盒子切掉

  3. 专门用于清除浮动影响的属性

    clear:both/left/right;
    
    只有块类型的元素才能清除浮动带来的影响
    <div style=" clear:both;"></div>
    

    这个属性放在父盒子里 加在最后一个浮动子元素的后面 作为父盒子的内容存在

    缺点:结构冗杂 (真的标签没有展示有效数据,空元素 )

  4. 最终方案 双伪元素清浮动法

清楚浮动影响的类 哪个父盒子的子元素浮动了 那么就给这个父盒子加这个类

 .clearfix::after {
            content: '';
            /* 清除浮动影响的必须是块类型 */
            display: block;
            clear: both;

        }
 .clearfix::before{
            content: '';
            /* 清除浮动影响的必须是块类型 */
            display: block;
            clear: both;

        }

伪元素单双冒号 都对 只不过高版本浏览器两个都支持 低版本浏览器不支持:: ie8及其以下不支持::

伪元素

真元素 真标签 真的写到body真的是一个<>

伪元素:用css创造出来的元素

伪元素创造出来以后默认是行内类型

前伪元素
E:before {
    content:'';//写这个元素的文本
    
}
作用:创造一个元素插入到E元素的所有内容之前(创造的元素是E的第一个子元素)
后伪元素
E:after {
     content:'';//写这个元素的文本
    
}
作用:创造一个元素插入到E元素的所有内容之后(创造的元素是E的最后一个子元素)

浮动对于元素类型的影响

行内 + float:left/right —> 不区分元素类型 全部都是密闭私有的独立的区域(BFC盒子)

行内块 + float:left/right —> 不区分元素类型 全部都是密闭私有的独立的区域(BFC盒子)

块元素 + float:left/right —> 不区分元素类型 全部都是密闭私有的独立的区域(BFC盒子)

 i {
            display:block;//这句代码就非常没有必要了,对吗???
            width: 20px;
            height: 20px;
            background-color: #ccc;
            float: left;
            margin-left: 10px;
        }


    </style>
</head>
<body>

    <i></i>
    <i></i>
    <i></i>
    <i></i>

最初解决的问题—图文环绕(了解)

myDay05

复习

面试题:img插入图片和背景属性插入图片的区别?(可以再回顾一下视频,最后的结构树和样式树渲染)

background:url()

img加载顺序优先于背景属性 一般大的广告图 都会用背景属性 与数据相关的小图会用img

6个选择器

后代 E F{}

子代E>F{}

兄弟E~F{}

相邻选择器 E+F{}

交集选择器 FC{}

并集选择器 E,F,C…{}

优先级:权重

行内样式1000 >id选择器100>class10>tagName1>*0>继承属性,浏览器分配的 默认样式

继承:text-(text-decoration不能继承),line-,font-,list-.color(inherit)

父亲有font-size:12px 子元素>子>子…(减少代码的冗余)

<div class="a" id="box"></div>
PC端
#box{
	padding:10px;
}
移动端(执行代码优先级高,会被覆盖,所以需要选择器加优先级权重):
父元素 #box .g .f{
	padding:0px;
}

1.浮动

布局第二大块 盒模型 行内块

行内块并排缺点:(不推荐做并排,用浮动更推荐一些)

1.中间有间距(font-size:0px,解决起来有些麻烦)

2.文本内容行数多少不一样的时候 会出现对不齐现象(overflow:hidden,解决起来有些麻烦)

2.浮动属性

作用:专业解决并排

float:left左侧浮动/right右侧浮动/none不浮动;
float:none;默认值 标准状态 标准流:浏览器解析块元素从上到下一行一个 垂直排列
行内元素并排中间有间距。

特点:

​ 1.浮动只有水平移动 在父盒子区域进行左右移动

​ float:left 靠近父盒子左侧边界 right 靠近父盒子右边边界

​ 2.浮动元素脱离标准流,不占据界面位置–形成浮动流

​ 3.浮动破坏标准流 但是不影响文本流。(区域上去,文字不上去,float的浮动气流是单向性的,向下传递)

​ 4.浮动元素遇到浮动元素立即停止浮动。(并排)(视频再看一下)

​ 5.浮动-并排-不占据界面位置,形成浮动流,父盒子高度变为0(父盒子高度塌陷)

本质原因:在标准情况下,浮动元素不参与高度计算

3.解决父盒子塌陷

​ 1.给父盒子定高度

​ 缺点:不实际 实际问题就是父子高度不确定 auto

​ 2.给父盒子加overflow:hidden属性

​ overflow:hidden–触发BFC规则:有一条 如果这个盒子是BFC盒子 那么这个盒子里的浮动子元素也会参与高度计算。

​ 缺点:overflow:hidden;1.溢出隐藏,切掉。 2.触发形成BFC盒子。

​ 会把我们故意想要溢出的盒子切掉

​ 3.专门用于清除浮动影响的属性

clear:both/left/right
<div style="clear:both;"></div>

​ 只有块类型的元素才能清除浮动带来的影响。行内和行内块不可以清除浮动。

这个属性放在父盒子里 加在最后一个浮动子元素的后面 作为父盒子的内容存在

​ 缺点 :结构冗杂(真的标签没有展示有效数据,空元素,也会加载,加载会变慢)

4.最终 双伪元素清浮动法(真正起到效果的是后伪元素法)

​ 清除浮动影响的类 哪个父盒子的子元素浮动了 那么就给这个父盒子加这个类

.clearfix:after{
	content:"";
	//转成块类型,清除浮动影响的必须是块类型
	display:inline-block;
	clear:both;
}

.clearfix:before{
	content:"";
	//转成块类型,清除浮动影响的必须是块类型
	display:inline-block;
	clear:both;
}

伪元素单双冒号都对,只不过高版本浏览器两个都支持,低版本浏览器不支持双冒号:ie8及其以下不支持双冒号。

4.伪元素

​ 真元素 真标签 真的写到body真的是一个<>。

​ 伪元素:用css创造出来的元素。

伪元素创造出来以后默认是行内类型

前伪元素
E:before{
content:"";//content里面写的是这个元素的文本
}
作用:创造一个元素插入到E元素的所有内容之前(创造的元素是E的第一个子元素)
后伪元素
E:after{
content:"";//content里面写的是这个元素的文本
}
作用:创造一个元素插入到E元素的所有内容之后(创造的元素是E的最后一个子元素)

hover:

.box:hover:before{

}

:hover :active是不能直接选择伪元素的 但是你可以通过父盒子挑选伪元素

天猫小盒子视频复习一下

calc(a - b)操作符两边加空格(可以实现±*/ 百分比和像素的加减乘除)

5.浮动对于元素类型的影响

1.如果是行内元素 +float:left/right—不区分元素类型,全部都是密闭私有的独立的区域(BFC盒子),不具有文本属性了就。

2.img(行内块) +float:left/right—不区分元素类型,全部都是密闭私有的独立的区域(BFC盒子),不具有文本属性了就。

3.块元素(不加边框的时候不是非常密闭) +float:left/right—不区分元素类型,全部都是密闭私有的独立的区域(BFC盒子),不具有文本属性了就。

注意:加了浮动就不用了转display的行内块了(转元素类型),因为没有意义了,其本身就可以设置属性。

6.浮动本来是解决最初解决的问题–图文环绕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值