新浪博客

a标签背景或字体颜色变色实现

2013-09-13 10:55阅读:
这些天在做一个网站,不时会遇到些CSS样式方面的问题。在逛学校论坛时,发现了这样的样式: a标签背景或字体颜色变色实现
觉得不错,想做出它这样的效果。用浏览器查看了下源代码发现是用a标签做的链接,只是看不到CSS样式代码。解释下,默认情况下,“全部”是灰色底,蓝色字,蓝色边框,意思是被选中;当鼠标移到其他标签,比如“招领”时,这个标签的样式改变,从“白色底,黑色字,灰色边框”变成“灰色底,蓝色字,蓝色边框”。
其实,实现起来也很简单。a标签按状态划分,有4种状态:link,visited,hover,active。解释下4种状态:
  • a:link - 普通的、未被访问的链接
  • a:visited - 用户已访问的链接
  • a:hover - 鼠标指针位于链接的上方
  • a:active - 链接被点击的时刻

这里,可以根据a标签处的状态来设置不同的样式。为了实现我想要的效果,在link和visited状态,将a标签的样式设置成“白色底,黑色字,灰色边框”;在hover和active状态,将a标签的样式设置成“灰色底,蓝色字,蓝色边框”。
当然,除了背景颜色和字体
颜色的问题,还有除去链接的下划线给a标签加上边框调整字体的大小调整边框的长度和宽度(通过padding来实现)等等问题。
具体的代码实现如下:
a:link{
color:#000000; //字体颜色
text-decoration: none; //去下划线
font-size:13px; //字体大小
border:1px solid #B4BABC; //边框线粗细,线型,颜色
padding-left:8px; //边框的左边距
padding-right:8px; //边框的右边距
padding-bottom:5px; //边框的下边距
padding-top:5px; //边框的上边距
}
a:hover{
color:#0066CC;
text-decoration:none;
font-size:13px;
border:1px solid #0066CC;
padding-left:8px;
padding-right:8px;
padding-bottom:5px;
padding-top:5px;
background-color:#DBE0E1;
}
a:visited{
color:#000000;
text-decoration: none;
font-size:13px;
border:1px solid #B4BABC;
padding-left:8px;
padding-right:8px;
padding-bottom:5px;
padding-top:5px;
}
a:active{
color:#0066CC;
text-decoration:none;
font-size:13px;
border:1px solid #0066CC;
padding-left:8px;
padding-right:8px;
padding-bottom:5px;
padding-top:5px;
background-color:#DBE0E1;
}
问题来了,用以上代码实现的效果是背景色改变,但是字体颜色和边框颜色不会变化,只在第一次访问网站时,会有之前的目标效果。可是观察代码,貌似没有问题。刚开始以为是浏览器的问题,换了几个浏览器,ie,360,搜狗,火狐等等,结果都一样,可是学校论坛的那个效果不受浏览器影响。于是就想肯定是代码不对,可是到底哪里出错了呢?
在网上找了半天,没发现啥有用的信息,最后无意上w3school发现问题所在。
原来还有个次序规则,就是:
  • a:hover 必须位于 a:link 和 a:visited 之后
  • a:active 必须位于 a:hover 之后

调整下hover和visited的次序之后,问题解决。
另外,调整边框的长宽,用height和width无用,得通过padding调整边框线与字体的间距来实现。
参考资料:http://www.w3school.com.cn/css/css_link.asp

我的更多文章

下载客户端阅读体验更佳

APP专享