我想创建一个带有ul
元素的导航栏,其中导航栏上的每个项目都是无图像,仅限图像的链接。所以我这样设置:
<ul>
<li><a href="./"></a></li>
</ul>
然后我意识到我并不知道如何在那里获取图像。我想到了两个想法,但每个想法都有问题:
在锚点中添加img
标记。这不是一个好的内容/设计分离,而且,如果我想在用户将鼠标悬停在它上面时(我这样做)改变图像,它会变得更加复杂。
使用CSS背景图片,但现在我必须让锚点的宽度和高度等于图像的尺寸,这样每次我更改图像时都会强制修改我的代码。
仅限图像的导航栏很常见,有没有标准的方法来执行此操作?
答案 0 :(得分:0)
使用两者,使用带透明度和bacground图像的图片,这样您就可以在悬停时更改img,透明img会为您拉伸<a>
标记:
<a><img src="some-image.jpg" /></a>
和css这样的事情:
a img{
opacity:0;
}
a{
background-image:url(some-image.jpg);
}
a:hover{
background-image:url(some-other-image.jpg);
}
答案 1 :(得分:0)
我以这种方式使用它:
<强> CSS 强>
ul{
display:inline-block;
width:350px;
height:150px;
}
ul li{
display:block;
}
ul li a, ul li{
display:inline-block;
width:100%;
height:100%;
}
ul li.fb a{
background:url(http://placehold.it/350x150) no-repeat left center;
}
ul li.tw a{
background:url(http://placehold.it/350x150) no-repeat left center;
}
<ul>
<li class="fb"><a href="http://facebook.com"></a></li>
<li class="tw"><a href="http://twitter.com"></a></li>
</ul>
你可以将所有这些图像放在精灵等中......
答案 2 :(得分:0)
实现这一目标的最简单方法是在锚点本身中插入悬停图像(当然它将具有与普通图像相同的尺寸),并在其上方堆叠元素,这将具有正常状态&#39;图像作为背景。然后在悬停时,隐藏堆叠元素以显示悬停图像。锚本身现在将具有图像尺寸,堆叠元素也是如此。
HTML:
<ul>
<li><a href class="link1"><img src="link1-hover-image.png"><span></span></a></li>
<li><a href class="link2"><img src="link2-hover-image.png"><span></span></a></li>
<li><a href class="link3"><img src="link3-hover-image.png"><span></span></a></li>
</ul>
的CSS:
a { position: relative; }
a img { vertical-align: bottom; } /* little hack for correct placement */
a span { display: block; position: absolute; width: 100%; height: 100%; top: 0; left: 0; }
a:hover span { opacity: 0; }
.link1 span { background-image: url(link-1-image.png); }
.link2 span { background-image: url(link-2-image.png); }
.link3 span { background-image: url(link-3-image.png); }
但是就像所有人都说的那样;尽可能使用普通的CSS。更快,更容易维护。因此,如果真的无法使用css来设置按钮的样式,那么只能使用它。