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

在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这类东西,行为和结构不分离,不推荐使用。

时间: 2024-08-01 11:28:01

解决IE7以下版本不支持无A状态伪类的几种方法_经验交流的相关文章

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

在IE7以下版本一直是不支持无A状态伪类的,通常都要靠Javascript来解决的,最近经常有人问起此类问题,故整理了几种方法,脚本来自国外网站,供大家参考. 方法一 javascript文件,来自Htmldog .   function suckerfish(type, tag, parentId) { if (window.attachEvent) { window.attachEvent("onload", function() { var sfEls = (parentId==

解决列高度自适应(相同)的五种方法_经验交流

1.背景图填充 这是使用最广泛的一种做法,无hacks,推荐使用: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta htt

Internet Explorer 8 beta 中文版与IE7共存的解决方法_经验交流

web开发人员关心的IE7和IE8共存的问题其实可以很好的解决. 解决方案一:在浏览器右上角有一个"模仿IE7"的切换按钮,但有点麻烦,需要关闭浏览器再重新打开才可以. 解决方案二:在IE8自带的"开发人员工具"中,点击查看选择striet(Internet Explorer7),既可以不重新启动浏览器观看IE7下的效果.可以只提供IE5/7/8三种,并没有IE6模式,还好我有" href="http://tredosoft.com/Multip

CSS hack实现 CSS完美兼容IE6/IE7/FF的通用方法_经验交流

关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助. 一.CSS HACK 以下两种方法几乎能解决现今所有HACK. 1, !important 随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.) <style> #wrapper { width: 100px!important; /* IE7+FF */ width: 

IE6支持position:fixed完美解决方法_经验交流

今天去一老外站看到了这他站上的十分平滑但却没有js,好奇,原来..巧妙啊,分享下,相对而言比较节省资源.但效果好,使用方便,兼顾w3c.哈哈 复制代码 代码如下: <!-- compliance patch for microsoft browsers --> <!--[if lt IE 7]><link rel="stylesheet" href="ie-stuff.css" type="text/css" med

网页中英文混排行高不等问题的解决方法_经验交流

基本上快被这个问题搞疯了,症状如下 症状描述:在ie下(6或7,8没有试过)当出现中英文混排,都采用默认字体时,并使用 li 列表做float时,会出现如上图的症状,文字排列上下不对齐的情况.影响了布局的美观性,造成上图情况的原因是中英文的文字基线不同,arial字体的下边缘要比宋体(同为12号)低一个象素,上边缘比宋体矮两个象素,而且英文还有i,y这种上下基线不同的情况.所以当中英文混排对齐时,就会出现明显的高度差异,使排版不均.可见放大图. 采用中英文字均使用宋体的方案 可以解决文字排列不对

低版本IE正常运行HTML5+CSS3网站的3种解决方案_经验交流

如果开发时按最低标准,比如IE6不支持的特性,我们统统不用,那就没有必要写这篇文章了:但我想这种情况极少,更多的开发,是在现代浏览器上使用它们支持的特性,而在早期浏览器上做一定的降级处理,这就是所谓 "渐进增强",也是本文要说的重点.通过下面的方法,希望可以让网站也能够在低版本IE浏览器上奇迹般地运行得更好!htmlshiv.jsRemy的 HTML5shiv通过JavaScript 来创建HTML5元素(如 main, header, footer等).在某种程度上通过JavaScr

当标题不能显示完整的解决方法_经验交流

其实建议用css控制超出隐藏显示 也就是标题因为设计的宽度问题所以没有显示全,看样子是使用程序来截字的.我想很多网站都遇到这样的情况.为了视觉效果不得不进行截字显示以满足网站的整体视觉效果.通常我们采用截字的方法是两种,一种是通过后台输出时来事先设定一定的字符数量.另一种是通过CSS或是JS来对已经输出的完整的内容进行视觉剪截. 在网页标准没有兴起的时候基本上是采用第一种方式来解决这个问题,直到现在这种方式依然被广泛地使用着.这种方式的好处就是可以准确的剪截字数,而不足可能就是因为剪截的工作在后

firefox的超链接点击去除扩大的难看虚线的解决方法_经验交流

在某些特殊的情况下,比如做一个导航菜单的时候,出现这个情况时效果就很糟糕了,因为Firefox会错误地扩大链接的边框: 在Firefox的地址栏输入about:config,回车.有一个配置项叫做"browser.display.focus_ring_width",把它修改成0,点击链接时就不会出现那个边框.但这样的话,在焦点落在按钮上时也没有了边框指示.而且作为一个开发者,在浏览器里设置这个属性,无异于掩耳盗铃. 这实际上是Firefox在<a>这个标签处于focus状态