2010-01-29 3 views
0

Вот пример HTML-страницы, которая состоит из заголовка и нижнего колонтитула и DIV, который содержит другой DIV, который содержит некоторое содержание:Ширина DIV зависит в IE7 по содержанию другого 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. Этот метод отлично работает для меня, но имеет один очень странный эффект в IE7 в этом конкретном примере, который я не могу объяснить.

Смотрите, что происходит, когда вы добавляете content_top_left DIV к примеру, так:

.... 
<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). Контент не должен влиять на нижний колонтитул. Кто-нибудь знает, что здесь происходит и как это можно решить?

EDIT: Я немного изменил пример, чтобы сделать его более похожим на мой текущий сайт.

ответ

1

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

+0

также добавляет просто масштаб: 1 к тому же указанному контейнеру исправляет проблему. – easwee

+0

Вот и все! Спасибо easwee! – jzp74

1

Какая совершенно удивительная проблема! Он работает даже в режиме Quirks, но не в стандартах IE7.

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

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

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

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

+0

Спасибо F.Aquino! Я немного изменил этот пример, чтобы сделать его более похожим на мой текущий проект. Я добавил новый div с круглым углом, и то же самое происходит снова. – jzp74

+0

Кстати. Я вижу, что я сделал ошибку в своем первом сообщении: я использовал поле для #content_container, но он должен быть дополнением, чтобы этот пример работал в FF. В вашем решении используются отступы и поля, которые не работают в FF. – jzp74

Смежные вопросы