2013-01-04 13 views
13

Hier ist das Problem auf hohem Niveau: Ich habe einen Flash-Video-Player für 16: 9-Video. Die Gesamthöhe des Players wird vom Video selbst plus einigen Steuerelementen eingenommen. Die Höhe der Kontrollen ist unabhängig von der Höhe des gesamten Spielers konstant. Also möchte ich den Player mit CSS skalieren lassen, so dass die Höhe die Gleichung erfüllt: y = rx + C, wobei x die Breite, r das Verhältnis von Videohöhe zu Videobreite und C die Konstante ist Höhe der Kontrollen.Skalierung Objektelement Höhe proportional zur Breite + Konstante mit CSS

Ich habe etwas herausgearbeitet, die in Webkit funktioniert, aber scheinbar nichts anderes:

#video-container { 
    height: 0px; 
    padding-bottom: 56%; /* proportional scaling */ 
    position:relative; 
    width: 100%; 
} 
#video-container object { 
    height: 100%; 
    padding-bottom: 50px; /* control height */ 
    position: absolute; 
    width: 100%; 
} 

In Webkit, der Flash-Film skaliert vertikal den unteren Polsterbereich zu füllen. In jedem anderen Browser ist das untere Padding jedoch nur ein leerer Platz.

Gibt es eine CSS-Lösung zur Skalierung der Höhe eines Elements proportional zur Breite plus einem konstanten Wert? Es gibt viele Fragen zu SO bezüglich der proportionalen Skalierung, aber der konstante Teil ist der schwierige Teil.

+0

Ich glaube nicht, dass möglich ist, nur mit CSS. Geben Sie uns genauere Informationen darüber, warum Sie dies tun möchten. Was versuchst du damit zu erreichen? Und das Bereitstellen Ihres HTML wird auch helfen. –

+0

Wenn ich nicht auf meinem Telefon wäre, würde ich eine tatsächliche Antwort liefern, aber Sie würden JS für dieses Spitzenwerk peinlich in allen Browsern benötigen. Sie können auf diese Weise direkt auf CSS-Eigenschaften zugreifen und andere mit Bedingungen bearbeiten, die sie betreffen. – casraf

Antwort

19

Here is a fiddle that uses slightly different numbers, but is set up to illustrate eine "proportional zur Breite plus etwas konstanter Wert" Idee für die height. Es basiert auf Ihrer ursprünglichen Idee, mit einem Tweak. Es schien gut in IE8 +, Chrome, Firefox zu testen.

Wesentlichen der Code, den Sie benötigen würde, ist dies wahrscheinlich:

#video-container { 
    position:relative; 
    width: 100%; 
    height: 0px; 
    padding-bottom: 56%; /* proportional scaling */ 
    padding-top: 50px; /* add constant */ 
} 

#video-container object { 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    top: 0; 
} 
+0

Ich hatte eine andere Lösung in Arbeit, aber das ist viel einfacher, danke. Scheint jetzt so offensichtlich. – alexp

+0

+1, hat mir sehr geholfen. – Utopik

Verwandte Themen