【问题标题】:Rotate color hue when iterating through a loop using Stylus使用 Stylus 遍历循环时旋转色调
【发布时间】:2023-03-26 22:04:02
【问题描述】:

如何在循环中旋转每个项目的色调?

如果我有:

items = {
   item1: 'item1',
   item2: 'item2',
   item3: 'item3'
}

对于此列表中的每个项目,我想将其色调更改 30%。

类似这样的:

for name, item in items
  .{name}
     color: hue(green, 30%)

【问题讨论】:

    标签: css loops stylus


    【解决方案1】:

    如果您的目标是仅使用 CSS,无 javascript 解决方案,我建议您使用 LessHat 或类似框架(有关 LessHat 色调旋转的详细信息可以在这里找到:https://github.com/madebysource/lesshat/blob/master/mixins/hue-rotate/hue-rotate.md)。您可以静态生成旋转项目列表,但它仅适用于给定(和恒定)的项目列表。

    您可以尝试使用 Stylus:

    items = {
       'item1': {
        'color': red
        'index': '1'
       }
       'item2': {
        'color': green
        'index': '2'
       }
       'item3': {  
        'color': blue
        'index': '3'
       }
    }
    
    for key, value in items
      .{key}
        color: hue(value[color], 30% * value[index])
    

    如果你想动态改变给定元素的色调,你必须使用 Javascript - 我建议使用 JQuery 颜色库(在这里找到:https://github.com/jquery/jquery-color/)。

    重要提示:下面的例子是使用角度变化(色调被描述为0到360之间的角度,如果用百分比来描述,红色不会受到影响,因为它的值是0度)。

    可以在此处找到示例: http://jsfiddle.net/5r5w4x7g/4/

    var changeHue = function(angle) {
        // Check if angle is between 0 and 360   
        if (angle) {
            if(angle>= 0 && angle<= 360) {
                classes.forEach(function(cls) {  
                    // Get element with class
                    var element = $('.'+cls);
                    if(element.length) {                    
                        // Get current color and build JQuery Color object
                        var currentColorStr = element.css('background-color');
                        var color = $.Color(currentColorStr);
                        var hue = color.hue();                    
                        // Change hue by percentage and round it
                        hue = +hue + (+angle);
                        color = color.hue(hue);                    
                        // Set new color
                        element.css('background-color', color);
                    }
                });
            }
        }
    }
    

    【讨论】:

    • 我更喜欢使用 Stylus 使用 {name} 作为类,然后使用 hue() 函数调整色调。我在想像.{name} { color: hue( green, (30% * name[i]) ) } 这样的东西,我没有使用更少,也没有计划使用它,我已经看到使用 Sass 完成了这一点,我相信使用 Stylus 是可能的。
    • 准备了一个以哈希和颜色作为变量的新版本 - 如果您喜欢它,请查看并投票;)我将剩下的答案留给其他有类似问题的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    相关资源
    最近更新 更多