Div с прокруткой и контентом с абсолютными позициями

У меня есть "div" со стилем: overflow-y: scroll; overflow-x: auto; Я пытаюсь динамически добавить изображение внутри этого "div" с абсолютным или относительным положением. Все выглядит нормально, пока пользователь не попытается прокрутить содержимое «div»: изображение остается в фиксированном положении относительно окна браузера. Эта проблема, похоже, только в IE(7), в firefox все нормально. Есть ли решения для этого?

EDIT (в ответ на вопросы, заданные ниже): я позиционирую элемент, потому что мне нужно, чтобы он отображался перед другим элементом.


person Community    schedule 25.01.2009    source источник
comment
Не могли бы вы опубликовать образец HTML и CSS, который вы используете?   -  person DavGarcia    schedule 25.01.2009
comment
Однако у меня такая же проблема в Chrome 23.   -  person RipperDoc    schedule 29.08.2012


Ответы (8)


Я не знаю, является ли это ошибкой или «фичей» в IE, но я уже сталкивался с тем же самым раньше. К счастью, есть простое решение. Просто добавьте «position:relative» к <div> с прокручиваемым содержимым.

person Prestaul    schedule 25.01.2009
comment
Я потратил много времени, пытаясь решить эту проблему! Спасибо. Мне тоже помогло! - person Nolesh; 08.02.2014
comment
OMG, потратив много времени, я нашел это! - person Leandro Hoffmann; 26.05.2015
comment
не фиксирует заголовок? - person jsduniya; 07.06.2016

Оберните все в содержащий div, который расположен относительно на странице:

<div style="display:block; position:relative; width:200px; height:200px; margin:0; padding:0;">
    <br />
    <img src="_foo_.gif" style="position:absolute; top:0; left:0; z-index:100;" />
    <br />
    <div style="overflow-x:auto; overflow-y:scroll; width:200px; height:200px; z-index:10; display:block; position:relative;">
        <br />[scrolling content]<br />
    </div>
    <br />
</div>
person inkdeep    schedule 26.01.2009

Есть ли особая причина, по которой вам нужно установить позицию для изображения? Он отлично работает в IE7 без установки позиции.

<div style="overflow-x:auto; overflow-y:scroll; width:200px; height:200px;"><img src=xxx.gif" width="200" height="250" /></div>
person Jared    schedule 25.01.2009

Попробуйте float:left или float:right с margin

У меня такая же проблема в хроме с position:absolute в overflow-y: auto;. Дивы фиксировались в своих позициях во время прокрутки.

И простое решение — использовать float.

мой старый код был-

position:absolute; right:10px;

и я заменил на следующее, и это сработало:

float:right; margin-right:10px;
person Avisek Chakraborty    schedule 18.10.2012

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

person Community    schedule 26.01.2009

Вещи, которые я усвоил на собственном горьком опыте: для IE6/IE7 может потребоваться, чтобы изображение было последним элементом DOM в содержащем DIV, чтобы оно отображалось поверх прокручиваемого DIV.

person inkdeep    schedule 26.01.2009

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

Допустим, у вас есть два элемента A и B, и вы хотите расположить B перед A. Это будет выглядеть примерно так:

<div id="A" style="position:relative; width:300px; height=240px;">Element A</div>

<div id="B" style="position:relative; width:300px; height=240px; top:-240px;">Element B</div>

В зависимости от содержимого вам, возможно, придется добавить дополнительные стили, такие как «display:block;» и т. д. Хорошим ресурсом для них является w3schools.com.

Чтобы получить хороший учебник по позиционированию DIV с помощью CSS, перейдите по ссылке:

http://www.barelyfitz.com/screencast/html-training/css/positioning/

Ваше здоровье

person Community    schedule 26.01.2009

Объявление position: absolute; означает, что элемент будет отображаться относительно верхнего левого угла окна просмотра. Использование вместо этого relative означает, что значения, которые вы используете для left и top, будут добавлены туда, где обычно был бы img.

person geowa4    schedule 25.01.2009
comment
Фиксированная позиция относится к области просмотра, абсолютная позиция относится к родительскому элементу. - person Sjoerd; 17.02.2011
comment
Чтобы быть более точным, абсолютная позиция относится к ближайшему позиционированному родителю (например, с position: relative). - person Doc Davluz; 22.08.2012