webrebuild.org第四届年会——金秋四城联动
大白的工作笔记 注册 | 登陆
浏览模式: 标准 | 列表Tag:float

如何实现 不定宽度浮动列表居中

最近突然想到了这个问题,以前看过类似文章的解答,自己也想了想,笔记一下 ,以免忘记。

XML/HTML代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>测试</title>  
  6. <style>  
  7. *{ padding:0; margin:0; list-style:none;}  
  8. ul { float:left; position:relative; left:50%;}  
  9. li { float:left;position:relative; right:50%; padding:6px; }  
  10. </style>  
  11. </head>  
  12. <body>  
  13. <div>  
  14.   <ul>  
  15.     <li><a href="#">一丝不挂-陈奕迅</a></li>  
  16.     <li><a href="#">再见二丁目-杨千桦</a></li>  
  17.     <li><a href="#">春光乍泄-张国荣</a></li>  
  18.   </ul>  
  19. </div>  
  20. </body>  
  21. </html>  
首先,ul设置左浮动是为了 使得ul的宽度不是100%,而是 几个li宽度的总和。 之后ul相对定位 使用left把ul移动到剧中位置。

这个使用 li的起始位置在剧中的50%的地方,所以需要把li 向左边移动50%。 这里想问题的时候要注意,position:relative所定义的移动百分比不是相对于自身的,而是相对于父元素的。也就是说 li 50% 实际上计算出来的宽度 是 ul宽度的一半,而不是li的。

Tags: float, 居中