У меня есть следующая проблема в Internet Explorer 9+, которая действительно странная. Код создает странные результаты в этих браузерах и отлично работает в Chrome/Safari, Firefox и Opera.
HTML:
<div class="outer">
<div class="inner"></div>
</div>
<div class="absolute"></div>
И CSS:
.outer {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: scroll;
background: #ECD078;
}
.inner {
width: 200px;
height: 2000px;
margin: 0 auto;
background: #D95B43;
border-bottom: 20px solid #53777A;
}
.absolute {
width: 10px;
height: 50px;
background: #53777A;
position: absolute;
top: 0;
left: 50%;
margin: 0 0 0 -110px;
}
Внешний контейнер имеет переполнение: авто и положение: фиксировано. Внутренний контейнер имеет заданную ширину и марку: 0 auto, чтобы поддерживать ее в центре. Все работает отлично во всех браузерах, кроме IE (все версии). В IE внутренний контейнер не центрируется правильно и перемещает несколько пикселей влево.
Пример скрипта имеет абсолютный контейнер, который расположен так, что он сидит рядом с внутренним контейнером, чтобы проиллюстрировать проблему в IE. Когда я удаляю переполнение: автоматически из внешнего контейнера, он отлично работает, но мне нужно, поскольку он должен быть прокручиваемым. Любые предложения, почему это происходит и как это исправить? Заранее спасибо!
Он считает, что это происходит из-за полос прокрутки, которые появляются в браузерах Windows, но не в браузерах OSX. Блок .inner
центрирован по внутренней ширине .outer
, что составляет всю ширину окна минус полосы прокрутки. В то время как .absolute
центрируется по всей ширине окна.
Чтобы проверить, добавьте в свой скрипт следующий CSS, который заставит полосу прокрутки появиться в Chrome на OSX:
::-webkit-scrollbar {
-webkit-appearance: none;
}
::-webkit-scrollbar:vertical {
width: 11px;
background-color: red;
}
Вы получите тот же результат, что и в Windows. Блок .inner
всегда правильно центрирован, с полосами прокрутки или без.
.absolute
способом выравнивания блоков является перемещение блока .outer
блоке .outer
. Таким образом, как .inner
и .absolute
расположены относительно одного и того же родителя.
.outer
, то, как я сказал, она всегда правильно центрирована.