你知道如何使用CSS吗?
在我的导航栏中,我希望看到活动链接的透明三角形。 如果我创建一个带有透明三角形的PNG图像并像这样使用它:
background: rgba (0,0,0,0.4) url (triangle.png) no-repeat bottom center;
这不能正常工作,因为在我的三角形下显示透明的rgba颜色rgba(0,0,0,0.4)
...
我想这样做可以在滚动页面时产生很好的效果。有可能吗?
答案 0 :(得分:2)
Demo
您可以使用:before
和:after
伪元素来实现此效果。
<nav>
<ul>
<li class="active">homepage</li>
<li>option2</li>
<li>option3</li>
</ul>
</nav>
nav {
position: fixed;
background-color: rgba(0,0,0,.7);
display: block;
width: 100%;
padding: 10px 0;
color: white;
font-size: 1.5em;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
ul li {
float: left;
width: auto;
padding: 0 20px;
position: relative;
}
nav li:before,
nav li:after {
content: '';
position: absolute;
bottom: -35px;
left: 0;
right: 0;
height: 5px;
border: 10px transparent solid;
border-top-color: rgba(0,0,0,.7);
border-left-width: 0;
border-right-width: 0;
}
nav li:before {
right: 50%;
}
nav li:after {
left: 50%;
}
nav li.active:before {
border-right-width: 10px;
}
nav li.active:after {
border-left-width: 10px;
}
nav li:last-child:after { /* covers the bottom of the navigation bar all the way to the right */
right: -9999999px;
}
Another solution使用链接:
<nav>
<ul>
<li><a href="#" class="active">homepage</a></li>
<li><a href="#">option2</a></li>
<li><a href="#">option3</a></li>
</ul>
</nav>
答案 1 :(得分:1)
为:active
class
js。没有jQuery,你甚至可以免费获得悬停效果。
我认为这会对你有帮助..
相同的概念,但用于进一步参考的不同用于此处: stackoverflow.com/questions/17327076/how-to-create-a-ul-with-a-triangle-for-the-active-row
答案 2 :(得分:1)
将发布我的解决方案。它非常复杂,虽然我不知道是否还有其他更简单的方法可以使li>a
嵌套元素对ul
下的背景透明。此解决方案使用:before/:after
伪属性。
我使用了这个标记(如何避免帮助<i></i>
?):
<header>
<ul class="clearfix">
<li><a class="active" href="">HOMEPAGE <i></i></a></li>
<li><a href="">CONTACT <i></i></a></li>
<li><a href="">GET OUT <i></i></a></li>
</ul>
</header>
和CSS:
header li a {
text-align: center;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
display: inline-block;
padding: 25px;
color: #FFF;
position: relative;
}
header li a:hover {
background: rgba(255, 255, 255, .2);
}
header li a i:after, header li a i:before {
content:'';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 0;
display: none;
background: url(http://subtlepatterns.com/patterns/escheresque_ste.png);
background-attachment: fixed;
border-top: 15px solid rgba(0, 0, 0, .5);
}
header li a.active i:after, header li a.active i:before {
display: block;
}
header li a:hover i:after, header li a:hover i:before {
display: block;
border-top-color: rgba(255, 255, 255, .1);
}
header li a i:before {
margin-left: -15px;
border-right: 15px solid transparent;
}
header li a i:after {
border-left: 15px solid transparent;
}
希望有一天会有人受到启发。
答案 3 :(得分:0)
<figure>
<div><div>
</figure>
CSS
figure{
width:400px;
height:320px;
background:skyblue url(http://img1.wikia.nocookie.net/__cb20140301204257/disney/images/4/49/Elsa-Anna.jpg);
border:4px solid rgba(0,0,0,.8);
margin:40px auto;
position:relative;
}
figure div{
position:absolute;
bottom:0px;
left:0px;
width:100%;
height:200px;
background:rgba(255,255,255,.1);
}
figure div:before{
content:'';
position:absolute;
width:0px;
height:0px;
left:50%;
top:-40px;
margin-left:-40px;
border-bottom:40px solid rgba(255,255,255,.1);
border-left:40px solid transparent;
border-right:40px solid transparent;
}
或者如果您想将其应用于菜单
<menu>
<li><a>Home</a></li>
<li><a>Work</a></li>
<li><a>Projects</a></li>
<li><a>Infos</a></li>
</menu>
CSS
menu{
margin-top:40px;
}
menu li{
float:left;
list-style:none;
position:relative;
}
menu li{
padding:20px; 40px;
}
menu li:hover:before{
content:'';
position:absolute;
width:0px;
height:0px;
left:50%;
top:-20px;
margin-left:-20px;
border-bottom:20px solid rgba(0,0,0,.8);
border-left:20px solid transparent;
border-right:20px solid transparent;
}
使用活动类jst更改菜单li:hover:before
到menu li.active:before