关于float的一些测试

dom:

    <ul class="nav">
        <li class="list-item">1</li>
        <li class="list-item">2</li>
        <li class="list-item">3</li>
        <li class="list-item">4</li>
        <li class="list-item">5</li>
        <li class="list-item">6</li>
    </ul>

css:

.nav{
    margin:20px;
    border:1px solid black;
    width:500px;
}
.nav .list-item{
    /* float: left; */
    background-color: yellow;
    height:80px;
    width:80px;
    list-style: none;
}

结果:

 

如果我们把css的注释去掉,结果变成:

在上图我们发现两个问题,

第一,竖直排列变成水平排练,而且排序的顺序是和我们阅读的顺序一样,这个left的作用,若是right就是先排右边,再排左边。

第二,我们的border变成一条直线了。

为什么会这样呢?

实际上,当把li元素设置为float元素时,li元素变成了浮动流,而不是分层。你可以自己测试一下,在html代码里面加一个块级元素,看其是否能和li元素共享一个平面空间(结果是不能的)。

要解释为什么border变成一条直线,要引入下面的两条原则:

第一:块级元素看不见产生浮动流的元素。

第二:产生bfc的元素和文本类属性元素以及文本元素都能看到浮动元素。

bfc元素的触发:

position:absolute;

float:left/right;

display:inline-block;

overflow:hidden;

于是就可以解释了,因为ul元素是块级元素,所以看不见里面的内容,所以就变成了没有内容的border——一条直线。

解决方法:

利用伪元素。清除掉float的影响。

.nav::after{
    content: "";
    display: block;
    clear: both;
}

一般而言,引用完float之后都需要清楚其印象,防止对后面元素造成不好的影响。

再说一点。position:absolute;和float:left/right;会把内部元素转换成inline-block。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值