Есть ли какой-нибудь известный способ заставить стиль CSS background-size
работать в IE?
:hover
я хочу, чтобы размер фона изменился на полную ширину 300 пикселей (background-size: auto), чтобы создать иллюзию масштабирования
Есть ли какой-нибудь известный способ заставить стиль CSS background-size
работать в IE?
:hover
я хочу, чтобы размер фона изменился на полную ширину 300 пикселей (background-size: auto), чтобы создать иллюзию масштабирования
Ответы:
Немного поздно, но это также может быть полезно. Для IE 5.5+ есть фильтр IE, который вы можете применить:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='images/logo.gif',
sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='images/logo.gif',
sizingMethod='scale')";
Однако это масштабирует все изображение, чтобы оно поместилось в выделенной области, поэтому, если вы используете спрайт, это может вызвать проблемы.
Спецификация: фильтр AlphaImageLoader @microsoft
position: relative; z-index: 999
для ввода, кнопку, внутри таких
Я создал jquery.backgroundSize.js : 1.5K плагин jquery, который можно использовать как запасной вариант IE8 для значений «cover» и «содержать». Посмотрите на демо .
background-position: fixed
.
Благодаря этому посту, мой полный CSS для кросс-браузерного счастья:
<style>
.backgroundpic {
background-image: url('img/home.jpg');
background-size: cover;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='img/home.jpg',
sizingMethod='scale');
}
</style>
Прошло так много времени с тех пор, как я работал над этим фрагментом кода, но я хотел бы добавить для большей совместимости браузера, я добавил это к своему CSS для большей совместимости браузера:
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
-webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover;
Даже позже, но это тоже может быть полезно. Существует плагин jQuery-backstretch-plugin, который вы можете использовать в качестве полизаполнения для background-size: cover. Я предполагаю, что должно быть возможно (и довольно просто) получить свойство css-background-url с помощью jQuery и передать его плагину jQuery-backstretch. Хорошей практикой будет проверка поддержки background-size с помощью modernizr и использование этого плагина в качестве запасного варианта.
Backstretch-плагин был упомянут на SO здесь . JQuery-backstretch-plugin-site находится здесь .
Аналогичным образом вы можете создать плагин или скрипт jQuery, который заставит работать с размером фона в вашей ситуации (background-size: 100%) и в IE8-. Итак, чтобы ответить на ваш вопрос: Да, есть способ, но у него нет решения «включай и работай» (т.е. вы должны сами написать код).
(отказ от ответственности: я не исследовал плагин backstretch-плагина, но, похоже, он работает так же, как background-size: cover)
Для этого есть хороший polyfill: louisremi / background-size-polyfill
Цитировать документацию:
Загрузите фоныizeize.min.htc на свой веб-сайт вместе с .htaccess, который отправит MIME-тип, необходимый для IE (только для Apache - он встроен в nginx, node и IIS).
Везде, где вы используете background-size в вашем CSS, добавьте ссылку на этот файл.
.selector { background-size: cover; /* The url is relative to the document, not to the css file! */ /* Prefer absolute urls to avoid confusion. */ -ms-behavior: url(/backgroundsize.min.htc); }
contain
и cover
. Он содержит 5.7KB не очень плохо, потому что он будет передавать в один сетевой пакет.
Вы можете использовать этот файл ( https://github.com/louisremi/background-size-polyfill «background-size polyfill») для IE8, который действительно прост в использовании:
.selector {
background-size: cover;
-ms-behavior: url(/backgroundsize.min.htc);
}
Я попытался с помощью следующего скрипта -
.selector {
background-image: url("img/image.jpg");
background-size: 100%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-repeat: no-repeat;
}
Это сработало для меня!