解决IE7以下版本不支持无A状态伪类的几种方法

2022-04-15 0 1,142

在IE7以下版本一直是不支持无A状态伪类的,通常都要靠Javascript来解决的,最近经常有人问起此类问题,故整理了几种方法,脚本来自国外网站,供大家参考。

方法一

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.length; 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.length; 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: #F8F8F8; 

    color: #333333; 

    border: 1px solid red; 

    } 

   input:hover,input.sfhover{ 

   background: #EEE; 

   color: #369; 

   border: 1px solid #069; 

   } 

  p:hover,p.sfhover{ 

  background: #EEE; 

  color: #333; 

   border: 1px solid #069; 

   } 

   p:hover,p.sfhover{ 

   background: #EEE; 

  color: #333; 

   }

上面代码中第一个类是给支持CSS2的浏览器,第二个是给IE6及以下版本的。需注意的是,你给某标签设定了,那么整个页面内的这个标签都会沿用同一个样式。

方法二

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<allElements.length; 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].className.indexOf(‘hovereffect’) !=-1)

CSS

   1. .hovereffect{

   2. Background: #CCC;

   3. }

在需要应用效果的地方用class=”hovereffect”调用。这种方法比较灵活。

方法三

使用网上常见的onmouseover、onmouseout这类东西,行为和结构不分离,不推荐使用。

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 CSS/HTML 解决IE7以下版本不支持无A状态伪类的几种方法 https://www.niceym.com/16563.html