1

我想用 CSS3 创建一个很酷的面包屑菜单,我在网上看到很多关于它的教程 - 这个例子几乎不符合我的需要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 吗?

4

2 回答 2

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

演示

它是如何工作的?

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

然后,将 2 个伪元素层叠在基础元素的上半部分,向后倾斜,以及基础元素的下半部分,向前倾斜。

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

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

唯一的缺点:由于渐变被分成两部分,你需要在中间找到匹配的颜色。

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

于 2013-07-22T21:48:13.850 回答
-2

是的,使用 CSS3 是可能的。

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

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

于 2013-07-22T10:54:25.737 回答