Difference Between HTML LINK Media and CSS Media Queries

前端 未结 2 1028
情歌与酒
情歌与酒 2020-12-06 11:22

I know there are 2 ways to add Media queries:

HTML LINK:



        
相关标签:
2条回答
  • 2020-12-06 11:44

    Regarding the stylesheet download, here is what the current spec draft says:

    User agents should re-evaluate media queries in response to changes in the user environment, for example if the device is tiled from landscape to portrait orientation, and change the behavior of any constructs dependent on those media queries accordingly.

    This means you can’t just evaluate each media-query and then download the appropriate stylesheets because the environment can change, causing the re-evaluation of these media-queries. I think it could be optimized, but for now all browsers download all stylesheets, regardless of media-queries.

    For your second question, specs don’t mention any difference between HTML- and CSS-declared media-queries. Nested media-queries are allowed since CSS3, and putting @media-rules in a stylesheet which is already tagged with media="…" should be the same as a pure CSS nested media-query.

    0 讨论(0)
  • 2020-12-06 11:47

    Here is what W3C has to say about this:

    The media attribute says which media the resource applies to. The value must be a valid media query.

    [...]

    However, if the link is an external resource link, then the media attribute is prescriptive. The user agent must apply the external resource when the media attribute's value matches the environment and the other relevant conditions apply, and must not apply it otherwise.

    Note: The external resource might have further restrictions defined within that limit its applicability. For example, a CSS style sheet might have some @media blocks. This specification does not override such further restrictions or requirements.

    I tested the behavior in Chrome using the following markup:

    <link rel="stylesheet" href="ge-960.css" media="screen and (min-width: 960px)">
    <link rel="stylesheet" href="lt-960.css" media="screen and (max-width: 959px)">
    
    • Apparently, Chrome downloaded all CSS files regardless of screen resolution.
    • However, it applied the rules from matching stylesheet(s) only
      • And it honored all matching @media rules within the stylesheet
    0 讨论(0)
提交回复
热议问题