美文网首页
【CSS】从上到下从左到右的列表布局

【CSS】从上到下从左到右的列表布局

作者: JellyL | 来源:发表于2024-06-13 10:55 被阅读0次
实现效果

方案一:grid 布局

// tailwind.css plugin
/** @type {import('tailwindcss').Config} */
export default {
  content: ["./src/**/*.{jsx,tsx,js,ts}"],
  theme: { ... },
  plugins: [
    function({ matchUtilities }) {
      matchUtilities(
        {
          "counter-reset": (value) => ({ "counter-reset": value }),
          "counter-increment": (value) => ({ "counter-increment": value }),
        },
      )
    },
  ],
};
// ColumnTable component
import { useState } from "react";

const ColumnTable = () => {
  const [count, setCount] = useState(10);

  const handleMinus = () => {
    setCount(count - 1 < 0 ? 0 : count - 1);
  };

  const handleAdd = () => {
    setCount(count + 1);
  };

  return (
    <div className="w-full px-5 text-center text-white-1">
      <div
        className="w-full h-[300px] border-2 border-orange-500 grid gap-4 grid-flow-col counter-reset-[num]"
        style={{
          gridTemplateColumns: "repeat(3, 1fr)",
          gridTemplateRows: `repeat(${Math.ceil(count/3)}, 1fr)`
        }}
      >
        {Array.from({ length: count })
          .map((_, index) => (
            <div
              className="counter-increment-[num]  flex items-center justify-center bg-pri-1"
              key={index}
            >
              {index}
            </div>
          ))
        }
      </div>
      <div className="flex">
        <div
          className="bg-pri-1 h-[44px] p-4 flex-1 flex items-center justify-center"
          onClick={handleMinus}
        >
          -
        </div>
        <div
          className="bg-pri-1 h-[44px] p-4 flex-1 flex items-center justify-center ml-[1px]"
          onClick={handleAdd}
        >
          +
        </div>
      </div>
    </div>
  );
};

export default ColumnTable;

方案二:columns布局

// ColumnsTable component
import { useState } from "react";

const heights = [
  100,
  160,
  400,
  30,
  83,
  45,
  200
];

const ColumnsTable = () => {
  const [count, setCount] = useState(10);

  const handleMinus = () => {
    setCount(count - 1 < 0 ? 0 : count - 1);
  };

  const handleAdd = () => {
    setCount(count + 1);
  };

  return (
    <div className="w-full px-5 text-center text-white-1">
      <div
        className="w-full border-2 border-orange-500 columns-3 gap-3"
      >
        {Array.from({ length: count }).map((_, index) => (
          <div
            className="flex items-center justify-center bg-pri-1 mb-2"
            style={{ height:  heights[Math.floor(Math.random() * count)] }}
            key={index}
          >
            {index}
          </div>
        ))}
      </div>
      <div className="flex">
        <div
          className="bg-pri-1 h-[44px] p-4 flex-1 flex items-center justify-center"
          onClick={handleMinus}
        >
          -
        </div>
        <div
          className="bg-pri-1 h-[44px] p-4 flex-1 flex items-center justify-center ml-[1px]"
          onClick={handleAdd}
        >
          +
        </div>
      </div>
    </div>
  );
};

export default ColumnsTable;

相关文章

  • CSS第四节(1)

    1、css标准流排版特点及流式布局 标准流式布局:从左到右 从上到下 2、css浮动的原理 浮动不影响标准流布局,...

  • CSS--脱流和居中

    CSS布局从上到下,从左到右 脱离标准流的方法有float属性position属性 和 left、right、to...

  • flutter中Row和Column的理解

    Row指的是行布局,也就是从左到右的布局,主轴是从左到右 Column指的是列布局,也就是从上到下的布局,主轴是从...

  • CSS浮动概念

    浮动的概念: 文档流 html元素依照默认规则从上到下从左到右依次排列布局的方式 给元素设置float这个css元...

  • HTML5-10(CSS布局)

    一.简述CSS布局 1.默认情况下,所有的网页标签都在标准流布局中从上到下,从左到右 2.脱离标准流的方法有flo...

  • 无标题文章

    CSS之定位 一,课程导入; 正常文档流:指的是HTML文档在进行内容布局时所遵循的从左到右,从上到下的表现方式。...

  • css3 flex布局

    Flexbox的布局是一个用于页面布局的全新CSS3模块功能,它可以把列表放在同一个方向(从左到右;flex-fl...

  • Flex

    1、块级元素布局是 从上到下 垂直方向 、行内布局是 从左到右 水平方向 、Flex是与方向无关的2、flex布局...

  • Flex布局学习

    父视图的四个属性 flexDirection 布局方向column(默认)从左到右row 从上到下column-r...

  • 腾讯QMUI Android框架使用(四)QMUIFloatLa

    QMUIFloatLayout 类似 CSS 里 float: left 的浮动布局,从左到右排列子 View 并...

网友评论

      本文标题:【CSS】从上到下从左到右的列表布局

      本文链接:https://www.haomeiwen.com/subject/skznqjtx.html