如何将 Javascript 变量值转化为 CSS?
How to get Javascript variable value into CSS?
如何让 time
变量的内容在我的 CSS 中显示为 content
属性?
JavaScript:
function clock(){
var d = new Date();
var hour = d.getHours();
var min = d.getMinutes();
var time = hour + ":" + min;
}
CSS:
.screen{
position: absolute;
height: 75%;
width: 75%;
background: #98E8EE;
top: 11.5%;
left: 12.5%;
}
.screen::after{
color: #F9F5F4;
font-size: 40px;
content: ;
font-family: Arial;
margin-left: 36.5px;
top: 20px;
position: relative
}
您无法从 css 访问 javascript 变量,但是您可以从 javascript 设置 css 样式,查看 JavaScript DOM CSS tutorial。
您可以使用 jquery 将内容添加到您的元素中
我不确定这是否是实现您想要执行的操作的最佳方式,因为您也可以使用容器元素并直接更改其内容:
const screenContentElement = document.getElementById('screen__content');
function pad(value) {
const str = value + '';
return str.length === 2 ? str : '0' + str;
}
function clock(){
var d = new Date();
return pad(d.getHours())
+ ':' + pad(d.getMinutes())
+ ':' + pad(d.getSeconds());
}
setInterval(() => {
screenContentElement.innerText = clock();
}, 1000);
#screen {
font-family: Arial, sans-serif;
position: relative;
height: 100%;
width: 100%;
background: #98E8EE;
text-align: center;
padding: 2rem 0;
}
#screen__content {
color: #F9F5F4;
font-size: 40px;
}
<div id="screen" class="screen">
<span id="screen__content"></span>
</div>
但是,对于您提供的代码,要动态更改content
property in a CSS
pseudo-element you can use the attr()
CSS function together with a data-*
attribute的值:
const screenElement = document.getElementById('screen');
function pad(value) {
const str = value + '';
return str.length === 2 ? str : '0' + str;
}
function clock(){
var d = new Date();
return pad(d.getHours())
+ ':' + pad(d.getMinutes())
+ ':' + pad(d.getSeconds());
}
setInterval(() => {
screenElement.dataset.time = clock();
}, 1000);
#screen {
font-family: Arial, sans-serif;
position: relative;
height: 100%;
width: 100%;
background: #98E8EE;
text-align: center;
padding: 2rem 0;
}
#screen::before {
color: #F9F5F4;
font-size: 40px;
content: attr(data-time);
}
<div id="screen"></div>
如果你想在某些 css 属性 中使用时间值,那么你可以使用 javascript/jquery 简单地做到这一点:
$("#SomeId or .SomeCLass").css("PropertyName",time);
您可以将 CSS 值更改为 javascript.
,而不是将 javascript 值添加到您的 CSS(不可能)
例如,您可以使用 jQuery 库并根据值在 html 或 CSS 中进行更改。
不确定您要做什么,但如果您希望时间值出现在您的页面上,使用您的 css 格式化,也许这个?
document.write( '<p class="screen">' + time + '</p> );
还是这个?
var timeDiv = document.createElement('div');
timeDiv.classList.add('screen');
document.body.appendChild(timeDiv);
只是猜测。通常 CSS 定义了事物的格式,所以我不确定你在问什么。
您可以使用 CSS-变量。
我可以使用吗: http://caniuse.com/css-variables/embed
文档: https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables
const updateTime = () => {
var d = new Date();
var hour = d.getHours();
var min = d.getMinutes();
var second = d.getSeconds();
var time = `${hour}:${min}:${second}`;
// set CSS variable
document.documentElement.style.setProperty(`--text`, `'${time}'`);
}
// initial call
updateTime();
// interval to update time
setInterval(updateTime, 1000);
:root {
--text: '----';
}
.container {
position: absolute;
height: 75%;
width: 75%;
background: #98E8EE;
top: 11.5%;
left: 12.5%;
}
.container::after {
content: var(--text);
color: #F9F5F4;
font-size: 40px;
content: ;
font-family: Arial;
margin-left: 36.5px;
top: 20px;
position: relative
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div class="container"></div>
</body>
</html>
如何让 time
变量的内容在我的 CSS 中显示为 content
属性?
JavaScript:
function clock(){
var d = new Date();
var hour = d.getHours();
var min = d.getMinutes();
var time = hour + ":" + min;
}
CSS:
.screen{
position: absolute;
height: 75%;
width: 75%;
background: #98E8EE;
top: 11.5%;
left: 12.5%;
}
.screen::after{
color: #F9F5F4;
font-size: 40px;
content: ;
font-family: Arial;
margin-left: 36.5px;
top: 20px;
position: relative
}
您无法从 css 访问 javascript 变量,但是您可以从 javascript 设置 css 样式,查看 JavaScript DOM CSS tutorial。
您可以使用 jquery 将内容添加到您的元素中
我不确定这是否是实现您想要执行的操作的最佳方式,因为您也可以使用容器元素并直接更改其内容:
const screenContentElement = document.getElementById('screen__content');
function pad(value) {
const str = value + '';
return str.length === 2 ? str : '0' + str;
}
function clock(){
var d = new Date();
return pad(d.getHours())
+ ':' + pad(d.getMinutes())
+ ':' + pad(d.getSeconds());
}
setInterval(() => {
screenContentElement.innerText = clock();
}, 1000);
#screen {
font-family: Arial, sans-serif;
position: relative;
height: 100%;
width: 100%;
background: #98E8EE;
text-align: center;
padding: 2rem 0;
}
#screen__content {
color: #F9F5F4;
font-size: 40px;
}
<div id="screen" class="screen">
<span id="screen__content"></span>
</div>
但是,对于您提供的代码,要动态更改content
property in a CSS
pseudo-element you can use the attr()
CSS function together with a data-*
attribute的值:
const screenElement = document.getElementById('screen');
function pad(value) {
const str = value + '';
return str.length === 2 ? str : '0' + str;
}
function clock(){
var d = new Date();
return pad(d.getHours())
+ ':' + pad(d.getMinutes())
+ ':' + pad(d.getSeconds());
}
setInterval(() => {
screenElement.dataset.time = clock();
}, 1000);
#screen {
font-family: Arial, sans-serif;
position: relative;
height: 100%;
width: 100%;
background: #98E8EE;
text-align: center;
padding: 2rem 0;
}
#screen::before {
color: #F9F5F4;
font-size: 40px;
content: attr(data-time);
}
<div id="screen"></div>
如果你想在某些 css 属性 中使用时间值,那么你可以使用 javascript/jquery 简单地做到这一点:
$("#SomeId or .SomeCLass").css("PropertyName",time);
您可以将 CSS 值更改为 javascript.
,而不是将 javascript 值添加到您的 CSS(不可能)例如,您可以使用 jQuery 库并根据值在 html 或 CSS 中进行更改。
不确定您要做什么,但如果您希望时间值出现在您的页面上,使用您的 css 格式化,也许这个?
document.write( '<p class="screen">' + time + '</p> );
还是这个?
var timeDiv = document.createElement('div');
timeDiv.classList.add('screen');
document.body.appendChild(timeDiv);
只是猜测。通常 CSS 定义了事物的格式,所以我不确定你在问什么。
您可以使用 CSS-变量。
我可以使用吗: http://caniuse.com/css-variables/embed
文档: https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables
const updateTime = () => {
var d = new Date();
var hour = d.getHours();
var min = d.getMinutes();
var second = d.getSeconds();
var time = `${hour}:${min}:${second}`;
// set CSS variable
document.documentElement.style.setProperty(`--text`, `'${time}'`);
}
// initial call
updateTime();
// interval to update time
setInterval(updateTime, 1000);
:root {
--text: '----';
}
.container {
position: absolute;
height: 75%;
width: 75%;
background: #98E8EE;
top: 11.5%;
left: 12.5%;
}
.container::after {
content: var(--text);
color: #F9F5F4;
font-size: 40px;
content: ;
font-family: Arial;
margin-left: 36.5px;
top: 20px;
position: relative
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div class="container"></div>
</body>
</html>