使用渐变背景在css中创建三角形

时间:2013-03-15 16:15:58

标签: css css3 css-shapes psd

我正在尝试使用渐变背景在css中创建一个三角形。我还没有取得任何成功。有没有办法做到这一点,以实现下图中所见的效果。 (附加到错误密码错误框的三角形。)

在Photoshop中设计 enter image description here

这是我到目前为止在HTML和CSS中的设计。

enter image description here

这是我目前对三角形的css。

.error-triangle {
    wwidth: 0;
    height: 0;
    border-top:    10px solid transparent;
    border-bottom: 10px solid transparent;
    border-right:  10px solid blue;
    margin-top: 64px;
    margin-left: 350px;
    position: fixed;
    -webkit-box-shadow: 0 0 3px rgba(102,65,65,.25), 2px 3px 5px rgba(70,34,34,.25), inset 1px 2px rgba(255,255,255,.25);
       -moz-box-shadow: 0 0 3px rgba(102,65,65,.25), 2px 3px 5px rgba(70,34,34,.25), inset 1px 2px rgba(255,255,255,.25);
            box-shadow: 0 0 3px rgba(102,65,65,.25), 2px 3px 5px rgba(70,34,34,.25), inset 1px 2px rgba(255,255,255,.25);
    background-image: -webkit-linear-gradient(bottom, #eb6767, #d94040 35%, #eb6767);
    background-image:    -moz-linear-gradient(bottom, #eb6767, #d94040 35%, #eb6767);
    background-image:      -o-linear-gradient(bottom, #eb6767, #d94040 35%, #eb6767);
    background-image:     -ms-linear-gradient(bottom, #eb6767, #d94040 35%, #eb6767);
    background-image:         linear-gradient(to top, #eb6767, #d94040 35%, #eb6767);
}

我正在使用此tutorial on CSS tricks.

3 个答案:

答案 0 :(得分:17)

使用渐变创建三角形(或其他形状 - pentagons, hexagons,八边形,decagonsdodecagonstetradecagonsoctadecagons等等)使用CSS转换,任何其他类型的图像背景都非常简单。

但在这种情况下,你甚至不需要三角形。你只需要将一个方形伪元素旋转45度并在角落之间应用渐变。

demo

<div class='warn'></div>

<强> CSS

.warn {
  position: relative;
  margin: 0 auto;
  border: solid 1px darkred;
  width: 12em; height: 3em;
  border-radius: .2em;
  background: linear-gradient(lightcoral, firebrick);
}
.warn:before {
  position: absolute;
  top: 50%; left: 0;
  margin: -.35em -.45em;
  border-left: inherit; border-bottom: inherit;
  /* pick width & height such that 
     the diagonal of the square is 1em = 1/3 the height of the warn bubble */
  width: .7em; height: .7em;
  border-radius: 0 0 0 .2em;
  transform: rotate(45deg);
  background: linear-gradient(-45deg, firebrick -100%, lightcoral 200%);
  content: '';
}

答案 1 :(得分:0)

您可以创建一个CSS三角形,但不能创建一个本身就是渐变的CSS三角形。我建议的唯一技巧是选择最接近渐变背景中颜色的颜色。它只取决于你的渐变实际有多大,以及三角形融合的程度。

对于红色div,您可以尝试使用颜色#d94040,但它将缺少边框和阴影。但是,可以添加这些。要为CSS三角形添加边框,您可以在其中放置一个同样大小的CSS三角形。这需要使用绝对定位和z-index来重叠它们。

或者您可以使用:: after或:: before来创建CSS三角形而不添加HTML代码,但那只能在现代浏览器中使用。

答案 2 :(得分:0)

在CSS3中,您可以使用'border trick'创建一个三角形。此边框可以是彩色的,可以有背景。

WebKit现在(至少Chrome 12)支持渐变作为边框图像。

对于更受支持的解决方案,我建议你“渐变”a的背景:在使用伪元素之前,你会应用'背景渐变'+(带边框的css三角形)技巧。

Here is a cssTriangle generator让您进行实验。