@import styles not working in a media query

2019-01-15 12:23发布

问题:

I am trying to import a style based off a media query but the import is not being triggered If i put styles directly in the media query they are rendered to the page.

Here is a link to the live site http://update.techbasics.ca

Here is my style.css with the media queries and the imports

I am using wordpress if that helps debug.

@import url('base.css');
/******************************************************************
Site Name: Tech Basics
Author: Anders Kitson

Stylesheet: Main Stylesheet

Here's where the magic happens. Here, you'll see we are calling in
the separate media queries. The base mobile goes outside any query
and is called at the beginning, after that we call the rest
of the styles inside media queries.
******************************************************************/
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box; }

/*****************************************************************
BASE CSS
*****************************************************************/

/*****************************************************************
MEDIA QUERIES
*****************************************************************/
@media only screen and (min-width: 480px) {
    @import url('min480.css');
  }
@media only screen and (min-width: 600px) {
     @import url('min600.css');
  }
 @media only screen and (min-width: 768px) {
  body {
    background: purple; } }
@media only screen and (min-width: 992px) {
  body {
    background: orange; } }
@media only screen and (min-width: 1382px) {
  body {
    background: url("../img/noisy_grid.png"); } }
/* iPhone 4 ----------- */
@media only screen and (-webkit-min-device-pixel-ratio : 1.5), only screen and (min-device-pixel-ratio : 1.5) {
  @import url('base.css'); 
}

and here is min600.css (located in the same directory as the style.css file)

header {
  text-align: left; }
  body{
    background: green;
  }

回答1:

try that kind of code

@import url("/inc/Styles/full.css") (min-width: 940px);


回答2:

Here is the solution:

/* Everything 700px and lower */
@import url("./700.css") only screen and (max-width: 700px);


回答3:

Did you use like this?

You can write:

@import url('path.css') (screen and min/max-width: 600px);

You can add path as you use @import

or like:

@import url(style.css) (screen and min-width:600px);



回答4:

MDN states that @import cannot be nested and must come before all other declarations except @charset.

The syntax is as follows:

@import url;
@import url list-of-media-queries;

https://developer.mozilla.org/en-US/docs/Web/CSS/@import



回答5:

It works fine, try to resize your window and you will see the colors changing As I can see in my main window on my screen (1920x1080) the CSS rule

body {
background: url("../img/noisy_grid.png");
}

Located in style.css , line 37-38 fires first, that's why you can't see the orange color. Try re arrange your css rules



回答6:

I had the same problem and after searching without finding a good solution, I ended up moving the media queries to the imported css instead. And in fact all the style sheets are downloaded even if they are not applied anyway (see CSS media queries).

Then what's the point of having separate files? For me, it keeps things organized. Using your example:

@import url(min480.css); /* min-width: 480px */
@import url(min600.css); /* min-width: 600px */

Then on the min600.css:

/* min600.css */
@media only screen and (min-width: 600px) {
   header {
      text-align: left; 
   }
   body {
      background: green;
   }
}