CSSOM icon indicating copy to clipboard operation
CSSOM copied to clipboard

@media rules support

Open NV opened this issue 15 years ago • 8 comments

@media handheld, only screen and (max-device-width: 480px) {
    body {overflow: auto}
}

Spec. WebKit implementation: CSSMediaRule.cpp.

NV avatar Oct 26 '10 15:10 NV

3 of 4 @media tests are passed. Fails on crazy case: @mediaall {}.

NV avatar Nov 01 '10 23:11 NV

@media only works when it's the first character of the input string. If you put something else before it, it breaks. In my app, I get an exception: unexpected }.

I tried testing the following with qunit:

input: "span {display: inline-block !important; vertical-align: middle !important}\n@media/**/print {*{background:#fff}}",

Test doesn't fail, but is not even executed? Strange.


An anecdote aside: The following snippet (nothing really fancy) causes all CSSOM, JSCSSP and Sheet.js to break or not behave properly.

.app {}

.test { color: blue }

/****************************************************************
*  Style for small screens
****************************************************************/

@media handheld, only screen and (max-device-width: 480px) {
    body {overflow: auto}
}

table td, table th { border: 0 }

frank06 avatar Nov 19 '10 15:11 frank06

Fixed in e7ede8f7371b764e9eadbebc9205c2e0a6bc0bc0. Thanks for bug report!

Test doesn't fail, but is not even executed? Strange.

Seems like a QUnit bug.

The following snippet (nothing really fancy) causes all CSSOM, JSCSSP and Sheet.js to break or not behave properly.

Looks good now.

NV avatar Nov 19 '10 17:11 NV

Nice, thanks!

frank06 avatar Nov 19 '10 17:11 frank06

Also, it should allow nested @media rules. Not sure if it's part of the spec, but it's used for Sass source maps for debug info in this way:

@media screen and (min-width: 35.62em) { @media -sass-debug-info{filename{font-family:file\:\/\/\/Users\/alejandro\/Development\/myproject\/scss\/app-blocks\/header\.scss}line{font-family:\000032}}
  .header { height: auto; } }

Currently CSSOM.js fails at it throwing and error, but works fine when removing the inner @media.

/Users/alejandro/Development/myproject/node_modules/ucss/node_modules/cssom/lib/parse.js:57
        throw error;
              ^
Error: Unexpected } (line 170, char 29)

I'm using CSSOM.js indirectly using operasoftware/uCSS.

This would be greatly appreciated by the Sass community.

alejandroiglesias avatar Apr 19 '13 17:04 alejandroiglesias

Yep, these @media rules break CSS parsing while using juice .

vectart avatar Aug 26 '14 12:08 vectart

I'm getting errors parsing CSS with nested @media rules as well.

@media rules can be nested in CSS3, but it wasn't valid in CSS2.1. http://stackoverflow.com/a/11747166/247989

Rowno avatar Sep 17 '14 03:09 Rowno

Hello @vectart, me from 2014. Surprising that I've faced the same issue 5 years later. Well, the issue is 9 years old though.

dyatko avatar Nov 12 '19 15:11 dyatko