android 内凹的圆角,css实现内凹圆角样式

最新开发遇到一个弹框,弹框中间有两个内凹的半圆,而且还是透明的,不能遮挡到底层的内容。基于这个需求,找到了一个比较好的实现方法。

先上一下demo效果图:

1b0ec60dae85

image.png

实现这个效果主要是用了background-image 结合径向渐变radial-gradient。

示例:

background-image: radial-gradient(circle 10px at 0 100%, transparent 50px, red 50%);

而对于径向渐变,主要是3个参数控制。

一个是原点和大小。大小类似border-radius的感觉,原点使用at表示可以指定点的坐标,或使用left、right、top、bottom来表示。

其次是两个颜色和透明度、大小等。这里50px或百分比,亲测第一个只有50才是半圆角,而第二个50%貌似影响不大。

下面是代码:

p{

margin:0;

padding:0;

}

.top-box{

width:100%;

height:200px;

background: red;

position: relative;

margin-bottom:20px;

border-radius: 4px 4px 0 0;

}

.bottom-box{

width:100%;

height:100px;

background: #fff;

position: relative;

border-radius: 0 0 4px 4px;

}

.top-box p,.bottom-box p{

width: calc(100% - 20px);

height:10px;

position:absolute;

left: 10px;

}

.top-box p{

background: red;

bottom: -10px;

}

.bottom-box p{

background: #fff;

top: -10px;

}

.top-box p::before,.bottom-box p::before{

content:'';

position:absolute;

width: 10px;

height: 10px;

left:-10px;

}

.top-box p::after,.bottom-box p::after{

content:'';

position:absolute;

width: 10px;

height: 10px;

right:-10px;

}

.top-box p::before{

background-image: radial-gradient(circle 10px at 0 100%, transparent 50px, red 50%);

}

.top-box p::after{

background-image: radial-gradient(circle 10px at 100% 100%, transparent 50px, red 50%);

}

.bottom-box p::before{

background-image: radial-gradient(circle 10px at 0 0, transparent 50px, #fff 50%);

}

.bottom-box p::after{

background-image: radial-gradient(circle 10px at 100% 0, transparent 50px, #fff 50%);

}

最后补充一下径向渐变radial-gradient() 函数的知识点

语法:

background-image: radial-gradient(shape size at position, start-color, ..., last-color);

1b0ec60dae85

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值