CSS:由多个类定义的渐变?

标签 css

是否可以定义多个类,每个类都有一个背景色。那么当一个元素有多个这样的类时,背景会像渐变一样淡化吗?并在纯 css 中执行此操作(因为我已经有执行此操作的代码,但我想知道是否有更好的方法)?

.red {
  background-color: red;
}

.green {
  background-color: green;
}

.wantedResult{
  background-image: linear-gradient(to right, red, green);
}
<div class="red">Red</div>
<div class="green">Green</div>
<div class="red green">Both</div>
<div class="wantedResult">WantedResult</div>

如您所见,“两者”元素仅显示其中一个背景。但它应该将两者都显示为渐变。

有什么办法吗?

注意:当然这是一个非常简单的例子,只有两种颜色,定义“wantedResult”类也没什么大不了的。但是,如果有十种使用过的颜色,它很快就会变得难以管理。

最佳答案

显然没有 CSS 方法可以直接实现这一点,因为浏览器无法知道当有 2 种或 3 种颜色时应该如何定义渐变。有很多可能性。

一种方法是考虑 CSS 变量以简化思考。这个想法是用一些默认颜色定义渐变,您可以通过更改变量来更改这些颜色。同样,这不会产生您想要的效果,但至少可以避免定义大量渐变。

.red_1 {
  --color1: red;
}
.red_2 {
  --color2: red;
}

.green_1 {
  --color1: green;
}
.green_2 {
  --color2: green;
}

.coloration{
  background: linear-gradient(var(--color1,pink),var(--color2,pink));
}

div {
 height:50px;
 margin:5px;
}
<div class="coloration">default</div>

<div class="coloration green_1 green_2">green</div>

<div class="coloration red_1 green_2">green red</div>

<div class="coloration red_2 green_1">green red</div>

<div class="coloration red_2 red_1">red</div>

关于CSS:由多个类定义的渐变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53452933/

相关文章:

css - 文字不换行

html - 如何: overflow text above border-top like with border-bottom when height: 0px

jquery - 是否可以用文本而不是图像来重现这种效果?

css - 使用 Ruby Mechanize gem 选择没有名称的表单输入

html - 定位正确的内容 Bootstrap 网格

html - 列表的跨浏览器兼容悬挂缩进

html - 位置固定的圆形图像 - css

jquery - 需要帮助使用 jquery 加载 html 页面

jquery - 是否可以使用 css 进行第二行刷新?

javascript - wordpress页面右侧未使用的大空间