flex容器将消除item的块状特性

小程序中,view类似于正常Html中的div标签,只是在小程序中,view是一个组件

<view class="chunk color1"/>
<view class="chunk color2"/>
<view class="chunk color3"/>

.chunk {
    width: 100rpx;
    height: 100rpx;
}
.color1 {
    background-color: #f00;
}
.color2 {
    background-color: #ff0;
}
.color3 {
    background-color: #00f;
}

出现的效果如下:

1.jpg


假如说,现在的需求是将上面的三个view排列在一行显示,此时,思路可能有这几种,分别是:浮动,view设置成inline或者inline-block.

浮动 -> 清浮动

inline -> 无法设置宽高

inline-block -> 中间有间隙

上面的三种方式确实可以做到,但是或多或少的都存在的各自的问题和弊端,有木有一种比较方便比较简洁的方式来实现目的

答案是有的,那就是flex

<view class="container">
    <view class="chunk color1"/>
    <view class="chunk color2"/>
    <view class="chunk color3"/>
</view>

.container {
    display: flex;
}
.chunk {
    width: 100rpx;
    height: 100rpx;
}
.color1 {
    background-color: #f00;
}
.color2 {
    background-color: #ff0;
}
.color3 {
    background-color: #00f;
}

2.jpg

可以看到,此时就达到了我们想要的效果,排在一行了。


不难看出,flex是一个类似容器的概念,外面包了一个容器设置成了flex,其里面的元素块状标签的属性消失了,而里面的块状标签此时无须再手动设置display:inline-block了,即使手动给里面的元素设置display:block,此时也是无效的


flex不仅仅在小程序中使用,在我们H5的页面布局中都是可以使用的,但是,由于兼容性不是很好,唯有在小程序中可以做到很好的兼容(微信提供了统一的环境),在H5中的使用需要考虑到兼容性,低版本的安卓机也会有兼容性问题。