Почему этот div / img не будет центрироваться в IE8?
-
03-07-2019 - |
Вопрос
У меня есть очень простая удерживающая страница, которую я создал, центрируя div, якорь и изображение.По какой-то причине он не будет центрироваться в IE8 (в любом режиме), и я надеюсь, что кто-нибудь сможет сказать мне, почему.У меня не было возможности попробовать это в других браузерах IE.Я пробовал это в Chrome и FF3, где это работает нормально.
<html>
<head>
<title>Welcome</title>
<style>
#pageContainer {width:300px;margin:0 auto;text-align:center;}
#toLogo{border:none; }
</style>
</head>
<body>
<div id="pageContainer">
<a href="http://portal.thesit.com" id="toSite"><img src="LOGO_DNNsmall.png" id="toLogo"></a>
</div>
</body>
</html>
Я сказал, что это действительно просто.:)
Спасибо,
Бретт
Решение
Вы действительно хотите, чтобы ваша страница работала в режиме quirks?Ваш HTML-код работает нормально, как только я добавил doctype в режим принудительных стандартов:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Welcome</title>
<style>
#pageContainer {width:300px;margin:0 auto;text-align:center;}
#toLogo{border:none; }
</style>
</head>
<body>
<div id="pageContainer">
<a href="http://portal.thesit.com" id="toSite">
<img src="http://stackoverflow.com/content/img/so/logo.png" id="toLogo"></a> </div>
</body>
</html>
Другие советы
Запас прочности на auto
по бокам div предоставьте браузеру самому решать, куда его поместить.Ничто не указывает браузеру, что div должен быть центрирован в теле или выровнен по левому или правому краю.Так что все зависит от браузера.Если вы добавите директиву в тело, ваша проблема будет решена.
<html>
<head>
<title>Welcome</title>
<style>
body { text-align: center;}
#pageContainer {width:300px; margin:0px auto;
text-align:center; border:thin 1px solid;}
#toLogo{border:none; }
</style>
</head>
<body>
<div id="pageContainer">
<a href="http://portal.thesit.com" id="toSite">
<img src="LOGO_DNNsmall.png" id="toLogo">
</a>
</div>
</body>
</html>
Я добавил границу в 1 пиксель к div, чтобы вы могли более четко видеть, что происходит.
Вы оставляете это на усмотрение браузера, потому что он находится в режиме quirks.Чтобы удалить режим quirks, добавьте определение doctype вверху, вот так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Welcome</title>
<style>
#pageContainer {width:300px; margin:0px auto;
text-align:center; border:thin 1px solid;}
#toLogo{border:none; }
</style>
</head>
<body>
<div id="pageContainer">
<a href="http://portal.thesit.com" id="toSite">
<img src="LOGO_DNNsmall.png" id="toLogo">
</a>
</div>
</body>
</html>
Теперь вы сможете увидеть свой div-центр размером 300 пикселей на странице.
Добавить text-align:center
к телу.Это должно сделать это в сочетании с margin:0 auto
на div.
Вы можете центрировать без использования text-align:center
на теле, поместив все содержимое страницы в контейнер во всю ширину и затем установив text-align:center
и об этом тоже.
<html>
<head>
<title>Welcome</title>
<style>
#container {text-align:center;border:1px solid blue}
#pageContainer {width:300px; margin:0 auto; border:1px solid red}
#toLogo{border:none; }
</style>
</head>
<body>
<div id="container">
<div id="pageContainer">
<a href="http://portal.thesit.com" id="toSite"><img src="LOGO_DNNsmall.png" id="toLogo"></a>
</div>
</div>
</body>
</html>
(Я добавил container
div).Хотя на самом деле это ничего не меняет...просто дополнительный div.Вам по-прежнему нужны все те же css-свойства.
Вероятно, вы захотите изменить его на следующее:
<html>
<head>
<title>Welcome</title>
<style>
body { text-align: center; }
#pageContainer {width:300px;margin:0 auto;}
#toLogo{border:none; }
</style>
</head>
<body>
<div id="pageContainer">
<a href="http://portal.thesit.com" id="toSite"><img src="LOGO_DNNsmall.png" id="toLogo"></a>
</div>
</body>
</html>
В text-align:center;
перемещается в тело.Если вы хотите разместить другое выровненное по левому краю содержимое внутри div #pageContainer
, тогда вам понадобится text-align:left;
для этого класса.Это решение, которое я использовал сейчас на довольно многих веб-сайтах и, похоже, работает во всех браузерах (это то, что Dreamweaver использует в своих начальных шаблонах).
ДЛЯ ПОЛЬЗОВАТЕЛЕЙ BLUEPRINT Это сводило меня с ума, пока я не нашел этот пост: проблема с ie8 и blueprint Короче говоря, в вашем html-коде измените
<!--[if IE]>
<link rel="stylesheet" href="../css/blueprint/ie.css" type="text/css" media="screen, projection" />
<![endif]-->
для
<!--[if lt IE 8]>
<link rel="stylesheet" href="../css/blueprint/ie.css" type="text/css" media="screen, projection" />
<![endif]-->
С уважением Алекс
Это работает для меня в IE6, 7, 8, FF 3.6.3:
#container
{
width:100%;
}
#centered
{
width:350px;
margin:0 auto;
}
и
<div id="container">
<div id="centered">content</div>
</div>