使用线性渐变制作CSS3三角形

Way*_*yne 6 css css3 css-transforms css-shapes

我需要在一侧创建带三角形的按钮(如http://css-tricks.com/triangle-breadcrumbs/),带有线性垂直渐变和边框,我想使用纯CSS3.如果我需要45度的"三角形",那就没关系,我只是写这样的smth

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

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

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

也许有可能通过多个颜色停止渐变来做到这一点?

Jam*_*ght 7

所以我知道你想用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>
Run Code Online (Sandbox Code Playgroud)

你可以这样嵌入它:

<img src="triangle.svg" alt="Triangle" class="triangle" />
Run Code Online (Sandbox Code Playgroud)

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

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

    else $(this).attr("src", "triangle.svg");
});
Run Code Online (Sandbox Code Playgroud)


小智 7

只需clip-pathbackground-image

 .triangle {
    background-image: linear-gradient(rgba(#999, 0.4), rgba(#ccc, 0.5));
    clip-path: polygon(50% 0, 100% 100%, 0 100%);
    width: 100px;
    height: 100px;
 }
Run Code Online (Sandbox Code Playgroud)

  • 由于 CSS 应该尽可能直观,我发现这是最好的答案。规则应该是:“首先,看看是否有专门为其设计的属性。” ' 在这种情况下,就是“clip-path”。 (2认同)

Ana*_*Ana 5

是的,它可以仅使用CSS渐变来完成.你只需要在另一个上面放置三个渐变(请记住,你列出的第一个是顶部的一个).底部的一个(列出的最后一个)是您的垂直渐变.最重要的是,你有两个渐变,也使用颜色停止.

像这样的东西:

background: linear-gradient(30deg, transparent 37%, #fff 37%), 
            linear-gradient(-30deg, transparent 37%, #fff 37%), 
            linear-gradient(to bottom, #ccc, #000);
Run Code Online (Sandbox Code Playgroud)

我做了一个小型演示,可以在http://dabblet.com/gist/2705739上看到


Sha*_*ora 3

我希望这对你有帮助,我只用一个纯 CSS 的 div 制作了渐变三角形。

http://jsfiddle.net/NDJ3S/15/

更新

现在检查它是否正常工作:- http://jsfiddle.net/NDJ3S/17/