CSS中怎么使用径向渐变实现卡券效果

这篇文章将为大家详细讲解有关CSS中怎么使用径向渐变实现卡券效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

常见的卡券样式如下:

CSS中怎么使用径向渐变实现卡券效果

使用伪元素实现(Less 版本)

CSS中怎么使用径向渐变实现卡券效果

ticket.less

.ordinary-mixins-ticket-horizontal(@width,@height,@r,@top,@color){
position:relative;
box-sizing:border-box;
padding:0@r;
width:@width;
height:@height;
background-clip:content-box;
background-color:@color;

&::before{
position:absolute;
top:0;
left:0;
content:"";
display:block;
width:@r+1px;
height:100%;
background:radial-gradient(@rcircleatleft@top,transparent@r,@color@r+1px);
}

&::after{
position:absolute;
top:0;
right:0;
content:"";
display:block;
//这里的@r+1px是为了避免某些百分百比缩放页面时,出现空隙
width:@r+1px;
height:100%;
//这里的@r+1px是为了防止出现锯齿
background:radial-gradient(@rcircleatright@top,transparent@r,@color@r+1px);
}
}

.parent{
.ordinary-mixins-ticket-horizontal(200px,200px,10px,150px,#fc3a28);
}
.child{
line-height:200px;
}

App.js

importReactfrom'react';
import'./App.css';
import'./ticket.less';

functionApp(){
return(
<divclassName="App"style={
{
display:"flex",
justifyContent:"center",
alignItems:"center",
height:600
}
}>
<divclassName={'parent'}>
<divclassName="child">666</div>
</div>
</div>
);
}

exportdefaultApp;

升级版样式一(Less 版本)

CSS中怎么使用径向渐变实现卡券效果

.mixins-ticket-vertical(@width,@height,@r,@left,@l-color,@r-color){
width:@width;
height:@height;
//@left-1px是为了避免某些百分百比缩放页面时,出现空隙
//@r+1px是为了防止出现锯齿
//51%是为了防止出现元素中间会有一小段空白区域的情况
background:radial-gradient(circleatlefttop,transparent@r,@l-color@r+1px)@left-1pxtop~'/'100%51%no-repeat,
radial-gradient(circleatleftbottom,transparent@r,@l-color@r+1px)@left-1pxbottom~'/'100%51%no-repeat,
radial-gradient(circleatrighttop,transparent@r,@r-color@r+1px)-(@width-@left)top~'/'100%51%no-repeat,
radial-gradient(circleatrightbottom,transparent@r,@r-color@r+1px)-(@width-@left)bottom~'/'100%51%no-repeat;

filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));
}

.mixins-ticket-vertical-two(@width,@height,@r,@left,@l-color,@r-color){
width:@width;
height:@height;
//@left+1px是为了避免某些百分百比缩放页面时,出现空隙
//@r+1px是为了防止出现锯齿
//51%是为了防止出现元素中间会有一小段空白区域的情况
background:radial-gradient(circleatlefttop,transparent@r,@r-color@r+1px)righttop~'/'(@width-@left)51%no-repeat,
radial-gradient(circleatleftbottom,transparent@r,@l-color@r+1px)rightbottom~'/'(@width-@left)51%no-repeat,
radial-gradient(circleatrighttop,transparent@r,@r-color@r+1px)lefttop~'/'@left+1px51%no-repeat,
radial-gradient(circleatrightbottom,transparent@r,@l-color@r+1px)leftbottom~'/'@left+1px51%no-repeat;

filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));
}

.parent{
.mixins-ticket-vertical(200px,200px,10px,150px,#fc3a28,#fc3a28);
//.mixins-ticket-vertical-two(200px,200px,10px,150px,#fc3a28,#fc3a28);
}
.child{
line-height:200px;
}

升级版样式一(Scss 版本)

@mixinmixins-ticket-vertical($width,$height,$r,$left,$l-color,$r-color){
width:$width;
height:$height;
//$left-1px是为了避免某些百分百比缩放页面时,出现空隙
//$r+1px是为了防止出现锯齿
//51%是为了防止出现元素中间会有一小段空白区域的情况
background:radial-gradient(circleatlefttop,transparent$r,$l-color$r+1px)$left-1pxtop/100%51%no-repeat,
radial-gradient(circleatleftbottom,transparent$r,$l-color$r+1px)$left-1pxbottom/100%51%no-repeat,
radial-gradient(circleatrighttop,transparent$r,$r-color$r+1px)-($width-$left)top/100%51%no-repeat,
radial-gradient(circleatrightbottom,transparent$r,$r-color$r+1px)-($width-$left)bottom/100%51%no-repeat;

filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));
}

.parent{
@includemixins-ticket-vertical(200px,200px,10px,150px,#fc3a28,#fc3a28);
}

.child{
line-height:200px;
}

升级版样式二(Less 版本)

CSS中怎么使用径向渐变实现卡券效果

.mixins-ticket-horizontal(@width,@height,@r,@top,@l-color,@r-color){
width:@width;
height:@height;
background:radial-gradient(circleatlefttop,transparent@r,@l-color@r+1px)left@top-1px~'/'51%100%no-repeat,
radial-gradient(circleatleftbottom,transparent@r,@l-color@r+1px)left-(@height-@top)~'/'51%100%no-repeat,
radial-gradient(circleatrighttop,transparent@r,@r-color@r+1px)right@top-1px~'/'51%100%no-repeat,
radial-gradient(circleatrightbottom,transparent@r,@r-color@r+1px)right-(@height-@top)~'/'51%100%no-repeat;

filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));
}

.mixins-ticket-horizontal-two(@width,@height,@r,@top,@l-color,@r-color){
width:@width;
height:@height;
background:radial-gradient(circleatlefttop,transparent@r,@r-color@r+1px)leftbottom~'/'51%(@height-@top)no-repeat,
radial-gradient(circleatleftbottom,transparent@r,@l-color@r+1px)lefttop~'/'51%@top+1pxno-repeat,
radial-gradient(circleatrighttop,transparent@r,@r-color@r+1px)rightbottom~'/'51%(@height-@top)no-repeat,
radial-gradient(circleatrightbottom,transparent@r,@l-color@r+1px)righttop~'/'51%@top+1pxno-repeat;

filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));
}

.parent{
.mixins-ticket-horizontal(200px,200px,10px,150px,#fc3a28,#fc3a28);
//.mixins-ticket-horizontal-two(200px,200px,10px,150px,#fc3a28,#fc3a28);
}
.child{
line-height:200px;
}

升级版样式三(Less 版本)

CSS中怎么使用径向渐变实现卡券效果

.mixins-ticket-horizontal-line(@width,@height,@r,@top,@l-color,@r-color,@border-offset,@border-color){
width:@width;
height:@height;
background:radial-gradient(circleatlefttop,transparent@r,@l-color@r+1px)left@top-1px~'/'51%100%no-repeat,
radial-gradient(circleatleftbottom,transparent@r,@l-color@r+1px)left-(@height-@top)~'/'51%100%no-repeat,
radial-gradient(circleatrighttop,transparent@r,@r-color@r+1px)right@top-1px~'/'51%100%no-repeat,
radial-gradient(circleatrightbottom,transparent@r,@r-color@r+1px)right-(@height-@top)~'/'51%100%no-repeat;
filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));

&::after{
position:absolute;
left:0;
right:0;
top:@top;
margin:auto;
content:'';
width:calc(~"100%"-2*@r-@border-offset);
border-top:1pxdashed@border-color;
}
}

.parent{
.mixins-ticket-horizontal(200px,200px,10px,150px,#fc3a28,#fc3a28);
//.mixins-ticket-horizontal-two(200px,200px,10px,150px,#fc3a28,#fc3a28);
}
.child{
line-height:200px;
}

升级版样式四(Less 版本)

.mixins-ticket-vertical-three(@width,@height,@r,@left,@l-color,@r-color,@sm-r,@sm-offset,@sm-color){
width:@width;
height:@height;
//@left-1px是为了避免某些百分百比缩放页面时,出现空隙
//@r+1px是为了防止出现锯齿
//51%是为了防止出现元素中间会有一小段空白区域的情况
background:radial-gradient(circleatlefttop,transparent@r,@l-color@r+1px)@left-1pxtop~'/'100%51%no-repeat,
radial-gradient(circleatleftbottom,transparent@r,@l-color@r+1px)@left-1pxbottom~'/'100%51%no-repeat,
radial-gradient(circleatrighttop,transparent@r,@r-color@r+1px)-(@width-@left)top~'/'100%51%no-repeat,
radial-gradient(circleatrightbottom,transparent@r,@r-color@r+1px)-(@width-@left)bottom~'/'100%51%no-repeat;

filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));

&::after{
content:'';
position:absolute;
top:0;
right:-@sm-r;
width:@sm-r;
height:100%;
background-image:radial-gradient(circleat@sm-r,transparent@sm-r,@r-color@sm-r+1px);
//background-size:@sm-r;
background-size:@sm-r@sm-offset;
}
}

.parent{
.mixins-ticket-vertical-three(200px,200px,10px,150px,#fc3a28,#fc3a28,5px,20px,#fc3a28);
}

.child{
line-height:200px;
}

注意事项

//ticket.less

//background:radial-gradient(circleattopright,transparent@r,@lcolor0)-(@width-@left)top~'/'100%55%no-repeat;
//将上面的这行代码拆解如下:
//background-image:radial-gradient(circleattopright,transparent@r,@lcolor0);
//background-position:-(@width-@left)top;
//background-size:100%55%;
//background-repeat:no-repeat;

/*注意:这里先是有50px的透明区域,紧接着第二个区域设置了0,可以理解为从这里开始重新设置样式区间*/
/*background:radial-gradient(circleattopright,transparent50px,red0,#66a8ff50%);*/

/*在Chrome下,如果两个区域之间颜色直接以0偏差过渡,会有比较严重的锯齿*/
/*background:radial-gradient(10pxatleft,transparent50%,#F6327C50%);*/
/*background:radial-gradient(10pxatleft,transparent50%,#F6327C55%);*/

/*加阴影效果*/
/*filter:drop-shadow(2px2px2pxrgba(0,0,0,.2));*/

/*多个径向渐变累加*/
/*background:
radial-gradient(50px100pxellipse,transparent40px,yellow41px,red49px,transparent50px),
radial-gradient(30pxcircle,red,red29px,transparent30px);*/

关于“CSS中怎么使用径向渐变实现卡券效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

发布于 2021-03-17 20:53:56
收藏
分享
海报
0 条评论
172
上一篇:Vue如何实现关联页面多级跳转功能 下一篇:CSS怎么设置盒子容器div高度始终为100%
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码