浏览器专属CSS开发
转发下,同事总结的。
浏览器大战的结果曾经一度是IE一统天下,在那个时代,我们根本不用担心浏览器兼容性问题,用PS自动生成代码都行。然而伴随时代发展,人们对WEB应用的期望越来越高,于是乎,江湖烽烟再起,各种浏览器如雨后春笋,这可苦了我们这些开发者,为了让各浏览器表现一致,不知道有多少前辈耗费了多少心血,现在,让我们踩在前辈的肩膀上继续去奋斗吧。
日常工作我们经常需要区分Firefox和IE系列浏览器,这里有一个使用的快速方法:
background:blue;
/* Firefox */
background:red \9; /* IE8(只有IE系列浏览器认识\9)
*/
*background:black; /* IE7(IE6/IE7认识星星)*/
_background:orange; /* IE6
(IE6认识下划线) */
测试地址:
http://webtech.intra.sina.com.cn/?page_id=39
如果想更深入的研究,那么这里有更多的例子:
/* Opera */
html:first-child #opera
{
display: block;
}
/* IE 7 */
html > body #ie7
{
*display: block;
}
/* IE 6 */
body #ie6
{
_display: block;
}
/* Firefox 1 - 2 */
body:empty #firefox12
{
display: block;
}
/* Firefox */
@-moz-document url-prefix()
{
#firefox { display: block; }
}
/* Safari */
@media screen and (-webkit-min-device-pixel-ratio:0)
{
#safari { display: block; }
}
/* Opera */
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)
{
head~body #opera { display: block; }
}
以上都是前辈实践摸索出来的hack方式,用以区分不同浏览器,不过呢,当今世界的浏览器主要分为四大内核:
渲染引擎
浏览器
Trident
Internet Explorer
Gecko
Mozilla Firefox
WebKit
Safari、google Chrome
Presto
Opera
官方的文档都有说明,可以使用前缀
来实现各引擎的私有属性:
-o-:以Presto为渲染引擎的浏览Opera的私有属性、
-moz-:以Gecko为渲染引擎的浏览器Mozilla Firefox的私有属性
-webkit-:以Webkit为渲染引擎的浏览器Safari、Google Chrome的私有属性
IE8开始引入-ms-前缀用以区分私有属性的方式,详见:
https://blogs.msdn.com/ie/archive/2008/09/08/microsoft-css-vendor-extensions.aspx
另外IE还可以通过条件注释来加以区分,详见:
http://www.quirksmode.org/css/condcom.html
http://msdn.microsoft.com/en-u
相关文档:
浏览器越来越多,不同的浏览器,不同的版本在页面的渲染上都各不相同。这让网页开发人员很头疼,为了能兼容各个浏览器,人们挖掘出了很多 CSS Hack。下面进行一下总结,如果还有其他的 CSS Hack 欢迎提供。
一) 针对 IE 的 Hack
大部分 CSS Hack 都是针对 IE 的,这是用于我们的 IE "坚强"所致,尤其是 IE6。
#test {
......
自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法
对于div,p等块级元素
正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义的宽度之后自动换行
html
css
1.(IE浏览器)连续的英文字符和阿拉伯数字,使用word ......
<body style="background-color:#000" mce_style="background-color:#000">
<div style="background-color:#fff; width:500px; height:200px; filter:alpha(opacity='50'); opacity:0.5">这个背景是透明的</div>
</body>
/*IE*/
filter:alpha(opacity='50');
/*FF*/   ......
此文为网上收集~
给客户做站的时候遇到的问题,div层加了margin后 总宽度超过父级层宽度 就自动换行了 如何让浮动层加margin后不换行呢?
下面看浮动层加margin后换行的例子:
比如说有个DIV宽度为380px,它里面有一个菜单列表,每个宽度为60px,margin-right为20px。如果就按照下面的HTML结构来做的话,那么这个菜单列表能 ......
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td {
padding: 0;
margin: 0;
}
fieldset, img {
border: 0;
}
table {
border-co ......