#internet-explorer #css #scale
#internet-explorer #css #масштабирование
Вопрос:
Я хотел бы использовать свойство CSS3 transform:scale.
div
{
transform: scale(0.5,0.5);
}
Есть ли способ имитировать это в Internet Explorer 8 и ниже?
Может быть что-то с filter
или решение Javascript?
Я искал в Интернете без какого-либо результата.
Большое спасибо, Винсент
Комментарии:
1. задавая подобные вопросы, пожалуйста, укажите версии IE, о которых вы спрашиваете, потому что это имеет очень большое значение для ответа.
Ответ №1:
IE9 поддерживает преобразование:
-ms-transform: scale(0.5,0.5);
Для других версий IE существует сложный синтаксис. Что-то вроде этого:
filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand',
M11=1.5320888862379554, M12=-1.2855752193730787,
M21=1.2855752193730796, M22=1.5320888862379558);
Смотрите здесь для получения дополнительной информации.
Комментарии:
1. Вы также можете попробовать конвертер CSS3 Transform to Matrix для одноразовых преобразований в формат IE.
2. -ms-transform: масштабирование (0,5); должно быть достаточно для IE9 для постоянного масштабирования.
Ответ №2:
Нет, IE8 и более ранние версии не поддерживают стандартный transform
стиль. Тем не менее, IE9 поддерживает это.
Есть решения, которые вы могли бы попробовать, используя filter
стиль, но они будут запутанными.
Но для простого случая, который вы описываете в вопросе (в основном простое уменьшение масштаба), вы могли бы использовать свойство IE-proprietary zoom
.
Поскольку он нестандартный, наиболее часто используется zoom
with zoom:1
, который используется для исправления ряда сбоев в макете IE (особенно в IE6 и IE7). Но он также выполняет фактическое масштабирование, и вы можете использовать его zoom:0.5
для достижения желаемого эффекта.
Преимущество использования zoom
заключается в том, что оно работает в IE, как и любое другое обычное свойство CSS (у filter
альтернативы есть некоторые серьезные особенности рендеринга, о которых вам нужно знать).
Единственным недостатком использования zoom
является то, что вам нужно отключить его в IE9 или более поздней версии, иначе это будет взаимодействовать с вашим transform
стилем и иметь некоторые нежелательные эффекты. Я не из тех, кто обычно поддерживает использование CSS-хаков, но вы можете использовать /9
хак (описанный здесь ), чтобы он влиял только на IE8 и более ранние версии, то есть вы можете указать как the transform
, так и the zoom
в одной и той же таблице стилей, например:
div {
transform: scale(0.5,0.5);
zoom: 0.59;
}
В противном случае вам нужно будет использовать условные комментарии, чтобы определить, следует ли его использовать.
Очевидно, что если вы хотите сделать что-то более сложное, чем простая пропорциональная шкала, это zoom
не подойдет, но для простого случая, подобного приведенному в вашем вопросе, это будет идеально.
Комментарии:
1. Спасибо за ваш интересный ответ. К сожалению, масштабирование, похоже, масштабирует только текст. А не размеры моего div.
2. да, я думаю, это зависит от того, чего вам действительно нужно достичь, будет ли
zoom
это подходящим.3. Спасибо за совет по взлому / 9. У меня было какое-то странное поведение в IE9 и 10, потому что у меня было масштабирование в том же стиле, что и для IE8.
4. 1. Надеюсь, это не помешает Chrome или Firefox указать взлом ie
Ответ №3:
http://msdn.microsoft.com/en-us/library/ms533014 (v= против 85).aspx
хотя фильтры в IE не просты в использовании, и они не всегда сочетаются с другими эффектами css….
но IE 9 поддерживает масштабирование https://developer.mozilla.org/en/CSS/transform
Ответ №4:
Попробуйте это: https://github.com/pbakaus/transformie