带有线性渐变的CSS菜单面包屑

时间:2013-07-22 10:38:18

标签: css linear-gradients

我想用CSS3创建一个很酷的面包屑菜单,我在网上看到很多关于它的tuto - 这个例子几乎不符合我的需求http://css-tricks.com/examples/TriangleBreadcrumbs/

.breadcrumb li a {
            color: white;
            text-decoration: none; 
            padding: 10px 0 10px 55px;
            background: brown;
            background-image: linear-gradient(to bottom, brown, black);
            position: relative; 
            display: block;
            float: left;
        }
        .breadcrumb li a:after { 
            content: " "; 
            display: block; 
            width: 0; 
            height: 0;
            border-top: 50px solid transparent;          
            border-bottom: 50px solid transparent;
            border-left: 30px solid hsla(34,85%,35%,1);
            position: absolute;
            top: 50%;
            margin-top: -50px; 
            left: 100%;
            z-index: 2; 
        }   
        .breadcrumb li a:before { 
            content: " "; 
            display: block; 
            width: 0; 
            height: 0;
            border-top: 50px solid transparent;           /* Go big on the size, and let overflow hide */
            border-bottom: 50px solid transparent;
            border-left: 30px solid white;
            position: absolute;
            top: 50%;
            margin-top: -50px; 
            margin-left: 1px;
            left: 100%;
            z-index: 1; 
        }

但是我想在菜单按钮上有一个垂直线性渐变,当鼠标悬停时,这个渐变也应该反转。

我知道我可以用精灵来做这件事,但只能用CSS3吗?

2 个答案:

答案 0 :(得分:2)

您需要更改技术才能实现此目的。

CSS是:

.breadcrumb { 
    list-style: none; 
    overflow: hidden; 
    font: 18px Helvetica, Arial, Sans-Serif;
}

.breadcrumb li a {
    color: white;
    text-decoration: none; 
    padding: 10px 30px 10px 25px;
    background: transparent;
    position: relative; 
    display: block;
    float: left;
    z-index: 1;
}

.breadcrumb li a:after { 
    content: " "; 
    display: block; 
    width: 99%; 
    height: 50%;
    background: linear-gradient(to bottom, lightgreen, green); 
    position: absolute;
    top: 0px;
    left: 0px;
    z-index: -1; 
    -webkit-transform: skewX(35deg); 
    transform: skewX(35deg); 
}

.breadcrumb li a:before { 
    content: " "; 
    display: block; 
    width: 99%; 
    height: 50%;
    position: absolute;
    bottom: 0px;
    left: 0px;
    z-index: -1; 
    background: linear-gradient(to bottom, green, black); 
    -webkit-transform: skewX(-35deg); 
    transform: skewX(-35deg); 
}

.breadcrumb li a:hover:after { 
    background: linear-gradient(to bottom, black, green); 
}

.breadcrumb li a:hover:before { 
    background: linear-gradient(to bottom, green, lightgreen); 
}

demo

它是如何运作的?

我保持基本元素透明,并且只使用文本。

然后,2个伪元素分层在基本元素的上半部分,向后倾斜,基本元素的下半部分向前倾斜。

您可以轻松调整效果的角度。

最后,悬停状态,只是改变了渐变。

唯一的缺点:由于渐变分为两部分,因此您需要找到中点匹配的颜色。

我将您的请求从棕色变为绿色,因此更容易看到。

答案 1 :(得分:-2)

是的,CSS3可能。

使用此站点制作垂直和水平线性渐变并获取css代码。

http://colorzilla.com/gradient-editor/