【问题标题】:How to Modify CSS Module Style via Javascript如何通过 Javascript 修改 CSS 模块样式
【发布时间】: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;
  }
}

【问题讨论】:

    标签: javascript css reactjs sass css-modules


    【解决方案1】:

    只需设置style:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2018-04-17
      • 2011-05-27
      • 2011-09-18
      相关资源
      最近更新 更多