首页 > Web开发 > 详细

CSS中不定宽块状元素的水平居中显示

时间:2016-12-31 10:41:26      阅读:309      评论:0      收藏:0      [点我收藏+]
 

CSS中不定宽块状元素的水平居中显示

慕课网上的HTML/CSS教程

http://www.imooc.com/view/9

其中有三种方法

第一种是加入table标签

任务是实现div元素的水平居中,

初始代码如下

 

[html] view plain copy
 
 技术分享技术分享
  1. <div>  
  2.   设置我所在的div容器水平居中    
  3. </div>  

使用table标签实现的代码如下

 

 

[html] view plain copy
 
 技术分享技术分享
  1. <table>  
  2.  <tbody>  
  3.    <tr><td><div>  
  4.   设置我所在的div容器水平居中    
  5. </div>  
  6. </td></tr>  
  7.  </tbody>  
  8. </table>  

 

 

第二种方法是将其设置为内联元素,通过父类来修改

即在上面的初始代码里添加类来实现居中

 

[html] view plain copy
 

  1. <div class="wrap">  
  2.   设置我所在的div容器水平居中    
  3. </div>  

 

css代码

 

[html] view plain copy
 
 技术分享技术分享
  1. <style>  
  2. .wrap{text-align:center;}  
  3. </style>  

第三种方法在慕课网上讲解的有点绕,着重讲一下

 

下面一段话是摘抄与慕课网

【1】【方法三:通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现水平居中。
      我们可以这样理解:假想ul层的父层(即下面例子中的div层)中间有条平分线将ul层的父层(div层)平均分为两份,ul层的css代码是将ul层的最左端与ul层的父层(div层)的平分线对齐;而li层的css代码则是将li层的平分线与ul层的最左端(也是div层的平分线)对齐,从而实现li层的居中。】

给出的代码如下

 

[html] view plain copy
 
 技术分享技术分享
  1. <html>  
  2. <head>  
  3. <meta charset="utf-8">  
  4. <title>不定宽块状元素水平居中</title>  
  5. <style>  
  6. .container{  
  7.     float:left;  
  8.    
  9.     position:relative;  
  10.     left:50%  
  11. }  
  12.   
  13. .container ul{  
  14.     list-style:none;  
  15.       
  16.     margin:0;  
  17.     padding:0;  
  18.       
  19.     position:relative;  
  20.     left:-50%;  
  21. }  
  22. .container li{float:left;display:inline;margin-right:8px;  
  23. }  
  24.   
  25. </style>  
  26. </head>  
  27.   
  28. <body>  
  29. <div class="container">  
  30.     <ul>  
  31.         <li><href="#">1</a></li>  
  32.         <li><href="#">2</a></li>  
  33.         <li><href="#">3</a></li>  
  34.     </ul>  
  35. </div>  
  36. </body>  
  37. </html>  

先不用管其中的float:left

 

上面的代码先来分析style部分,为了直观的展现出left:50,left:-50,在每个类中添加border,如下

 

[html] view plain copy
 
 技术分享技术分享
  1. <style>  
  2. .container{  
  3.     float:left;  
  4.     border:2px red solid;  
  5.     position:relative;  
  6.     left:50%  
  7. }  
  8.   
  9. .container ul{  
  10.     list-style:none;  
  11.     border:2px blue solid;  
  12.     margin:0;  
  13.     padding:0;  
  14.       
  15.     position:relative;  
  16.     left:-50%;  
  17. }  
  18. .container li{float:left;display:inline;margin-right:20px;  
  19. border:2px green solid;  
  20. }  
  21.   
  22. </style>  

显示的结果图如下

 

技术分享

红色的为第一层,即div层,向右偏移了50%,起点变成了中间线,并不是居中显示;

然后是蓝色的ul层,相对于div层向左偏移50%,这里假设ul没充满,如上图,ul是相对于中间线偏移自身50%,即ul层是居中的;

最后来看li,也就是绿色的那层,li是写在ul里的,当然是居中的了,至于其是Container的子类,我觉得没有必要

 

不过上面令我奇怪的是float,因为li是块状元素,1,2,3应该是分别独立于三行的,当我将display:inline删除的时候,发现仍然没有什么改变,于是查了float的知识,

特摘抄于下

【2】【设了float:left的元素允许它的右边存在任何元素同行显示,不论是内联元素还是块元素。但它的左边还是不允许存在任何元素与之同行显示,哪怕其它的元素的代码在前,除非也给前面的元素加上float:left后,才允许同行显示。
设了display:inline的元素,允许它的前后存在其它的内联元素同行显示。关于代码在其前面的块元素之同行显示,则要让前面的元素浮动(不管是左还是右浮动)或设为display:inline,还有代码在后面的是块元素(管它有没有浮动,是左浮动还是右浮动),均不能与之同行,除非设为display:inline。】

 

课程的最后也提到了float,使用此标签的元素变为inline-block,即内联块状元素

 

参考

【1】http://www.imooc.com/code/6365

【2】http://zhidao.baidu.com/question/253828906.html

CSS中不定宽块状元素的水平居中显示

原文:http://www.cnblogs.com/lanlanzi/p/6238811.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!