为什么 @screen xl 和 @screen lg 在 tailwindcss 中被 @screen md 覆盖?
Why @screen xl and @screen lg gets overridden by @screen md in tailwindcss?
我在配置文件中扩展了 tailwind margin
属性:
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
,但它没有像我预期的那样工作。我相信这不能在 fiddle 中重现,因为 CDN version of tailwindcss.
中不支持自定义实用程序
根据图像,查询的顺序是导致此行为的原因。
这是因为每当多个 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;
}
}
我在配置文件中扩展了 tailwind margin
属性:
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
,但它没有像我预期的那样工作。我相信这不能在 fiddle 中重现,因为 CDN version of tailwindcss.
根据图像,查询的顺序是导致此行为的原因。
这是因为每当多个 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;
}
}