当前位置: 首页 > news >正文

CSS 实现高频出现的复杂怪状按钮 - 镂空的内凹圆角边框

里面包含了如下这些图形:

你可以在这里看到:CodePen Demo -- CSS Various Button Shapes | CSS 各种造型按钮

接下来几篇文章中,将在上述基础上,额外补充一些在日常设计稿中,常见的,可能出现的更为复杂的几个按钮,本文,我们来尝试实现这个造型:

不镂空的内凹圆角按钮

在文章开头的贴图中,其实是有和这个按钮非常类似的造型:

此造型如果内部无需镂空,整体还是比较简单的,利用background: radial-gradient()径向渐变或者mask,都能比较轻松的实现。

我们快速回顾一下,看这样一个简单的例子:

<div></div>
div { background-image: radial-gradient(circle at 100% 100%, transparent 0, transparent 12px, #2179f5 12px); }

可以得到这样一个图形:

所以,只需控制下background-size,在 4 个角实现 4 个这样的图形即可:

<div class="inset-circle">inset-circle</div>
&.inset-circle { background-size: 70% 70%; background-image: radial-gradient( circle at 100% 100%, transparent 0, transparent 12px, #2179f5 13px ), radial-gradient( circle at 0 0, transparent 0, transparent 12px, #2179f5 13px ), radial-gradient( circle at 100% 0, transparent 0, transparent 12px, #2179f5 13px ), radial-gradient( circle at 0 100%, transparent 0, transparent 12px, #2179f5 13px ); background-repeat: no-repeat; background-position: right bottom, left top, right top, left bottom; }

借助 mask 实现渐变的内切圆角按钮

如果背景色要求渐变怎么办呢?

假设我们有一张矩形背景图案,我们只需要使用mask实现一层遮罩,利用mask的特性,把 4 个角给遮住即可。

mask的代码和上述的圆角切角代码非常类似,简单改造下即可得到渐变的内切圆角按钮:

<div class="mask-inset-circle">inset-circle</div>
.mask-inset-circle { background: linear-gradient(45deg, #2179f5, #e91e63); mask: radial-gradient( circle at 100% 100%, transparent 0, transparent 12px, #2179f5 13px ), radial-gradient( circle at 0 0, transparent 0, transparent 12px, #2179f5 13px ), radial-gradient( circle at 100% 0, transparent 0, transparent 12px, #2179f5 13px ), radial-gradient( circle at 0 100%, transparent 0, transparent 12px, #2179f5 13px ); mask-repeat: no-repeat; mask-position: right bottom, left top, right top, left bottom; mask-size: 70% 70%; }

这样,我们就得到了这样一个图形:

镂空的内凹圆角边框

但是,如果要求内部是整体镂空,只展示内凹圆角边框,整个复杂度一下就上来了。

上面的方法以及不适用了,原因在于很难利用mask制造一个不规则的内凹圆角形状进行裁剪,因此,我们必须另辟蹊径。

渐变偏移技巧

在 CSS 高阶小技巧 - 角向渐变的妙用! 一文中,我们介绍了渐变一个非常有意思的偏移技巧:

举个例子,下面是角向渐变conic-gradient()的简单介绍:

{ background: conic-gradient(deeppink, yellowgreen); }

从渐变的圆心、渐变起始角度以及渐变方向上来说,是这样的:

划重点:

从图中可以看到,角向渐变的起始圆心点、起始角度和渐变方向为:

  1. 起始点是图形中心,
  2. 默认渐变角度 0deg 是从上方垂直于圆心的
  3. 渐变方向以顺时针方向绕中心实现

当然,我们也可以控制角向渐变的起始角度以及角向渐变的圆心

稍微改一下上述代码:

{ background: conic-gradient(from 270deg at 50px 50px, deeppink, yellowgreen); }

效果如下:

我们改变了起始角度以及角向渐变的圆心

了解了这个之后。我们基于上述的图形,重新绘制一个图形:

div { margin: auto; width: 200px; height: 200px; background: conic-gradient(from 270deg at 50px 50px, deeppink 0%, deeppink 90deg, transparent 90deg, transparent 360deg); border: 1px solid #000; }

效果如下:

起始角度以及角向渐变的圆心没有改变,但是只让前 90deg 的图形为粉色,而后 270deg 的图形,设置为了透明色。

我们利用角向渐变,在图像内部,又实现了一个小的矩形!

接下来,我们再给上述图形,增加一个background-position: -25px, -25px

div { margin: auto; width: 200px; height: 200px; background: conic-gradient(from 270deg at 50px 50px, deeppink 0%, deeppink 90deg, transparent 90deg, transparent 360deg); background-position: -25px -25px; border: 1px solid #000; }

这样,我们就神奇的得到了这样一个图形:

为什么会有这样一种现象?如果我们在代码中加入background-repeat: no-repeat

div { width: 200px; height: 200px; background: conic-gradient(from 270deg at 50px 50px, deeppink 0%, deeppink 90deg, transparent 90deg, transparent 360deg); background-position: -25px -25px; background-repeat: no-repeat; border: 1px solid #000; }

那么就只会剩下左上角一个角:

因此,这里实际上利用了渐变图形默认会 repeat 的特性,实际上是这么个意思:

http://www.gsyq.cn/news/1619120.html

相关文章:

  • 述职 PPT 制作怎么高效完成?5 款软件中立测评与选型指南
  • Vue 集成 ECharts 可视化全套图表开发,功能实现与页面效果展示
  • 《我的机器人女友:代号夜莺》
  • Mi-Create:5分钟学会零代码制作小米穿戴表盘的终极指南
  • Prisma和TypeORM的区别
  • DayZ终极单机离线模式:5分钟快速安装完整免费生存体验
  • AI读心术:破解沉默中的命运密码
  • Triton模型服务工程化:高并发AI推理的生产落地实践
  • ⁉️微软MOS2016版本认证停考的重要通知
  • AI 电动农业机械 植物生长灯智能功率 MOSFET 精准选型方案
  • 丽兴金庄珠宝行创办人陈三弟荣登《祖国》杂志封面人物
  • 液压系统的溢流阀溢流导致能耗高解决方案
  • 实测对比!动态滚动字幕怎么无痕去除?主流视频去字幕工具深测评
  • 【趣话计算机底层技术】调试器是个大骗子!
  • 云康e家最新消息,资金减损核定方案公布。
  • 做了20多年运维,我发现企业最容易忽视这一点
  • 千兆网卡还没过时 这些场景依然是最佳选择
  • 5步掌握novelWriter:开源小说创作工具的完整指南
  • 信任边界与用户沟通:从《恋与深空》角色争议看二次元服务型游戏的运营选择
  • SSH协议详解:Xshell远程连接Linux与Xftp文件传输实操全教程
  • 《可靠传输的快递专线 ——TCP 协议深度趣味精讲》
  • 卡特加特是一家人工智能公司吗?
  • 在饰品、珠宝这类通常被认为由女性主导的赛道上,一个来自荷兰的品牌却独辟蹊径,专注做男性手串
  • zephyr实现ADC方式有那些?
  • 从“ELK 捞针”到结构化归因:基于 Grok 4.3 的分布式并发 Bug 排查实战
  • U535992 J-C 小梦的宝石收集
  • 什么是联盟营销(Affiliate Marketing)?2026海内外创作者商业化指南
  • 从Markdown到PDF:前端Canvas排版优化实践
  • 基于STM32单片机智能窨井盖井报警系统 倾斜角度水位气体WIFI 2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • 计算机毕业设计之基于大数据加护的国产美妆行业发展状况研究