IE 7以下のバージョンを解決するには、A状態の疑似クラスがないいくつかの方法がサポートされていません.
3647 ワード
IE 7以下のバージョンではずっとA状態の偽類がないことを支持していません.通常はJavascriptによって解決されています.最近はよくこのような問題を聞きます.だからいくつかの方法を整理しました.脚本は海外のウェブサイトから来ています.参考にしてください.
方法1
javascriptファイルは、Htmldogから来ています. .
//ここに効果が必要なラベルを書きます.
suckerfish(sfHover INPUT)
suckerfish(sfFocus) INPUT)
suckerfish(sfHover p);
CSS
input:focus、input.sffocus {
background: #F 8 F 8 F 8
カラー: #333333;
border: 1 px ソロ?id red;
}
input:hover,input.sfhover{
background: #EEE;
カラー: #369;
border: 1 px ソロ?id #069;
}
p:hover,p.sfhover{
background: #EEE;
カラー: #333;
border: 1 px ソロ?id #069;
}
p:hover,p.sfhover{
background: #EEE;
カラー: #333;
}
上のコードの中で一番目のクラスはCSS 2をサポートするブラウザです.二つ目はIE 6と以下のバージョンです.注意すべきなのは、あるラベルに設定したら、ページ全体のこのラベルは同じスタイルをそのまま使用します.
方法2
javascriptファイル
1. if (allElements[i].class Name.indexOf('hovereffect') !=-1)
CSS
1. .ホバーエフェクト{
2. Background: #CCC;
3. }
効果が必要なところでは、class=「hovereffect」で呼び出します.この方法は柔軟です.
方法3
ネットでよく見られるonmouseover、onmouseoutなどを使って、行為と構造が分離しないので、使うことを勧めません.
方法1
javascriptファイルは、Htmldogから来ています. .
function suckerfish(type, tag, parentId) {
if (window.attachEvent) {
window.attachEvent("onload", function() {
var sfEls = (parentId==null)?document.getElementsByTagName(tag):document.getElementById(parentId).getElementsByTagName(tag);
type(sfEls);
});
}
}
sfHover = function(sfEls) {
for (var i=0; i sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
sfFocus = function(sfEls) {
for (var i=0; i sfEls[i].onfocus=function() {
this.className+=" sffocus";
}
sfEls[i].onblur=function() {
this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
}
}
}
suckerfish(sfHover, "INPUT");
suckerfish(sfFocus, "INPUT");
suckerfish(sfHover, "p");
スクリプトの変更可能な部分 //ここに効果が必要なラベルを書きます.
suckerfish(sfHover INPUT)
suckerfish(sfFocus) INPUT)
suckerfish(sfHover p);
CSS
input:focus、input.sffocus {
background: #F 8 F 8 F 8
カラー: #333333;
border: 1 px ソロ?id red;
}
input:hover,input.sfhover{
background: #EEE;
カラー: #369;
border: 1 px ソロ?id #069;
}
p:hover,p.sfhover{
background: #EEE;
カラー: #333;
border: 1 px ソロ?id #069;
}
p:hover,p.sfhover{
background: #EEE;
カラー: #333;
}
上のコードの中で一番目のクラスはCSS 2をサポートするブラウザです.二つ目はIE 6と以下のバージョンです.注意すべきなのは、あるラベルに設定したら、ページ全体のこのラベルは同じスタイルをそのまま使用します.
方法2
javascriptファイル
var W3CDOM = (document.createElement && document.getElementsByTagName);
//window.onload = pinballEffect;
function pinballEffect()
{
if (!W3CDOM) return;
var allElements = document.getElementsByTagName('*');
var originalBackgrounds=new Array();
for (var i=0; i {
if (allElements[i].className.indexOf('hovereffect') !=-1)
{
allElements[i].onmouseover = mouseGoesOver;
allElements[i].onmouseout = mouseGoesOut;
}
}
}
function mouseGoesOver()
{
originalClassNameString = this.className;
this.className += " lay-on";
}
function mouseGoesOut()
{
this.className = originalClassNameString;
}
pinballEffect();
スクリプトの変更可能な部分1. if (allElements[i].class Name.indexOf('hovereffect') !=-1)
CSS
1. .ホバーエフェクト{
2. Background: #CCC;
3. }
効果が必要なところでは、class=「hovereffect」で呼び出します.この方法は柔軟です.
方法3
ネットでよく見られるonmouseover、onmouseoutなどを使って、行為と構造が分離しないので、使うことを勧めません.