Страница 1 из 1

Позиционирование по центру

СообщениеДобавлено: Пн июл 14, 2008 10:32
Skay
Как сделать блок по ширине контента и по центру?

Код: Выделить всё
<html>
<head>
   <style>
      div#container {
         overflow: hidden;
         border: 1px dashed red;
      }
      div.block{
         float: left;
         margin: 2px;
         width : 100px;
         height: 100px;
         border: 1px solid black;
      }
   </style>
</head>
<body>
   <div id="container">
      <div class="block"></div>
      <div class="block"></div>
      <div class="block"></div>
      <div class="block"></div>
   </div>
</body>
</html>



если контейтер сделать фиксированной ширины, то центрирование выполнить просто при помощи margin: 0 auto... если сделать блок по ширине контента при помощи display: inline, то маргином уже так не сделать))

СообщениеДобавлено: Пн июл 14, 2008 11:03
Muerto
2Skay: Под каким доктайпом сайт?

СообщениеДобавлено: Пн июл 14, 2008 12:04
Skay
<!-- это место свободно для вашего доктайпа -->

<html>
<head>
.....


-09-

СообщениеДобавлено: Пн июл 14, 2008 12:28
Muerto
Скриптом, как я понимаю не приветствуется?

СообщениеДобавлено: Пн июл 14, 2008 12:40
Muerto
Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style type="text/css">
      #container {
         border: 1px solid red;
       overflow:hidden;
       display: table;
       zoom:1;
       width: expression(this.childNodes.length*106 + 2 + "px");
      }
      .block{
         float: left;
         margin: 2px;
         width : 100px;
         height: 100px;
         border: 1px solid black;
      }
   </style>
</head>

<body>
<center>
   <div id="container">
      <div class="block"></div>
      <div class="block"></div>
      <div class="block"></div>
      <div class="block"></div>
   </div>
</center>
</body>
</html>

Валидно, конечно, как вся моя жизнь! -06-
Но, вроде, работает. Тестировал под ИЕ6, Опера 9.5, ФФ 2.0.0.15.

СообщениеДобавлено: Пн июл 14, 2008 13:17
Skay
а зачем там zoom? и про доктайп ты зачем спрашивал?) оно вроде и без доктайпа и без зума работает как надо) весь секрет, видимо, в display: table

СообщениеДобавлено: Пн июл 14, 2008 15:59
Jedi
А display: table разве под ИЕ работает?

СообщениеДобавлено: Пн июл 14, 2008 16:03
Jedi
и секрет позиционирования по центру тут
width: expression(this.childNodes.length*106 + 2 + "px");

СообщениеДобавлено: Пн июл 14, 2008 16:07
Skay
Изображение

СообщениеДобавлено: Пн июл 14, 2008 16:21
Muerto
Код: Выделить всё
width: expression(this.childNodes.length*106 + 3 + "px");
поставь.

zoom - это для лэйтаута для ИЕ6.

СообщениеДобавлено: Пн июл 14, 2008 16:23
Skay
там ровно получается при +4 =)) только откуда 2 дополнительных пикселя? 0_о

СообщениеДобавлено: Пн июл 14, 2008 16:25
Muerto
2Skay: А черт его ведает! Експлорер - штука хитрая! Наверное внешний бордер считает.

СообщениеДобавлено: Пн июл 14, 2008 16:39
Skay
дык, внешний бордер как раз и есть +2 =) еще два пикселя откуда взялись непонятно 0_о

СообщениеДобавлено: Пн июл 14, 2008 17:00
Muerto
2Skay: Главное - работает машинка то!

СообщениеДобавлено: Ср июл 16, 2008 23:14
Skay
заметил очень неприятную проблему от FireFox2... если в блоки вставить картинки, то сам код загружается раньше картинок и видимо вычисляется ширина блока, после загрузки картинок ширина меняется и в итоге блоки по ширине не помещаются в контейнере и выстраиваются вертикально один над другим... если перезагрузить страницу с загрузкой картинок из кэша, то отображаться будет как задумано изначально...

Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style type="text/css">
      #container {
         border: 1px solid red;
       overflow:hidden;
       display: table;
       zoom:1;
       width: expression(this.childNodes.length*106 + 2 + "px");
      }
      .block{
         float: left;
         margin: 2px;
         border: 1px solid black;
      }
   </style>
</head>

<body>
<center>
   <div id="container">
      <div class="block"><img src="http://www.muerto.ru/images/new/muerto_logo.png"></div>
      <div class="block"><img src="http://forum.mweb.ru/images/avatars/66215026947e617d2c7eb4.png"></div>
      <div class="block"><img src="http://forum.mweb.ru/images/avatars/547180073452ce5c92ab0a.gif"></div>
      <div class="block"><img src="http://forum.mweb.ru/images/avatars/1605616448483c27eab419a.jpg"></div>
   </div>
</center>
</body>
</html>

СообщениеДобавлено: Чт июл 17, 2008 10:36
Muerto
ФФ не понимает экспрешен, он понимает display: table.Загружай картинки прелоадом если такая проблема (хотя я такого не наблюдал - дай ссылку).

СообщениеДобавлено: Чт июл 17, 2008 10:39
Skay
вон код дал) создай файл на локал и попрактикуй чередование клавиш - F5, Ctrl+F5...

СообщениеДобавлено: Чт июл 17, 2008 12:03
Muerto
Хммм... Бред.
Попробуй так:
Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style type="text/css">
      #container {
       border: 1px solid red;
       overflow:hidden;
       display: table;
      height:1%;
      white-space:nowrap;
       zoom:1;
       width: expression(this.childNodes.length*106 + 2 + "px");
      }
      .block{
     display:inline;
         margin: 2px;
      }
   </style>
</head>

<body>
<center>
   <div id="container">
      <div class="block"><img src="http://www.muerto.ru/images/new/muerto_logo.png"></div><div class="block"><img src="http://forum.mweb.ru/images/avatars/66215026947e617d2c7eb4.png"></div><div class="block"><img src="http://forum.mweb.ru/images/avatars/547180073452ce5c92ab0a.gif"></div><div class="block"><img src="http://forum.mweb.ru/images/avatars/1605616448483c27eab419a.jpg"></div>
   </div>
</center>
</body>
</html>

СообщениеДобавлено: Чт июл 17, 2008 12:19
Skay
ну ты баг то увидел?))

СообщениеДобавлено: Чт июл 17, 2008 12:24
Muerto
2Skay: Увидел. Но природу его не догнал. Мой новый код подошел?
P.-S. 2500 однако!!! -06-

СообщениеДобавлено: Чт июл 17, 2008 14:21
Skay
2Muerto: твой код не проверял пока))


>P.-S. 2500 однако!!!

my congratulation -22- -03-

СообщениеДобавлено: Чт июл 17, 2008 14:25
Berezkin
2Skay: я проверил, помогает

СообщениеДобавлено: Чт июл 17, 2008 15:31
Muerto
2Skay: В субботу, в Лужниках. -22-