css中Li的横向排列自适应宽度的问题

html-css018

css中Li的横向排列自适应宽度的问题,第1张

首先学习一下width属性的定义和用法:

定义和用法

width 属性设置元素的宽度。

说明

这个属性定义元素内容区的宽度,在内容区外面可以增加内边距、边框和外边距。

行内非替换元素会忽略这个属性。

可以通过width属性设置li中字段的宽度根据实际长度显示宽度。在li的样式中加上width:auto就可以实现了;现在来看下面一段代码:

CSS样式设置:

#info_main{text-align:center border:1px solid #CCCwidth:620px}

#info_main li{width:autofloat:leftmargin:0px 8px padding:0pxborder:1px solid #CCC}

网页代码:

 <div id="info_main">

<ul>

<li>时间:{dede:field name='pubdate' function='strftime("%Y-%m-%d %H:%M","@me")' /}</li>

<li>来源:{dede:field.source/}</li>

<li>作者:{dede:field.writer/}</li>

<li>点击:<script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field name='id'/}&mid={dede:field name='mid'/}" type='text/javascript' language="javascript"></script>次</li>

</ul>

</div>

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

因为li是块级元素,默认占一行的,要想实现横向排列,一般通过以下两个方法:

float:left

这样设置有一个问题,li浮动以后则脱离了文本流,即不占位置,如果它的父级元素有具体的样式且没有固定宽高,建议父元素清除浮动,或者设置固定宽高

display:inline-block

即把li变为行内元素且可以设置宽高以及边距,这样也有一个问题,低版本的Ie浏览器不兼容inline-block,建议在其后再加两个属性兼容低版本ie

*display:inline

*zoom:1