您的位置:首页 > Web前端 > CSS

CSS3样式linear-gradient的使用

2017-03-09 15:11 267 查看


linear-gradient

linear-gradient是CSS3中新增的样式,主要用于颜色的渐变效果。MDN地址
linear-gradient在不同内核下使用方式不同,详细内容可参考w3cplus


实用栗子(在Chrome下)

缺角效果

先看效果图



<div class="div1">
这是内容
</div>


.div1 {
width: 100px;
height: 40px;
line-height: 40px;
background:linear-gradient(-135deg, transparent 15px, #162e48 0);
color: #fff;
padding: 5px 15px;
text-align: center;
margin-bottom: 30px;
}


补角效果

先看效果图



<div class="div2">
这是内容
</div>


.div2 {
width: 100px;
height: 40px;
line-height: 40px;
background:linear-gradient(-135deg, #f00 15px, #162e48 0);
color: #fff;
padding: 5px 15px;
text-align: center;
margin-bottom: 30px;
}


只是在栗子1的基础上修改了linear-gradient,将transparent修改为#f00

带边框的效果

先看效果图



<div class="div3">
这是内容
</div>


.div3 {
width: 100px;
height: 40px;
line-height: 40px;
background:linear-gradient(-135deg, #f00 15px, #162e48 0);
color: #fff;
padding: 5px 15px;
text-align: center;
margin-bottom: 30px;
box-shadow: 0 0 1px 1px #fff inset;
}


在栗子2的基础上增加了box-shadow,当然加边框可以有多种方式,可自行选择。

开关效果

效果图



<div class="div4">
<div class="div4-1">OFF</div>
<div class="div4-2 active">ON</div>
</div>


.div4 {
width: 144px;
height: 30px;
line-height: 30px;
background: #162e48;
color: #FFF;
text-align: center;
margin-bottom: 30px;
}
.div4-1, .div4-2 {
width: 86px;
float: left;
}
.div4-1.active {
margin-right: -28px;
background:linear-gradient(-135deg, transparent 20px, #f00 0);
}
.div4-2.active {
margin-left: -28px;
background:linear-gradient(45deg, transparent 20px, #f00 0);
}


最终效果可根据需要自行调整

在栗子3的基础上做到以下效果,单纯使用linear-gradient没有找到解决方法,如有方案,请在评论下给出方案。以下是其中一种解决方式

效果图



.div5 {
width: 100px;
height: 40px;
line-height: 40px;
background:linear-gradient(-135deg, #fff 15px, #162e48 0);
color: #fff;
padding: 5px 15px;
text-align: center;
box-shadow: 0 0 1px 1px #fff;
margin-bottom: 30px;
position: relative;
}
.div5:after {
content: ' ';
border: solid transparent;
position: absolute;
border-width: 12px;
border-top-color: #000;
border-right-color: #000;
top: -2px;
right: -2px;
}


考虑到兼容性问题,可以通过
:before
:after
实现同样的效果,给出一个栗子

.div6 {
width: 100px;
height: 40px;
line-height: 40px;
background:#162e48;
color: #fff;
padding: 5px 15px;
text-align: center;
position: relative;
border: 1px solid #fff;
margin-bottom: 30px;
}
.div6:before {
content: ' ';
border: solid transparent;
position: absolute;
border-width: 15px;
border-top-color: #fff;
border-right-color: #fff;
right: 0px;
top: 0px;
}
.div6:after {
content: ' ';
border: solid transparent;
position: absolute;
border-width: 15px;
border-top-color: #000;
border-right-color: #000;
top: -1px;
right: -1px;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: