【发布时间】:2018-09-21 22:49:09
【问题描述】:
我有一些 jquery 将 SVG 附加到类 .fade-top-onbottom 的任何 div 中,然后使用 CSS 变量来设置 SVG 渐变的样式。 css 变量适用于页面上的第一个 SVG,但不适用于其他 SVG。
这是由于线性渐变中的#fadeDown。如果我设置一个唯一的#,它会起作用(这是有道理的)。
如何让 jQuery 为每个附加的渐变插入唯一 ID?
$(".fade-top-onbottom").append("<div class='dh-bottom-divider-fade-top'><svg width='100%' height='100%' viewBox='0 0 1280 140' preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg'><defs><linearGradient id='fadeDown' x1='0' x2='0' y1='0' y2='1'><stop offset='0%' stop-color='var(--bottom-divider-color, #999)'/><stop offset='100%' stop-color='var(--bottom-divider-color, #999)' stop-opacity='0'/></linearGradient></defs><path d='M 0 0 L 0 140 L 1280 140 L 1280 0 Z' fill='url(#fadeDown)'/></svg></div>");
body {
background:#000;
height:100%;
width:100%;
}
.yellow {
--bottom-divider-color:yellow;
}
.red {
--bottom-divider-color:red;
}
.blue {
--bottom-divider-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='fade-top-onbottom yellow'></div>
<div class='fade-top-onbottom red'></div>
<div class='fade-top-onbottom blue'></div>
【问题讨论】:
-
您关注的是 CSS 变量,但实际上 CSS 没有问题,但由于 ID 的原因,所有 SVG 都使用相同的渐变
标签: jquery css variables svg css-variables