想要给map循环创建的div添加行号,应该怎样设计呢?

作者站长头像
站长
· 阅读数 18

在react组件中,我基于传入的props的数据,创建很多小方格:

<div id="container">
{ itemData.map((item, index) => (
          <div key={index} style={{ 
            display: 'inline-block',
            width: '9px', 
            height: '9px', 
            margin: '2px',
            backgroundColor: item.selected ? 'green' : 'lightgreen'
          }}
          ></div>
        )) }
</div>

效果如下:想要给map循环创建的div添加行号,应该怎样设计呢?

我有一个需求就是,想要给container div 创建行号,这里第一行我就显示1,就像编辑器编辑代码一样,前面有行号。想要给map循环创建的div添加行号,应该怎样设计呢?

回复
1个回答
avatar
test
2024-08-11

answer image左侧的索引可以设置为 absolute,右侧的方块可以设置为 relative,两者的父元素设置为 relative 且 overflow: hidden;answer image

index.js

import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";

function App() {
  const itemData = new Array(500).fill(0);
  const indexData = new Array(20).fill(0);

  return (
    <div className="App">
      <div className="left-box">
        {indexData.map((item, index) => (
          <div
            key={index}
            style={{
              fontSize: "9px",
              width: "19px",
              height: "20px",
              margin: "2px",
            }}
          >
            {index}
          </div>
        ))}
      </div>
      <div className="right-box">
        {itemData.map((item, index) => (
          <div
            key={index}
            style={{
              display: "inline-block",
              width: "9px",
              height: "9px",
              margin: "2px",
              backgroundColor: item.selected ? "green" : "lightgreen",
            }}
          ></div>
        ))}
      </div>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

styles.css

.App {
  font-family: sans-serif;
  text-align: center;
  overflow: hidden;
  position: relative;
}

.left-box {
  position: absolute;
  left: 0;
  top: 0;

  width: 19px;
  overflow: hidden;
}

.right-box {
  margin-left: 19px;
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容