Rolf B: Frage zum Wiki-Artikel „iframe“

Beitrag lesen

problematische Seite

Hallo Herbert,

wenn du uns schon Siezt, dann schreib die Anrede „Ihr“ wenigstens groß 😉. Beim „Du“ darf man heutzutage klein schreiben (ich tu das nicht), und das Du ist hier im Forum üblich.

Zur Frage: Es ist ebenfalls üblich, dass die Dimensionsattribute der HTML Elemente für eingebetteten Inhalt (img, iframe, etc) in Pixeln angegeben werden. Dass man da Prozente verwenden darf durfte, hatte ich gar nicht mehr auf dem Schirm. Das ist ein HTML 4 Relikt, in der dortigen Spec stand %Length als Datentyp für width und height.

Wichtig ist: width="1024px" ist trotzdem falsch. Der Attributwert darf nur eine Zahl sein. Die Einheit px wird vorausgesetzt und nicht angegeben. Richtig ist width="1024". Der Browser akzeptiert 1024px scheinbar trotzdem, aber nur, weil er beim ersten Zeichen, das keine Ziffer (oder ein Prozentzeichen) ist, aufhört zu lesen. Dass er Einheiten nicht beachtet, merkst Du, wenn Du statt 500px 500em hinschreibst. Das Ergebnis bleibt unverändert. Aus historischen Gründen wird nur das % beachtet.

In der HTML 5 Spec ist es etwas merkwürdig. Einerseits steht da in §4.7.20, dass width und height als Dimensionsattribute vorzeichenlose Integers sein müssen. Andererseits hat img eine riesige Beschreibung dessen, was beim Update eines srcset passieren muss, da wird ebenfalls auf das width Attribut des img Elements Bezug genommen, und da steht dann, dass auch ein Prozentwert erlaubt ist. Yikes!

Wie auch immer, zumindest Chrome akzeptiert beim iframe eine width-Angabe in % (noch?), aber der HTML Validator des W3C weist es als falsch zurück. Man sollte es unterlassen.

Es wird auch kein style= akzeptiert und schon gar kein class= oder id=.

Da hast Du Dich ins Bockshorn jagen lassen. Der iframe unterstützt die 14 Universalattribute. Die werden aber nur anzeigt, wenn man auf den Link klickt (der eher ein Button sein sollte, aber auf Mediawiki haben wir nicht so viel Einfluss). class, id und style sind immer verfügbar.

Im Style-Attribut (oder in einer CSS Regel) kannst Du die Breite in allen gewünschten Einheiten angeben, und hier musst Du auch eine Einheit angeben. width: 1024; im Style ist falsch und würde ignoriert. Du kannst im Style auch rechnen (mit calc()), Min/Max-Werte angeben (min(), max(), clamp()) oder custom attributes (salopp CSS Variablen genannt) verwenden.

Wenn Du width als Attribut und als CSS Eigenschaft angibst, hat das CSS übrigens Vorrang.

Rolf

--
sumpsi - posui - obstruxi