Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSS rules for webkit based browsers

I have the next CSS code:

#mgheader .letters {
  display: inline-block;
  margin-left: 55px;
  margin-top: -45px;
  position: absolute;
}

#mgheader .letters {
  display: inline-block;
  margin-left: 10px;
  position: absolute;
}

Now I want to execute the first just in Google Chrome and Safari, and the second in other browsers.

I tried this, but second code seems to be executing always:

@media screen and (-webkit-min-device-pixel-ratio:0) {
  #mgheader .letters {
    display: inline-block;
    margin-left: 55px;
    margin-top: -45px;
    position: absolute;
  }
}   

#mgheader .letters {
  display: inline-block;
  margin-left: 10px;
  position: absolute;
}

How can I fix that?

like image 814
Draco Avatar asked Mar 21 '13 15:03

Draco


1 Answers

The problem is that you're overriding your webkit styling with the non-webkit styling. Reversing the order should fix this:

#mgheader .letters {
  display: inline-block;
  margin-left: 10px;
  position: absolute;
}

@media screen and (-webkit-min-device-pixel-ratio:0) {
  #mgheader .letters {
    display: inline-block;
    margin-left: 55px;
    margin-top: -45px;
    position: absolute;
  }
}  

You may also want to check that your -webkit-min-device-pixel-ratio fires on all webkit-using devices, but it probably does.

For reference, Cascading Style Sheets are read from top to bottom. The key word is Cascading. If one CSS rule is given before an identical CSS rule, the latter one will take precedence. In your example you were styling specifically to webkit browsers but then overriding it with the general styling rules. Reversing the order means that the webkit styling here will override the general styling (without affecting non-webkit browsers).

like image 130
James Donnelly Avatar answered Sep 22 '22 01:09

James Donnelly