CSS Hacks总结分析

下面来介绍一下关于css hack来解决一些多浏览器中不兼容的问题介绍。

  IE6 IE7 Firefox2+ Firefox3+ Opera9.5+ Safari3.1+
选择符{
  *属性:值;
}[1]
× × × ×
选择符{
  _属性:值;
}
×[2] × × × ×
选择符,x:-moz-any-link{
  属性:值;
}
× × ×
选择符,x:-moz-any-link,x:default{
  属性:值;
}
× × × ×
@media all and (min-width:0){
  选择符{属性:值;}
}[3]
× × × ×
@media all and (-webkit-min-device-pixel-ratio:0){
  选择符{属性:值;}
}[4]

1] 此处的*号其实也可以是.号、>号、+号和#号。但它们都不属于CSS2.1规范合法属性名的一部分,所以不能通过验证。
[2] 当IE7为quriks mode时和IE6为quriks mode解析相同,所以此时这个表达式在IE7中也能生效。这个hack已经应用了很久了,下划线_作为属性名的前缀是符合CSS2.1规范语法的,但不存在于其属性名列表中,所以依旧不能通过标准语法验证。对于多个IE的CSS Hacks,条件注释是一个很值得考虑的解决方案。另外对于IE8可以关注其新功能和变化,但现在考虑其CSS Hacks问题有点过早,真的有需求可以通过增加<meta http-equiv=”X-UA-Compatible” content=”IE=EmulateIE7″ />来解决。
[3] 如果把表达式中的and和(中间的空白去掉变成@media all and(min-width:0){选择符{属性:值;}},那么Safari3+将无法识别,Opera9.5+则可以。
[4] 这个表达式Opera9.0是支持的。
上面这些CSS Hacks仅仅是沧海一粟,是一些简单的通用的CSS Hacks。这个世界上还存在很多很知名很经典的CSS Hacks
在这里我就不介绍了。

 

国外网站参考

The syntax for conditional comments is as follows:

Positive

 代码如下 复制代码
<!--[if condition]> HTML <![endif]-->
Negative
<!--[if !condition]><![IGNORE[--><![IGNORE[]]> HTML <!--<![endif]-->

condition is one of the following:

IE
Any version of IE
lt IE version
Versions less than version
lte IE version
Versions less than or equal to version
IE version
Only version version
gte IE version
Versions greater than or equal to version
gt IE version
Versions greater than version
version is the version of Internet Explorer, typically 5, 5.5, 6, or 7

HTML is the HTML to be included if the condition does or doesn't match, depending on the type of conditional comment. When included, the HTML is placed right where the conditional comment is in the source.

For negative conditions,

 代码如下 复制代码
<![IGNORE[--><![IGNORE[]]> can be replaced with -->

if the condition is simply IE. The longer version is only needed when Internet Explorer might parse the contents.

The <![IGNORE[ ... ]]> directive is not available in XML, so it is illegal to use it in XHTML. A solution would be to split it up into two special conditional comments: <!--[if !condition]> XHTML <![endif]--> <!--[if !IE]>--> XHTML <!--<![endif]--> where XHTML is the same both places. Note that Internet Explorer 7 and below don't yet recognize XHTML as a form of XML, so this is merely forward-looking.

 

Conditional comments as a CSS hack
Up
Conditional comments can be used as a CSS hack by including links to stylesheets based on the layout engine. Here is an example of how stylesheets can be separated in this way:

 代码如下 复制代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
 <head>
  <title>Test</title>
  <link href="all_browsers.css" rel="stylesheet" type="text/css">
  <!--[if IE]> <link href="ie_only.css" rel="stylesheet" type="text/css"> <![endif]-->
  <!--[if lt IE 7]> <link href="ie_6_and_below.css" rel="stylesheet" type="text/css"> <![endif]-->
  <!--[if !lt IE 7]><![IGNORE[--><![IGNORE[]]> <link href="recent.css" rel="stylesheet" type="text/css"> <!--<![endif]-->
  <!--[if !IE]>--> <link href="not_ie.css" rel="stylesheet" type="text/css"> <!--<![endif]-->
 </head>
 <body>
  <p>Test</p>
 </body>
</html>

参考地址:http://www.webdevout.net/css-hacks

时间: 2024-11-01 01:36:41

CSS Hacks总结分析的相关文章

CSS兼容要点分析

css IE vs FFCSS 兼容要点: DOCTYPE 影响 CSS 处理 FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行 FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中 FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一

国外转过来十个最好的CSS hacks

author: Dejan Cancarevic  come from:http://stylizedweb.com/2008/02/14/10-best-css-hacks/ 转自国外网站,本想翻译成中文,但是细看文章实在是简单,如果看不懂这个,我想也就没必要继续做前端了. If you are front end coder you must know how important is to make cross browses, valid CSS and xHTML code. And

新浪微博CSS布局实例分析

最近一段时间我一直在学习CSS网页布局设计,学习过程中也练习做了几个例子.对于网页的布局分析思路也算是有了一定的了解. 本文不讲技术,只讲一个CSS网页布局的制作思路. 做CSS网页布局首先要有一个清晰的思路,其次才是高超的技术,只有思路正确了,出发点对了.才能做出想要的网页效果. 新浪微博大家都知道,应该也有不少朋友跟我一样在使用新浪微博.今天这篇文章我们就以新浪微博的界面布局为例子做一个CSS网页布局制作的思路. 首先先看一下,新浪微博页面的整体布局效果. 然后我们进行初步的分解分析.从整体

CSS兼容要点分析_经验交流

IE vs FF CSS 兼容要点: DOCTYPE 影响 CSS 处理 FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行 FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中 FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 h

Jquery中CSS选择器用法分析_jquery

本文实例讲述了Jquery中CSS选择器用法.分享给大家供大家参考.具体如下: jQuery使用了一套css选择器,共有5种,即标签选择器,ID选择器,类选择器,通用选择器和群组选择器,现分述如下: 1. 标签选择器 用于选择HTML页面中已有的标签元素,又称元素选择器,格式:$("element"),如$("div"),同getElementByTagName 2. ID选择器 用于获取某个具有id属性的元素,格式如下:$("id"),同get

IE8 7 6 css hacks

对IE8.IE7.IE6.Firefox2.0.0.12做了简单的一些CSS HACK测试.下文中的 IE8 暂时仅代表IE8 beta1). CSS定义:p {color:#f00;} xhtml结构:<p>文字</p> 主要是测试"文字"这个颜色在不同浏览器下使用hack的一些结果报告: * html  p {color:#f00;} 支持 IE6        不支持FF IE7 IE8b *+html p {color:#f00;} 支持 IE7 IE8

css 网页布局中CSS无效原因分析

一.div 标签未关闭 这是版面设计失效的最常见原因之一.当我们了解到这是多少精致的版块设计失效的罪魁祸首时,总会大吃一惊.开启的div标签是最普遍的版块设计失误之一,也是最难诊断的失误之一.验证程序有时会指向错误的开启div标签,诊断时就像大海捞针一样麻烦. 二.麻烦的embed标签 九十年代早期,Microsoft和Netscape的浏览器开始能够辨认非标准的独有字体.遗憾的是这意味着W3C验证程序还不能识别某些关键HTML 标签,如"embed",即使这些标签已经被广泛使用.如果

不用CSS Hacks 后的浏览器兼容方案分享

涉及到的条件注释代码如下:  代码如下 复制代码 <!DOCTYPE html> <!--[if lt IE 7 ]><html class="ie ie6"><![endif]--> <!--[if IE 7 ]><html class="ie ie7"><![endif]--> <!--[if IE 8 ]><html class="ie ie8&qu

CSS学习:On having layout

css 英文原文在此:http://www.satzansatz.de/cssd/onhavinglayout.htm 文中所有的 layout 这个单词都未作翻译,一来本身这个单词意思就比较多,翻成啥都觉得别扭,二来它也是专有的属性,所以就意会一下吧.水平有限,很多地方都是模模糊糊地意译,发现错误欢迎留言指出. 引用一段来自Dean Edwards的评价:I recommend that every CSS designer and DOM scripter read this. Unders