我正在使用Mantine.dev和Nextjs,我有这个部件设计.

enter image description here

我有一个字符串列表,长度未知,可能有任何数量,在宽阔的视区中,它们可以包裹尽可能多的字符串,没有最大高度限制but in a small viewport, there should be only 2 rows in a way that it makes horizontal scrolling

This is what it currently looks like in small viewport enter image description here

The code

<ScrollArea>
 <Flex wrap='wrap' rowGap={10} columnGap={8} h={{ base: 65, sm: 'auto' }}>
  {services.map((service, i) => (<Button>{service}</Button>))}
 </Flex>
</ScrollArea>

推荐答案

您可以使用MediaQuery组件和Box组件而不是Flex来实现这一点,因为我们需要将布局从display: flex;更改为column-count: 2;,并更改writing-mode: vertical-lr;才能获得结果.

import { ScrollArea, Button, Box, MediaQuery } from "@mantine/core";

const services = [
  "Frontend",
  "Backend",
  "FullStack",
  "DevOps",
  ...
];

export default function App() {
  const boxStyles = {
    display: "flex",
    justifyContent: "flex-start",
    flexWrap: "wrap",
    columnGap: 8,
    rowGap: 10
  };

  const boxStylesSM = {
    display: "block",
    columnCount: 2,
    columnGap: 10,
    writingMode: "vertical-lr"
  };

  const buttonStyle = {
    display: "flex",
    justifyContent: "center",
    alignItems: "center",
    whiteSpace: "nowrap"
  };

  const buttonStyleSM = {
    marginRight: 8
  };

  return (
    <div className="App">
      <ScrollArea type="auto" sx={{ padding: "0.8rem 0.5rem" }}>
        <MediaQuery smallerThan="sm" styles={boxStylesSM}>
          <Box sx={boxStyles}>
            {services.map((service, i) => (
              <MediaQuery smallerThan="sm" styles={buttonStyleSM}>
                <Button sx={buttonStyle} key={i}>
                  {service}
                </Button>
              </MediaQuery>
            ))}
          </Box>
        </MediaQuery>
      </ScrollArea>
    </div>
  );
}

Edit dazziling-code

Css相关问答推荐

悬停时可展开的按钮与屏幕右侧对齐,如何保持未悬停的按钮正确对齐?

搜索栏突出显示角形HTML中的Mat-Form-field输入框的焦点

不了解重复-线性-渐变 colored颜色 停止

如何使用CSS滚动驱动动画重复时间轴范围

如何使背景出现在具有自己背景 colored颜色 的子元素上

为什么 :focus 会覆盖 :focus-visible ?

在变量中存储匹配 Select 器的子元素的计数

清除 CSS 中已设置的填充属性以恢复 SVG 的默认值

在 WooCommerce 变体 Select 中转换属性文本以大写

同一元素的文本和背景之间的图层

Angular Datepicker - 更改日期范围 Select 样式

不能在带有 SCSS 的过滤器灰度内使用 CSS 变量

如何在每一行周围放置不同大小的阴影?

当我在几个月之间更改时,有什么方法可以在react-dates-range上添加淡入淡出或幻灯片效果?

Rails 7引擎如何使未编译的样式表可用于托管应用程序?

如何在 nth-child 中正确传递 CSS 变量?

我怎样才能在某些区域制作一个单独的文本行,而在其他区域制作一个实心填充?

css中的背景图像没有被缓存

圆形加载动画

使用 CSS 强制侧边栏高度 100%(带有粘性底部图像)?