条件Hack
实际情况,我们所用的浏览器各不相同,且版本也不一样,对于一些特殊代码,我们只需要在某些特殊浏览器中执行,而在其他的浏览器中不需要执行,这是就可以使用CSS Hack来解决该问题
CSS Hack实际上是指哟中特殊的代码,这段代码只在某些浏览器中可以识别,而在其他浏览器不能识别,通过这种方式,来为一些浏览器设置特殊的代码
使用:
在使用条件Hack时,需在HTML<head></head>中添加link样式,在样式中添加脚本,写法如下:
<!--[if IE 8]>
<link rel='stylesheet' type='text/css' herf='css/sty-ie8.css'>
<![endif] -->
写法如下:
语法:
<!--[if <keywords>? IE <version>?]>
HTML代码块
<![endif]-->
keywords取值|
<keywords>
if条件共包含6种选择方式:是否、大于、大于或等于、小于、小于或等于、非指定版本
选择方式 | 说明 |
---|---|
是否 | 指定是否IE或IE某个版本。关键字:空 |
大于 | 选择大于指定版本的IE版本。关键字:gt(greater than) |
大于或等于: | 选择大于或等于指定版本的IE版本。关键字:gte(greater than or equal) |
小于 | 选择小于指定版本的IE版本。关键字:lt(less than) |
小于或等于 | 选择小于或等于指定版本的IE版本。关键字:lte(less than or equal) |
非指定版本 | 选择除指定版本外的所有IE版本。关键字:! |
<body>
<!--
条件Hack
它只对IE浏览器有效,其它的浏览器都会将它识别为注释
IE10及以上的浏览器已经不支持这种方式
-->
<!-- 以下内容只会出现在IE6中 -->
<!--[if IE 6]>
<p>为了您和家人的健康,请远离IE6!!</p>
<![endif]-->
<!--[if IE 8]>
<p>当前浏览器是IE8!!</p>
<![endif]-->
<!--[if lt IE 9]>
<p>该标签会在IE9以下的浏览器中显示</p>
<![endif]-->
<!--[if gte IE 9]>
<p>该标签会在IE9及以上的浏览器中显示</p>
<![endif]-->
<!--[if lte IE 9]>
<p>该标签会在IE9及以下的浏览器中显示</p>
<![endif]-->
<!--[if ! IE 6]>
<p>你的浏览器不是IE6</p>
<![endif]-->
</body>
属性Hack
选择不同的浏览器及版本
尽可能减少对CSS Hack的使用。Hack有风险,使用需谨慎
通常如未作特别说明,本文档所有的代码和示例的默认运行环境都为标准模式。
一些CSS Hack由于浏览器存在交叉认识,所以需要通过层层覆盖的方式来实现对不同浏览器进行Hack的
语法:
selector{<hack>?property:value<hack>?;}
<head>
<meta charset="UTF-8">
<title>属性Hack</title>
<style type="text/css">
body{
background-color: #bfa;
/*
假设在IE6中需要将背景颜色设置为黄色才能达到和其它浏览器相同的效果
*/
/*
希望黄色背景只在IE6中生效
在样式前添加一个下划线,则该样式只有IE6及以下的浏览器才可以识别
*/
/*_background-color: yellow;*/
/*添加了*的样式只有IE7及以下的浏览器认识*/
/**background-color: yellow;*/
/*在样式最后添加一个\0,则只有IE8及以上的浏览器才能识别*/
/*background-color: yellow\0;*/
/*
CSS Hack不到万不得已的情况尽量不要使用
*/
}
</style>
</head>
选择符Hack
<head>
<meta charset="UTF-8">
<title>选择符</title>
<style type="text/css">
/*
在选择器前添加* html 则该选择器只有IE6可以识别
*/
* html body{
background-color: #bfa;
}
</style>
</head>