css 层叠层如何与媒体查询一起工作?

pinkon5k  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(89)

我理解在CSS中创建级联层的本质是以模块化和可重用的方式组织和管理样式。通过使用层叠层,我可以将相关的样式分组在一起,并将它们应用到网站的特定组件或部分。
但我不明白的是它在媒体查询中的用途,就像下面的例子一样,我希望层移动的样式应用于max-width:768 px,但当屏幕宽度比768 px宽时会有。
我很想知道它是否应该在最近的项目中使用,因为它是CSS中相对较新的功能,并且没有旧的浏览器支持。
有人能解释一下吗?

@media (max-width: 768px) {
    @layer mobile;
}

  
@layer desktop {
    /* CSS rules for desktop layout */
    .header {
        width: 60%;
    }

    .content {
        padding: 120px;
        font-size: 120px;
    }

    body{
        background-color: white;
    }
}


@layer mobile {
    /* CSS rules for mobile layout */
    .header {
      width: 100%;
    }
  
    .content {
      padding: 0 10px;
      font-size: 10px;
    }

    body{
        background-color: blueviolet;
    }
}

字符串

mi7gmzs6

mi7gmzs61#

层按照它们首先被提到的顺序被评估,其中后面提到的层优先,其方式与后面的规则优先于前面的规则相同,当它们具有相同的特异性时。
所以呢

@media (max-width: 768px) {
    @layer mobile;
}

字符串
在顶部意味着当屏幕为768 px宽或更小时,“移动的”是第一个提到的层。
所以在小屏幕上,顺序是“移动的”,“桌面”,正如后面提到的层具有优先级,“桌面”层的样式应用于页面。
当屏幕大于768 px时,@media规则被忽略,因此提到的层的顺序是“桌面”,“移动的”,并且“移动”层的样式是应用的样式。
要解决这个问题,只需使用min-width而不是max-width。然后在更大宽度的浏览器上,“移动的”层将被“拉”到“桌面”层之前,然后后面的“桌面”层将是应用的样式。
或者,如果你想使用max-width来避免屏幕宽度在子像素间隙中的风险,你可以像这样声明顶部的所有层:

@media (max-width: 768px) {
    @layer desktop;
}
@layer mobile, desktop;


因此,在小屏幕上,“桌面”层被“拉”到“移动的”层之前。

相关问题