Ширина div в IE7 зависит от содержимого другого div - PullRequest
0 голосов
/ 29 января 2010

Вот пример HTML-страницы, которая состоит из верхнего и нижнего колонтитула и div, который содержит другой div, который содержит некоторое содержимое:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    <title>Testing 123</title>
    <link rel="stylesheet" href="css/testing.css">
</head>
<body>
    <div id="main_body">
        <div id="header"></div>
        <div id="content_container">
            <div id="content">
                Some text<br>
            </div>
        </div>
       <div id="footer"></div>
    </div>
</body>
<html>

Вот CSS:

* {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
border: none;
z-index: 10;
font-family: Arial;
font-size: 20px;
text-decoration: none;
text-align: left;
}
html, body {
height: 100%;
background-color: rgb(255, 255, 255);
}
#main_body {
position: relative;
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0px 20px 0px 20px;
}
#header {
position: absolute;
top: 20px;
left: 0px;
height: 50px;
width: 100%;
background-color: rgb(40, 40, 40);
}
#content_container {
padding: 80px 10px 50px 10px;
}
#content {
padding: 0px 4px 0px 4px;
position: relative;
}
#corner_top_left {
position: absolute;
width: 7px;
height: 7px;
top: 0;
left: 0;
background-color: rgb(40, 40, 40);
}
#footer {
position: absolute;
bottom: 20px;
left: 0px;
height: 20px;
width: 100%;
background-color: rgb(40, 40, 40);
}

Обратите внимание, что я еще не использовал стиль corner_top_left. Я хочу иметь хорошие круглые углы для контента. Я знаю, что есть много разных способов достичь этого. Я выбираю контейнер относительной позиции, в котором вы можете установить абсолютно расположенные маленькие угловые элементы. Этот метод отлично работает для меня, но в этом конкретном примере у меня есть один очень странный эффект, который я не могу объяснить.

Посмотрите, что происходит, когда вы добавляете div content_top_left в пример, например:

....
<div id="header"></div>
<div id="content_container">
    <div id="content">
        <div id="corner_top_left"></div>
        Lots of text<br>
    </div>
</div>
<div id="footer"></div>
....

По какой-то причине ширина нижнего колонтитула теперь отрегулирована (она короче). Я понятия не имею, почему это происходит в IE7 (отлично работает в FF). Нижний колонтитул не должен зависеть от содержимого. Кто-нибудь знает, что здесь происходит и как это решить?

РЕДАКТИРОВАТЬ: я немного изменил пример, чтобы сделать его более похожим на мой текущий веб-сайт.

Ответы [ 2 ]

1 голос
/ 29 января 2010

Попробуйте установить отступ для #content_container из padding: 0 10px 0 10px; до padding: 0 . Это исправило проблему в IE7, но я запускаю его в IEtester.

1 голос
/ 29 января 2010

Что за невероятная проблема! Он работает даже в режиме Quirks, но не в стандартах IE7.

Сначала я сконцентрировался на поле #content, но изменение его дало бы другие результаты, затем я без особого успеха переместился в нижний колонтитул, попробовал #content_top_left и ничего. Затем я вернулся к #content и удалил все левые / правые поля.

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

#content 
{
    <b>margin: 80px 0 50px 0;</b>
    position: relative;
    <b>padding: 0 10px 0 10px;</b>
}<br />#content_top_left 
{
    position: absolute;
    width: 7px;
    height: 7px;
    top: 0;
    <b>left: 10px;</b>
    background-color: rgb(40, 40, 40);
}

Я не знаю подробностей вашей реализации для фонов и тому подобного в контейнере #content, поэтому может возникнуть проблема с дополнительным заполнением, левый угол в 10 пикселей выровнен по левому отступу на контейнере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...