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

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

在之前,我们有些过这么一篇文章 - 使用 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); }

效果如下:

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

相关文章:

  • 如何快速搭建智能家居操作系统:Home Assistant OS完整指南
  • 红光磷光铱配合物 Ir(Btp)2(acac) OLED红光材料
  • GmSSL与Nginx集成实战:构建国密HTTPS服务器的完整指南
  • 2kW全桥LLC电源工程包:400V输入→48V输出,含Simulink可运行模型与Mathcad全流程参数计算
  • 无线网络安全实战:从漏洞修复到主动防御的完整指南
  • NATS消息中间件安全实践:TLS加密与认证授权全解析
  • Java实战AES-256-CBC文件加密解密:从原理到代码,彻底解决0x80071771错误
  • WinDbg 下载与安装教程(Microsoft.WinDbg 最新版)
  • 深度学习时间序列预测:从状态空间重建到业务落地
  • 网络安全实战:指纹识别技术原理与漏洞挖掘应用指南
  • 建设中页面模板:响应式布局+可调倒计时+全格式FontAwesome图标
  • RSA加密实战:从手工计算到Python代码实现与性能优化
  • BurpCrypto插件实战:一键解密加密流量,赋能Web安全测试
  • ZED双目相机直出点云+YOLOv4实时测距,不用标定就能跑
  • 知乎x-zse-96参数逆向分析:从JS混淆到Python纯算还原
  • FSCAN内网扫描实战:从主机发现到漏洞挖掘的全流程指南
  • 抖音直播弹幕实时抓取技术解析:基于系统代理的WebSocket数据采集方案
  • 基于超混沌与DNA编码的彩色图像加密:原理、Matlab实现与优化
  • 机械人必知!常用黑色金属材料大盘点,什么是“优质碳素钢”一次讲透
  • ABAP实现HmacSHA256签名:保障API安全通信的完整指南
  • 深入解析Java:HashMap为什么是非线程安全的?
  • Python实战:电商购物车接口测试用例设计与自动化框架搭建
  • Playwright Canvas自动化测试实战:破解图形界面测试难题
  • 《唤醒你的AI同事:WorkBuddy从零上手》033:数据分析案例
  • AMD Ryzen终极调试指南:5步掌握SMUDebugTool硬件级控制
  • Playnite游戏库管理器:让碎片化的游戏世界重归统一
  • DAPO:面向真实业务的去中心化自适应策略优化范式
  • Adobe-GenP 3.0:终极指南教你3分钟解锁Adobe全套设计软件
  • Selenium WebDriver连接Edge浏览器调试端口失败问题全解析与解决方案
  • Python实现HMAC-SHA256 API签名验证:从原理到工程实践