【CSS】内圆角

作者: 德育处主任 | 来源:发表于2017-11-27 11:18 被阅读56次
184250-106.jpg

先上个图看看效果


image.png

紫色边框外面是直角,内部是圆角。要做出这个效果,首先要知道box-shadow 和 outline 的使用方法。box-shadow 和 outline 的使用方法在我的简书《CSS多重边框》里面有记录。http://www.jianshu.com/p/a6333147dff5

我做出这种效果有2个方法。

方法一:
用2个div嵌套实现。

HTML代码:

<div class="parent">
    <div></div>
</div>

CSS代码:

.parent {
    width: 300px;
    height: 300px;
    background: #669;
    display: flex;
    justify-content: center;
    align-items: center;
}
.parent > div {
    width: 280px;
    height: 280px;
    border-radius: 20px;
    background: #6cc;
}
image.png

注意:
要实现内层div的居中效果。
这里用了弹性盒子(class="parent"的div中css加粗部分)的方法来实现。

缺点:
要用2个元素来实现。嵌套层次加多。




方法二:
利用 box-shadow 和 outline

HTML代码:
<div></div>

CSS代码:

div{
    width: 300px;
    height: 300px;
    background: #6cc;
    border-radius: 30px;
    box-shadow: 0 0 0 15px #669;
    outline: 15px solid #669;
}
image.png



详解

首先要设置div的边框为圆角边框,用border-radius设置。

【CSS】多重边框(box-shadow、outline)里面讲到,如果元素设置了圆角边框,再设置outline是会出现四角漏空的现象的。

image.png

而设置了圆角,然后再用 box-shadow 设置外边框,则最外层的四角就不是90°了。


image.png

所以要用 box-shadow 和 outline 配合使用。

但在这个方法中,如果 outline 的值不够大,box-shadow 在填充空隙的时候就会超出 outline 设定的界限。如下图所示


image.png

所以 outline 的值不能太小,同时要计算缝隙的值


image.png

利用勾股定理计算出空隙的长度


image.png
image.png

空隙的长度为 (r√2)-r,即 r(√2 - 1)。而 √2 - 1 < 0.5 ,所以设置 box-shadow 的大小可以为圆角半斤(border-radius)的一半。
这里的 “ r ” 指的是border-radius的大小。



总结:
在用这个方法制作内圆角的时候,
box-shadow 的值是 border-radius 的一半,即 box-shadow = border-radius / 2

同时,outline 要 大于等于 box-shadow 。

缺点:
此方法在使用过程中要进行各种计算。

限制:
box-shadow 小于等于 outline ,同时 box-shadow 又要比 r(√2 - 1)大。
这里的 “ r ” 指的是border-radius的大小。






希望以上笔记对大家有帮助。
我的其他笔记在微信公众号:Rabbit_svip

image

相关文章

  • w3cplus 学习一

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

  • 圆角(弧形)在css里面怎么表示

    圆角(弧形)在css里面怎么表示 一、CSS3圆角的优点 传统的圆角生成方案,必须使用多张图片作为背景图案。CSS...

  • css3圆角

    css3 圆角使用 CSS3 border-radius 属性,你可以给任何元素制作 "圆角"。CSS3 bord...

  • CSS3设置圆角边框 圆角特效代码 CSS3的圆角border-

    CSS3设置圆角边框 css3圆角特效代码 CSS3 border-radius 属性 使用 CSS3 borde...

  • 过度动画

    CSS过度动画 圆角 阴影 透明度 CSS3圆角 设置某一个角的圆角,比如设置左上角的圆角:border-top-...

  • CSS3圆角、阴影、rgba

    CSS3圆角、阴影、rgba CSS3圆角 设置某一个角的圆角,比如设置左上角的圆角:border-top-lef...

  • 用CSS实现圆角框

    CSS圆角进化论新手画小像素—基本线条超圆滑圆角框的半完美解决方案纯CSS圆角框 实例HTML部分:

  • HTML过渡动画

    1、css3过渡动画 2、圆角 阴影 透明度 CSS3圆角 设置某一个角的圆角,比如设置左上角的圆角:border...

  • css实现内凹圆角样式

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

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

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

网友评论

    本文标题:【CSS】内圆角

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