CSS实现垂直居中小结

对于用CSS实现垂直居中有很多种方法,对于标准浏览器的实现方法较为简单、统一,即采用单元格垂直居中的特性:

标准浏览器如Mozilla, Opera, Safari等.,可将父级元素显示方式设定为TABLE(display: table;) ,内部子元素定为table-cell (display: table-cell),通过vertical-align特性使其垂直居中,但非标准浏览器是不支持的。

这些方法的不同之处在于对IE的实现。主流的方法有两种:

方法一:

非标准浏览器只能在子元素里设距顶部50%,里面再套个元素距顶部-50% 来抵消。

body {padding: 0; margin: 0;}
body,html{height: 100%;}
#outer {height: 100%; overflow: hidden; position: relative;width: 100%; background:ivory;}
#outer[id] {display: table; position: static;}
#middle {position: absolute; top: 50%;} /* for explorer only*/
#middle[id] {display: table-cell; vertical-align: middle; position: static;}
#inner {position: relative; top: -50%;width: 400px;margin: 0 auto;} /* for explorer only */
div.greenBorder {border: 1px solid green; background-color: ivory;} 

优点:无需定义父元素的高度。

缺点:引入较多额外的标签。

方法二:

元素高度/字体大小的比值为1.14左右时IE可实现垂直居中

.box {
   display: table-cell;
   vertical-align:middle;
   width:200px;
   height:200px;
   text-align:center;
   /* hack for ie */
   *display: block;
   *font-size: 175px;
   /* end */
   border: 1px solid #eee;
}
.box img {
   vertical-align:middle;
}

优点:没有额外的标签。

缺点:计算font-size的值需要知道父元素的高度。

其实都是根据不同的需求来确定解决方案。相关阅读5还有很多奇怪的方法,有一些是是方法一的变种,没读懂……

补充:

方法二中,当.box为浮动时在FF下将失效,原因不知。

相关阅读:

  1. CSS解决未知高度垂直居中
  2. 2007淘宝UED招聘题解(前端开发部分)
  3. CSS实现完美垂直居中
  4. CSS实现垂直居中的5种方法
  5. CSS图片垂直居中方法整理集合 !

延伸——水平居中:

Beautiful Horizontally Centered Menus/Tabs/List. No CSS hacks. Full cross-browser.一文中所用到的水平居中的方法和垂直居中方法一的原理类似。在我看来都很有创意,想法很重要。
centered-menus-centered-tabs

[转]HTML4默认样式

转自:http://omiga.org/blog/archives/90

html,address,blockquote,body,dd,div,dl,dt,fieldset,form,frame,frameset,
h1,h2,h3,h4,h5,h6,noframes,ol,p,ul,center,dir,hr,menu,pre{display:block;}
li{display:list-item;}
head{display:none;}
table{display:table;}
tr{display:table-row;}
thead{display:table-header-group;}
tbody{display:table-row-group;}
tfoot{display:table-footer-group;}
col{display:table-column;}
colgroup{display:table-column-group;}
td,th{display:table-cell;}
caption{display:table-caption;}
th{font-weight:bolder; text-align:center;}
caption{text-align:center;}
body{margin:8px; line-height:1.12;}
h1{font-size:2em; margin:.67em 0;}
h2{font-size:1.5em; margin:.75em 0;}
h3{font-size:1.17em; margin:.83em 0;}
h4,p,blockquote,ul,fieldset,form,ol,dl,dir,menu{margin:1.12em 0;}
h5{font-size:.83em; margin:1.5em 0;}
h6{font-size:.75em; margin:1.67em 0;}
h1,h2,h3,h4,h5,h6,b,strong{font-weight:bolder;}
blockquote{margin-left:40px; margin-right:40px;}
i,cite,em,var,address{font-style:italic;}
pre,tt,code,kbd,samp{font-family:monospace;}
pre{white-space:pre;}
button,textarea,input,object,select{display:inline-block;}
big{font-size:1.17em;}
small,sub,sup{font-size:.83em;}
sub{vertical-align:sub;}
sup{vertical-align:super;}
table{border-spacing:2px;}
thead,tbody,tfoot{vertical-align:middle;}
td,th{vertical-align:inherit;}
s,strike,del{text-decoration:line-through;}
hr{border:1px inset;}
ol,ul,dir,menu,dd{margin-left:40px;}
ol{list-style-type:decimal;}
ol ul,ul ol,ul ul,ol ol{margin-top:0; margin-bottom:0;}
u,ins{text-decoration:underline;}
br:before{content:"\A";}
:before,:after{white-space:pre-line;}
center{text-align:center;}
abbr,acronym{font-variant:small-caps; letter-spacing:0.1em;}
:link,:visited{ text-decoration:underline;}
:focus{outline: thin dotted invert;}
/* Begin bidirectionality settings (do not change) */
BDO[DIR="ltr"]{direction:ltr; unicode-bidi:bidi-override;}
BDO[DIR="rtl"]{direction:rtl; unicode-bidi:bidi-override;}
*[DIR="ltr"]{direction:ltr; unicode-bidi:embed;}
*[DIR="rtl"]{direction:rtl; unicode-bidi:embed;}
@media print{
h1{ page-break-before: always;}
h1,h2,h3,h4,h5,h6{page-break-after:avoid;}
  ul,ol,dl{page-break-before:avoid;}
}

ps:天天跑到某人那里去看,索性转了算了。

Happy Birthday

882bus

低调……低调……祝你生日快乐!

My CV’s print.css

body{
	background-color:#FFF;
	font:12pt/180% "Times New Roman", Times, serif;
	color:#000;
	margin:0;
	padding:0;
}
a:link, a:visited {
	color: blue;
	text-decoration: underline;
}
#main a:link:after, #main a:visited:after {
	content: " (" attr(href) ") ";
	font-size: 90%;
}
#logo, #submenu, img, #main h2 a{
	display:none;
}
#main caption a{
	display:block;
}
#container{
	width:auto;
	margin:5% 5% 5% 10%;
	float: none !important;
}
#main{
	padding-top: 1em;
	border-top: 1px solid #000;
}
h2{
	font-size:120%;
}
h3{
	font-size:110%;
}

相关阅读:

Alternative Style

最早看到切换样式表的应用,是Yahoo的首页。虽然布局没有改变,但整个页面的颜色都变了。当时觉得好神奇啊,但后来这种应用太泛滥了,都有点反感。而对于它的实现,其实我并不知道。今天看了Alternative Style: Working With Alternate Style Sheets,来自Listapart,以下代码摘自他的文章。哇,这篇文章写自2001,好早啊,感叹一下!

www.911xq.com
www.enshisjw.com