您的位置:首页 > Web前端 > CSS

纯CSS提示框的实现及其牵涉到的IE6下的a:hover问题。

2013-01-31 14:12 417 查看
首先,本文不是在宣扬什么新技术,而是一个古老的技术,但是做为一个web前端开发人员,其中的一些细节还是值得我去注意的。下面是效果的动画展示图。



方法分析:A标签支持4种状态的伪类,分别是:link :visited :hover :active。我利用了:hover伪类(指向时)。

那么A的结构应该是这样的 <a href="#">Some words<span>some tips</span></a>

正常状态下,将a下的span隐藏掉。指向A时,将span显示到合适的位置。

第1步:HTML结构,如下

<p>
<a href="http://www.cnblogs.com/mrweb" class="tooltip">
Mr.Web<span>(点击查看该博客)</span></a>
是一个关注前端开发的博客。
</p>


第二步:写CSS,如下

a.tooltip {
position:relative;
text-decoration:none;
}

a.tooltip span {
display:none;
}
a.tooltip:hover span {
display:block;
position:absolute;
top:1.2em;
left:0em;
padding:0.2em 0.6em;
border:1px solid #996633;
background-color:#ffff66;
color:#000;
width:200px;
}


对上面CSS的解析:

因为要对a中的span进行定位,所以为a添加了相对定位;

正常状态下span不显示;

指向时显示span,并定义span的外观及位置(使用绝对定位),让它看起来更像一个提示框

经过上面的步骤后,效果就出来了。但是IE6下,指向A时,span并没有显示出来。

难道是IE6不支持A:hover吗?—— 非也。IE6直接对于a:hover是支持的,但是如 a:hover selector {} 这样的形式并不一定支持的,这时候需要我们对a:hover{}特别的激活一下,这个激活操作具体应该如何,我也没有确定的方法,但是一般是添加一些如:background border之类的布局属性。(这个方法也是从网上看来的,不过不记得在哪里看到的了)

所以,下面激活一下,代码如下:

a.tooltip:hover { border:none; }


其实我的a:hover本来就没有边框,所以添加一个border:none并不会影响到显示效果,而且还让IE6支持了 a:hover selector {}。

PS:虽然大家都说IE6已经死了,但实际上IE6还活在广大中国网友的PC中!所以,能支持的情况下,还是不要忽略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: