【问题标题】:CSS background color with many (above 20) steps带有许多(超过 20 个)步骤的 CSS 背景颜色
【发布时间】:2013-02-08 13:54:38
【问题描述】:

我需要我的对象根据某个值具有不同的背景颜色。特别是,它是一个百分比条,理论上有 100 种不同的背景颜色(当它为空时忽略不存在的颜色)。自然,条的宽度从 1% 到 100% 不等。我想知道,我怎样才能自动制作所有不同的色调?

我的基本想法是:如果我有一个 100 像素宽的图像,每个像素都有不同的颜色,我会尝试将背景宽度限制为 1 个像素,使用正确的偏移量,然后重复它。这样,它就是一个 CSS 属性,即偏移量,需要通过 JavaScript 进行更改,并且不需要在 100 个不同的类之间切换。遗憾的是,背景大小、背景位置和背景重复不是这样工作的。所以我的问题是:我有什么可能让它变得简单并且依赖于不超过 3 个线性依赖于百分比的数字 CSS 属性?

提前致谢。

编辑:我有一个想法,我尝试过,它有效。

我在 Photoshop 中创建了一个正好 100 像素高和 1 像素宽的图像。每个像素代表其百分比的颜色。因此,像素 0 表示 1%,像素 99 表示 100%。然后,我将该图像垂直拉伸至少进度条的高度。如果它是 20px 高,我将图像至少拉伸 20 倍。拉伸需要使用最近邻算法来完成,以防止在不应该有梯度的地方出现梯度;每个像素只需要垂直拉伸 20 倍,因此每 20 个像素就会出现锐利的边缘。

我将生成的图像用作仅水平重复的背景图像。使用图像位置,我设置了 background-position: 0 -[(percentage-1)*20]px 和 width: [percentage]%。 (方括号中的部分是使用 PHP 或 JavaScript 或其他方式计算的)。差不多就是这样。每当百分比变化时,我只需要更改这两个值,背景就会自动适应,而不管其颜色如何。

【问题讨论】:

  • 是你想要的 Bootstrap 的进度条吗? twitter.github.com/bootstrap/components.html#progress
  • 啊,是的,谢谢!除了略多于 4 个不同的版本。如果只有四个,那将是一个很好的方法。虽然也许我可以用 PHP 自动生成所有 100 个元素……不管怎样,我会考虑的,非常感谢!
  • 是的,您可以在 css 中添加任意数量的颜色 - 只需复制 Bootstrap 实现它们的方式 - 我认为它们在每种颜色上都有轻微的渐变,但您显然不必使用那个。
  • 啊,我现在看到它依赖于类,而不是依赖于宽度,恐怕这正是我试图避免的事情;当百分比改变时,它不会自动改变颜色。
  • 您可以在 css3 中使用背景图像渐变并在每个色标处指定不同的颜色,然后使用相同的 css 重复背景并确定大小,而不是在 Photoshop 中创建图像class="comcopy">跨度>

标签: css background switch-statement gradient percentage


【解决方案1】:

您的颜色需要有多大不同?理论上,您可以根据不透明度或背景色指定的 alpha 值拥有 100 种不同的颜色。然后,您可以使用 html5 数据属性更改 alpha 以匹配条形的百分比。说你做了这样的事情:

<div class="progress" data-percentage="<?php echo $percentage; ?>"></div>

.progress {
    background-color: blue;
}

jquery:
$function() {
 $('.progress').css('opacity', $(this).data('percentage'));
}

【讨论】:

  • 这将要求它是从一种颜色到另一种颜色的渐变。然而,遗憾的是,事实并非如此。原则上,我只需要重复背景图像的 1 像素宽部分,但能够将那个 1 像素掩码向左或向右移动。
猜你喜欢
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
  • 2019-02-19
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多