Kategorien
Frontend: HTML5, CSS3, jQuery

Verschachtelung von @media / Media Queries

Update, Februar 2016: Ab Safari 6.1 (OS X) wurde das Verhalten verändert und auch hier wird nun die zweite content-Deklaration („at media in at media“) angezeigt. IE11 hat noch das gleiche Verhalten wie IE9 und IE10 inne und zeigt nur das erste content. Microsofts Edge widerum macht es nach CSS3 und stellt das zweite content dar.

Vor ein paar Wochen stolperte ich über die verschiedenen Interpretationen von verschachtelten @media-Anweisungen. Die jeweils aktuellen Versionen von Safari auf OS X (6.0.3) und iOS (6.0) sowie IE9 und IE10 interpretierten den nachfolgenden Code etwas anders als Firefox (20.0) und Chrome (26.0.1410.65):

@media screen {
  .wrapper {
    dispay: block;
  }
  .wrapper:before {
    content:"at media";
    display: block;
  }
  @media screen and (min-width: 2em) {
    .wrapper:before {
      content:"at media screen in at media";
    }
  }
}
Check out this Pen!

Die Safaris nämlich schreiben den ersten content („at media“) auf die Seite, Firefox und Chrome den zweiten („at media screen in at media“). Beim Internet Explorer sieht es so aus: IE9 und IE10 zeigen den ersten content. Mich interessierte wieso das so ist und was richtig ist: die Safaris verhalten sich nach dem CSS-2.1-Regelwerk, das kein verschachteln von @media-Regeln erlaubt:

At-rules inside @media are invalid in CSS2.1.

Die CSS-3-Spezifikation hingegen, wonach sich Firefox und Chrome richten, erlaubt es.

This means that when multiple conditional group rules are nested, a rule inside of both of them applies only when all of the rules‘ conditions are true.

Detaillierter erklärt hat es Daniel Tan bei Stack Overflow:

Now, the actual issue here is that nested @media rules are not valid in CSS2.1 because you’re not allowed to nest any at-rules within @media rules. However, things seem quite different in CSS3. Namely, the CSS3 Conditional Rules module states very clearly that @media rules can be nested, even providing an example:

Natürlich kann man sich fragen, wieso man die beiden @media-Regeln überhaupt verschachtelt. Das kam daher, dass ich mit der Contao-Erweiterung theme_plus ein Stylesheet einband und diesem eine @media-Anweisung auf den Weg gab. Dazu dann noch das Media Query im Stylesheet selbst und schon stolperte ich über das oben genannte Problem.

Einen wirklichen Rat kann ich euch nicht auf den Weg geben. Achtet darauf, ob und welche @media-Anweisungen ihr verschachtelt. Ich habe zum Beispiel die für das gesamte Dokument entfernt, da ich sie im Stylesheet nicht benötigte – und auch im ersten Moment nicht mitbekam, dass sie mitgegeben wird. Wenn ihr eure Stylesheets nur für eine Geräteklasse verwenden lassen wollt, könnt ihr dies auch im <link /> angeben: <link media="screen" />. Oder ihr schreibt eure Media Queries, wenn sie in einem @media-Screen-Selektor stehen nur folgendermaßen: (max-width: 40em) { color: #b4d455; }

Kategorien
Frontend: HTML5, CSS3, jQuery Webdesign/Gestaltung

Bild-Formularelemente: „Probleme“ im Firefox 4 durch HTML5

Abbildung einer Schaltfäche

Wie im vurve-Blog steht, gibt es – durch eine Anpassung in der HTML5-Spezifikation – im aktuellen Firefox 4 ein Problem mit  <input type="image" />-Feldern und JavaScripten, die auf onSubmit und onClick reagieren. Firefox sendet nämlich nicht, wenn vorhanden, den value-Wert des Feldes, sondern die x- und y-Koordinaten auf die geklickt wurde. Ich kann ehrlicherweise nicht genau sagen, ob das vorher anders war, halte es aber auf jeden Fall für erwähnenswert.

Schnelle Abhilfe schafft laut vurve das umändern des Typs von image auf submit und ein entsprechendes CSS-Styling mit einer Klasse. Nun denn. Das Problem wird in Zukunft wohl auch Chrome, Safari und sogar den IE treffen. (Firefox 5 soll übrigens nächste Woche schon veröffentlicht werden.)

Im übrigen wirds hier jetzt öfter solche Beiträge geben, womit auch ein Konzeptwechsel im Blog vonstatten geht, über den ich mich demnächst nochmal auslassen werde. :)

Kategorien
Browser

Firefox-Erweiterung ScreenGrab

Eine richtig nützliche Firefox-Erweiterung stellt ScreenGrab dar. Mit dieser Erweiterung sind Screenshots des Browserfensters und des Browserviewports möglich. Das ist nichts neues, das geht auch manuell.

Wirklich punkten kann die Erweiterung aber deshalb, dass sie sogar Screenshots der kompletten Seite machen kann, auch wenn diese 7× gescrollt werden müsste.

Zu finden ist die Funktion nach der Installation (Firefox neu starten nicht vergessenb) dann direkt nach einen Mausklick mit der rechten Maustaste in das Dokument:

Die Bilder werden im PNG-Format gespeichert. Seht selbst.

Nötig sind ein aktueller Firefox (> 1.0+, > 1.5b) und Java.