html左边距为零,css浮动中避免包含元素高度为0的4种解决方法

当一个元素只包含浮动元素的时候,它会出现高度折叠(在火狐中是这样,IE9不会),即元素的上下底边重合,和高度为0效果一样,下面是解决这个问题的4种方法。

首先我么看最原始的情况,下面是代码:

复制代码代码如下:

Float

ul {

list-style-type: none;

width: 800px;

background: blue;

}

li {

float: left;

}

  • 1.jpg
  • 2.jpg
  • 3.jpg
  • 4.jpg
  • 5.jpg
  • 6.jpg

运行结果:

4d621642439a01224166fb90fd4f0050.png 

本来ul的背景色被设置成blue,但是由于它出现了高度折叠,所以看不到背景色。

1 给包含元素设置高度height最直接的办法是给包含元素设置一个高度,在本例中就是给ul标签添加height属性,添加后的代码如下:

复制代码代码如下:

ul {

list-style-type: none;

width: 800px;

background: blue;

height: 300px; /*添加高度属性*/

}

但是这种方法有一个缺点,就是包含元素的高度不能自适应内容。比如我们在添加多个列表项,那么高度又不够了。

2 利用overflow属性

可以包含元素设置overflow属性,并设置属性值为auto或者hidden,添加后的代码如下:

复制代码代码如下:

ul {

list-style-type: none;

width: 800px;

background: blue;

overflow: hidden; /*添加overflow属性,可以设置为auto或者hidden*/

}

这种方式没有直接设置height属性的限制,但是当包含元素的overflow属性必须设置为visible时,这种方法失效。

3 添加一个空的div这种方法是添加一个空的div,这个div和浮动元素同一级别,且位于浮动元素的最后。这种方法要改动两个地方,一个是html代码,另一个是必须要为这个div添加一个clear属性:

复制代码代码如下:

Float

ul {

list-style-type: none;

width: 800px;

background: blue;

}

li {

float: left;

}

/*为添加的空div设置的样式*/

.clearDiv {

clear: both;

}

  • 1.jpg
  • 2.jpg
  • 3.jpg
  • 4.jpg
  • 5.jpg
  • 6.jpg

这种方法虽然也能解决高度问题,但是却引入了一个多余的标签div,它这里并不具有实际意义,它的作用只是撑开ul标签而已。

4 利用伪元素:after

用这种方法时要为包含元素先添加一个类名,这里为ul标签设置的类名.clearUl,代码如下:

复制代码代码如下:

Float

ul {

list-style-type: none;

width: 800px;

background: blue;

}

li {

float: left;

}

/*利用:after伪元素*/

.clearUl:after {

content:"";

display: block;

clear: both;

}

  • 1.jpg
  • 2.jpg
  • 3.jpg
  • 4.jpg
  • 5.jpg
  • 6.jpg

在:after为元素里面用到了content属性,这样这条样式的意思是在ul元素后面生成指定的内容,这里生成的内容是一个空字符串,因为只是让它来消除ul标签的高度折叠,并不让它显示出来。还有,这条样式里有display属性,要将他设置成block,这样clear属性才会起作用,因为清除操作只作用于块级元素,它的原理是为要执行清除操作的元素添加上边距,以此让元素降到浮动元素的下面,而操作行内元素的上边距不起作用。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值