我正在尝试制作 CSS按钮。如下所示,我无法为角落的第二个HTML元素创建渐变。通常我会使用边框或只是旋转一个元素来创建一个带有渐变的三角形,但问题是我的三角形不是90度方形。
所需设计:(灰度,视网膜200%放大)
我的CSS按钮:(蓝色,视网膜200%缩放)
有没有更好的方法用CSS创建这个按钮?
http://jsfiddle.net/G8ZBz/或者只需阅读以下内容:
HTML代码
<div class="button">
<div class="button-inside"></div>
</div>
CSS
.button {
width: 225px;
height: 60px;
background: #2983d2;
}
.button:before {
position: absolute;
width: 0px;
height: 0px;
left: -13px;
content: "";
display: block;
border-top: 30px solid transparent;
border-bottom: 30px solid transparent;
border-right: 13px solid #2983d2;
}
.button:after {
position: absolute;
width: 0px;
height: 0px;
top: 0;
right: -13px;
content: "";
display: block;
border-top: 30px solid transparent;
border-bottom: 30px solid transparent;
border-left: 13px solid #2983d2;
}
.button .button-inside {
position: relative;
width: 221px;
height: 55px;
margin-left: 2px;
background: #469bf9; /* Old browsers */
background: -moz-linear-gradient(top, #469bf9 50%, #1e80f7 50%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(50%,#469bf9), color-stop(50%,#1e80f7)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #469bf9 50%, #1e80f7 50%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #469bf9 50%, #1e80f7 50%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #469bf9 50%, #1e80f7 50%); /* IE10+ */
background: linear-gradient(to bottom, #469bf9 50%, #1e80f7 50%); /* W3C */
}
.button .button-inside:before {
position: absolute;
width: 0px;
height: 0px;
left: -13px;
content: "";
display: block;
border-top: 30px solid transparent;
border-bottom: 30px solid transparent;
border-right: 13px solid #1e80f7; /* should be a gradient */
}
.button .button-inside:after {
position: absolute;
width: 0px;
height: 0px;
top: 0;
right: -13px;
content: "";
display: block;
border-top: 30px solid transparent;
border-bottom: 30px solid transparent;
border-left: 13px solid #1e80f7; /* should be a gradient */
}
答案 0 :(得分:7)
您可以使用skew property制作扁平三角形。
在您的情况下,我会使用skew()
属性和背景阴影来制作底部边框效果:
<强> DEMO 强>
输出:
下图说明了使用每个元素,伪元素和背景阴影构成按钮的内容和方式。伪元素和背景阴影用于最小化标记:
HTML:
<div class="button top">
<div class="button bottom"></div>
</div>
CSS:
.top{
position:relative;
margin-left:150px;
width: 225px;
height: 60px;
}
.button:before, .button:after{
position: absolute;
width:70%; height:50%;
content: "";
z-index:-1;
}
.top:before {
left:0; top:0;
-webkit-transform:skewX(-20deg);
-ms-transform:skewX(-20deg);
transform:skewX(-20deg);
background: #469BF9;
box-shadow: -5px 10px 0px -5px #104f96;
z-index:-2;
}
.top:after {
right:0; top:0;
-webkit-transform:skewX(20deg);
-ms-transform:skewX(20deg);
transform:skewX(20deg);
background: #469BF9;
box-shadow: 5px 10px 0px -5px #104f96;
z-index:-2;
}
.bottom:before{
left:0; top:50%;
-webkit-transform:skewX(20deg);
-ms-transform:skewX(20deg);
transform:skewX(20deg);
background: #1E80F7;
box-shadow: -4px 5px 0px 0px #104f96;
}
.bottom:after{
right:0; top:50%;
-webkit-transform:skewX(-20deg);
-ms-transform:skewX(-20deg);
transform:skewX(-20deg);
background: #1E80F7;
box-shadow: 4px 5px 0px 0px #104f96;
}
您也可以使用几个不同的三角形检查此codepen。
答案 1 :(得分:6)
通过执行以下操作,您可以使用单个元素实现此形状:
perspective
的单个父元素。
.hex-with-shadow {
position: relative;
width: 225px;
height: 60px;
margin: 0px auto;
-webkit-perspective: 10px;
-moz-perspective: 10px;
perspective: 10px;
}
.hex-with-shadow:before {
position: absolute;
content: '';
top: -1px;
left: 0px;
width: 100%;
height: 50%;
background: #469BF9;
box-shadow: 0px 3.5px 0px 0px #104f96;
-webkit-transform: rotateX(3deg);
-moz-transform: rotateX(3deg);
transform: rotateX(3deg);
}
.hex-with-shadow:after {
position: absolute;
content: '';
bottom: 0px;
left: 0px;
width: 100%;
height: 50%;
background: #1E80F7;
border-bottom: 1px solid #104f96;
box-shadow: -4px 3px 0px #104f96, 4px 3px 0px #104f96;
-webkit-transform: rotateX(-3deg);
-moz-transform: rotateX(-3deg);
transform: rotateX(-3deg);
}
&#13;
<div class="hex-with-shadow"></div>
&#13;
最终输出:
原始答案:
您可以使用以下方法创建三角形并为其添加渐变。
未来读者注意:第二种方法非常黑客且无法重复使用。此外,这个导致Firefox的轻微扭曲。