如何通过 Javascript 修改 CSS 模块样式

Posted

技术标签:

【中文标题】如何通过 Javascript 修改 CSS 模块样式【英文标题】:How to Modify CSS Module Style via Javascript 【发布时间】:2022-01-21 05:37:59 【问题描述】:

我对 javascript 和 react 还很陌生,但我正在潜心研究并创建我的第一个 react 应用程序。

我想通过一个变量来修改屏幕上显示的“gridTemplateRows”的数量,并根据列表中的结果用一个新的数字来修改它(我现在已经硬编码为 6) ,但是我正在使用 CSS 模块,但我似乎无法让网格更改其行数并正确显示。

组件代码

import classes from "./TimeSlot.module.scss";
import AvailabilityCalendarData from "../../../../../FakeDB/AvailabilityCalendarData";

function TimeSlot() 
  const addTimeSlot = () => 
    document.getElementsByClassName(
      `$classes.time_interval`
    ).styles.gridTemplateRows = "repeat(6, 1fr)";
  ;

  const timeSlotRow = AvailabilityCalendarData.map((timeSlot) => (
    <div key=timeSlot.id>timeSlot.startTime</div>
  ));

  return (
    <div className=classes.time_interval onLoad=addTimeSlot()>
      timeSlotRow
    </div>
  );


export default TimeSlot;

CSS

.time_interval 
  grid-area: time;
  display: grid;
  grid-template-rows: repeat(17, 1fr);
  font-size: 14px;
  & > div 
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    box-shadow: inset 0 1px 0 0 #eceff1;
  

【问题讨论】:

【参考方案1】:

只需设置style:

<div className=classes.time_interval 
  style= gridTemplateRows: `repeat($timeSlotRow.length, 1fr)` 
>timeSlotRow</div>

或者你可以看看grid-auto-rows。

【讨论】:

以上是关于如何通过 Javascript 修改 CSS 模块样式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React.js 中使用 JavaScript 修改 CSS

javascript能不能用变量改变css的值?

如何用纯javascript修改html css dom? [关闭]

css/javascript 一个div包含两个样式class="div1 div2"用javascript修改其中一个样式的内容

如何在codeigniter ci中加载javascript css文件

javascript 动态修改css样式