在解决ul居中问题时想到的几点_经验交流

最近在做网站的时候碰到了一个问题:我用 ul 标签和 li 标签构建的导航栏想要在不确定 li 数量和 li, ul 宽度的情况下居中,但是给 ul 使用了 text-align:center 之后却没有起到应有的效果。

原来的页面结构是:

复制代码 代码如下:

<div id="menu"> 
  <ul class="menu_ul"> 
    <li class="menu_li"><a href="#">Firede</a></li> 
    <li class="menu_li"><a href="#">Style5</a></li> 
  </ul> 
</div> 

样式表结构是:

复制代码 代码如下:

<style> 
#menu{...} 
.menu_ul{...} 
.menu_li{...} 
</style> 

这样本来也是没有什么问题的,但是因为要实现一个功能却定义了一个ID(menu)和两个CLASS(menu_ul, menu_li),这样CSS文件就臃肿了。

我之所以搞不定 ul 居中的问题,就是因为 CSS 写的太乱太多,到最后一环套一环,自己都糊涂了,定义结构的代码混杂在各种为了显示效果而写的代码之中,于是便写乱了。

在大脑发晕的情况下,不想修改了,于是重新写了实现以上功能的代码,页面结构:

复制代码 代码如下:

<div id="menu"> 
  <ul> 
    <li><a href="#">Firede</a></li> 
    <li><a href="#">Style5</a></li> 
  </ul> 
</div> 

完整的样式表:

复制代码 代码如下:

<style> 
#menu {text-align:center;} 
#menu ul {padding:0;margin:0;} 
#menu li {display:inline;padding:0 10px;} 
</style> 

像这样,很简单的就解决了 ul 不能居中的问题。回头检查我的代码,原来是因为在 li 的样式里多加了一句 float:left,因为定义的 display 并不是 block,而是 inline,所以并不能浮动,造成了冲突,最终导致 ul 无法居中显示。

总结一下,在写网页结构的时候,最好同一个功能模块使用相对统一的CSS名。如果可以定义一个样式名解决问题的,尽量不要定义多个,代码也要尽量简洁。因为代码臃肿了就很容易出问题,并且很难发现错误在什么地方。多用些像 menu, menu ul, menu li, menu a, menu a:hover 这种一系列的样式,而不是定义一些像 menu, menu_ul, menu_ul_li 这样看似调理清晰、层次鲜明,但是实际上很混乱的名称。

习惯是以往经验在潜意识中总结出的精华,但是随着技术的进步,很多以往的习惯都成为进一步提高的阻碍,这时候就要多参考一下标准了,看看以往的习惯是不是值得坚持下去。做网站也一样,标准是能够提高效率、改善性能并且指明方向的,Web标准化的设计更有助于我们提高维护网站的效率。

时间: 2024-09-19 08:19:32

在解决ul居中问题时想到的几点_经验交流的相关文章

标准与习惯:在解决ul居中问题时想到的

最近在做网站的时候碰到了一个问题:我用 ul 标签和 li 标签构建的导航栏想要在不确定 li 数量和 li, ul 宽度的情况下居中,但是给 ul 使用了 text-align:center 之后却没有起到应有的效果. 原来的页面结构是: <div id="menu"> <ul class="menu_ul"> <li class="menu_li"><a href="#">F

解决列高度自适应(相同)的五种方法_经验交流

1.背景图填充 这是使用最广泛的一种做法,无hacks,推荐使用: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta htt

div+css布局必了解的列表元素ul ol li dl dt dd详解_经验交流

块级元素div尽量少用,其实和table一样,嵌套越少越好,它也是会影响速度的! ol 有序列表. <ol> <li>--</li> <li>--</li> <li>--</li> </ol> 表现为: 1-- 2-- 3-- ul 无序列表,表现为li前面是大圆点而不是123 <ul> <li>--</li> <li>--</li> </ul&

css创意ul+li实现的细线表格实现代码_经验交流

时间 2008-7-30 2008-7-30 2008-7-30 2008-7-30 2008-7-30 2008-7-30 2008-7-30 2008-7-30 2008-7-30 2008-7-30

如何解决下拉菜单被flash覆盖的问题_经验交流

把swf文件属性设置成透明,在flash参数里面加上,如果你用dreamweaver,选中那个swf文件,属性面板上会有一个"参数..."按钮(在面板的最下面),点一下,在弹出框里左边"参数"下面加上wmode,对应右边的值输入transparent,确定后就可以了 或者,直接在Flash的Object里面,加上: <param name="wmode" value="transparent">

在IE下拖动滚动条时border消失的解决方法_经验交流

通常我会用DIV加上border来定义边线,可有时发现在IE下拖动滚动条时border会经常消失,当你刷新时,又会出来.这个问题,我想了很久也没有想出什么原因,所以在些之前用DIV+CSS所写的页面中,这个问题都存在.今天,这个问题,实在太影响最终结果,所在找了一个提示: "以为DIV加上一个高度就能解决."下面传张前后对比图. 至于产生这个问题的原因,我想应该是IE的BUG吧.当你用Mozilla Firefox / Opera 则不会产生这种问题.

Firefox返回时Iframe的显示Bug的解决方法_经验交流

<script type="text/javascript">//<![CDATA[ if(getCookie('firefoxIframe')){ document.write('<p id="addAd"><a href="cookie.html">点击这里删除这个iframe</a></p>'); document.write('<iframe height="

DIV 居中的绝好解决方法_经验交流

现在进行WEB重构的时候,一般我们做DIV 居中是这样:  复制代码 代码如下: body{ margin:0px auto; text-align:center; } 但是在没申明下面这句解析方法的时候,页面就会出错.不能居中对齐! 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 为此

CSS技巧DIV为空时占据空间的解决办法_经验交流

此时在IE中到底是什么在影响着最终的显示,又是如何解析的呢? 可能的影响因素:字体大小(font-size),字体行高(line-height),高度(height),溢出(overflow) 我们对上面的代码逐一添加过滤属性(具体的过程有兴趣的朋友,可以私下里实验一下,"自己动手,丰衣足食"!) 在测试的过程中,你会发现IE6和IE7的解析也不尽相同,比如在给div设置了line-height:0; height:0; 的样式后,IE7中显示正常了,不再占据物理空间了,而IE6却依然