條件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?。?lt;/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>