【问题标题】:CSS Flex with wrap. Decorative items inbetween but not at end of line [duplicate]带换行的 CSS Flex。中间但不在行尾的装饰物品[重复]
【发布时间】:2021-12-25 05:08:38
【问题描述】:

我有一个<ul> 和多个<li>。我设置了以下样式:

列表样式:无; 文本对齐:居中; 显示:弯曲; 弹性包装:换行; 证明内容:中心; 差距:1rem 2rem;

每个<li> 上还有一个伪:after,其样式如下:

content: "";
    display: block;
    width: 0.5em;
    height: 0.5em;
    aspect-ratio: 1/1;
    background-color: var(--color-gothic);
    border-radius: 50%;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: -1.25em;

这给了我每个项目之间的一个小圆圈。这纯粹是装饰性的。

我真的不认为有解决方案,但我想我会问,以防万一有人有任何天才的脑电波。

我想要的是装饰点出现在项目之间,但如果它是一行中的最后一个项目,则不会出现在项目之后。

这有意义吗?

【问题讨论】:

    标签: css flexbox pseudo-element


    【解决方案1】:

    是的,有一个解决方案,您可以使用以下方法,它将样式应用于除最后一个子元素之外的所有元素。

    li:not(:last-child)::after {
        content: "";
        display: block;
        width: 0.5em;
        height: 0.5em;
        aspect-ratio: 1/1;
        background-color: var(--color-gothic);
        border-radius: 50%;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        right: -1.25em;
    }
    
    

    【讨论】:

    • 这似乎不起作用?它仍然在每行 flexxed 项目的末尾添加一个?
    • @rctneil 这是一个活生生的例子 - jsfiddle.net/ngm7dxs8 你能提供 jsfiddle 什么不完全有效吗?
    • 感谢您的示例。如果您挤压窗口,您的示例就是这样,flex wrap 就会生效。我希望每条线的右端没有一个点。不只是最后一项。正如您所展示的,最后一项本身非常简单。
    • @rctneil 好的,我想我现在明白你的意思了。这是你要找的东西吗? jsfiddle.net/p1ms5z2c我已经将伪元素移到文本之前显示,因此最后不会有任何点。
    • 这正是我在发布之前遇到的问题。不幸的是,发生了完全相反的问题。挤压你的浏览器窗口,你会在每行之前看到点。别担心。我会放弃那个设计理念,去做一些不同的事情。不过感谢您的努力!
    猜你喜欢
    • 2021-11-11
    • 2020-12-18
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多