当前位置:求职简历网 > 知识 > 正文

css hack

各浏览器的css hack有哪些 CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表

各浏览器的css hack有哪些

CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。
属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"\9",但firefox前述三个都不能认识。
选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。
IE条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): IE浏览器显示的内容 ,针对IE6及以下版本: 只在IE6-显示的内容 。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
具体不展开,可看资料搜索“史上最全的CSS hack方式一览”


css常见的hack方法有哪些

CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。 属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"\9",但firefox前述三个都不能认识。 选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。 IE条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): IE浏览器显示的内容 ,针对IE6及以下版本: 只在IE6-显示的内容 。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。 具体不展开,可看资料搜索“史上最全的CSS hack方式一览”


CSS中<!---->是什么意思?

css中出现是正规的写法,如

<!--
td{color:red}
//-->

这是为了防止在某些情况下,浏览器不能识别这些CSS代码时,会以字符形式输出。

大家都知道在HTML中加入后,那么之间的代码将不会被执行,那么在某些终端上,比如手机,平板电脑上,或其它操作系统上,在特定情况下,有可能CSS代码会被禁用,那么浏览器会将CSS以字符形式输出来,加入后,这个情况就避免了,并且中的代码会执行。但这种情况极少出现,在目前的系统环境中,完全可以不用加了。
同理JAVASCRIPT中也可以加,原因同上。


什么是Css Hack?ie6,7,8的hack分别是什么

针对不同的浏览器写不同的 CSS code 的过程,就是 CSS hack。
示例如下:
#test{
Width:300px;
Height:300px;
background-color:blue
}
#test{
width:300px;
height:300px;
background-color:blue; /*firefox*/
background-color:red\9; /*all ie*/
background-color:yellow; /*ie8*/
+background-color:pink; /*ie7*/
_background-color:orange; /*ie6*/ }
:root #test { background-color:purple\9; } /*ie9*/
@media all and (min-width:0px)
{ #test {background-color:black;} } /*opera*/
@media screen and (-webkit-min-device-pixel-ratio:0)
{ #test {background-color:gray;} } /*chrome and safari*/


如何用CSS分别单独定义IE6、7、8的width属性

使用CSS hack进行设置。CSS hack的目的就是使你的CSS代码兼容不同的浏览器。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。1.原理  由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。  CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack,CSS Hack主要针对类内部Hack:比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等  选择器Hack:比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。等等  HTML头部引用(if IE)Hack:针对所有IE:,针对IE6及以下版本:,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。  书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。2、常用的CSS hack方式    (1)方式一 条件注释法  只在IE下生效    这段文字只在IE浏览器显示    只在IE6下生效    这段文字只在IE6浏览器显示    只在IE6以上版本生效    这段文字只在IE6以上(包括)版本IE浏览器显示    只在IE8上不生效    这段文字在非IE8浏览器显示    非IE浏览器生效    这段文字只在非IE浏览器显示    (2)方式二 类内属性前缀法  属性前缀法是在CSS样式属性名前加上一些只有特定浏览器才能识别的hack前缀,以达到预期的页面展现效果。  IE浏览器各版本 CSS hack 对照表说明:在标准模式中“-″减号是IE6专有的hack“\9″ IE6/IE7/IE8/IE9/IE10都生效“\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack“\9\0″ 只对IE9/IE10生效,是IE9/10的hack(3)CSS hack方式三:选择器前缀法选择器前缀法是针对一些页面表现不一致或者需要特殊对待的浏览器,在CSS选择器前加上一些只有某些特定浏览器才能识别的前缀进行hack。目前最常见的是*html *前缀只对IE6生效*+html *+前缀只对IE7生效@media screen\9{...}只对IE6/7生效@media \0screen {body { background: red; }}只对IE8有效@media \0screen\,screen\9{body { background: blue; }}只对IE6/7/8有效@media screen\0 {body { background: green; }} 只对IE8/9/10有效@media screen and (min-width:0\0) {body { background: gray; }} 只对IE9/10有效@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效等等3、实际应用比如要分辨IE6和firefox两种浏览器,可以这样写:div{background:green;/*forfirefox*/*background:red;/*forIE6*/(bothIE6&&IE7)}我在IE6中看到是红色的,在firefox中看到是绿色的。  解释一下:  上面的css在firefox中,它是认识不了后面的那个带星号的东西是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。  在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;*background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。4、所以单独定义IE6、7、8的width属性代码如下div{width:200px;/*所有浏览器都能识别 包括IE7*/-width:180px;/*只有IE6识别,识别后会覆盖通用width的设置,达到IE6单独设置的效果*/-width:180px\0;/*IE8以上的浏览器识别,识别后会覆盖通用width的设置,达到IE8单独设置的效果*/}


关于CSS hack的写法

我来给您解答~ #example{color:red ;}/*firefox*/
* html #example{color:blue;}/*ie6*/
*+html #example{color:green;}/*ie7*/
#example{color:yellow\0;}/*ie8*/或者简写成 #example{border:1px solid red;+ border:1px solid green;_border:1px solid blue;border:1px solid yellow\0;}还可简写成 #example{border:1px solid red!important;*border:1px solid green;border:1px solid yellow\0;}/*这样写是指,FF和IE是一样的效果 取red,iIE取green,I8取yellow ,如果不加!important,只有FF取red,ie6和ie7取green,IE8取yellow*/


关于CSS的Hack技术,

* html .test{color:#090;} /* For IE6 and earlier */
* + html .test{color:#ff0;} /* For IE7 */
.test:lang(zh-cn){color:#f00;} /* For IE8+ and not IE */
.test:nth-child(1){color:#0ff;} /* For IE9+ and not IE */


_:
选择IE6及以下。连接线(中划线)(-)亦可使用,为了避免与某些带中划线的属性混淆,所以使用下划线(_)更为合适。
*:
选择IE7及以下。诸如:(+)与(#)之类的均可使用,不过业界对(*)的认知度更高
\9:
选择IE6+
\0:
选择IE8+和Opera
[;property:value;];:
选择webkit核心浏览器(Chrome,Safari)。IE7及以下也能识别。中括号内外的3个分号必须保留,第一个分号前可以是任意规则或任意多个规则
[;color:#f00;]; 与 [color:#f00;color:#f00;]; 与 [margin:0;padding:0;color:#f00;]; 是等价的。生效的始终是中括号内的最后一条规则,所以通常选用第一种写法最为简洁。


CSS中不同浏览器兼容问题

一、CSS HACK
1, !important
随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)
以下为引用的内容:
2, IE6/IE7对FireFox
以下为引用的内容:*+html 与 *html 是IE特有的标签, firefox 暂不支持.而*+html 又为 IE7特有标签.
注意:*+html 对IE7的HACK 必须保证HTML顶部有如下声明:

二、万能 float 闭合
关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup]将以下代码加入Global CSS 中,给需要闭合的div加上 class=”clearfix” 即可,屡试不爽.
以下为引用的内容:
三、其他兼容技巧
1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决) 如width:115px !important;width:120px;padding:5px;
 必须注意的是, !important; 一定要在前面。 2, 居中问题.1).垂直居中.将 line-height 设置为 当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)2).水平居中. margin: 0 auto;(当然不是万能)3, 若需给 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.


css的hack

对IE6、IE7、FF兼容性的详细CSS HACK介绍2007年12月05日 16:00以下为引用:
现在我大部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7对! important可以正确解释,会导致页面没按要求显示!搜索了一下,找到一个针对IE7不错的hack方式就是使用“*+html”,现在用IE7浏 览一下,应该没有问题了。

现在写一个CSS可以这样:
#example { color: #333; } /* Moz */
* html #example { color: #666; } /* IE6 */
*+html #example { color: #999; } /* IE7 */

那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999,他们都互不干扰。我真希望那个IE6快点退休......

css Hacks,css样式表补丁.用于修正XHTML编码设计的网页模板布局,某些层的溢出问题,HACKS出处:www.webdevout.net,这个CSS补丁(hacks)很简单,在样式表中单独为ie7设置某个元素,id或者class前面这样写:

*:first-child+html #ID{}

或者

*:first-child+html .class{}
别忘掉了前面的*,这个hacks使得DIV+CSS网页模板在ie5+,ie6,ie7,firefox 1.5,firefox 2的浏览器中都可以完美体现原始布局,而不会出现层溢出等问题.

IE7 修复了很多 bug,也增加了对一些选择符的支持,所以现在诸如 *html {} 和 html>body {} 等针对 IE 隐藏或显示的 hack 都会在 IE7 中失效。虽然 CSS Hack 不推荐使用,条件注释才是万无一失的过滤器,但是条件注释只能出现在 HTML 中,CSS Hack 还是有用武之地的。Nanobot 发现了一些针对 IE7 的 CSS Hack,具体就是:

>body
html*
*+html

这 三种写法,其中前两种都是不合法的 CSS 写法,在标准兼容浏览器中被被忽略,但是 IE7 却不这么认为。对于 >body ,它会将缺失的选择符用全局选择符 * 代替,也就是将其处理成了 *>body,而且不光对于 > 选择符,+,~ 选择符中这个现象也存在。对于 html* ,由于 html 和 * 之间没有空格,所以也是一种 CSS 语法错误,但 IE7 不会忽略,而是错误地认为这里有一个空格。对于第三种 *+html,IE7 认为 html 前面的 DTD 声明也是一个元素,所以 html 会被选中,这三种方法中只有这一种方法是合法的 CSS 写法,也就是说可以通过校验器的验证,因此也是作者推荐的 hack 用法。

最后作者给出了最佳方式:

IE 6 and below
Use * html {} to select the html element.
IE 7 and below
Use *+html, * html {} to select the html element.
IE 7 only
Use *+html {} to select the html element.
IE 7 and modern browsers only
Use html>body {} to select the body element.
Modern browsers only (not IE 7)
Use html>/**/body {} to select the body element.



The IE7 CSS Hack(!important在ie7.0的hack方法)

由 于ie对!important识别存在bug,而现在大部分网页标准设计师又通过这个bug来兼容ie和ff,但是ie7.0把这个bug给修复了,所以 问题又出现了,怎么兼容ie.7.0的同时又能兼容ie6.0和ff?正所谓"上有政策,下有对策",国外的网页标准设计师通过使用css filter的办法(并不是css hack)来兼容ie7.0,ie6.0和ff,以下为作者从国外网站的翻译.

新建一个css样式如下:
插入代码:


#item {
width: 200px;
height: 200px;
background: red;
}


新建一个div,并使用前面定义的css的样式:
插入代码:


some text here


在body表现这里加入lang属性,中文为zh:
插入代码:





现在对div元素再定义一个样式:
插入代码:
[/code]
*:lang(en) #item{
background:green !important;
}
[/code]
这样做是为了用!important覆盖原来的css样式,由于:lang选择器ie7.0并不支持,所以对这句话不会有任何作用,于是也达到了ie6.0下同样的效果,但是很不幸地的是,safari同样不支持此属性,所以需要加入以下css样式:
插入代码:


#item:empty {
background: green !important
}


:empty选择器为css3的规范,尽管safari并不支持此规范,但是还是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie各版本以外的浏览器上,并在以下浏览器和操作系统下通过测试:


ie7 beta 2 preview/win
ie5.01+/win
firefox 1.5/win
opera 8.5/win & linux
netscape 7.01, 8/win
mozilla 1.7.12/win & linux
safari 2/mac
firefox 1.0.4/linux
epiphany 1.4.8/linux
galeon 1.3.20/linux



Screenshot of the IE7 css hack in IE7


Screenshot of the IE7 css hack in Firefox 1.5

按照远作者的说法其实这不能算是一种hack,应该属于filter,不过这似乎并不是最重要的,因为通过这个办法,我们又一次了解决IE6.0,IE7.0和其他浏览器之间的兼容性问题,而且使用:lang-filter这办法,在今后的一段时间内都会有用.

文章来自:http://www.aixq.com/read.php?704




firefox,ie7,ie6兼容性问题,和css解决方案
注:IE都能识别*;标准浏览器(如Firefox,Opera,Netscape)不能识别*;IE6能识别*,但不能识别 !important,IE7能识别*,也能识别!important;FF不能识别*,但能识别!important;

写两句代码来控制一个属性,区别Firefox与IE6:
background:orange;*background:blue;

//这一句代码写出来时,你用firefox或其它非IE浏览时,会发现,写了该代码的区域背景是橙色的,如果用IE浏览,却是蓝色的,这是因为IE都能识别*;标准浏览器(如Firefox,Opera,Netscape)不能识别*;


写两句代码来控制一个属性,区别IE7与IE6:
background:green !important;background:blue;

//这一句代码写出来时,你用IE7浏览,会发现,写了该代码的区域背景是绿色的,如果用IE6浏览,却是蓝色的,这是因为IE7能识别! important*,一但识别了,就执行,忽略了后面的那一句,但IE6却不能识别!important,所以前面部分跳过,直接执行了后半部份。


写两句代码来控制一个属性,区别Firefox与IE:
background:orange; *background:green;

//这一句代码写出来时,你用Firefox浏览,会发现背景是橙色的,而IE里却是绿色的,很简单,因为Firefox不能识别*,而IE6,IE7都可以识*


写三句代码来控制一个属性,区别Firefox,IE7,IE6:
background:orange;*background:green !important;*background:blue;

//这一句会使在Firefox在,背景呈橙色,IE7中为绿色,IE6中为蓝色,道理和前面一样,Firefox不能识别*,所以后面两句都不执行,直 接执行第一句,IE7当然也能执行第一行代码,但是因为第二句,他也能识别,所以就执行了第二句代码,把前面的效果给过滤了,而最后一句,IE7是不能识 别的。IE6不能识别!imprtant,本来运行了第一句代码了,第二句不能识别,那就理所当然的执行了最后一句。

body{color:00ff00;}

body{color:#ff6600;}


body{color:#ff0000;}

有没有只针对IE8的CSS样式hack?

针对firefox ie6 ie7 ie8的css样式hack 以前我们大部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7以上对!important可以正确解释,会导致页面没按要求显示!搜索了一下,找到了一个针对IE7、IE8不错的hack方式,IE7使用*+html或*line-height: 23px,IE8使用“\9”来区分,比如:line-height: 26px\9。 CSS可以参照如下定义,注意顺序: #menu { line-height: 23px; }/* firefox 浏览器实行这句定义 */ #menu { line-height: 26px\9; }/*ie6,ie7,ie8 这句定义主要尖对IE8来hack*/ #menu { *line-height: 23px; }/*ie6,ie7 这句定义主要尖对IE7来hack*/ #menu { _line-height: 23px; }/*ie6 浏览器优先实行这句定义*/或者写成一句 #menu { line-height:23px; line-height: 26px\9; *line-height: 23px; _line-height:23px; }或者 * html #menu { line-height: 23px; } /* IE6 浏览器实行这句定义 */ *+html #menu { line-height: 23px; }/* IE7 浏览器实行这句定义*/


css hack对哪些浏览器无效

CSS HACK行业中存在着各类浏览器,典型的如IE、火狐、谷歌等;另外,即便同样种类的浏览器,也存在着不同的版本,如IE6、IE7……IE11等。不同浏览器对于CSS的解析机制并不是完全相同的,因此有时会导致页面效果不同,得不到我们所需要的样式。此时,我们可以针对某种浏览器进行样式的设置,从而达到所有浏览器中显示效果的一致性。那么,这种能够标识出不同浏览器的书写方式就是hack(或者可以说,通过hack,可以只针对某种浏览器进行样式设置)浏览器兼容,IE hack技术参考资料:

css中清除浮动的方法有哪些

css清除浮动可以理解为打破横向排列。 清除浮动的关键字是clear,官方定义如下: 语法: clear : none | left | right | both 取值: none : 默认值。允许两边都可以有浮动对象 left : 不允许左边有浮动对象 right : 不允许右边有浮动对象 both : 不允许有浮动对象 根据上边的基础,假如页面中只有两个元素div1、div2,它们都是左浮动,场景如下:此时div1、div2都浮动,根据规则,div2会跟随在div1后边,但仍然希望div2能排列在div1下边,就像div1没有浮动,div2左浮动那样。这时候就要用到清除浮动(clear)对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。具体做法:要想让div2下移,就必须在div2的CSS样式中使用浮动。本例中div2的左边有浮动元素div1,因此只要在div2的CSS样式中使用clear:left;来指定div2元素左边不允许出现浮动元素,这样div2就被迫下移一行。

知识相关

知识推荐

求职简历网为你分享个人简历、求职简历、简历模板、简历范文等求职简历知识。

Copyrights 2018-2024 求职简历网 All rights reserved.