关于css中ul高度的问题

代码如下:
<style>
li {
float:left;
}
</style>
<ul>
<li>
<div>测试信息</div>
</li>
<li>
<div>测试信息</div>
</li>
<li>
<div>测试信息</div>
</li>
</ul>
问题是,在不给ul固定高度的情况下,怎样让ul的高度随着li里面的内容增加而被撑开?

①首先你的<li>是浮动的,也就是说li脱离了文档流,故它的父级ul是无法包围li的,所以li的内容增大缩小跟ul关系是不大。

②如果是你想实现:让li水平排列。同时div的内容增加后,div向下延伸。

可以直接限制li的宽度:

 li {

        float:left;

        width:100px;

    }

效果如下:

<ul>

        <li>

            <div>测试信息a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a </div>

        </li>

        <li>

            <div>测试信息</div>

        </li>

        <li>

            <div>测试信息bb b b b b b b b b b b b b b b b b b b</div>

        </li>

    </ul>

追问

谢谢您的回答。但是,这样设置后,ul的高度还是为0px,不符合我的题意。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-22

如果你要做的是一个导航栏  可以这么写:

<head>
    <meta charset="UTF-8">
    <style>
    .navbar{
        height: 50px;
    line-height: 50px;
    }
    .navbar li {
    float: left;  /* 让 3个 测试信息 一行显示 */
    }
    </style>
</head>
<body>
    <div class="navbar">
<ul>
    <li><a href="#">测试信息</a></li>
    <li><a href="#">测试信息</a></li>
    <li><a href="#">测试信息</a></li>
</ul>
    </div>
</body>

学习前端的新手,有问题可以讨论呀

第2个回答  2013-02-02
因为你的ul中li标签都已经左飘了,
飘了以后就相当于和其他元素不在一个世界一样。
所以ul不承认这些浮动元素,固然没有高度。
如果你将ul也添加 float:left 飘动,那么ul自然和li在一个世界内,自然有了高度。

但是尽量不是为了并排效果不要随意的用浮动float。
如果全篇都用了浮动不容易维护和修改

如果你是想让飘的元素和下文不飘的元素合为一体,那么就可以
在最后的一个li元素中添加clear:left;
或者在下文第一个元素中添加clear:right;
后者添加一个空的div <div style="clear:both;"></div>

就能取消浮动了追问

谢谢,回答很详细,就像您说的“尽量不是为了并排效果不要随意的用浮动float” ,那我要做一个横向菜单而要使用li有没有更好的方法呢? 请帖出代码,我会追加更多分数^_^。

追答

常见的横向菜单都是用ul li标签做的。
因为ul的定义就是无序列表,是一个列表的概念。
你可以用一个div框住这个ul,然后div设置高度和背景

或者你可以像百度首页那样用a标签模拟横向菜单。

因为这种样式太多了,我实在不好说给你个什么代码。

你可以都去网上浏览下,用好浏览器的审查元素的功能(部分浏览器快捷键F12,因为内核的不同,支持的程度也不同。),多去看大网站或者做的好的网站看看。好好学习下。

本回答被提问者采纳
第3个回答  2013-02-02
ul {
overflow: auto;

}追问

谢谢,成功了,请问这样设置的原理是什么呢??

追答

ul设为浮动后高度就变为0了,但li却拥有宽高,将overflow设置为自动意思是当内容超出容器后容器自动增大宽高,所以ul就具有了高度。

关于css中ul高度的问题
①首先你的<li>是浮动的,也就是说li脱离了文档流,故它的父级ul是无法包围li的,所以li的内容增大缩小跟ul关系是不大。②如果是你想实现:让li水平排列。同时div的内容增加后,div向下延伸。可以直接限制li的宽度:li { float:left;width:100px;} 效果如下:<ul> <li> <div>测试信息a a a...

如何设置ul标签的宽度和高度。
1、新建一个html文件,命名为test.html。2、在test.html文件内,创建一个div模块,在div标签内,使用ul、li标签创建一个无序列表。3、在test.html文件内,设置div的class为mydiv,主要用于设置div的css样式。4、在css标签内,通过class设置div的宽度为300px,高度为200px,背景颜色为灰色。5、在test...

css里列表ul里为什么要设置行高line-height,有点不好理解呀
设置行高后文字可以垂直居中。一般写css的时候想达到这个效果就设置一下line-height,比如你的ul的height值比较大时,里面的文字一般现在在下面,设置line-height,文字就垂直居中了

htmlcss里面一个div里的ul怎么让他居中对齐?
1、首先先打开我们的开发环境新建一个web项目。2、在html中引入css文件这里是html页面的代码div和ul。3、将所有标签的margin和padding初始为0然后将父级div的display设置为flexalign-items设置为center。4、运行web项目后得到的结果如图所示垂直居中了。5、 将display设置为table-cell,将vertical-align设置...

ul内容超出指定高度换列显示css
ul内容超出指定高度换列显示css是因为:在网页设计中,常常需要对li标签做浮动效果,但是在不同浏览器中会遇到兼容性问题,比如IE中会出现ul高度为0的情况,是效果不能达。ul内容超出指定高度换列显示css。

ul 列表能做高度自适应么? 一个CSS块里做同时拥有图片和文字的滚动效...
ul的css里,设置overflow:hidden,就会高度自适应 ul{overflow:hidden}这样。。

css布局问题<ul>标签多出空白部分
ul,li{margin:0;padding:0;}

css如何让ul居中
只浏览器的宽度没有关系。第四个问题 没明白你的意思,一个UL里有好多个LI,你要是多个li同时居中?就是全部重叠在一起?还是说 什么居中?或者你的意思是比如ul高200,一共有两个LI,两个LI一个人有50的高度,居中的意思就是说两个LI应该本身占100的高度,然后上面空50,下面空50?

<li>标签的内容为什么显示不出来
ul的高度超出了。你的父级用了css的overflow:hidden; 超出的部分隐藏了。

CSS浮动高度不统一乱排,在线等?
1、建立基本元素标签,并设置颜色区分, 设置不同高度来模拟你所说的高度不一致的情况 代码:效果图:2、换行:使每个li变成行内块级元素,宽度超过ul宽度时会自动换行 代码:效果图:3、顶部对齐:其实第二步已经做到了,是默认的顶部对齐,但经测试有时候不会顶部对齐,如:将文字去掉 所以加上一句...

相似回答