DIV+CSS样式,li自动适应高度,自动换行,横向排列

html-css07

DIV+CSS样式,li自动适应高度,自动换行,横向排列,第1张

HTML部分:

<div id="nav">

<ul>

<li>AAAA</li>

<li>BBBB</li>

<li>CCCC</li>

<li>DDDD</li>

<li>EEEE</li>

<li>FFFF</li>

</ul>

</div>

css部分:

#nav{

margin: 0 auto

border: 2px solid #00CED1

}

ul,li {

margin: 0px

padding: 0px

list-style: none

}

ul{

display: flex

flex-direction: row

flex-wrap: wrap

}

li{

border: 1px solid

width: 100px/*每个元素的初始化宽度*/

text-align: center

margin-top: 10px

margin-bottom: 10px

flex:auto  /*这是关键*/         

}

扩展资料:

Flex是Flexible Box的缩写,用来为盒装模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。

采用Flex布局的元素,被称为Flex容器(flex container),简称“容器”。其所有子元素自动成为容器成员,成为Flex项目(Flex item),简称“项目”。

容器默认存在两根主轴:水平方向主轴(main axis)和垂直方向交叉轴(cross axis),默认项目按主轴排列。

main start/main end:主轴开始位置/结束位置;

cross start/cross end:交叉轴开始位置/结束位置;

main size/cross size:单个项目占据主轴/交叉轴的空间;

设置在容器上的属性有6种。

flex-direction

flex-wrap

flex-flow

justify-content

align-item

align-content

不用height属性

稍稍计算一下,对于单行的li,文字高度假设是12px,那么上下的边距就是4px,所以

li { font-size:12pxpadding: 4px 10px 4px 10px}

这样,当文字多余一行的时候就会自动加高而且保持边距

如果觉得多行文字显得拥挤的话,使用line-height来控制:

li { font-size:12pxline-height:14pxpadding 3px 10px 3px 10px}

这样就好多了

可以试试给.nav li 加上样式overflow:hidden或者zoom:1触发haslayout

不过既然指定了line-height:50px不如把height也设为50px