G2-CDN

文档

苹果风 G2 连续曲率圆角,一行标签接入。

一、接入

在页面里引一个 JS 文件,然后直接写 <g2-corner> 标签。零依赖,Shadow DOM 隔离样式,不跟你现有 CSS 打架。

CDN 引入

<script src="https://g2.goose.cc.cd/g2-cdn.js"></script>

写标签

<g2-corner n="5" fill="#ffffff" stroke="#007aff" stroke-width="2" padding="16">
  这里放任意内容
</g2-corner>

组件内部用 SVG 超椭圆渲染 G2 连续曲率轮廓,内容自动被 clip-path 裁成同一条曲线——图片、文字、HTML,塞什么裁什么。

二、属性速查

全部属性都是可选的,不写就走默认值。

属性类型默认值说明
n数字5方度。2=椭圆,越大越方。推荐 4~8。
width数字自适应宽度(px)。不设则撑满父容器。
height数字自适应高度(px)。不设则撑满父容器。
fill颜色transparent填充色。支持任意 CSS 颜色值。
gradient字符串渐变填充。格式:"角度,#色1,#色2,..."。例:"135,#ff9500,#ff375f"。设了则覆盖 fill。
stroke颜色描边颜色。
stroke-width数字0描边宽度(px)。
padding数字0内边距(px)。内容距离形状边缘的距离。
blur数字0毛玻璃模糊量(px)。0=关。需背后有内容才显形。
glass-color颜色rgba(255,255,255,0.15)毛玻璃层底色。仅在 blur>0 时生效。
注意:blur 毛玻璃需要背后有可见内容才能看到模糊效果。如果 fill 设了不透明色,毛玻璃会被挡住。想让毛玻璃明显,建议 fill 设 transparent 或半透明色,并在组件背后放内容(如图片、渐变背景)。

三、典型场景

头像底

<g2-corner width="90" height="90" n="4" fill="#007aff"></g2-corner>

按钮

<g2-corner width="140" height="48" n="6" fill="#ff9500" padding="0">
  <div style="color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;height:100%">
    按钮
  </div>
</g2-corner>

卡片容器

<g2-corner n="5" fill="#ffffff" stroke="#e2e2e6" stroke-width="1" padding="20">
  <h3>卡片标题</h3>
  <p>卡片正文。任意 HTML 都行。</p>
</g2-corner>

图片卡片(图片被裁成 G2 形状)

<g2-corner width="300" height="200" n="5" padding="0" fill="#ffffff" stroke="#007aff" stroke-width="2">
  <img src="你的图片.jpg" style="width:100%;height:100%;object-fit:cover;display:block" alt="">
</g2-corner>

padding=0 让图片铺满形状边缘。想要留白边就加 padding,图片会自动缩进。

渐变填充

<g2-corner width="200" height="120" n="5" gradient="135,#ff9500,#ff375f" padding="16">
  <div style="color:#fff;font-weight:700">渐变卡片</div>
</g2-corner>

毛玻璃卡(blur)

<div style="background:linear-gradient(135deg,#ff9500,#ff375f);padding:26px;border-radius:10px">
  <g2-corner width="230" height="130" n="5" blur="12" padding="16">
    <div style="color:#fff;font-weight:700">毛玻璃卡</div>
  </g2-corner>
</div>

关键:blur 组件外面必须包一层有内容的容器(如渐变背景),毛玻璃才能糊出效果。fill 默认 transparent 即可。

套任意 HTML(图表 / iframe / 地图)

<g2-corner width="400" height="300" n="5" fill="#ffffff" stroke="#e2e2e6" stroke-width="1" padding="0">
  <iframe src="https://example.com/map" style="width:100%;height:100%;border:none"></iframe>
</g2-corner>

任何块级内容塞进 slot,都会被裁成 G2 形状。ECharts 图表、地图 iframe、视频封面,通吃。

四、原理

组件内部用 SVG 超椭圆(Lamé 曲线)渲染轮廓:

|x / a|^n + |y / b|^n = 1

n=2 是椭圆,n 越大越接近矩形。和 CSS border-radius 的区别:

五、浏览器兼容

综合推荐:Chrome 88+ / Safari 14+ / Firefox 103+。IE 全系不支持。

六、部署为 CDN

组件是单文件 g2-cdn.js,零依赖。丢到任意静态托管即可。

当前官方 CDN:https://g2.goose.cc.cd/g2-cdn.js(Cloudflare Pages + 自定义域)。

你也可以自己托管: