为什么我的 CSS 变量添加注释标记?
Why do my CSS variables add comment markup?
我想定义几个线性渐变并仅使用 CSS 规则应用它们:
我试过这个:
console.log(
window
.getComputedStyle(document.querySelector('body'))
.getPropertyValue('--btnPrimary')
);
:root{
--primary: #4169e1;
--secondary :#ef3c3a;
--grey: #585f74;
--g-light: #b6bbc8;
--p2s-3: #c44764;
--s2p-3: var(--p2s-1);
--p-btngrad-a: var(--primary);
--p-btngrad-b: var(--p2s-3);
--lgrad-angle: 75;
--lgrad-stop-a: 45;
--lgrad-stop-b: 99;
--btnPrimary: linear-gradient(
var(--lgrad-angle)deg,
var(--p-btngrad-a) var(--lgrad-stop-a)%,
var(--p-btngrad-b) var(--lgrad-stop-b)%
);
--btnSecondary: linear-gradient(
var(--lgrad-angle)deg,
var(--s-btngrad-a) var(--lgrad-stop-a)%,
var(--s-btngrad-b) var(--lgrad-stop-b)%
);
}
div.demo{
height:200px;
width:200px;
background:var(--btnPrimary);
}
div.demo:hover{
background:var(--btnSecondary);
}
<h1>css only linear gradient by parameters</h1>
<div class="demo">hover me</div>
但是没用。
控制台显示原因:
linear-gradient(75/**/deg, #4169e1 45/**/%, #c44764 99/**/% )
为什么 CSS 变量后跟注释标记(“/**/”)?
我该如何解决这个问题?
您没有指定变量的单位(度和%); and it says here that:
Note that var() substitution takes place at the level of CSS tokens
[css-syntax-3], not at a textual level; you can’t build up a single
token where part of it is provided by a variable:
直接在变量中给出维度,而不是之后连接它。
//console.log(window.getComputedStyle(document.querySelector('body')).getPropertyValue('--btnPrimary'));
:root{
--primary: #4169e1;
--secondary :#ef3c3a;
--grey: #585f74;
--g-light: #b6bbc8;
--p2s-3: #c44764;
--s2p-3: var(--p2s-1);
--p-btngrad-a: var(--primary);
--p-btngrad-b: var(--p2s-3);
--lgrad-angle: 75;
--lgrad-stop-a: 45;
--lgrad-stop-b: 99;
--lgrad-angle:75deg;
--lgrad-stop-a:45%;
--lgrad-stop-b:99%;
--btnPrimary:linear-gradient(var(--lgrad-angle), var(--p-btngrad-a) var(--lgrad-stop-a), var(--p-btngrad-b) var(--lgrad-stop-b));
--btnSecondary:linear-gradient(var(--lgrad-angle), var(--s-btngrad-a) var(--lgrad-stop-a), var(--s-btngrad-b) var(--lgrad-stop-b) );
}
div{
height:200px;
width:200px;
background:var(--btnPrimary);
}
div:hover{
background:var(--btnSecondary);
}
<h1> css only linear gradient by parameters</h1>
<div>hover me</div>
您需要将您的 var 乘以您要使用的单位。(chrome 似乎不需要它)
//console.log(
// window
// .getComputedStyle(document.querySelector('body'))
// .getPropertyValue('--btnPrimary')
//);
:root{
--primary: #4169e1;
--secondary :#ef3c3a;
--grey: #585f74;
--g-light: #b6bbc8;
--p2s-3: #c44764;
--s2p-3: var(--p2s-1);
--p-btngrad-a: var(--primary);
--p-btngrad-b: var(--p2s-3);
--lgrad-angle: 75;
--lgrad-stop-a: 45;
--lgrad-stop-b: 99;
--btnPrimary: linear-gradient(
calc(var(--lgrad-angle) * 1deg),
var(--p-btngrad-a) calc(var(--lgrad-stop-a) * 1%),
var(--p-btngrad-b) calc(var(--lgrad-stop-b) * 1%)
);
--btnSecondary: linear-gradient(
calc(var(--lgrad-angle) * 1deg),
var(--s-btngrad-a) calc(var(--lgrad-stop-a) * 1%),
var(--s-btngrad-b) calc(var(--lgrad-stop-b) * 1%)
);
}
div{
height:200px;
width:200px;
background:var(--btnPrimary);
}
div:hover{
background:var(--btnSecondary);
}
<h1> css only linear gradient by parameters</h1>
<div>hover me </div>
<code> var(--s-btngrad-a) & var(--s-btngrad-b)</code> are missing
我想定义几个线性渐变并仅使用 CSS 规则应用它们: 我试过这个:
console.log(
window
.getComputedStyle(document.querySelector('body'))
.getPropertyValue('--btnPrimary')
);
:root{
--primary: #4169e1;
--secondary :#ef3c3a;
--grey: #585f74;
--g-light: #b6bbc8;
--p2s-3: #c44764;
--s2p-3: var(--p2s-1);
--p-btngrad-a: var(--primary);
--p-btngrad-b: var(--p2s-3);
--lgrad-angle: 75;
--lgrad-stop-a: 45;
--lgrad-stop-b: 99;
--btnPrimary: linear-gradient(
var(--lgrad-angle)deg,
var(--p-btngrad-a) var(--lgrad-stop-a)%,
var(--p-btngrad-b) var(--lgrad-stop-b)%
);
--btnSecondary: linear-gradient(
var(--lgrad-angle)deg,
var(--s-btngrad-a) var(--lgrad-stop-a)%,
var(--s-btngrad-b) var(--lgrad-stop-b)%
);
}
div.demo{
height:200px;
width:200px;
background:var(--btnPrimary);
}
div.demo:hover{
background:var(--btnSecondary);
}
<h1>css only linear gradient by parameters</h1>
<div class="demo">hover me</div>
但是没用。 控制台显示原因:
linear-gradient(75/**/deg, #4169e1 45/**/%, #c44764 99/**/% )
为什么 CSS 变量后跟注释标记(“/**/”)?
我该如何解决这个问题?
您没有指定变量的单位(度和%); and it says here that:
Note that var() substitution takes place at the level of CSS tokens [css-syntax-3], not at a textual level; you can’t build up a single token where part of it is provided by a variable:
直接在变量中给出维度,而不是之后连接它。
//console.log(window.getComputedStyle(document.querySelector('body')).getPropertyValue('--btnPrimary'));
:root{
--primary: #4169e1;
--secondary :#ef3c3a;
--grey: #585f74;
--g-light: #b6bbc8;
--p2s-3: #c44764;
--s2p-3: var(--p2s-1);
--p-btngrad-a: var(--primary);
--p-btngrad-b: var(--p2s-3);
--lgrad-angle: 75;
--lgrad-stop-a: 45;
--lgrad-stop-b: 99;
--lgrad-angle:75deg;
--lgrad-stop-a:45%;
--lgrad-stop-b:99%;
--btnPrimary:linear-gradient(var(--lgrad-angle), var(--p-btngrad-a) var(--lgrad-stop-a), var(--p-btngrad-b) var(--lgrad-stop-b));
--btnSecondary:linear-gradient(var(--lgrad-angle), var(--s-btngrad-a) var(--lgrad-stop-a), var(--s-btngrad-b) var(--lgrad-stop-b) );
}
div{
height:200px;
width:200px;
background:var(--btnPrimary);
}
div:hover{
background:var(--btnSecondary);
}
<h1> css only linear gradient by parameters</h1>
<div>hover me</div>
您需要将您的 var 乘以您要使用的单位。(chrome 似乎不需要它)
//console.log(
// window
// .getComputedStyle(document.querySelector('body'))
// .getPropertyValue('--btnPrimary')
//);
:root{
--primary: #4169e1;
--secondary :#ef3c3a;
--grey: #585f74;
--g-light: #b6bbc8;
--p2s-3: #c44764;
--s2p-3: var(--p2s-1);
--p-btngrad-a: var(--primary);
--p-btngrad-b: var(--p2s-3);
--lgrad-angle: 75;
--lgrad-stop-a: 45;
--lgrad-stop-b: 99;
--btnPrimary: linear-gradient(
calc(var(--lgrad-angle) * 1deg),
var(--p-btngrad-a) calc(var(--lgrad-stop-a) * 1%),
var(--p-btngrad-b) calc(var(--lgrad-stop-b) * 1%)
);
--btnSecondary: linear-gradient(
calc(var(--lgrad-angle) * 1deg),
var(--s-btngrad-a) calc(var(--lgrad-stop-a) * 1%),
var(--s-btngrad-b) calc(var(--lgrad-stop-b) * 1%)
);
}
div{
height:200px;
width:200px;
background:var(--btnPrimary);
}
div:hover{
background:var(--btnSecondary);
}
<h1> css only linear gradient by parameters</h1>
<div>hover me </div>
<code> var(--s-btngrad-a) & var(--s-btngrad-b)</code> are missing