花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 63|回复: 12

css-doodle入门(六)

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

    发表于 2023-4-23 07:32 | 显示全部楼层 |阅读模式

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

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

    x
    @repeat() 和 @multiple() 函数

    这两个函数都是用来多次组合指定的值。两个函数所需要的两个参数一样:

    @repeat(5, 'a'); /* 运行结果 aaaaa */
    @multiple(5,'a'); /* 运行结果 a,a,a,a,a */

    上面的两个语句,都表示同一个意思:将字母 a 重复 5 次。不同的是重复后的结果,repeat() 函数得到的 5 个 a 连在一起写,@multiple() 得到的 5 个 a 彼此间用逗号隔开(末尾没有逗号)。

    以下代码可以到页面 http://mahei.freeee.ml/api/pencilcode/pencilcode-ddl.html 中运行,从中感受两个函数的工作机制和效果:

    <css-doodle>
            :doodle {
                    @grid: 1x2 / 400px 200px;
                    gap: 1px;
            }
            @row(1) {
                    background: silver;
                    :before { content: @repeat(5, @pick([a-zA-Z]));        }
            }
            @row(2) {
                    background: gray;
                    :before { content: @multiple(5,'a'); }
            }
    </css-doodle>

    代码中,第一、二行网格背景色分别为银白色(silver)和灰色(gray),它们通过伪元素 :before 的 content 属性将函数 @repeat() 和 @multiple() 的执行结果呈现出来。

    这两个重复组合给定值的函数有什么作用呢?让我们来举例说明。

    其一:生成十六进制随机颜色

    比方说,我们要随机生成十六进制颜色值,@repeat() 函数就能派上用场。十六进制颜色用符号 # 做前缀,随后由 6 个 0-9 的数字和 a-f 的字母组合而成,我们结合 @pick() 函数,就能随机组合数字和字母,从而达到生成随机十六进制颜色的目的。

    @pick() 函数随机在备选数组值中挑选一个元素成员,我们先试着让它挑出一个字母:

    @pick([a-zA-Z]);

    每一次运行,将得出大小写字母表中的任意一个。实际上,我们只需要 a-f 就可以了,所以上式可以写成:

    @pick([a-f]); 或 @pick([A-F]);  

    我们还需要挑出 0-9 的数字,所以把数字也加入到备选成员中:

    @pick([0-9a-f]); 或 @pick([0-9A-F]);

    现在你可能会很迷惑:[0-9a-f] 是什么鬼?嗯,这是正则表达式,表示备选的成员分为, 0-9 表示在 0 和 9 之间、a-f 表示在 a 和 f 之间这样的范围,包含头尾即 0 和 9 、a 和 f。

    不过这样选择每一次只能得到一个字母或数字,所以,@repeat() 函数就该上场了:

    @repeat(6, @pick([0-9a-f]));

    @repeat函数运行六次,每一次都在 [0-9a-f] 内随机挑选一个数字或字母,这样,得到的结果会是这样:

            d6c2a3

    我们在其前面加上前缀 # 号,是不是就是我们所预期的十六进制颜色?

    下面的代码,给 8x8 的网格每一个单元格用十六进制设定不同的背景色:

    <css-doodle>
            :doodle {
                    @grid: 8 / 400px;
                    gap: 1px;
            }
            --bgcolor: #@repeat(6, @pick([0-9A-F]));
            background: var(--bgcolor);
    </css-doodle>

    其二:生成 rgb 随即颜色

    rgb() 颜色是当代浏览器默认支持的颜色表达方案,r 代表红色 red,g 代表绿色 green,b 代表蓝色 blue,三种颜色以百分比参与到颜色组合中混合出最终颜色。rgb() 需要 3 个参数,参数间用逗号隔开,css-doodle 的函数 @multiple() 正好能生成带逗号分隔的重复组合结果:

    @multiple(3, @r(100)%)

    上式,会生成 3 个百分比数字(浮点数百分比),两个数之间用逗号分割:18.6944321%, 20.0004554%, 89.5578944%。如此,我们用 rgb() 表示法封装一下上式,就可以得到我们所需的 rgb 随机颜色:

            --bgcolor: rgb(
                    @multiple(3, @r(100)%)
            );

    上面的代码,可以写在一行里:--bgcolor: rgb(        @multiple(3, @r(100)%));

    最后给出一个使用 rgb() 随机颜色设定单元格背景色的 css-doodle 示例:

    <css-doodle click-to-update>
            :doodle { @grid: 8 / 600px; gap: 1px; }
            --bgcolor: rgb(@multiple(3, @r(100)%));
            background: var(--bgcolor);
    </css-doodle>

    评分

    参与人数 2威望 +65 金钱 +130 经验 +65 收起 理由
    烟雨客 + 15 + 30 + 15 赞一个!
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2023-4-23 09:03 | 显示全部楼层
    rgb()这个一下子没反应过来,习惯了是从0到255的,原来也可以百分比表示啊。把100%理解成了是0-1
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2023-4-23 09:11 | 显示全部楼层
    红影 发表于 2023-4-23 09:03
    rgb()这个一下子没反应过来,习惯了是从0到255的,原来也可以百分比表示啊。把100%理解成了是0-1

    你用传统表达法也是可以的:

    --bgcolor: rgb(@multiple(3, @r(255)));
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2023-4-23 09:38 | 显示全部楼层
    马黑黑 发表于 2023-4-23 09:11
    你用传统表达法也是可以的:

    --bgcolor: rgb(@multiple(3, @r(255)));

    嗯嗯,这样就明白了。谢谢黑黑

    关于@rand其实也没学透,它是随机返回两个数字之间的一个值。如果只有一个数,就还是指0到这个数吧。那么是否包含端头的数值,也就是@r(255)包含255本身么?
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2023-4-23 09:47 | 显示全部楼层
    本帖最后由 马黑黑 于 2023-4-23 09:49 编辑
    红影 发表于 2023-4-23 09:38
    嗯嗯,这样就明白了。谢谢黑黑

    关于@rand其实也没学透,它是随机返回两个数字之间的一个值。 ...

    这个,@rand(),只有一个参数的情形,我在教程里解释过的;两个参数的头尾问题,包含,极低概率。
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2023-4-23 10:49 | 显示全部楼层
    马黑黑 发表于 2023-4-23 09:47
    这个,@rand(),只有一个参数的情形,我在教程里解释过的;两个参数的头尾问题,包含,极低概率。

    去翻了一下,入门(五)里面讲过的,所以说我没学好
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2023-4-23 11:03 | 显示全部楼层
    红影 发表于 2023-4-23 10:49
    去翻了一下,入门(五)里面讲过的,所以说我没学好

    心浮气躁,急于求成,是很多人都有的特点
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2023-4-23 12:56 | 显示全部楼层
    马黑黑 发表于 2023-4-23 11:03
    心浮气躁,急于求成,是很多人都有的特点

    这个倒也不是,只是内容多啊,看一遍怎么可能全都记得住。只能在后面每次遇到再进一步熟悉的啊
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2023-4-23 12:58 | 显示全部楼层
    红影 发表于 2023-4-23 12:56
    这个倒也不是,只是内容多啊,看一遍怎么可能全都记得住。只能在后面每次遇到再进一步熟悉的啊

    客观来讲,这里介绍的内容被严格控制了,量并不大
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2023-4-23 13:57 | 显示全部楼层
    马黑黑 发表于 2023-4-23 12:58
    客观来讲,这里介绍的内容被严格控制了,量并不大

    每一节量不大,但总的还是不少啊,一次性记住怎么可能
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2023-4-23 22:35 | 显示全部楼层
    红影 发表于 2023-4-23 13:57
    每一节量不大,但总的还是不少啊,一次性记住怎么可能

    还是很好记的
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2023-4-24 19:56 | 显示全部楼层

    熟悉的人肯定好记,不熟的光还是去理解就要半天
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2023-4-24 22:30 | 显示全部楼层
    红影 发表于 2023-4-24 19:56
    熟悉的人肯定好记,不熟的光还是去理解就要半天

    css-doodle需要理解的似乎不多,主要还是记住它既定约成的东东
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-12-15 06:22 , Processed in 0.082071 second(s), 26 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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