css写二级列表

来源:互联网 发布:吕鑫讲的c语言咋样 编辑:程序博客网 时间:2024/06/15 02:04

今天写二级列表的时候想起来在学习html+css的时候,刚开始用css写二级列表的时,犯了一个致命的错误,一级列表中用内容+ padding值撑开,在写二级列表的时候,我想都没想,也直接用内容+ 一级列表的padding值将内容同样撑开,哎,然后让二级列表里的内容和一级列表里的内容一样,发现没有问题啊。过了一天之后,我又想起来,不对啊,如果二级列表也用内容+ padding、值撑开的话,那如果字数不一样的话,它的宽度不是也不一样么?后来在网上也找了一些代码来看,最后还是自己找出来一个方法,解决了这个小bug(只怪当初太水啊!)

下面就给大家看一下当初解决问题的小方法吧,希望初学者在用css写二级列表的时候,不要和我当时的想法一样天真

用我之前错误的方法会呈现出如下问题:

 

1

 

2

1.当给二级列表设置一定的宽度时,二级列表的字数和一级列表的字数不一样的时候,会出现文本不居中一级文本溢出来的现象。

2.当没有给二级列表设置宽度时,它的宽度完全是由a标签中的内容+ padding值撑开的,所以当它的字数比一级列表字数多的时候将会出现图2的情况

 

要想解决如上的问题,很简单,就是给二级列表ul加宽度,但是这个宽度要是相对应的一级列表宽度的100%;并且二级列表不在用文本+ padding值来撑开(因为它已经有定宽了),只是吧a标签中的值进行水平垂直居中即可。

效果如图3

 

3

注:文中以及列表之间的竖线为了方便我用的是左边框,不建议大家这样写,建议大家写在 li

全部代码如下:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>*{padding: 0;margin: 0;}ul{list-style: none;}a{text-decoration: none;}.nav{width: 100%;height: 50px;background-color: #f00;}.content{width: 1000px;height: 50px;margin: 0 auto;}ul.ul1>li{position: relative;float: left;line-height: 50px;}ul.ul1>li>a{display: inline-block;height: 50px;color: #000;padding-left: 30px;padding-right: 30px;border-left:1px solid #000;}ul.ul2{display: none;position: absolute;width: 100%;height: 150px;top: 50px;background-color: yellow;}ul.ul2>li{line-height: 50px;}ul.ul2>li>a{width: 100%;display: block;text-align: center;}ul.ul1>li:hover ul.ul2{display: block;}ul.ul2>li a:hover{background-color: red;}</style></head><body><div class="nav"><div class="content"><ul class="ul1"><li><a  style="border:none" href="#">link1</a><ul class="ul2"><li><a href="#">link1link1</a></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li></ul></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li><li><a href="#">link1</a></li></ul></div></div></body></html>


原创粉丝点击