Позиция: абсолютная;внутри динамическая позиция: относительная;элемент - PullRequest
0 голосов
/ 27 июня 2011

Это ошибка IE7:

У меня есть кусок стола, который я нажимаю на другой <tbody>. Хорошо, проблема в том, что внутри клеток у меня есть позиция: относительная; div и внутри этого div у меня есть несколько других position:absolute; div.

Дело в том, что они отображаются так, как если бы родительский div не был позицией: относительный, то есть полностью в левом верхнем углу экрана. ПОЧЕМУ?!?!

В ff, chrome все работает нормально, но в IE7 я получаю эти надоедливые вещи. Я пытался поместить hasLayout везде, но он просто не работает.

Вот что у меня есть:

<table>
    <thead></thead>
    <tbody id="mtbody">
    </tbody>
</table>

И это то, что я получаю и нажимаю на «mtbody» (образец):

<table id="testando">
<tr>
        <td hasLayout="true" class="uhr sl" colspan="7" style="border-bottom: dashed 1px #dddddd; background-color: #eeffee;">
            <div style="overflow: hidden;" class="holdU" hasLayout="true" betriebsId="83113" betriebsName="2nd Level">
                <div hasLayout="true" class="uhr filled0sl" style="width: 679px; left: 0px;">
                </div>


                    <div hasLayout="true" class="border" style="left: 96">
....

Таким образом, класс "holdU" - это позиция: относительная, а классы "uhr" - это позиция: абсолютная, и они находятся прямо сейчас в моем верхнем левом углу, что-то вроде невидимого.

Как я могу это исправить?

UPDATE:

Так что в основном это ожидаемый результат: http://jsfiddle.net/kgT6E/ (от DanielB). Но я этого не понимаю. Представьте, что этот зеленый квадрат теперь находится в 100px от границ, но вместо того, чтобы оборачивать красные квадраты, они остаются в верхнем левом углу, поскольку позиция: относительная от зеленого квадрата не оказывает никакого влияния.

Это код, который я использую для загрузки вещей в таблицу:

$.get(savedUrl, function(res) {
        var div = $("<div>").html(res);
// this is because I get other stuff together, but what I really want is the tbody content.
        $("#mtbody").html($(div.find("tbody").get(0)).html());
});

Раньше я загружал все в тело, $ ( "# Mtbody"). Нагрузка (savedUrl)

Но IE7 не распознавал TR и TD, поэтому мне пришлось обернуть их в таблицу. Теперь я получаю странное позиционирование с позиции: абсолютные дивы.

ОБНОВЛЕНИЕ 2: Я попытался поставить все единицы (23 px ), но пока не повезло. Я думаю, это потому, что я должен сначала обернуть это в div, и когда я делаю это, позиции не обновляются .. действительно странная и неприятная ошибка в IE .. = /

Ответы [ 2 ]

2 голосов
/ 27 июня 2011

Это не ошибка IE7. Если ваш HTML и CSS верны, это работает.

Посмотрите на этот пример .

Кроме того, вы не должны помещать <table> в <tbody>. <tbody> должно иметь <tr> только детей.

редактировать

Также в вашем определении встроенного стиля отсутствует единица измерения.

<div hasLayout="true" class="border" style="left: 96">

должно быть

<div hasLayout="true" class="border" style="left: 96px">
0 голосов
/ 29 июня 2011

Итак, немного покопавшись, я обнаружил очень неприятное «float: left» в стиле div.uhr.По сути, это нарушало весь макет в IE7, заставляя div с «position: absolute» появляться на экране.

Так что люди, позаботьтесь об этом!; D

...