根据 Shopify 中的值更改 css 的更好方法?

Better way of changing css based on value in Shopify?

我正在为我在 Shopify 中的产品创建色样选择。 样本仅在变体名称等于 'Colour' 时显示。 这很好并且可以正常工作。

我只是想知道是否有更好的方法来指定样本颜色,而不是手动为每个颜色名称输入十六进制代码。

目前我的产品-template.liquid 文件中有以下代码。

 <label for="ProductSelect-option-{{ option.name }}-{{ value | escape }}" id="swatch-{{ value }}"{% unless variant_label_state %} class="disabled"{% endunless %}/>

因此,如果颜色值设置为红色,则 id 的输出将为色板-红色。现在我的问题是,在 CSS 中,我目前想到的唯一方法是手动输入:

#swatch-Red { background-color: red; } 

但我必须为很多颜色做这个。谁能想到一种更有效的方法来做到这一点? 另一件要记住的事情是我有称为 'Gunmetal' 和 'Pewter' 的颜色。这些是深灰色和浅灰色,显然这些颜色在 CSS.

中无法识别

如有任何建议,我们将不胜感激!

这里有几个选项。

1) 许多高级主题使用的不好的

使用与变体名称相同的颜色图像。因此,例如红色,您的资产文件夹中将有一个名为 red.jpg 的图像。

我不太喜欢这个解决方案,因为您需要客户端为每种颜色上传一张图片,并且您用大量图片填充了您的资产文件夹。

优点:

  • 您可以添加多种颜色

缺点:

  • 您需要管理员进入代码编辑器才能上传图片
  • 您必须为每种颜色创建一个图像
  • 你的资产文件夹里堆满了图片
  • 管理员必须以特定方式调用图像

2) 不是很好的解决方案,但比 1)

创建一个导航,您可以在其中将颜色名称设置为 link 标题并将十六进制值设置为 link url。

这样用一点液体就可以设置色板的颜色。

优点:

  • 您可以添加多种颜色
  • 您保持资产文件夹干净
  • 您不会为每种颜色创建新图像
  • 管理员不需要修改主题编辑器

缺点:

  • 您要求管理员手动输入十六进制值

3) 最佳方法

用块创建一个部分。

每个块都有一个 color 字段和 text 字段。文本字段将作为颜色名称的占位符。

因此,当您循环变体时,您会获取颜色字段值并将其应用于样本。

优点:

  • 创建额外颜色的漂亮而动态的方式
  • 选择特定颜色的好方法
  • 您没有创建新图像
  • 您不会弄乱您的资产文件夹
  • 您不需要管理员进入编辑器

缺点:

  • 当颜色太多时,很难找到正确的颜色