??xml version="1.0" encoding="utf-8" standalone="yes"?>
line-height:24px;
使用固定宽度的容器ƈ且需要一行垂直居中时Q?line-height 卛_Q高度与父层容器一_Q更多的垂直居中ȝ可以看这里?/p>
清除容器动
#main {
overflow:hidden;
}
期前也提到过q样的问题,更多信息可以看这里?/p>
不让链接折行
a {
white-space:nowrap;
}
上面的设定就能避免链接折行,不过个h镉K接会有相应的q行Q有x行方面的讨论Q参看圆心的记录Q?/p>
始终?Firefox 昄滚动?/strong>
html {
overflow:-moz-scrollbars-vertical;
}
更多?Mozilla/Firefox U有 CSS 属性可以参考这里。需跨浏览器的支持,也可以?/p>
body, html {
min-height:101%;
}
使块元素水^居中
margin:0 auto;
其实是
margin-left: auto;
margin-right: auto;
q个技巧基本上所有的 CSS 教科书都会有说明Q别忘记l它加上个宽度。Exploer 下也可以使用
body{
text-align: center;
}
然后定义内层容器
text-align: left;
恢复?/p>
隐藏 Exploer textarea 的滚动条
textarea {
overflow:auto;
}
Exploer 默认情况?textarea 会有垂直滚动条(不要问我Z么)?/p>
讄打印分页
h2 {
page-break-before:always;
}
page-break-before 属性能讄打印|页时的分页?/p>
删除链接上的虚线?/strong>
a:active, a:focus {
outline:none;
}
Firefox 默认会在链接获得焦点Q或者点LQ加上条虚线框,使用上面的属性可以删除?/p>
最单的 CSS 重置
* {
margin: 0; padding: 0
}
height:20px; /*For Firefox*/
*height:25px; /*For IE7 &
IE6*/
_height:20px; /*For IE6*/
注意序?/p>
q样也属于CSS HACKQ不q没有上面这Lz?br />
#example { color: #333; } /* Moz */
* html
#example { color: #666; } /* IE6 */
*+html #example { color: #999; } /* IE7
*/
W二U是使用IE专用的条件注?br />
<!–其他览?–>
<link rel=”stylesheet”
type=”text/css” href=”css.css” />
<!–[if IE 7]>
<!– 适合于IE7 –>
<link rel=”stylesheet”
type=”text/css” href=”ie7.css” />
<![endif]–>
<!–[if lte IE 6]>
<!– 适合于IE6及一?–>
<link
rel=”stylesheet” type=”text/css” href=”ie.css” />
<![endif]–>
W三Ucss filter的办法,以下为经总国外|站译q来的?
新徏一个css样式如下Q?/p>
#item {
width: 200px;
height: 200px;
background:
red;
}
新徏一个div,q用前面定义的css的样式:
<div id=”item”>some text here</div>
在body表现q里加入lang属?中文为zhQ?/p>
<body lang=”en”>
现在对div元素再定义一个样式:
*:lang(en) #item{
background:green !important;
}
q样做是Z?important覆盖原来的css样式,׃:lang选择器ie7.0q不支持,所以对q句话不会有M作用,于是也达Cie6.0下同L效果,但是很不q地的是,safari同样不支持此属?所以需要加入以下css样式Q?/p>
#item:empty {
background: green
!important
}
:empty选择器ؓcss3的规?管safariq不支持此规?但是q是会选择此元?不管是否此元素存?现在l色会现在在除ie各版本以外的览器上?/p>
对IE6和FF的兼容可以考虑以前?important
个h比较喜欢用第一U,z,兼容性比较好?/p>
我们都知道,览器在昄|页的时候,都会Ҏ|页的css样式表来军_如何昄Q但是我们在样式表中未必会将所有的元素都进行了具体的描qͼ? 然也没有必要那么做,所以对于那些没有描q的属性,览器将采用内置默认的方式来q行昄Q譬如文字,如果你没有在css中指定颜Ԍ那么览器将采用? 色或者系l颜色来昄Qdiv或者其他元素的背景Q如果在css中没有被指定Q浏览器则将其设|ؓ白色或者透明Q等{其他未定义的样式均如此。所以有很多 东西出现FF和IE昄不一LҎ原因在于它们的默认显CZ一P而这个默认样式该如何昄我知道在w3中有没有对应的标准来q行规定Q因此对于这点也 别L罪IE了。所以解军_法就出来了,那就是对于不l一的默认显C方式,在css中给指定具体数值就可以了,下面我将我知道的默认标{来q行说明?/p>
列表标签UL LIQ这个是朋友抱怨得最多的标签Q说每次遇到q个标签的时候IE和FFL昄不一致。行Q既然如此,你何不在样式表中这个标{属性给定义了,? ul{padding:0;margin:0;}Q然后再看看Q是不是一致了Q对于ul标签QIE会自动羃q几个像素,而FF则不是这P所以这是Ҏ 原因.当然,我上面的定义肯定昄不太观,q个时候你可以手动q行调节,譬如调节?{padding:0;margin:0 0 0 10px;list-style-position: inside;},所以今后对于这个标{?只要你发现IE和FF不一?去看看对应的css有哪些属?然后q行夸张的描q?用IE和FireFox? 看之,如果一致则有效.FORM标签,q个标签在IE?会自动margin一些边?而在FF中margin则是0,因此,如果xCZ?所以最? 在css中指定margin和padding,针对上面两个问题,我的css中一般首先都使用q样的样式ul,form{margin:0; padding:0;}l定义死?所以后面就不会个头g.
关于更多默认g同的标签,希望大家l箋发掘,希望此文能抛砖引?
下面的问题不是默认值的问题?
对于排版,我们用得最多的css描述可能是float:left.有的时候我们需要在n栏的float div后面做一个统一的背?譬如:<div id=”page”> <div id=”left”></div> <div id=”center”></div> <div id=”right”></div> </div>,比如我们要将page的背景设|成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉?而page居然保存高度不变,问题来了,原因在于page不是float属?而我们的page׃要居?不能讄? float,所以我们应该这栯?lt;div id=”page”> <div id=”bg” style=”float:left;width:100%”><div id=”left”></div> <div id=”center”></div> <div id=”right”></div> </div></div>,再嵌入一个float left而宽度是100%的DIV解决?
随着IE7?important的支? !important
Ҏ现在只针对IE6的HACK.(注意写法.记得该声明位|需要提?)
<style>
#wrapper
{
width:
100px!important; /* IE7+FF */
width: 80px; /* IE6
*/
}
</style>
2, IE6/IE77对FireFox
*+html ?*html 是IEҎ的标{? firefox 暂不支持.?+html 又ؓ
IE7Ҏ标签.
<style>
#wrapper
{
#wrapper { width: 120px; } /*
FireFox */
*html #wrapper { width: 80px;} /* ie6 fixed */
*+html #wrapper
{ width: 60px;} /* ie7 fixed, 注意序 */
}
</style>
注意:
*+html 对IE7的HACK 必须保证HTML剙有如下声明:
<!DOCTYPE HTML PUBLIC
“-//W3C//DTD HTML 4.01
Transitional//EN” ”http://www.w3.org/TR/html4/loose.dtd”>
二、万?float 闭合(非常重要!)
关于 clear float 的原理可参见 [How To Clear Floats Without Structural
Markup]
以下代码加入Global CSS ?l需要闭合的div加上 class=”clearfix”
卛_,屡试不爽.
<style>
/* Clear Fix */
.clearfix:after
{
content:”.”;
display:block;
height:0;
clear:both;
visibility:hidden;
}
.clearfix
{
display:inline-block;
}
/*
Hide from IE Mac */
.clearfix {display:block;}
/* End hide from IE Mac
*/
/* end of clearfix */
</style>
三、其他兼Ҏ?再次啰嗦)
1, FF下给 div 讄 padding 后会D width ?height 增加, 但IE不会.(可用!important解决)
2,
居中问题.
1).垂直居中.?line-height 讄?当前 div 相同的高? 再通过 vertical-align: middle.(
注意内容不要换行.)
2).水^居中. margin: 0 auto;(当然不是万能)
3, 若需l?a 标签内内容加?样式, 需要设|?
display: block;(常见于导航标{?
4, FF ?IE ?BOX 理解的差异导致相?2px 的还有设?float的div在ie?
margin加倍等问题.
5, ul 标签?FF 下面默认?list-style ?padding . 最好事先声? 以避免不必要的麻?
(常见于导航标{֒内容列表)
6, 作ؓ外部 wrapper ?div 不要定死高度, 最好还加上 overflow:
hidden.以达到高度自适应.
7, 关于手Ş光标. cursor: pointer. 而hand 只适用?IE.
1 针对firefox ie6
ie7的css样式
现在大部分都是用!important来hackQ对于ie6和firefox试可以正常昄Q?br />
但是ie7?important可以正确解释Q会D面没按要求昄Q找C个针
对IE7不错的hack方式是使用“*+html”Q现在用IE7览一下,应该没有问题了?br />
现在写一个CSS可以q样Q?/p>
#1 { color: #333; } /* Moz */
* html #1 { color: #666; } /* IE6
*/
*+html #1 { color: #999; } /* IE7
*/
那么在firefox下字体颜色显CZؓ#333QIE6下字体颜色显CZؓ#666QIE7下字体颜色显CZؓ#999?/p>
2 css布局中的居中问题
主要的样式定义如下:
body {TEXT-ALIGN: center;}
#center { MARGIN-RIGHT: auto; MARGIN-LEFT:
auto; }
说明Q?br />
首先在父U元素定义TEXT-ALIGN:
center;q个的意思就是在父元素内的内容居中Q对于IEq样讑֮已l可以了?br />
但在mozilla中不能居中。解军_法就是在子元素定义时候设定时再加?#8220;MARGIN-RIGHT:
auto;MARGIN-LEFT: auto;
”
需要说明的是,如果你想用这个方法整个面要居中,不要套在一个DIV里,你可以依ơ拆出多个divQ?br />
只要在每个拆出的div里定义MARGIN-RIGHT:
auto;MARGIN-LEFT: auto; 可以了?/p>
3 盒模型不同解?
#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0}
#box{
width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px;
//for ie6.0-}
4 动ie产生的双倍距?/p>
#box{ float:left; width:100px; margin:0 0 0 100px; //q种情况之下IE会?00px的距?
display:inline;
//使Q动忽略}
q里l说一下block,inline两个元素,Block元素的特Ҏ:L在新行上开?高度,宽度,行高,边距都可以控?块元?;Inline元素的特Ҏ:和其他元素在同一行上,…不可控制(内嵌元素);
#box{ display:block; //可以为内嵌元素模拟ؓ块元?display:inline; //实现同一行排列的的效? diplay:table;
5 IE与宽度和高度的问?/p>
IE不认得min-q个定义Q但实际上它把正常的width和height当作有min的情冉|ѝ这样问题就大了Q如果只用宽度和高度Q?br />
正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话QIE下面Ҏ{于没有讄宽度和高度?br />
比如要设|背景图片,q个宽度是比较重要的。要解决q个问题Q可以这P
#box{
width: 80px; height: 35px;}html>body #box{ width: auto; height: auto;
min-width: 80px; min-height: 35px;}
6 面的最宽?/p>
min-width是个非常方便的CSS命oQ它可以指定元素最也不能于某个宽度Q这样就能保证排版一直正。但IE不认得这个,
而它实际上把width当做最宽度来ѝؓ了让q一命o在IE上也能用Q可以把一?lt;div>
攑ֈ <body> 标签下,然后为div指定一个类Q?br />
然后CSSq样设计Q?br />
#container{ min-width: 600px;
width:expression(document.body.clientWidth < 600? “600px”: “auto”
);}
W一个min-width是正常的Q但W?行的width使用了JavascriptQ这只有IE才认得,q也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最宽度?/p>
7 清除动
.hackbox{ display:table; //对象作为块元素U的表格昄}或?hackbox{
clear:both;}
或者加?afterQ伪对象Q?讄在对象后发生的内容,通常和content配合使用QIE不支持此伪对象,非Ie
览器支持,
所以ƈ不媄响到IE/WIN览器。这U的最ȝ?#8230;…#box:after{ content: “.”; display: block;
height: 0; clear: both; visibility: hidden;}
8 DIV动IE文本产生3象素的bug
左边对象动Q右辚w用外补丁的左边距来定位,双对象内的文本会离左边?px的间?
#box{ float:left; width:800px;}#left{ float:left; width:50%;}#right{
width:50%;}*html #left{ margin-right:-3px; //q句是关键}
HTML代码<div
id=”box”> <div id=”left”></div> <div
id=”right”></div></div>
9 属性选择?q个不能是兼容,是隐藏css的一个bug)
p[id]{}div[id]{}
q个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用
属性选择器和子选择器还是有区别?子选择器的范围从Ş式来说羃了,属性选择器的范围比较?如p[id]?所有p标签中有id的都是同样式?
10 IE捉迷藏的问题
当div应用复杂的时候每个栏中又有一些链接,DIV{这个时候容易发生捉q的问题?br /> 有些内容昄不出来,当鼠标选择q个区域是发现内容确实在面?br /> 解决办法Q对#layout使用line-height属? 或者给#layout使用固定高和宽。页面结构尽量简单?/p>
11 高度不适应
高度不适应是当内层对象的高度发生变化时外层高度不能自动q行调节Q特别是当内层对象?br />
margin 或paddign
时?br />
例:
<div
id=”box”>
<p>p对象中的内容</p>
</div>
CSSQ?box
{background-color:#eee; }
#box p {margin-top: 20px;margin-bottom: 20px;
text-align:center;
}
解决ҎQ在P对象上下各加2个空的div对象CSS代码Q?1{height:0px;overflow:hidden;}或者ؓDIV加上border属性?/p>
使用 line-height 垂直居中
line-height:24px;
使用固定宽度的容器ƈ且需要一行垂直居中时Q?line-height 卛_Q高度与父层容器一_Q更多的垂直居中ȝ可以看这里?/p>
清除容器动
#main {
overflow:hidden;
}
期前也提到过q样的问题,更多信息可以看这里?/p>
不让链接折行
a {
white-space:nowrap;
}
上面的设定就能避免链接折行,不过个h镉K接会有相应的q行Q有x行方面的讨论Q参看圆心的记录Q?/p>
始终?Firefox 昄滚动?/strong>
html {
overflow:-moz-scrollbars-vertical;
}
更多?Mozilla/Firefox U有 CSS 属性可以参考这里。需跨浏览器的支持,也可以?/p>
body, html {
min-height:101%;
}
使块元素水^居中
margin:0 auto;
其实是
margin-left: auto;
margin-right: auto;
q个技巧基本上所有的 CSS 教科书都会有说明Q别忘记l它加上个宽度。Exploer 下也可以使用
body{
text-align: center;
}
然后定义内层容器
text-align: left;
恢复?/p>
隐藏 Exploer textarea 的滚动条
textarea {
overflow:auto;
}
Exploer 默认情况?textarea 会有垂直滚动条(不要问我Z么)?/p>
讄打印分页
h2 {
page-break-before:always;
}
page-break-before 属性能讄打印|页时的分页?/p>
删除链接上的虚线?/strong>
a:active, a:focus {
outline:none;
}
Firefox 默认会在链接获得焦点Q或者点LQ加上条虚线框,使用上面的属性可以删除?/p>
最单的 CSS 重置
* {
margin: 0; padding: 0
}
如果?#8220;复杂”Q参考YUI 的做法(q有q里Q。原文留a中也有用戯了他们的观点
I have to agree with Niall Doherty, * {margin: 0px; padding: 0px;}
basically means "traverse every css element and give it these
attributes". That is a very unnecessary strain on the server and
a bad semantic practice, as you have to give some elements
padding/margin again, after stripping them.
值得注意的是Q一定要xxxx !important q句攄在另一句之上,上面已经提过