@import styles not working in a media query

2019-01-15 12:51发布

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;
  }

6条回答
趁早两清
2楼-- · 2019-01-15 13:07

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);

查看更多
forever°为你锁心
3楼-- · 2019-01-15 13:12

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

查看更多
淡お忘
4楼-- · 2019-01-15 13:14

try that kind of code

@import url("/inc/Styles/full.css") (min-width: 940px);
查看更多
干净又极端
5楼-- · 2019-01-15 13:14

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楼-- · 2019-01-15 13:22

Here is the solution:

/* Everything 700px and lower */
@import url("./700.css") only screen and (max-width: 700px);
查看更多
淡お忘
7楼-- · 2019-01-15 13:22

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;
   }
}
查看更多
登录 后发表回答