花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 144|回复: 47

用clip-path: polygon() 画心形

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2023-6-20 22:42 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    评分

    参与人数 5威望 +190 金钱 +380 经验 +190 收起 理由
    南无月 + 30 + 60 + 30 赞一个!
    樵歌 + 50 + 100 + 50 赞一个!
    醉美水芙蓉 + 30 + 60 + 30 赞一个!
    红影 + 50 + 100 + 50 赞一个!
    梦缘 + 30 + 60 + 30 赞一个!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-20 22:42 | 显示全部楼层
    本帖最后由 马黑黑 于 2023-6-20 22:44 编辑

    一楼代码
    1. <style>
    2. #mydiv {
    3.         width: 300px;
    4.         height: 300px;
    5.         border: 1px solid gray;
    6.         position: relative;
    7.         margin: 30px auto;
    8.         --clip: '';
    9. }
    10. #mydiv::before {
    11.         position: absolute;
    12.         content: '';
    13.         width: 100%;
    14.         height: 100%;
    15.         background: pink;
    16.         clip-path: var(--clip);
    17. }
    18. #msgBox { display: none; }
    19. </style>

    20. <div id="mydiv"></div>
    21. <p><button id="showCode" value="1">查看代码</button>
    22. <div id="msgBox"></div>

    23. <script>

    24. let ww = parseInt(window.getComputedStyle(mydiv).getPropertyValue('width'));

    25. let mkPercent = (num1, num2) => (num2 / num1 * 100).toFixed(2) + '%';

    26. let toRect = (r,theta) => {
    27.         let x = r * Math.cos(theta) + ww / 2,
    28.                 y = r * Math.sin(theta) + ww / 4;
    29.         return (mkPercent(ww,x) + ' ' + mkPercent(ww,y));
    30. }

    31. let clipBox = (max,points) => {
    32.         let arr = [];
    33.         for(let i = 0; i < points; i ++) {
    34.                 let a = 360 / points * i;
    35.                 let r = max * (1 + Math.sin(a));
    36.                 arr.push(toRect(r,a));
    37.         }
    38.         return `polygon(${arr.join(', ')})`;
    39. }

    40. showCode.onclick = () => msgBox.style.display = 'block';

    41. mydiv.style.setProperty('--clip',clipBox(ww / 3,3600));
    42. msgBox.innerText = window.getComputedStyle(mydiv).getPropertyValue('--clip');

    43. </script>
    复制代码


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-20 22:42 | 显示全部楼层
    本帖最后由 马黑黑 于 2023-6-20 23:16 编辑

    心形曲线函数,用极坐标表示,可以是:

    r=a(1+sinθ)

    其中,r 在数学中通常表达为 ρ,指极径,即从原点 O 到任意一点 M 的线段长度;θ 指 OM 与 从原点往右的水平射线 OA 形成的角度,即 ∠MOA 的度数;a 是心形曲线与X轴交点到原点的距离。

    心形曲线公式还可以是:

    r=a(1-sinθ)
    r=a(1+cosθ)
    r=a(1-cosθ)

    有了公式,我们还需要将极坐标转换为直角坐标系的xy坐标,其转换公式为:

    x = r * cosθ
    y = r * sinθ

    本例使用的心形线函数是 r=a(1+sinθ) ,针对其特征,设 a 取正方形宽高 ww 的 ww/3,则 换算成xy坐标时,X坐标需要加上正方形元素宽高尺寸的 1/2,Y坐标加 1/4,这样生成的裁剪内区域才出现在较为中央处,使用其他公式需要另外调整加减数值。

    以上是我个人对原始心形函数的理解,也许理解的不准确,有兴趣的朋友可以查阅相关高等数学知识。

    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-20 22:42 | 显示全部楼层
    本帖最后由 马黑黑 于 2023-6-20 23:19 编辑

    本例的心形形状,仅是心形中的一种,不收腰、底部没有尖点。它是经典的,所以先做这个。若有时间与兴趣,将来可能还会做其他形状的心形
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-11-15 14:24
  • 签到天数: 331 天

    [LV.8]以坛为家I

    64

    主题

    2546

    回帖

    8742

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生蝴蝶情怀心香一瓣金剪刀音画大师

    发表于 2023-6-20 22:48 | 显示全部楼层
    问好老师,欣赏精彩分享,点赞!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2023-6-20 23:01 | 显示全部楼层
    点开看到路径取了好多的点啊,那么长的。看到黑黑占楼了,等着看解说
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-20 23:12 | 显示全部楼层
    红影 发表于 2023-6-20 23:01
    点开看到路径取了好多的点啊,那么长的。看到黑黑占楼了,等着看解说

    3600个点,这样画出的心形边缘才比较平滑。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-20 23:19 | 显示全部楼层
    梦缘 发表于 2023-6-20 22:48
    问好老师,欣赏精彩分享,点赞!

    回复 支持 反对

    使用道具 举报

    醉美水芙蓉 该用户已被删除
    发表于 2023-6-20 23:28 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-20 23:42 | 显示全部楼层
    醉美水芙蓉 发表于 2023-6-20 23:28
    刚开始我以为是苹果&#127822;呢!

    苹果就是模仿心形长成那样纸的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-15 07:09
  • 签到天数: 647 天

    [LV.9]以坛为家II

    1375

    主题

    7万

    回帖

    13万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥多彩人生海样胸怀春风拂面青草情怀心曲飞扬七彩绚丽活泼开朗男儿情怀鹰傲苍穹共看流星风雨同行我心永远天长地久幸福快乐春意盎然喜乐安康心想事成周年庆指尖上的流年舞会之星情人节花潮管理

    发表于 2023-6-21 07:13 | 显示全部楼层
    好大一个红苹果
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-21 07:35 | 显示全部楼层
    樵歌 发表于 2023-6-21 07:13
    好大一个红苹果

    嗯。

    苹果为了诱惑人,将自己化身为心形。

    ——自《伊甸园》外传
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-21 12:17 | 显示全部楼层
    心形线的定义之一:

    心形线,简单来说就是有两个半径相同的圆,在一个动圆上固定点p(p的坐标有要求),然后这个动圆绕着另外一个定圆"外"侧转一周,p点形成的轨迹就是心形线。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2023-6-21 19:16 | 显示全部楼层
    马黑黑 发表于 2023-6-20 23:12
    3600个点,这样画出的心形边缘才比较平滑。

    嗯,以折代曲。这么密集的划分,看上去就像曲线一样呢。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-21 21:55 | 显示全部楼层
    红影 发表于 2023-6-21 19:16
    嗯,以折代曲。这么密集的划分,看上去就像曲线一样呢。

    心形曲线相对变化大,需要那么多的坐标点,所以,css-doodle没有给出 @shape 心形
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-21 22:06 | 显示全部楼层
    桃子好像也是这个样纸
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2023-6-22 13:17 | 显示全部楼层
    裁三叶草的那个改成0.5也出现一个差不多的,不过方向不对
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-22 15:06 | 显示全部楼层
    南无月 发表于 2023-6-22 13:17
    裁三叶草的那个改成0.5也出现一个差不多的,不过方向不对

    方向对很容易的:transform: rotate(-90deg)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2023-6-22 17:30 | 显示全部楼层
    马黑黑 发表于 2023-6-22 15:06
    方向对很容易的:transform: rotate(-90deg)

    好哒,我记得蝴蝶的时候教过。。应该举一反三的。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-6-22 17:43 | 显示全部楼层
    南无月 发表于 2023-6-22 17:30
    好哒,我记得蝴蝶的时候教过。。应该举一反三的。。

    对的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-16 02:04 , Processed in 0.105747 second(s), 30 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表