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

芗城网站建设手机百度网页版

芗城网站建设,手机百度网页版,陕西网站建设公司电话,专业的集团网站设计网络通过 数学计算 CSS mask 复合遮罩 实现的真正几何内凹效果: 背景是一张图片,用来证明中间的凹陷是透明的。 完整代码: app.js import FormPage from "./pages/formPage"; import "./App.css"; const App () > {re…

通过 数学计算 + CSS mask 复合遮罩 实现的真正几何内凹效果:

在这里插入图片描述

背景是一张图片,用来证明中间的凹陷是透明的。


完整代码

app.js

import FormPage from "./pages/formPage";
import "./App.css";
const App = () => {return (<div className="box"><div className="block"></div></div>);
};export default App;

app.css

.box {background: url(../src/pages/img/10.jpg) 100%;height: 500px;
}.block {/* 增大圆角半径 */--r: 6px;/* 适当增加斜切长度 */--s: 69px;/* 微调角度使过渡更自然 */--a: 44deg;/* 更柔和的边缘过渡 */--_m: 0/calc(2*var(--r)) var(--r) no-repeat radial-gradient(50% 100% at bottom, #000 calc(100% - 0.8px), transparent);/* 自动计算的水平偏移 */--_d: (var(--s) + var(--r)) * cos(var(--a));width: 300px;height: 100px;background-color: antiquewhite;border-radius: 150px;mask:calc(50% + var(--_d)) var(--_m), calc(50% - var(--_d)) var(--_m),radial-gradient(var(--s) at 50% calc(-1*sin(var(--a))*var(--s)),transparent 100%, #000 calc(100% + 0.8px)) 0 calc(var(--r)*(1 - sin(var(--a)))),linear-gradient(90deg, #000 calc(50% - var(--_d)), transparent 0 calc(50% + var(--_d)), #000 0);mask-repeat: no-repeat;
}

🧠 整体思路

这段代码的核心思想是:

使用多个 mask 图层组合,通过 radial-gradient 和 linear-gradient 的叠加,形成一个“中间凹进去、边缘过渡柔和”的视觉效果。

它利用了 CSS 中的变量(--r, --s, --a)、三角函数和 mask 属性,实现了动态可配置的内凹圆角效果。


📏 变量解析(CSS Custom Properties)

--r: 6px;        /* 凹陷区域的半径(控制凹陷大小) */
--s: 69px;       /* 圆弧的半径(控制凹陷的位置) */
--a: 44deg;      /* 角度(用于三角函数计算) */

这些变量可以方便地调整最终的视觉效果。


🧮 计算变量(关键逻辑)

--_m:定义一个遮罩图层(更柔和的边缘过渡)

--_m: 0 / calc(2*var(--r)) var(--r) no-repeatradial-gradient(50% 100% at bottom, #000 calc(100% - 0.8px), transparent);
  • 创建一个宽度为 2 * --r,高度为 --r 的径向渐变。
  • 渐变从底部开始,颜色从不透明到透明,形成一个边缘模糊的遮罩条带
  • 这个条带会在最终 mask 中作为“边缘柔化”层使用。

--_d:水平偏移距离(基于三角函数自动计算)

--_d: (var(--s) + var(--r)) * cos(var(--a));
  • 使用余弦函数计算出一个水平方向上的偏移值。
  • 这个偏移值决定了凹陷区域在水平方向上的位置。
  • 结合下面的 mask 设置,使凹陷区域对称分布在中心两侧。

🎭 Mask 图层详解(这是整个效果的关键)

mask:calc(50% + var(--_d)) var(--_m),calc(50% - var(--_d)) var(--_m),radial-gradient(var(--s) at 50% calc(-1*sin(var(--a))*var(--s)),transparent 100%, #000 calc(100% + 0.8px)) 0 calc(var(--r)*(1 - sin(var(--a)))),linear-gradient(90deg, #000 calc(50% - var(--_d)), transparent 0 calc(50% + var(--_d)), #000 0);

我们来逐行拆解这四个 mask 图层:


🔹 第一层 & 第二层(边缘柔化层)

calc(50% + var(--_d)) var(--_m),
calc(50% - var(--_d)) var(--_m)
  • 这两个图层使用的是之前定义好的 --_m 遮罩条带。
  • 分别放置在中心左右各偏移 --_d 的位置。
  • 作用是柔和边缘,避免生硬的裁剪边界。

🔸 第三层(核心凹陷层)

radial-gradient(var(--s) at 50% calc(-1*sin(var(--a))*var(--s)),transparent 100%, #000 calc(100% + 0.8px))0 calc(var(--r)*(1 - sin(var(--a))));
  • 创建一个以中心为圆心、向上偏移一定距离的径向渐变。
  • 半径为 --s,位于垂直方向上偏移 sin(a) * s
  • 渐变从透明到黑色,超出部分变为不透明。
  • 最后定位在 0 calc(...),即垂直方向向下偏移一点,让凹陷区域更贴合整体形状。

✅ 这一层是形成“内凹”视觉的核心图层


🔷 第四层(背景遮罩层)

linear-gradient(90deg, #000 calc(50% - var(--_d)), transparent 0 calc(50% + var(--_d)), #000 0)
  • 水平方向的线性渐变:

    • 左侧和右侧为黑色(显示区域)
    • 中间一段为透明(隐藏区域)
  • 作用是遮住中间的凹陷区域,只保留两边的内容。


🧪 最终效果总结

图层作用
第一、二层边缘柔化处理(避免锯齿感)
第三层核心凹陷区域(模拟“内凹”形状)
第四层背景遮罩(只显示两边,中间隐藏)

结合起来就形成了一个中间凹陷、边缘柔和、对称分布的视觉效果,非常适合用在按钮、卡片等需要轻微凹陷质感的 UI 元素中。


🖼️ 示例效果预览(文字描述)

想象一个椭圆形的盒子(border-radius: 150px),原本是完整的圆形。但在它的正中央,有一个向上弯曲的凹陷区域,就像轻轻按下按钮时那种感觉,边缘还有轻微的阴影过渡。

这种效果常见于 macOS 的菜单栏按钮、iOS 控件等现代 UI 设计中。


🛠️ 如何调整?

你可以通过修改以下变量来实时调整视觉效果:

变量默认值调整建议影响
--r6px增大 → 凹陷更大凹陷区域大小
--s69px增大 → 凹陷更深凹陷位置与深度
--a44deg增大 → 凹陷更靠上凹陷角度与位置
background-colorantiquewhite更浅/深色整体对比度和质感
http://www.dtcms.com/wzjs/490796.html

相关文章:

  • 企业门户网站开发测试淘宝关键词排名查询
  • 郑州狼牙网页设计公司网站推广优化外包公司
  • 档案网站建设网页互联网营销培训课程
  • 江门网站建设推广策划长尾关键词排名推广
  • 怎么做网站分站推广赚佣金
  • 给我一个用c 做的网站网上卖货的平台有哪些
  • wordpress页面居中优化教程网站推广排名
  • 个人网站做多久有效果专业竞价托管
  • 网站开发分类企业管理8大系统
  • 菏泽网站建设便宜臻动传媒在线外链工具
  • 做网站编写代码事件营销案例
  • 赤峰网站开发公司查域名备案信息查询
  • 注册公司多少钱收费网站优化排名哪家性价比高
  • seo网站编辑关键词排名优化软件
  • 做软件的公司网站有哪些外贸谷歌优化
  • 推荐微信网站建设百度网络推广怎么做
  • 青岛制作企业网站的公司关键词可以分为哪三类
  • 做线上兼职哪个网站比较靠谱怎么做互联网营销推广
  • 网站设计制造扫描图片找原图
  • 网站开发客户阿里云案例近期时政热点新闻20条
  • 山东3个中高风险地区长沙靠谱seo优化价格
  • 上海做网站找谁泰州seo外包
  • 一个服务器能放多少网站山东服务好的seo公司
  • 网站建设支付抖音关键词排名
  • 网站上的动态图怎么做的交换友情链接的目的
  • 三亚市建设局网站公示个人在线网站推广
  • 帮企业做网站的公司最新做做网站
  • 电商网站做导购近期热点新闻事件
  • 长丰住房和建设局网站网络优化师
  • 衡水有做网站的吗百度域名查询