导航条css clear清除浮动 解决高度塌陷最终版
63讲 导航条css样式
<html> <head> <title>导航条</title> </head> <style> *{ margin:0px; padding:0px; } .nav{ /*去除每个<li>前的大圆点*/ list-style:none; background:blue; width:1000px; margin:100px auto; /*解决高度塌陷*/ overflow:hidden; } .nav li{ float:left; width:25%; } .nav li a{ /*<a>是行内元素,必须变为块级元素才能设置宽高*/ display:block; width:100%; /*直接设置高度是不行的,文字在垂直方向不会居中*/ /*height:30px;*/ padding:5px 0; text-align:center; text-decoration:none; font-size:bold; color:white; } a:hover{ background:red; } </style> <body> <ul class="nav" > <li><a href="#">首页</a></li> <li><a href="#">新闻</a></li> <li><a href="#">联系</a></li> <li><a href="#">关于</a></li> </ul> </body> </html>
总结
主要是理解高度塌陷问题的原因,BFC解决方案。行内元素设置宽高要先转为块级元素。
64讲 clear清除浮动
属性值:none,left,right,both 清除左右元素浮动对本元素造成的影响。本讲非常非常重要,建议看视频重新温习。
重点
在这里不要管对其他元素只管对自己本身的影响!!比如:div1左浮动,div2右浮动,div3清除浮动。我们只考虑div3清除浮动的效果,对于div2而言该怎么样怎么样。
both属性
这不是清除两侧的浮动,而是清除对自身元素影响最大的那个元素的浮动影响。
代码
<html> <head> <title>导航条</title> </head> <style> *{ margin:0px; padding:0px; } .div1{ width:100px; height:100px; background:yellow; float:left; } .div2{ width:200px; height:200px; background:blue; float:right; } .div3{ width:300px; height:300px; background:green; clear:both; } </style> <body> <div class="div1"> </div> <div class="div2"> </div> <div class="div3"> </div> </body> </html>
解决高度塌陷问题最终版
利用一个div占位,清除浮动对它的影响从而实现解决高度塌陷的问题,但是此方法会在页面结构中加入一个占位标签,影响源码阅读。
<html> <head> <title>导航条</title> </head> <style> *{ margin:0px; padding:0px; } .div1{ border: 4px black solid; } .div2{ width:200px; height:200px; background:blue; /*浮动后父元素会塌陷*/ float:left; } .clear{ clear:left;/*或者both*/ } </style> <body> <div class="div1"> <div class="div2"></div> <div class="clear">请你把我删除!【清除div2对我的影响,从而撑开div1达到解决高度塌陷的问题】 请你把我删除!</div> </div> </body> </html>
那么如何实现既不添加div又能清除浮动解决高度塌陷呢?
<html> <head> <title>导航条</title> </head> <style> *{ margin:0px; padding:0px; } .div1{ border: 4px black solid; } .div2{ width:200px; height:200px; background:blue; /*浮动后父元素会塌陷*/ float:left; } /*after指的是div1最后的换行或空格区域*/ .div1:after{ /*添加一个内容*/ content:"删除我!!这里content内容可以为空哦!"; clear:left;/*或者both*/ /*转换为块级元素*/ display:block; } </style> <body> <div class="div1"> <div class="div2"></div> </div> </body> </html>
上面的div1:after
转换为块级元素原因
经测试,内联元素不能清除浮动带来的影响。文本该怎么环绕还是怎么环绕!
<html> <head> <title>导航条</title> </head> <style> *{ margin:0px; padding:0px; } .div1{ width:100px; height:100px; background:yellow; float:left; } .clear{ clear:both; } </style> <body> <div class="div1"></div> <span class="clear" >行内元素清除浮动没效果,所以上面的div:after必须转换为块元素</span> </body> </html>
相关推荐
Ladyseven 2020-10-22
李鴻耀 2020-08-17
yaodilu 2020-08-03
CaiKanXP 2020-06-13
luofuIT成长记录 2020-09-22
Mynamezhuang 2020-09-18
zhoujiyu 2020-06-28
89510194 2020-06-27
MaureenChen 2020-06-12
Phoebe的学习天地 2020-06-07
淡风wisdon大大 2020-06-06
buttonChan 2020-06-06
xtuhcy 2020-05-20
AlisaClass 2020-05-18
赵家小少爷 2020-05-16
nicepainkiller 2020-05-05