温馨提示:本文翻译自stackoverflow.com,查看原文请点击:css - Why @screen xl and @screen lg gets overridden by @screen md in tailwindcss?
css media-queries tailwind-css

css - 为什么@screen xl和@screen lg在tailwindcss中被@screen md覆盖?

发布于 2020-03-27 15:49:34

margin在配置文件中扩展了 tailwind 属性:

module.exports = {
    theme: {
        extend: {
            'margin': {
                '1/5': '20%',
                '1/4': '25%',
                '1/3': '33.333333%'
            }
        }
    },
    variants: {
        margin: ['responsive']
    },
    plugins: []
}

然后将其应用于我css的以下内容:

@screen xl {
    .content-section.contract {
        @apply ml-1/5;
    }
}

@screen lg {
    .content-section.contract {
        @apply ml-1/4;
    }
}

@screen md {
    .content-section.contract {
        @apply ml-1/3;
    }
}

但是,与其margin-left: 20%在超大屏幕和margin-left: 25%大屏幕上使用,不如在中型屏幕的值上覆盖样式。

在此处输入图片说明

我尝试!important在不同的屏幕尺寸中添加每种样式,但无法按预期工作。我相信这不能在繁琐的过程中重现,因为tailwindcss的CDN版本不支持自定义实用程序

查看更多

查看更多

提问者
threeFatCat
被浏览
57
1,907 2020-02-11 21:16

根据该图像,查询的顺序负责此行为。

这是因为每当有相同优先级的多个CSS规则应用于一个元素时,最后一个将获胜。

在这种情况下,只要屏幕大小达到xl查询所需的宽度,则对较小屏幕的查询也将适用。由于中型查询是最后一个查询,因此它将覆盖之前声明的查询的样式。

经验法则是使用min-width(移动优先)时,将查询从最小到最大排序使用max-width(首先使用台式机)时,反之亦然。

这里的解决方案是使用max-width而不是min-width或更改查询的顺序,因此最小的屏幕在前,最大的屏幕在后。

示例(颠倒顺序):

@screen md {
    .content-section.contract {
        @apply ml-1/3;
    }
}

@screen lg {
    .content-section.contract {
        @apply ml-1/4;
    }
}

@screen xl {
    .content-section.contract {
        @apply ml-1/5;
    }
}