用线性渐变制作CSS3三角形

2024-03-19

我需要创建一侧带有三角形的按钮(像这样http://css-tricks.com/triangle-breadcrumbs/)具有线性垂直渐变和边框,我想使用纯CSS3。 如果我需要45度的“三角形”就可以了,我就这样写

.button:after {
    -webkit-transform: rotate(45deg);
    background: -webkit-linear-gradient(-45deg, #fff, #000);
    content: '';
    width: 2em;
    height: 2em;
    display: block;
}

并将该伪元素的一半隐藏在 .button 下(因此只有另一半可见,如三角形)。

但如果我需要另一个角度(例如更陡) - 我无法使用标准 XY 旋转和缩放来实现。我可以使用例如2个div,一个用于三角形的上半部分,一个用于底部,但可能存在边框和渐变问题。

也许可以使用带有色标的多个渐变来做到这一点?


所以我知道你想用 CSS 来做到这一点,但我总是在 SVG 中这样做:

<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">

<defs>
<linearGradient id="fill" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:rgb(224,224,224);stop-opacity:1"/>
<stop offset="100%" style="stop-color:rgb(153,153,153);stop-opacity:1"/>
</linearGradient>
</defs>

<path d="M 0 0 L 64 0 L 32 64 z" stroke="colourname" fill="url(#fill)"/>

</svg>

您可以像这样嵌入它:

<img src="triangle.svg" alt="Triangle" class="triangle" />

您还可以以相同的方式制作切换图像,并使用 JavaScript 或 jQuery 切换它:

$(".triangle").click(function()
{
    if($(this).attr("src") == "triangle.svg")
        $(this).attr("src", "triangledown.svg");

    else $(this).attr("src", "triangle.svg");
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用线性渐变制作CSS3三角形 的相关文章