首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在css中使用javascript变量?

如何在css中使用javascript变量?
EN

Stack Overflow用户
提问于 2020-06-02 18:49:38
回答 2查看 82关注 0票数 1

我试着用Javascript生成一个网格。用户应该输入一个数字来确定网格的大小。如果我使用插入到javascript代码和css中的特定数字来运行代码,它就可以正常工作,但是一旦我用变量更改了数字,并且只使用用户输入,它就会给我一个奇怪的网格。

这是密码

代码语言:javascript
复制
    const container = document.querySelector(".container");

    //CREATE GRID
    function grid (size) {
        size = prompt("How many squares wide do you want your grid to be?");
        container.style.gridTemplateColumns = "repeat(7, 1ft)";
        for (let i = 0; i < size; i++) {
            for (let j = 0; j < size; j++) {
                const square = document.createElement("div");
                square.classList.add("square");
                square.style = "background-color: white; border: 1px solid black";
                container.appendChild(square);
            }
        }
    }
        
    grid(7);
代码语言:javascript
复制
    .container {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    width: 500px;
    height: 500px;
    border: 2px dotted lightgray;

    }
代码语言:javascript
复制
<main class="container"/>

在这种情况下,如果我选择7作为用户输入,它就能工作,但是如果我用"size“替换7,这是它没有的变量

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-02 19:17:34

这里有一个与您的尝试非常相似的示例解决方案。注意,我在代码片段中将错误ft更正为fr。这使用回勾字符串(模板文本)进行插值,但也可以使用+将字符串连接在一起。

代码语言:javascript
复制
const container = document.querySelector(".container");

//CREATE GRID
function grid(size) {
  container.style.gridTemplateColumns = `repeat(${size}, 1fr)`;
  for (let row = 0; row < size; row++) {
    for (let column = 0; column < size; column++) {
      const square = document.createElement("div");
      square.classList.add("square");
      container.appendChild(square);
    }
  }
}

size = prompt("How many squares wide do you want your grid to be?");
grid(size);
代码语言:javascript
复制
.container {
  display: grid;
  width: 500px;
  height: 500px;
  border: 2px dotted lightgray;
}

.container>.square {
  background-color: white;
  border: 1px solid black
}
代码语言:javascript
复制
<main class="container"></main>

下面是一个使用css变量的示例:

代码语言:javascript
复制
const container = document.querySelector(".container");

//CREATE GRID
function grid(size) {
  container.style.setProperty('--grid-size', size);
  for (let row = 0; row < size; row++) {
    for (let column = 0; column < size; column++) {
      const square = document.createElement("div");
      square.classList.add("square");
      container.appendChild(square);
    }
  }
}

size = prompt("How many squares wide do you want your grid to be?");
grid(size);
代码语言:javascript
复制
.container {
  display: grid;
  width: 500px;
  height: 500px;
  border: 2px dotted lightgray;
  grid-template-columns: repeat(var(--grid-size), 1fr);
}

.container>.square {
  background-color: white;
  border: 1px solid black
}
代码语言:javascript
复制
<main class="container"></main>

票数 2
EN

Stack Overflow用户

发布于 2020-06-02 19:09:01

您可以使用从提示模式更新的var size

下面的片段和可能的使用:https://codepen.io/gc-nomade/pen/xxZxwoM

代码语言:javascript
复制
const container = document.querySelector(".container");

//CREATE GRID
function grid(size) {
  size = prompt("How many squares wide do you want your grid to be?");
  container.style.gridTemplateColumns = "repeat(" + size + ", 1fr)";
  for (let i = 0; i < size; i++) { 
      const square = document.createElement("div");
      square.classList.add("square");
      square.style = "background-color: white; border: 1px solid black";
      square.textContent = i;
      container.appendChild(square);
    
  }
}

grid(7);
代码语言:javascript
复制
.container {  
display: grid; 
width: 500px; 
}
代码语言:javascript
复制
<div class="container">  </div>

这里是一个带有css变量的https://codepen.io/gc-nomade/pen/zYrYrOM版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62159255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档