#html #css #flash #aspect-ratio
#HTML #css #flash #соотношение сторон
Вопрос:
Есть ли способ сохранить соотношение сторон в адаптивном flash SWFObject?
SWFObject автоматически изменяет размер сцены в соответствии с размером экрана, если экран меньше DOM-элемента. Это может вызвать некоторые визуальные проблемы, если беспорядочный флэш-файл содержит элементы, которые не должны быть видны за пределами сцены (см. Здесь ). Чтобы предотвратить это, я передаю масштаб параметра со значением exactfit.(подробнее читайте здесь)
Однако теперь flash потеряет соотношение сторон и станет искаженным. Если элемент dom сохранит это соотношение, флэш-память не будет искажаться.
Есть ли способ заставить элемент object сохранить его соотношение сторон в dom. Решения CSS были бы хороши!
Вот пример того, как это происходит сейчас (обратите внимание, что оно выровнено по горизонтали и вертикали и должно оставаться таким):
http://jsfiddle.net/me2loveit2/ejbLp/13/
HTML
<div class="overlay">
<div class="helper1"></div>
<div class="helper">
<object class="swf" type="application/x-shockwave-flash" data="http://philipp.werminghausen.us/testing/twincle_test3.swf" id="replace" style="visibility: visible;">
<param name="usemap" value="#maptest">
<param name="wmode" value="transparent">
<param name="scale" value="exactfit">
</object>
</div>
</div>
CSS
.helper1 {
height:50%;
width:100%;
margin-bottom:-240px;
min-height: 240px;
}
.overlay {
width: 100%;
height: 100%;
position: fixed;
top: 0px;
left: 0px;
cursor: pointer;
background-color: rgba(0, 0, 0, 0.5);
}
.helper {
max-width: 550px;
max-height: 480px;
height:100%;
width:100%;
margin: 0 auto;
}
.swf {
max-width: 550px;
max-height: 480px;
width: 100%;
height: 100%;
background-color:black;
}
Комментарии:
1. Попробуйте использовать vh и vw. Я немного поиграл и добился сохранения соотношения сторон. Вот что это такое mdn.beonex.com/en/CSS/length.html а вот и поддержка браузера caniuse.com/viewport-units
2. Это выглядит интересно, но я должен поддерживать IE8
3. В любом случае мне было любопытно, я реализовал это, и это работает, с парой новых ошибок, связанных с выравниванием. но соотношение исправлено! Хотелось бы, чтобы это было совместимо с IE8. вот как это looks:jsfiddle.net/me2loveit2/ejbLp/18
4. Я считаю, что это самый простой способ. Другие предполагают использование JS / jQuery. [оффтопик] Не поддерживает IE8. Поддержка старых браузеров — это атавизм, теперь браузеры — это полнофункциональная программа, и ответственность за ее обновление лежит на пользователе. Как, например, обновление всех других программ — FileZilla, Sublime, Atom или игровых патчей. Хотите использовать новые функции — заставьте пользователей устанавливать новое программное обеспечение [/ offtopic]
5. К сожалению, у меня нет выбора в отношении IE8. Я подумываю об использовании этого в любом случае и создании резервного решения js для неподдерживаемых браузеров. Мне удалось исправить еще несколько ошибок: jsfiddle.net/me2loveit2/ejbLp/23 Единственная оставшаяся проблема заключается в том, что он по-прежнему выглядит в соответствии с соотношением сторон, когда ширина или высота невелики. Есть идеи по этому поводу?