百度空间 | 百度首页 
               
 
查看文章
 
一道面试题,当时没有解出来。(块级元素的垂直居中)
2008年04月23日 星期三 16:38

转载自:http://www.33lab.cn/demo/200803/ideas_from_an_interview_question.htm



#wrapper {
 border:1px solid #ccc;
 width:400px;
 height:200px;
 text-align:center;
 line-height:200px;  // Vertical Align For IE7 & Firefox
 _font-size:120px;  // Vertical Align For IE6
}
#wrapper a {
 display:-moz-inline-block;  // For Firefox 2(-)
 display:inline-block;  // For Firefox 3 & IE6, 对于IE6来说其实相当于zoom:1, 仅仅是给elem一个layout。
       // 注意:支持display:inline-block的浏览器有:Firefox3,Safari,Opera
 margin:0 auto;  // For Firefox 2(-)
 width:80px;
 height:20px;
 font:11px/20px arial;
 background:red;
}





扩展(一):水平居中的翻页元素



<div class="pager">
 <a href="" class="first">first</a>
 <a href="" class="prev">prev</a>
 <a href="">1</a>
 <strong>2</strong>
 <a href="">3</a>
 <span>...</span>
 <a href="">8</a>
 <a href="" class="next">next</a>
 <a href="" class="last">last</a>
</div>

.pager {
 width:800px;
 border:1px dotted #ccc;
 text-align:center;
}
.pager * {
 display:-moz-inline-box;  // 此属性会造成text-align、text-indent等无效的问题,不建议使用。
 -moz-box-align:center;  // 解决上个属性造成的text不能垂直居中的问题
 display:inline-block;
 padding:0 12px;
 height:28px;
 line-height:28px;
 border:1px solid #ccc;
}
.pager span {
 border-color:white;
 padding:0 3px;
}
.pager strong {
 border-color:red;
}
.pager .last {
 background:red;
}

这种方法有个局限:因为使用了-moz-inline-box属性,所以不能设置text-align,text-indent。因此不能用background进行图片替换。






扩展(二):菜单的水平居中



<div id="menu">
 <del>  // 非del莫属?!
 <ul>
  <li><a href="">Tab One</a></li>
  <li><a href="">Tab Two: Longer</a></li>
  <li><a href="">Tab Three: Longest</a></li>
  <li><a href="">Tab Four</a></li>
 </ul>
 </del>
</div>

#menu {
 border:1px dotted #ccc;
 text-align:center;
}
#menu del {
 display:inline-block;
 text-decoration:none;
}
#menu ul {
 display:table;
 margin:0 auto;
}
#menu li {
 display:table-cell;
 *float:left;
}
#menu li a {
 display:block;
 width:160px;
 background:gray;
 margin:0 3px;
}

此方法来源:http://www.cssplay.co.uk/menus/centered.html






扩展(三):图片的垂直居中。(内联元素的垂直居中)



#wrapper_2 {
 border:1px solid #ccc;
 width:400px;
 height:200px;
 text-align:center;
 display:table-cell;  // For Firefox
 vertical-align:middle;  // For Firefox
 *line-height:200px;  // Vertical Align For IE7
 _font-size:175px;  // Vertical Align For IE6, FontSize 大法
}
#wrapper_2 img {
 *vertical-align:middle;  // For IE, 不设的话图片下面有个小空位
 border:1px solid #ccc;
}

类别:css&js | 添加到搜藏 | 浏览() | 评论 (2)
 
最近读者:
 
网友评论:
1
2008年04月28日 星期一 12:01 | 回复
这是前台构架问得!你作后台的,说明他们问题问得没水平!
 
2
2008年07月12日 星期六 15:54 | 回复
不会吧 老哥还要被面试 - -#
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu