css实现内凹圆角样式

作者: Sun____ | 来源:发表于2019-11-21 11:32 被阅读0次

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

先上一下demo效果图:


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%貌似影响不大。

下面是代码:

<style>
    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%);
    }

</style>



<div id="modal">
    <div class="mask"></div>
    <div class="wrap">
        <div class="top-box">
            <p></p>
        </div>
        <div class="bottom-box">
            <p></p>
        </div>
    </div>
</div>

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

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

image.png

相关文章

  • css实现内凹圆角样式

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

  • w3cplus 学习一

    CSS秘密花园:内凹圆角 CSS秘密花园:条纹背景 如何更专业的使用Chrome开发者工具

  • CSS布局之道——内凹圆角

    一、 效果图 先来看一下效果图: 二、 实现 1. 场景 看上图,此类场景应该很是常用吧,比如账单、卡片、列表等。...

  • CSS3 黑科技 - 内凹圆角 - 径向渐变实现

    转自:csdn 圆角,大家一定都会做,border-radius, 内凹圆角如何实现? 可以拿个白色圆盒子盖住方形...

  • HTML+CSS+JavaScrpit日常使用总结

    CSS内部样式 在 * 后面的样式是所有标签都使用这个样式而 # 后面的样式是对应的id下用如此的样式 圆角...

  • 圆角边框原理与使用

    1.圆角边框(重点) 在CSS3中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。 border-radius...

  • [前端学习]css部分学习笔记,第十天

    滑动门技术的原理 在没学css3之前,一些圆角及特殊样式,是不能用css实现的,为了满足特殊的效果,滑动门技术就产...

  • GeoServer使用CSS定义地图样式-上手

    使用CSS进行地图配色,能够实现与SLD语言相通的效果,具体样式定义规则参考CSS语法,是在花括号内的键值对来实现...

  • 十九、圆角边框&盒子阴影

    一、 圆角边框(重点) 在CSS3中,新增了样式,这样我们的盒子就可以变圆角了。 属性用于设置元素的外边框圆角。 ...

  • 如何快捷的写css来美化你的界面

    一.写基本 系统性的设计你的css 例如:全局字体、按钮基础样式、按钮圆角、按钮悬停样式、各种配色主题样式、单选、...

网友评论

    本文标题:css实现内凹圆角样式

    本文链接:https://www.haomeiwen.com/subject/axuzictx.html