如题,在微信端做一个手动拖动展示图片的列表页面,可采用以下代码 css代码如下:
*{margin: 0; padding: 0;}
ul,li{list-style: none;}
.container{display: -webkit-box; width: 100%; height: 600px; background: green; overflow-x: auto;}
.chzn-choices{width: 20%; height: 200px; background: red; -webkit-box-flex: initial;}
.chzn-choices:nth-of-type(2n){background: yellow;}
<ul class="container">
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
</ul>
由此可见, display:flex和diplay:-webkit-box还是有区别的,设定为box的父元素的子元素的宽度是固定的, 不会随父元素的宽度变化而变化,在flex布局下,就算所有子元素的宽度之和超出了父元素的宽度, 子元素还是会在父元素之内被“压缩”至刚好能铺满整个父元素,所以就算父元素设置了overflow:auto也不会出现滚动条, 如果子元素的宽度之和没有超过父元素,那么子元素的宽度按照css中设定的正常宽度来显示, 但是在box布局中,子元素的宽度如果超出了父元素,那么子元素的不会被“压缩”,只要父元素设置了overflow:auto,那么就会出现滚动条
2021年11月29日更新: 其实以上的代码还是可以使用flex来实现, 其实就是flex-shrink的应用而已 参考文档: (opens new window)
*{margin: 0; padding: 0;}
ul,li{list-style: none;}
.container{display: flex; width: 100%; height: 600px; background: green; overflow-x: auto;}
/*将flex-shrink设置为0, 那么当子元素的宽度超过容器的宽度时, 也不会被收缩.*/
.chzn-choices{width: 20%; height: 200px; background: red; flex-shrink: 0}
.chzn-choices:nth-of-type(2n){background: yellow;}
<ul class="container">
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
<li class="chzn-choices"></li>
</ul>