`

CSS Hack技巧汇总 解决DIV+CSS布局多浏览器兼容问题

阅读更多

CSS Hack就是指我们为了兼容各浏览器,而使用的特别的CSS定义技巧。

我们在用DIV+CSS制作网页时,由于不同的浏览 器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等对CSS的支持及解析结果不一样,导致生成的页面效果不一样,得不到我们所需要的页面效果。这时候我们就需要针对不同的浏览器去写不同的 CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS代码的过程,就叫CSS Hack。

为了向你展示这些 CSS Hack 是否正常运作,我新建六个 P 标签,并给每一个 P 标签一个特有的 id。这将向你展示 CSS Hack 的运作情况。

<p id="opera">我来自 Opera 7.2 - 9.5</p>
<p id="safari">我是神奇的 Safari</p>
<p id="firefox">我来自 Firefox</p>
<p id="firefox12">我是FF前辈 Firefox 1 - 2 </p>
<p id="ie7">我是 IE 7</p>
<p id="ie6">我是残品 IE 6</p>

然后我让这些 P 标签默认都不显示

<style type="text/css">
body p{display: none;}
</style>

使用 IE CSS 条件注释区分 IE 浏览器

最简单的区分IE浏览器的方法自然是使用他们的条件注释。微软创建了一个强大的语法来让我们去实现这个功能。我不想再详细地介绍 IE 条件注释了,我想你在搜索引擎能搜索到上万个搜索条目,我这里只要这两个:

<!--[if IE 7]>
<style type="text/css">
</style>
<![endif]-->

<!--[if IE 6]>
<style type="text/css">
</style>
<![endif]-->

使用 CSS 解析器 Hacks 区分 IE

虽 说 IE 条件注释十分简单好用,但是如果你想把全部的 CSS 放到一个文件里的话,那么你不得不使用别的方法。注意这里的 IE 7 Hack将只对 IE7 有效,因为 IE6 根本不知道 > 选择符。同时你也得注意 > 选择符对于其他浏览器同样是无效的。

/* IE 7 */
html > body #ie7
{*display: block;}

/* IE 6 */
body #ie6
{_display: block;}

CSS Hack 区分 Firefox

第一个使用了 body:empty 来区分 Firefox 1 和 2 。第二个 hack使用了全部 Firefox 浏览器的专有扩展 -moz。 -moz 只对 Firefox有效,使用这个 Hack 大可不必担心其他浏览器的影响。

/* Firefox 1 - 2 */
body:empty #firefox12
{display: block;}

/* Firefox */
@-moz-document url-prefix()
{#firefox { display: block; }}

CSS Hack 区分 Safari

Safari 的 CSS hack 与 Firefox 的 hack 看起来很像,使用的是 Safari浏览器的专有扩展 -webkit 且只对 Safari 浏览器有效。

/* Safari */
@media screen and (-webkit-min-device-pixel-ratio:0)
{#safari { display: block; }}

CSS Hack 区分 Opera

/* Opera */
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)
{head~body #opera { display: block; }}

然后,全部合在一起便是

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CSS Browser Hacks</title>
<style type="text/css">
body p
{
display: none;
}
/* 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; }
}
</style>
</head>

<body>
<p id="opera">我来自 Opera 7.2 - 9.5</p>
<p id="safari">我是神奇的 Safari</p>
<p id="firefox">我来自 Firefox</p>
<p id="firefox12">我是FF前辈 Firefox 1 - 2 </p>
<p id="ie7">我是囧 IE 7</p>
<p id="ie6">我是残品 IE 6</p></body>
</html>

CSS Hack 虽好且方便兼容各浏览器,但是通不过 W3C 验证,所以还得自己权衡是否有必要去使用。

附:一张从国外摘来的一张CSS hack列表,显示了各浏览器对css hack的支持程度,对我们制作兼容网页非常有帮助。

分享到:
评论

相关推荐

    div+css布局时的浏览器兼容问题

    ### div+css布局时的浏览器兼容问题 在Web开发领域,使用div+css进行页面布局是一种常见的技术手段。然而,在实际应用过程中,由于不同浏览器(如IE、Firefox、Chrome等)对CSS的支持程度存在差异,导致同一份CSS...

    div+css中常见的浏览器兼容性处理

    特别是在使用div+css布局时,由于IE6、IE7和Firefox等浏览器对CSS的支持程度不同,兼容性问题尤为突出。本文将详细介绍如何处理这些兼容性问题。 首先,我们来看CSS中的`!important`规则。`!important`可以强制应用...

    div+css页面布局,新手入门教材,2天学会div+css

    因此,需要处理浏览器特有的显示问题,如使用条件注释或专门的CSS hack来解决IE的显示BUG。 8. **页面内文本样式**:CSS可以设置文本的颜色、字体、大小、对齐方式等,使网页内容更具可读性和美观性。 9. **头部...

    DIV+CSS解决各浏览器兼容问题

    ### DIV+CSS解决各浏览器兼容...总结而言,解决浏览器兼容性问题需要开发者对各种浏览器的特性有深入的理解,并灵活运用各种CSS技巧和hack。通过以上方法,可以有效地确保网页在不同浏览器下展现出一致且美观的效果。

    div+css常见兼容性问题

    在网页设计中,`div+css`是一种常见的布局方式,但它也伴随着一系列的浏览器兼容...以上就是关于`div+css`布局中常见的一些兼容性问题及其解决方案,理解并掌握这些技巧,可以有效提升网页在各种浏览器下的显示一致性。

    div+css网站布局实例

    同时,`clearfix` hack也是一种常用的解决浮动问题的方法,它可以保持父元素的高度包含所有浮动子元素。 7. **CSS预处理器**:Sass、Less和Stylus等CSS预处理器可以提升CSS编写效率,支持变量、嵌套规则、混合...

    DIV+CSS设计时浏览器兼容性问题.pdf

    浏览器兼容性问题一直是Web开发中的一个痛点,尤其是在使用DIV+CSS进行页面布局时。这个问题主要源于不同浏览器对CSS规范的实现存在差异,导致同一段代码在不同浏览器中表现不一致。为了解决这一问题,开发者通常...

    DIV+CSS浏览器兼容

    处理这些兼容性问题需要对各个浏览器的特性有深入理解,并熟练运用各种CSS hack和技巧。在实际开发中,可以使用工具如Autoprefixer自动添加浏览器前缀,以及使用条件注释或JavaScript库如Modernizr来检测浏览器特性...

    div+css静态文章模板(兼容火狐,IE6,IE7)

    解决方法包括使用条件注释提供特定于IE的样式,使用IE专有的CSS hack,或者借助于如 Normalize.css 和 Reset.css 等重置样式库来统一不同浏览器的默认样式。 2. 火狐浏览器兼容:火狐对CSS标准支持较好,但也有个别...

    CSS+DIV浏览器兼容技巧

    在构建基于 CSS+DIV 的网页布局时,浏览器兼容性是一个重要的考量因素,因为不同的浏览器对 CSS 规则的解析和执行可能存在差异。本篇文章主要探讨了一些针对 IE7、IE6 和 Firefox 的 CSS 兼容性技巧。 首先,我们来...

    仿动易色调DIV+CSS网页布局

    在网页设计领域,"仿动易色调DIV+CSS网页布局"是一种常见的实践方式,它旨在模仿知名网站动易的界面设计,并利用HTML的结构元素(如DIV)与CSS(层叠样式表)来实现响应式和跨浏览器兼容的布局。动易作为一款知名的...

    W3C网页标准、div+css教程、xhtml+css介绍

    2. **CSS兼容性**:XHTML+CSS组合时,需考虑到不同浏览器对CSS的支持程度,可能需要使用浏览器前缀或hack来解决兼容问题。 3. **响应式设计**:结合CSS3的媒体查询(media queries),XHTML+CSS可以实现响应式布局...

    DIV+CSS10个模板(有含内页)

    9. **浏览器兼容性**:使用DIV+CSS布局时,开发者需要注意确保模板在各种主流浏览器(如Chrome、Firefox、Safari、Edge和IE)中都能正常工作,这可能涉及到对CSS hack和前缀的理解。 10. **SEO优化**:良好的DIV+...

    DIV+2BCSS完美布局 DIV+2BCSS完美布局

    2. "DIV+CSS完美布局.pdf"是一份详细的PDF文档,可能包含了实例和案例分析,帮助读者深入理解和掌握DIV+CSS布局技巧。 3. "E书说明.txt"可能是关于电子书的使用说明,提供如何查看和利用PDF文档的指导。 通过学习和...

    DIV+CSS布局大全

    9. **浏览器兼容性**:虽然现代浏览器对CSS3支持良好,但考虑到老版本浏览器,开发者仍需关注CSS的兼容性问题,可能需要使用前缀、hack或回退策略。 10. **性能优化**:有效的CSS布局应考虑性能,如减少选择器...

    css hack div 布局

    "CSS hack"是一种解决浏览器兼容性问题的技巧,它涉及到特定的语法结构,以便在特定浏览器中应用特定的样式。本文将详细介绍如何使用CSS hack来处理div布局在不同浏览器中的兼容性问题。 首先,让我们看看一个基本...

    CSS hack技巧大全

    在网页开发中,CSS(层叠样式表)的兼容性问题一直是一个挑战,尤其是在处理不同浏览器间的表现差异时。CSS Hack是一种技术,用来解决这些差异,确保样式在各种浏览器中都能正确呈现。本文将详细介绍一些常用的CSS ...

    css safari浏览器识别CSS hack.docx

    在网页设计和开发中,CSS Hack常常用于解决不同浏览器对CSS样式解析的差异问题。本文主要探讨了如何针对Safari浏览器进行CSS Hack,以便在不同的浏览器环境下实现样式的一致性。 首先,我们要明白CSS Hack的基本...

Global site tag (gtag.js) - Google Analytics