花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 19|回复: 3

offset-path ray 函数演示(一)

[复制链接]
  • TA的每日心情
    奋斗
    2026-7-30 18:10
  • 签到天数: 1885 天

    [LV.Master]伴坛终老

    3291

    主题

    13万

    回帖

    29万

    积分

    管理员

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

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

    发表于 2026-7-30 18:11 | 显示全部楼层 |阅读模式

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

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

    x

    CSS 属性 offset-path 可以通过 ray() 函数创建由里往外发射的射线路径。射线路径的发起点默认在包含块即容器的中心(50% 50%);射线方向由射线角度决定,0deg 为正上方向;射线终止点在包含块内部、边界或以外。ray() 函数可支持多个参数:angle(射线角度)、size(射线尺寸)、contain(约束在包含块内)、at(射线发起位置)。这些参数,角度必须,其余可选。本演示仅使用 ray() 函数的角度参数,辅以 offset-distance 属性帮助查看射线路径信息:

    <style>
        @import 'https://638183.freep.cn/638183/web/css/hl.css';
        .pa {
            margin: 20px auto;
            width: 200px;
        }
        .pa:nth-of-type(1) {
            height: 200px;
            border: 1px solid gray;
            margin-top: 100px;
        }
        .pa:nth-of-type(2) {
            width: 400px;
            border-width: 0;
        }
        .son {
            width: 60px;
            height: 40px;
            background: purple;
            clip-path: polygon(50% 60%,0 60%,0 40%,50% 40%,50% 0,100% 50%, 50% 100%);
            offset-path: ray(0deg);
            transition: offset-distance .7s;
        }
    </style>
    
    <div class="pa">
        <div id="son" class="son"></div>
    </div>
    <div class="pa">
        <p class="hlCode">offset-path: <output id="outputCode">ray(0deg);</output></p>
        <p>
            <label for="rangeAngle">射线角度 :</label>
            <input id="rangeAngle" type="range" max="360" min="-360" step="5" />
            <output id="outputAngle">0deg</output>
        </p>
        <p>
            <label for="rangeDistance">元素在路径上的偏移位置 :</label>
            <input id="rangeDistance" type="range" max="100" min="0" value="0" />
            <output id="outputDistance">0%</output>
        </p>
    </div>
    
    <script>
        rangeAngle.oninput = () => {
            outputAngle.value = rangeAngle.value + 'deg';
            outputCode.value = `ray(${rangeAngle.value}deg);`
            son.style.offsetPath = `ray(${rangeAngle.value}deg)`;
        }
        
        rangeDistance.oninput = () => outputDistance.value = rangeDistance.value + '%';
        
        rangeDistance.onchange = () => son.style.offsetDistance = rangeDistance.value + '%';
    </script>
        

    核心要点:CSS 函数 ray() 为 offset-path 属性创建的射线路径,最简单时只需要一个参数,角度参数,具体代码参见 21 行,在预览页面也会动态提供代码。ray() 函数仅设置角度参数时,其余参数为缺省默认,此时,正上、正右、正下和正左四个方向的射线路径的终点正好处在容器边界之上。演示中应该会看到运动元素(子元素)越界,那是因为运动元素的偏移锚点(由 offset-anchor 属性设置)默认设在元素的中心点,而偏移锚点是元素在 offset-distance(元素在路径上的偏移距离)为 100% 时的抛锚点;若不希望子元素整体突破容器边界,可设 offset-anchor: 100% 50%;offset-anchor: right center;,即将偏移锚点设在元素X轴的右侧、Y轴的中心。

    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 匠心独运,细节精致入微!

    查看全部评分

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

    [LV.10]以坛为家III

    1898

    主题

    33万

    回帖

    40万

    积分

    管理员

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

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

    发表于 2026-7-30 20:14 | 显示全部楼层
    在图形里理解这些参数的设置真好,可以在图中看得很清晰。
    感谢黑黑的教学帖子
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-7-30 18:10
  • 签到天数: 1885 天

    [LV.Master]伴坛终老

    3291

    主题

    13万

    回帖

    29万

    积分

    管理员

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

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

     楼主| 发表于 2026-7-30 21:24 | 显示全部楼层
    红影 发表于 2026-7-30 20:14
    在图形里理解这些参数的设置真好,可以在图中看得很清晰。
    感谢黑黑的教学帖子

    先讲基础参数,往后参数一多,就会难一些
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1898

    主题

    33万

    回帖

    40万

    积分

    管理员

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

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

    发表于 2026-7-30 22:25 | 显示全部楼层
    马黑黑 发表于 2026-7-30 21:24
    先讲基础参数,往后参数一多,就会难一些

    嗯嗯,参数越多越难
     
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-7-30 22:25 , Processed in 0.072769 second(s), 26 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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