Calc() разбивает IE 9 при установке на фоновое положение

Я использую calc() для размещения изображения 10px справа от реагирующего контейнера. У меня есть объявление вроде:

background-position: calc(100% - 10px) 6px;

Всякий раз, когда я пытаюсь:

  • загружать CSS на страницу обычно или
  • введите его через Инструменты разработчика

IE 9 полностью сработает. Никаких ошибок в Инструментах разработчика, просто прямо к сбою. Это работает во всех других (будущих) браузерах, но моя цель - также поддерживать IE 9.

calc(), похоже, отлично работает с другими свойствами, такими как margin и width. Вот полный след CSS связанного элемента:

enter image description here

Здесь он установлен на 98%, но когда я использую calc на background-position-x (как показано выше), IE 9 сработает.

Спасибо!

Ответ 1

В качестве альтернативы calc() вы можете использовать ключевые слова top/right/bottom/left, чтобы указать разные ребра (а не по умолчанию верхние левые), из которых можно смещать свой фон содержание.

background-position: right 10px top 6px; /* 10px from the right, 6px from the top */

http://www.w3.org/TR/css3-background/#the-background-position

Если указаны два значения... первый представляет собой горизонтальное положение... второе представляет вертикаль.... Значения представляют смещение левого верхнего угла фонового изображения в верхнем левом углу области фонового позиционирования.

Если указаны четыре значения, каждый из них представляет смещение и ему должно предшествовать ключевое слово, которое указывает, с какого края дается смещение.

Если вы предпочитаете calc(), но хотите предотвратить отказ старых браузеров, вы можете определить резервное значение (calc() не поддерживается для background-position в IE9 -).

background-position-x: 98%;
background-position-y: 6px;
background-position: calc(100% - 10px) 6px; 

Ответ 2

Вид выстрела в темноте. Но, возможно, попробуйте:

background-position: expression(100% - 10px) 6px;

FYI: Я не очень опытен с выражением(). Однако я использовал его в прошлом для достижения аналогичной цели в мобильном браузере. Возможно, это сработает для вас в IE.

Ответ 4

Вместо использования calc или выражения, то, что сработало для меня, использует абсолютно позиционированные элементы и растягивает изображения, используя левые и правые свойства.

.bg_img{
  position:absolute;
  top:0;
  bottom:0;
  left:-10px;
  right:-10px;
}

В большинстве случаев отрицательные пиксели не нужны, но для меня это то, чего я пытался достичь с помощью calc().

Надеюсь, это поможет кому-то!