如何使用CSS和HTML实现此悬停效果?:
普通视图:
---------
Link-1
---------
Link-2
---------
Link-3
---------
当我悬停Link-1时,顶部和底部线会改变颜色,如下所示:
=========
Link-1
=========
Link-2
---------
Link-3
---------
如果我悬停Link-2,这两行会改变:
---------
Link-1
=========
Link-2
=========
Link-3
---------
等等......
“====”只是表示颜色的变化,而不是双线
我实际上很遗憾,但这是我到目前为止所得到的:
<div id="nav">
<a href="#" class="dummy">Link-1</a>
<a href="#" class="dummy">Link-2</a>
<a href="#" class="dummy">Link-3</a>
</div>
CSS:
#nav{
width: 200px;
height: 700px;
background-color: red;
}
#nav a{
display: block;
width: 190px;
text-decoration: none;
padding-left: 10px;
padding-top: 3px;
margin-bottom: 5px;
border-top: 1px solid #d5d5d5;
}
#nav a:hover {
color: white;
font-weight: bold;
border-top: 1px solid white;
}
答案 0 :(得分:5)
This is the best way I can think of doing it in pure CSS
<ul>
<li>Link 1</li>
<li>Link 2</li>
<li>Link 3</li>
</ul>
li
{
padding: 10px;
border-color: #000;
border-top: 1px solid;
}
li:last-child
{
border-bottom: 1px solid;
}
li:hover
{
border-color: #f00;
}
li:hover + li
{
border-top-color: #f00;
}
基本上,可暂停元素列表中的每个元素都会得到border-top
。最后一个元素同时包含border-top
和border-bottom
。将鼠标悬停在某个元素上时,会直接在其后面更改其border-color
和border-top-color
。
此方法优于其他方法的好处是,它不需要破解HTML以使边框以您想要的方式显示。缺点是IE8不支持:last-child
。
答案 1 :(得分:4)
这取决于你是如何创建线条的。如果他们是DIV的顶级边界(通过你的头衔猜测),你可以尝试这样的事情;
div:hover {
border-color: blue;
}
div:hover + div { /* the div following the hovered div */
border-color: blue;
}
演示
答案 2 :(得分:0)
对于顶部和底部边框,您可以尝试将链接放在div中,并为所有这些div提供与该类相同的类名和样式:
.classname:hover
{
border-top:1px dotted blue;
border-bottom:1px dotted blue;
}
如果我理解正确的话......
希望这是有帮助的
答案 3 :(得分:0)
试试这个:
<强>标记:强>
<a href='#'>link1 </a>
<a href='#'>link2 </a>
<a href='#'>link3 </a>
<强> CSS:强>
a
{
padding:20px;
width:100px;
border:1px Solid #CCC;
}
a:hover
{
border:1px Solid Red;
}
请参阅此fiddle