Jump to content
  • 0

Абсолютное позиционирование и IE6


Raiden-=DM=-
 Share

Question

Вопрос в следующем. Если в ЦСС задать примерно такое:

position:absolute;
top:10px;
bottom:10px;
left:10px;
right:10px;

, то 7й эксплорер и мозила "растянут" див таким образом, что он будет "не доставать" до края экрана по 10 пикселов с каждой стороны. 6й эксплорер не видит одновременно параметров left и right для одного элемента - читает только первый. Его можно от этого вылечить?

Link to comment
Share on other sites

  • Answers 52
  • Created
  • Last Reply

Top Posters For This Question

Recommended Posts

  • 0
Вопрос в следующем. Если в ЦСС задать примерно такое:

position:absolute;
top:10px;
bottom:10px;
left:10px;
right:10px;

, то 7й эксплорер и мозила "растянут" див таким образом, что он будет "не доставать" до края экрана по 10 пикселов с каждой стороны. 6й эксплорер не видит одновременно параметров left и right для одного элемента - читает только первый. Его можно от этого вылечить?

нет

Link to comment
Share on other sites

  • 0

Вот ширину я вылечил:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Тест</title>
<style type="text/css">
#contaner{position:absolute;
left:100px; top:100px;
bottom:100px; right:100px;
background:#424242;
// width:expression(document.body.offsetWidth-200);
height:300px;}
</style>
</head>
<body>
<div id="contaner">
</div>
</body>
</html>

А что вот высоту не смог. :/

Чем руководствовался: http://softwaremaniacs.org/blog/2005/08/03...ut-positioning/

Link to comment
Share on other sites

  • 0

Единицы измерения надо указывать... Ну и в высоту также можно, можно еще заменить точку отсчета высоты и ширины на родительский объект:

height: expression(parentNode.offsetHeight - 200 + 'px');
width: expression(parentNode.offsetWidth - 200 + 'px');

Link to comment
Share on other sites

  • 0

Raiden-=DM=-

Братский подгон с двумя вариантами и примерами:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
*{ padding: 0; margin: 0;}

/* Нужно что-бы блок <div class="content"></div>:
1. Высоты 100% минус 50px со всех сторон
2. absolute и растягивался в зависимости от своего родителя div.wrap
3. Вобщем точно так же, как и в Файрфоксе, так же должно быть и в ИЕ6
*/

div.wrap {
position: relative;
width: 500px;
height: 500px;
margin: 20px auto;
border: 1px solid #000;
}
div.content {
position: absolute;
top: 50px;
bottom: 50px;
left: 50px;
right: 50px;
background: red;
/*_height: expression(this.parentNode.offsetHeight-50-50+'px');*/
/*_width: expression(this.parentNode.offsetWidth-50-50+'px');*/
_height: expression(this.parentNode.offsetHeight-100+'px');
_width: expression(this.parentNode.offsetWidth-100+'px');
}

</style>
</head>

<body>

<div class="wrap">

<div class="content"></div>

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>

<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>

<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>


</div>


</body>
</html>

Link to comment
Share on other sites

  • 0

Народ помогите найти справочник по этому expression на русском, такая вычурная вещь, а я в ней не разбираюсь ни чуть. Везде только готовые примеры. Пора уже самому костыли на IE6 делать, а не чужие брать. :)

Link to comment
Share on other sites

  • 0
Народ помогите найти справочник по этому expression на русском, такая вычурная вещь, а я в ней не разбираюсь ни чуть. Везде только готовые примеры. Пора уже самому костыли на IE6 делать, а не чужие брать. :)

Я сам не разбираюсь :)

Link to comment
Share on other sites

  • 0
Я сам не разбираюсь B)

psywalker, пасибо персональное в очередной раз :) И всем спасибо :)

А то 6й эксплорер уже в печенках сидит.... Да заодно мой маниакальный синдром, сделать таки "полную резину"....

кстати, по ширине, еще куда ни шло, можно через авто отступы сделать. А вот высота да - это вопрос B)

Кстати, братский вариант не работает таки по высоте на 6м эксплорере :)

Edited by Raiden-=DM=-
Link to comment
Share on other sites

  • 0
Я сам не разбираюсь :)

Searcher, может ты чего подкинешь?

А то 6й эксплорер уже в печенках сидит

Да ладно тебе, классный браузер, чтобы мы без него делали. :)

Edited by Игорь Ермаков
Link to comment
Share on other sites

  • 0
Ну что б я без тебя делал то? :) Пасибо всем! :)

А то 6й эксплорер уже в печенках сидит.... Да заодно мой маниакальный синдром, сделать таки "полную резину"....

кстати, по ширине, еще куда ни шло, можно через авто отступы сделать. А вот высота да - это вопрос :)

погоди, что за вопрос? разве я тебе решение не привёл, там же и высота и ширина или я гдето накосячил?

Link to comment
Share on other sites

  • 0
Да ладно тебе, классный браузер, чтобы мы без него делали. :)

expression - это просто Java Script

не, psywalker, ты не накосячил, просто надо указывать высоту у всех родителей, а если относительная высота то вплоть до body

Link to comment
Share on other sites

  • 0

да нет, psywalker установил ширину и высоту родителя в 500px, так что у него все нормально работает, но если устанавливать относительные размеры, как скорее всего делает Игорь, то эти размеры должны быть прописаны до самого body и html. Вобщем так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
<style type="text/css">
*{ padding: 0; margin: 0;}

/* Нужно что-бы блок <div class="content"></div>:
1. Высоты 100% минус 50px со всех сторон а блок wrap я разместил по
центру и добавил отступы по 10%, но если на всё окно, то можно и
без wrap обойтись. Главное, чтобы все высоты родителей были прописаны.
2. absolute и растягивался в зависимости от своего родителя div.wrap
3. Вобщем точно так же, как и в Файрфоксе, так же должно быть и в ИЕ6
*/
html, body {
width: 100%;
height: 100%;
}
div.wrap {
position: relative;
overflow: hidden;
width: 80%;
height: 80%;
top: 10%;
left: 10%;
border: 1px solid #000;
}
div.content {
position: absolute;
overflow: hidden;
top: 50px;
bottom: 50px;
left: 50px;
right: 50px;
background: red;
/*_height: expression(this.parentNode.offsetHeight-50-50+'px');*/
/*_width: expression(this.parentNode.offsetWidth-50-50+'px');*/
_height: expression(this.parentNode.offsetHeight-100+'px');
_width: expression(this.parentNode.offsetWidth-100+'px');
}

</style>
</head>

<body>

<div class="wrap">

<div class="content"></div>

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>

<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>

<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>


</div>


</body>
</html>

Link to comment
Share on other sites

  • 0

Searcher

погоди, но есть запара, если главный блок текстом заполнить, то всё обрежется нахер либо если оверфлуху убрать, то один хрен Красный блок не растягивается, в чём подвох?

Link to comment
Share on other sites

  • 0
Searcher

погоди, но есть запара, если главный блок текстом заполнить, то всё обрежется нахер либо если оверфлуху убрать, то один хрен Красный блок не растягивается, в чём подвох?

чёрт.... Чувствую себя уже Геростратом, которых храм поджог, ибо сам уже запутался прочно и основательно :), а тут просто холивар на эту тему :)

psywalker я взял твой код, скопипастил его "тютелька в тютельку", и в результате под 6м эксплорером красный квадрат благополучно вывалился за пределы родителя (у меня, по крайней мере). А, кстати, ежели текст поместить в красный квадрат, то он ваще вылазит за пределы квадрата. Тут, конечно, оверфлоу поможет.

Link to comment
Share on other sites

  • 0

ТС, ты чтото неправильно делаешь!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
<style type="text/css">
body{
margin:0;
}
.wrap{
position:relative;
overflow:hidden;
width:80%;
top:10%;
left:10%;
border:1px solid #000;
}
.content{
position:absolute;
overflow:hidden;
top:50px;
bottom:50px;
left:50px;
right:50px;
background:red;
_height:expression(this.parentNode.offsetHeight-100+'px');
_width:expression(this.parentNode.offsetWidth-100+'px');
}
</style>
</head>

<body>
<div class="wrap">
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
</div>
</body>
</html>

Вот код, от кода который предоставил psywalker отличается только структурой кода (отступы между тегами) и тем что высота основного блока не указанна.

Все работает!

Если в красный квадрат добавить текст, то он естественно обрежется во всех браузерах.

Експрешн прекрасно ловит и ширину и высоту родителя, и ненадо ниче от боди прописывать.

Edited by mishka2
Link to comment
Share on other sites

  • 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
<style type="text/css">
body{
margin:0;
}
.wrap{
position:relative;
overflow:hidden;
width:80%;
top:10%;
left:10%;
border:1px solid #000;
}
.content{
position:absolute;
overflow:hidden;
top:10%;
bottom:10%;
left:10%;
right:10%;
background:red;
_height:expression(this.parentNode.offsetHeight-this.parentNode.offsetHeight/100*20+'px');
_width:expression(this.parentNode.offsetWidth-this.parentNode.offsetWidth/100*20+'px');
}
</style>
</head>

<body>
<div class="wrap">
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</p>
<p>Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
</div>
</body>
</html>

Edited by mishka2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy