Man*_*gux 18 html css linear-gradients css3 css-shapes
我想做以下设计:
我尝试过:after,:before但它不起作用.这是我目前的代码:
.design {
background: #ea053a;
display: inline-block;
height: 155px;
margin-left: 33px;
margin-right: 40px;
position: relative;
width: 228px;
}
.design:before {
border-top: 43px solid #ea053a;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
margin-right: 40px;
content: "";
height: 0;
left: 0;
position: absolute;
top: 55px;
margin-top: 100px;
width: 128px;
}Run Code Online (Sandbox Code Playgroud)
<div class="design"></div>Run Code Online (Sandbox Code Playgroud)
(小提琴)
我怎么能保持原始设计和以下两个属性?:
box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.2);
background-image: linear-gradient(to bottom, #ea053a, #d0021b);
Run Code Online (Sandbox Code Playgroud)
Tem*_*fif 11
这是一个带有偏斜变换和drop-shadow滤波器的想法.您只需要一些额外的元素来正确地获得渐变.诀窍是反转偏斜以保持梯度方向正确(如果我们处理纯色则不需要)
.box {
width: 150px;
height: 150px;
position: relative;
z-index:0;
overflow: hidden;
filter: drop-shadow(0 1px 10px rgba(0, 0, 0, 0.8));
}
.box span {
position: absolute;
z-index:-1;
top: 0;
width: 50%;
height: 100%;
overflow: hidden;
}
.box span:first-of-type {
left: 0;
transform: skewY(35deg);
transform-origin: top right;
}
.box span:last-of-type {
right: 0;
transform: skewY(-35deg);
transform-origin: top left;
}
.box span::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(to bottom, blue , red );
}
.box span:first-of-type::before {
transform: skewY(-35deg);
transform-origin: top right;
}
.box span:last-of-type::before {
transform: skewY(35deg);
transform-origin: top left;
}
p {
margin:0;
color:#fff;
font-size:45px;
line-height:100px;
text-align:center;
}Run Code Online (Sandbox Code Playgroud)
<div class="box">
<span></span><span></span>
<p>29</p>
</div>Run Code Online (Sandbox Code Playgroud)
以下是我们如何使用左或右渐变.在这种情况下,我们不需要额外的元素,因为倾斜不会影响方向:
.box {
width: 150px;
height: 150px;
position: relative;
z-index:0;
overflow: hidden;
filter: drop-shadow(0 1px 10px rgba(0, 0, 0, 0.8));
}
.box:before,
.box:after{
content:"";
position: absolute;
z-index:-1;
top: 0;
width: 50%;
height: 100%;
overflow: hidden;
background:linear-gradient(to right,blue,red);
background-size:200% 100%;
}
.box:before{
left: 0;
transform: skewY(35deg);
transform-origin: top right;
}
.box:after{
right: 0;
transform: skewY(-35deg);
transform-origin: top left;
background-position:right;
}
p {
margin:0;
color:#fff;
font-size:45px;
line-height:100px;
text-align:center;
}Run Code Online (Sandbox Code Playgroud)
<div class="box">
<p>29</p>
</div>Run Code Online (Sandbox Code Playgroud)
这里有一个任意的渐变:
.box {
width: 150px;
height: 150px;
position: relative;
z-index:0;
overflow: hidden;
filter: drop-shadow(0 1px 10px rgba(0, 0, 0, 0.8));
}
.box span {
position: absolute;
z-index:-1;
top: 0;
width: 50%;
height: 100%;
overflow: hidden;
}
.box span:first-of-type {
left: 0;
transform: skewY(35deg);
transform-origin: top right;
}
.box span:last-of-type {
right: 0;
transform: skewY(-35deg);
transform-origin: top left;
}
.box span::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(35deg, blue , red );
background-size:200% 100%;
}
.box span:first-of-type::before {
transform: skewY(-35deg);
transform-origin: top right;
}
.box span:last-of-type::before {
transform: skewY(35deg);
transform-origin: top left;
background-position:right;
}
p {
margin:0;
color:#fff;
font-size:45px;
line-height:100px;
text-align:center;
}Run Code Online (Sandbox Code Playgroud)
<div class="box">
<span></span><span></span>
<p>29</p>
</div>Run Code Online (Sandbox Code Playgroud)
由于每个元素都占据50%了宽度,我们将背景设置200%为主要容器,然后我们调整位置以创建一个背景的错觉.这就像每个元素将显示主要背景的一半.