flex布局----弹性元素不受float属性影响

2,322 阅读1分钟

关于flex布局的详细介绍和使用可以阅读这一篇文章(别人写的,优秀的东西就值得学习):juejin.im/post/686691… 本篇聊一下flex布局和float冲突的问题:

1.当父容器设置为弹性盒子之后(设置了display:flex;),父容器中的子元素想要设置float:right or float:left是不可能生效的;此外,clear属性也不会生效;css3书本上的原话:float和clear属性对弹性元素不起作用,不会把弹性元素移出文档流.其实,应用到弹性元素上的float和clear属性将被忽略(然而,float属性对框体的生成仍有影响,因为display属性的计算值受它影响).

2.一个元素设置了float:right or float:left,父容器没有设置为弹性盒子,而爷爷辈容器设置为了弹性盒子,那么该子元素的float属性是有效的,即:float属性是否生效与直接父级元素是不是弹性盒子有关,与其他辈的父容器无关;

例子:

html:
    .box 
    .box1
        .left-box
        .right-box
    .box2
        .left-box
        .right-box
css:
.box{
        display: flex;
        flex-direction: column;
        align-items: center;
        .box1{
            width: 95%;
            display: flex;
            .left-box{
                width: 60%;
                height: 100px;
                background-color: #31cc44;
            }
            .right-box{
                width: 30%;
                height: 100px;
                background-color: #205827;
            }
        } 
        .box2{
            width: 90%;
            .left-box{
                width: 60%;
                height: 100px;
                background-color: #e1ee2c;
                display: inline-block;
            }
            .right-box{
                display: inline-block;
                float: right;
                width:30%;
                height: 100px;
                background-color: #bebc0c;
            }
        }
    }

css:

效果: