CSS слева: -50%, заставляя IE7 игнорировать ширину - PullRequest
7 голосов
/ 19 июля 2011

A полностью рабочий пример доступен здесь на jsFiddle настоятельно рекомендую вам посмотреть здесь, поскольку CSS довольно большой, и я не хотел вставлять его сюда (что затрудняет чтение моего вопроса).

У меня горизонтальноцентрированная вкладка на моем сайте, идея в том, что элементы UL / LI центрированы на странице, и у меня есть решение, которое до недавнего времени (казалось) работало на всех конфигурациях браузера.

HTML для этогона самом деле довольно просто:

<div id="tabContainer">
    <ul>
        <li style="width: 190px;"><span><a href="#">Tab One with more text</a></span></li>
        <li style="width: 190px;"><span><a href="#">Tab Two</a></span></li>
        <li style="width: 190px;"><span><a href="#">Tab Three is wide</a></span></li>
    </ul>
</div>
  • Каждая <li> является вкладкой, она имеет левый отступ для левого закругленного элемента табуляции.
  • Каждый <span> имеет правый отступ для правого закругленного табуляции.
  • Наконец, <a>, как правило, заполняет остаток, делая для большой цели клика.
  • Каждый элемент вручную стилизован с помощью width: 190px, который поддерживает одинаковую ширину (для хорошего визуального взглядаЭто настраивается кодом сайта, поэтому он имеет вид style против class.

CSS:

  • CSSработает с простой концепцией, <ul> смещен на 50% вправо, а <li> смещен на 50% влево (left: -50%;), чтобы они всегда были в центре главного контейнера.
  • вкладки немного перекрываются с использованием отрицательного поля и z-индекса, так что угловые части крест-накрест (сделано на фоновом изображении, которое здесь не важно)

Проблема

IE7 решает, что он не будет слушать явное style="width: 190px", даже если к нему добавлено !important, однако, это, кажется, происходит только тогда, когда left: -50% присутствует в элементе <li>.при удалении этого стиля вкладки сдвигаются вправо (неправильное расположение, но правильная фиксированная ширина).

Мне кажется, что это не связано , так как left: -50% ничего не заставит элементы столкнуться, заставив их перейти на минимальную ширину.

Эта установка работает правильнои проверено в:

  • IE8
  • IE9
  • FF3.6
  • FF5
  • Chrome Stable (v13) *
  • Chrome Beta (v14) *
  • Safari 3

* По состоянию на 18 июля 2011 г.


Итак, что может бытьвызывая это?Почему это происходит?Как я могу это исправить?Я перепробовал все виды твиков и не могу заставить его подчиняться ширине ...


Изображение, чтобы вы могли ВИДЕТЬ проблему рядом:

Задача http://img715.imageshack.us/img715/3686/ie7centertabsproblem.png

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Я предлагаю поставить style="min-width:190px; max-width:190px;" вместо style="width:190px;". Он отлично работает для меня в режиме документа / браузера IE7.

0 голосов
/ 20 июля 2011

IE 7, кто все равно его использует?!?

Вы пытаетесь использовать em вместо пикселей, здесь есть хороший конвертер em: http://pxtoem.com/

...