发布于2021-04-09 07:03 阅读(1058) 评论(0) 点赞(0) 收藏(2)
★文章内容学习来源:拉勾教育大前端就业集训营
浮动是我们学习的第一种脱离标准流的方式。
继续上篇,本篇讲解• 浮动的问题 • 清除浮动方法
标准流中的元素,不设置高度的情况下,都能被内部的标准流元素自动撑高。 如果内部的子元素进行了浮动,浮动的子元素是撑不高标准流父亲的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动的问题1.浮动的子元素是撑不高标准流父元素</title>
<style>
*{
margin: 0;
padding: 0;
}
.box {
width: 500px;
border: 10px solid #f00;
}
.box p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: skyblue;
}
</style>
</head>
<body>
<div class="box">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</body>
</html>
父元素没有高度,会影响后面元素的标准流位置,如果浮动的子元素足够高时,有可能影响到后面浮动元素的贴边。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动的问题2.影响标准流位置、影响贴边效果</title>
<style>
*{
margin: 0;
padding: 0;
}
.box1 {
width: 500px;
border: 10px solid #f00;
}
.box1 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: skyblue;
}
.box2 {
width: 500px;
border: 10px solid #00f;
}
.box2 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box1">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div class="box2">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</body>
</html>
以上的问题需要被解决,解决方法是清除浮动带来的影响。
left
清除前面左浮动带来的影响;right
清除前面右浮动带来的影响 ;both
清除前面所有浮动带来的影响.clear
属性,父元素不受前面浮动影响,不会再占有浮动让出的位置。margin
效果不正确。(不做举例,可以参考以下的代码,给父元素加一个margin,看看显示效果)<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清除浮动2.clear属性</title>
<style>
*{
margin: 0;
padding: 0;
}
.box1 {
width: 500px;
border: 10px solid #f00;
clear: both;
}
.box1 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: skyblue;
}
.box2 {
width: 500px;
border: 10px solid #00f;
clear: both;
}
.box2 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box1">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div class="box2">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</body>
</html>
<div>
标签,标签上带有 clear: both
属性。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清除浮动3.外墙法</title>
<style>
*{
margin: 0;
padding: 0;
}
.box1 {
width: 500px;
border: 10px solid #f00;
}
.box1 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: skyblue;
}
.boxwaiqiang {
clear: both;
}
.box2 {
width: 500px;
border: 10px solid #00f;
}
.box2 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box1">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div class="boxwaiqiang"></div>
<div class="box2">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</body>
</html>
<div>
元素,标签高 度为0
,添加clear
属性。css
样式属性带来的问题,内墙法使用HTML
结构去辅助解决问题, 如果页面中浮动元素很多,需要添加多个没有语义的空标签,造成HTML
结构的冗余。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清除浮动3.内墙法</title>
<style>
*{
margin: 0;
padding: 0;
}
.box1 {
width: 500px;
border: 10px solid #f00;
}
.box1 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: skyblue;
}
.NQ .boxneiqiang {
height: 0;
clear: both;
}
.box2 {
width: 500px;
border: 10px solid #00f;
}
.box2 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box1 NQ">
<p></p>
<p></p>
<p></p>
<p></p>
<div class="boxneiqiang"></div>
</div>
<div class="box2 NQ">
<p></p>
<p></p>
<p></p>
<p></p>
<div class="boxneiqiang"></div>
</div>
</body>
</html>
css
代码书写一堵内墙。:after
:这个伪类表示选中的是某个标签内部的最后的位置。clearfix
的类名。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清除浮动4.伪类</title>
<style>
*{
margin: 0;
padding: 0;
}
.box1 {
width: 500px;
border: 10px solid #f00;
}
.box1 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: skyblue;
}
.box2 {
width: 500px;
border: 10px solid #00f;
}
.box2 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: pink;
}
.clearfix:after {
content: "1";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
</style>
</head>
<body>
<div class="box1 clearfix">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div class="box2 clearfix">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</body>
</html>
overflow: hidden;
属性,可以解决浮动的所有问题。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清除浮动5.overflow</title>
<style>
*{
margin: 0;
padding: 0;
}
.box1 {
width: 500px;
border: 10px solid #f00;
overflow: hidden;
}
.box1 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: skyblue;
}
.box2 {
width: 500px;
border: 10px solid #00f;
overflow: hidden;
}
.box2 p {
float: left;
width: 100px;
height: 100px;
margin-right: 10px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box1">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div class="box2">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</body>
</html>
补充:overflow 属性
- 元素高度设置后,
overflow:hidden;
效果是将超过高度的部分直接隐藏。- 元素高度没有设置时,如果元素同时设置了overflow:hidden属性,元素会自适应内容的高度。(小偏方的原理)
- 高度自适应原因:一个元素没有设置高度,同时设置了溢出隐藏,浏览器在加载盒子尺寸时,遇到溢出隐藏浏览器会强制性去检索内部的子元素的高度,不论子元素 是标准流还是浮动,都会将最高的高度作为父盒子高度加载。
- 浮动影响后面的元素:父元素有了高度后,可以管理住内部所有的浮动元素,不会延伸到后面标签中影响贴边。
★总结:
如果父元素高度是固定的,建议使用 height 属性解决;
如果父元素高度需要自适应,建议使用 overflow 属性解决浮动问题。
下篇继续:【29】CSS核心样式(7)——认识 a标签的四个伪类选择器
作者:程序员的人生
链接:http://www.qianduanheidong.com/blog/article/58486/0bd0550ad77bec0a393a/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!