标准与习惯:在解决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-18 01:39: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

Android解决dialog弹出时无法捕捉Activity的back事件的方法

  本文实例讲述了Android解决dialog弹出时无法捕捉Activity的back事件的方法.分享给大家供大家参考.具体分析如下: 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出

解决电脑安装软件时出现不能够打开文件错误提示的方法

  1.根据提示中的目录找到相应的文件,右击该文件,可以看到"管理员取得所有权"选项,点击该选项获取管理员权限即可; 2.如果安装文件时一次提示多个dll文件没有权限,可以批量获取权限,选择多个需要获取权限的文件,然后右击选择"管理员取得所有权"; 3.要注意一次最多只能选择15个文件,如果超过15个,在右键菜单中是没有"管理员取得所有权"选项的. 按照上述的方法进行设置后就可以解决电脑安装软件时出现不能够打开文件错误提示的问题.

解决wubi安装ubuntu时要下载系统映像文件问题

引言 四月二十九号--让我等待很久的一个日子,ubuntu 10.04就是在这天正式发布的,我想有很多人跟我一样一直在等官网挂出下载链接的那刻.读大学时曾经在官网订过ubuntu光盘,要用英文写的,还以为 会寄不到,谁知大概一个月时间我就收到了,自此就跟ubuntu接下了不解之缘,在此之前用过red hat 9.0(它永远的经典,我想很多人都是用这个进入linux大门的).red hat 企业版.Fedora. 下面我介绍解决wubi安装ubuntu时要去官网下载系统映像文件问题的方法,分为两部

如何解决ASP.NET新增时多字段取值的问题_实用技巧

ASP.NET 开发人员在卡发时经常会碰到一个情况,就是新增的页面中字段太多,在点击保存的时候需要一个一个的赋值实体或者构建SQL语句去保存.这样不仅浪费体力还需要占用大量的文本行控件去写代码.经过构思是否可以使用一种更方便的办法去解决呢?提高代码的内聚性.  1.思路  我们知道一般新增页面最多的就是一大堆文本框让用户输入内容,然后点击保存按钮进行提交将数据持久化到数据库. 在点击提交的时候传统方式就是一个一个文本框的读取赋值.  HTML代码如下: <asp:TextBox ID="T

Android解决dialog弹出时无法捕捉Activity的back事件的方法_Android

本文实例讲述了Android解决dialog弹出时无法捕捉Activity的back事件的方法.分享给大家供大家参考.具体分析如下: 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出时,

解决jQuery使用JSONP时产生的错误_jquery

什么是域,简单来说就是协议+域名或地址+端口,3者只要有任何一个不同就表示不在同一个域.跨域,就是在一个域中访问另一个域的数据. 如果只是加载另一个域的内容,而不需要访问其中的数据的话,跨域是很简单的,比如使用iframe.但如果需要从另一个域加载并使用这些数据的话,就会比较麻烦.为了安全性,浏览器对这种情况有着严格的限制,需要在客户端和服务端同时做一些设置才能实现跨域请求. JSONP简介JSONP(JSON with Padding)是一种常用的跨域手段,但只支持JS脚本和JSON格式的数据

标签-标准H5的网页在IE678中渲染时是什么模式

问题描述 标准H5的网页在IE678中渲染时是什么模式 标准的H5网页在IE678中渲染时是什么模式?那些不支持的标签如 .等会被怎么处理? 解决方案 不支持的标签会被忽略.IE9才开始部分之处Html5

解决Python 遍历字典时删除元素报异常的问题_python

错误的代码① d = {'a':1, 'b':0, 'c':1, 'd':0} for key, val in d.items(): del(d[k]) 错误的代码② -- 对于Python3 d = {'a':1, 'b':0, 'c':1, 'd':0} for key, val in d.keys(): del(d[k]) 正确的代码 d = {'a':1, 'b':0, 'c':1, 'd':0} keys = list(d.keys()) for key, val in keys: d