在许多用纯CSS实现效果的时候会用到a标签链接时字元素的样式。比如 CSS制作二级菜单
原因是这样的:由于IE6以下的老浏览器不支持除a元素以外的元素伪类。比如列表的伪类li:hover,所以我们在制作相关效果的时候就必须得用a元素的伪类:hover了。
比如我想实现如下效果:当鼠标移动到a标签时它的子元素span背景为红色。代码如下:
xhtml代码:
<div>
<a href="#">鼠标移入a标签时span元素背景色应为#ccc边框为#f00
<span>
span元素 span元素 span元素 span元素 span元素 span元素
</span>
</a>
</div>
css代码:
body { font:12px Verdana, Geneva, sans-serif}
.box {
width:170px; height:150px; padding:5px;
border:1px solid #ccc; background:#eee;
}
a{
display:block; width:140px;
padding:10px; border:1px solid #f00;
}
a .inner {
display:block; padding:10px;
background:#fff; border:1px solid #ccc;
}
a:hover .inner { background:#ccc; border-color:#f00}
理论上这两段代码完全可以达到要求,但在IE中却不能如愿。这是因为在IE里面a:hover的时候元素没有hasLayout(拥有布局)。知道了这一点后就很好解决了。加入任何一条可以激活hasLayout的CSS规则:
a:hover { zoom:1; /*在a标签的伪类中加入一条可以使元素拥布局的规则*/}
当然zoom属性是通不过CSS验证的,所以你也可以修改成其它的规则只要能激活元素的hasLayout。这儿我给出可以使元素hasLayout的几条CSS规则:
- position: absolute
- float: left 或者 right
- display: inline-block
- width: 任意值
- height: 任意值
- zoom: 任意值 (微软特有属性,不能通过验证)
最近转移精力到LINUX基础学习了,好久没折腾我的主题了,呵呵。
不错,Linux学好了去做IDC也挺好的呢.
越讲越深入了
@卢松松 呵呵.还行吧!我觉得放出来的东西都是我遇到的.
其实将display属性设置成block就OK啦..
@dream 不是吧.应该是inline-block不然在IE6中还是响应不了呢^!^
连续几篇都挺深啊
每次都习惯性点你的LOGO回home,回不去
@博译论 呵呵。还好啦.我都是总结自己遇到的东西啊,
我嫌加logo又得用一张图所以就没用,直接用导航栏哈.
我曾经也遇到过类似问题,当时感到很奇怪,后来在网上找了会才知道问题所在~
@wuleilei 原来我也是不知道的,在做这个主题的时候下面的那个“返回顶部”才发现这个bug的呢。
很厉害啊 ,学习了,把自己的改进一下 。
学习了……
@仁心博客 呵呵。沙发哦。互相学习^!^