IE 7以下のバージョンを解決するには、A状態の疑似クラスがないいくつかの方法がサポートされていません.

3647 ワード

IE 7以下のバージョンではずっとA状態の偽類がないことを支持していません.通常はJavascriptによって解決されています.最近はよくこのような問題を聞きます.だからいくつかの方法を整理しました.脚本は海外のウェブサイトから来ています.参考にしてください.
方法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などを使って、行為と構造が分離しないので、使うことを勧めません.