给定情况
一、
假设我有两个跨距,都是background-color
,并且一个跨距在另一个跨距内部(重叠):
<p>Alpha <span class="highlightTopic">Beta <span class="highlightYellow">Gamma Delta</span> Epsilon</span> Eta</p>
span.highlightYellow {
background-color: rgba(255, 237, 0, 0.5);
}
span.highlightTopic {
background-color: rgba(182, 203, 232, 0.5);
}
二、
它们是重叠的,但我希望能够同时看到两个background-color
,因此我应用
opacity
(已应用,见上文)linear-gradient
(参见下文)
对于重叠的background-color
span.highlightTopic span.highlightYellow,
span.highlightYellow span.highlightTopic {
background: linear-gradient(-7deg, rgba(255, 255, 0, 0.5) 50%, rgba(182, 203, 232, 0.5) 50%);
}
三、
html输出:
问题
四、
现在,假设有多于2个跨度,假设有10个跨度。
那么对于它们的每一个组合,我的css风格的数量将是45($$10:nCr:2 =\sum_{n = 1} ^{10 - 1} n = 45 $$)。
我需要45个这个
span.highlightTopic span.highlightYellow,
span.highlightYellow span.highlightTopic {
background: linear-gradient(-7deg, rgba(255, 255, 0, 0.5) 50%, rgba(182, 203, 232, 0.5) 50%);
}
=〉
五、
那么,如何将linear-gradient
css应用于通常任何2跨度,这些跨度具有background-color
相互重叠?(没有指定它们的45种不同组合。)
2条答案
按热度按时间qvtsj1bj1#
可以为任何范围给予一个类并指定样式
6jygbczu2#
解决方案(变通方案):
jsfiddle: Highlight Background color Overlap (soln)
一、
您需要一个
Master class
(CSS样式规则)二、
将额外的
Master class
添加到每个元素三、
三、1
将变量
--color-main
添加到Master class
中;三、二
并使用
--color-main
为所有用于突出显示的Css样式规则分配颜色(而不是使用background-color
)四、
四.1
选择
outer span
的颜色并将其分配给--color-main-outerspan
四、二
使用
var(--color-main)
&var(--color-main-outerspan)
将2种颜色指定给linear-gradient
限制和注意事项:
1.这可能只适用于2种颜色
p > span.hlBackgroundMs
用于选取outer span
,这仅限于某些情况:has()
,span.hlBackgroundMs:has(> span.hlBackgroundMs)
可能更好)span
可能无法工作思考过程:
整个目的是:_
1.能够从
(parent) outer span
和(child) inner span
中挑选颜色1.选择
inner span
,然后将这2种颜色分配给其中的linear-gradient
。=〉
--color-main
highlightContentObject
和highlightTechStack
之间的份额),span.hlBackgroundMs
(用于存储和共享变量--color-main
)inner span
的--color-main
)--color-main-outerspan
来存储来自outer span
的颜色outer span
的颜色"-〉
p > span.hlBackgroundMs
〈=〉外部span.hlBackgroundMs > span.hlBackgroundMs
内部(更新)
随着
span
变得更加嵌套,您可以尝试以下技巧。outer span
获取颜色)更新日期:
1.前一个更新的css规则是相当糟糕
1.再添加4种溶液:1个使用Javascript,3个使用(纯)Css
1.原始思维过程是以下三种CSS方法的基础
溶液js [V1/V2-M2]
1.@logic::(直截了当)
1.每个
.hlBackgroundMs
元素内的循环1.将来自所有先前父元素的
background-color
存储在同一(垂直)分支中1.使用
background-color
为每个元素分配linear-gradient
css规则.hlBackgroundMs
&'linear-gradient(-1deg'
(以下核心源代码留有未清理的草稿注解)
溶液css [V2-M3](不推荐)
溶液css [V2-M4](推荐)
溶液css [V2-M5]