带有透明三角形的Navbar活动链接

时间:2014-03-08 10:13:35

标签: html css css3 twitter-bootstrap navbar

你知道如何使用CSS吗?

enter image description here

在我的导航栏中,我希望看到活动链接的透明三角形。 如果我创建一个带有透明三角形的PNG图像并像这样使用它:

background: rgba (0,0,0,0.4) url (triangle.png) no-repeat bottom center;

这不能正常工作,因为在我的三角形下显示透明的rgba颜色rgba(0,0,0,0.4) ...

我想这样做可以在滚动页面时产生很好的效果。有可能吗?

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

编写css样式

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;
}

希望有一天会有人受到启发。

演示:http://jsfiddle.net/R9pKq/

答案 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;
}

Demo

或者如果您想将其应用于菜单

<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;
}

Demo with Hover

使用活动类jst更改菜单li:hover:beforemenu li.active:before