Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Размер в процентах. Мозила отличилась. (https://javascript.ru/forum/xhtml-html-css/31155-razmer-v-procentakh-mozila-otlichilas.html)

PashPP 28.08.2012 17:46

Размер в процентах. Мозила отличилась.
 
При выставлении в #menu .menu-subList width: 100% все браузеры ведут себя хорошо, и ставят полный размер по родительскому блоку, мозила же растягивает все, опираясь на ширину экрана или еще чего там.
Как выкрутиться? И почему оно так?
<!DOCTYPE html>
<html>
<head>
  <meta charset='utf-8' />
  <title>My menu</title>
  <style>
body {
  margin: 0;
  padding: 0;
}


#menu-full {
  display: table;
  width: 800px;
  height: 30px;
}

#menu ul {
  list-style-type: none;
  margin: 0 auto;
  padding: 0;
}

#menu .menu-block {
  position: relative;
  display:table-cell;
  border: 1px solid black;
  text-align: center;
}

#menu .menu-subList {
  width: 100%;
  overflow: hidden;
  position: absolute;
  top: 32px;
  border: 1px solid green;
}

#menu .menu-subList :last-child a {
  border-bottom: none;
}


#menu .menu-subList a {
  text-decoration: none;
  display: block;
  width: 100%;
  padding: 5px 0px ;
  color: black;
  border-bottom: 1px solid red;
}

  </style>
</head>
<body>
<div id='menu'>
  <ul id='menu-full'>
    <ul class='menu-block'>
      <li class='menu-tittle'> Меню 111 </li>
      <ul class='menu-subList'>
        <li><a href='#1'>Первый в списке</a></li>
        <li><a href='#2'>Второй в списке</a></li>
        <li><a href='#3'>Третий в списке</a></li>
        <li><a href='#4'>Четвертый в списке</a></li>
      </ul>
    </ul>
    <ul class='menu-block'>
      <li class='menu-tittle'> Меню 222 </li>
      <ul class='menu-subList'>
        <li><a href='#11'>Первый в списке</a></li>
        <li><a href='#22'>Второй в списке</a></li>
        <li><a href='#33'>Третий в списке</a></li>
        <li><a href='#44'>Четвертый в списке</a></li>
      </ul>
    </ul>
    <ul class='menu-block'>
      <li class='menu-tittle'> Меню 333 </li>
      <ul class='menu-subList'>
        <li><a href='#111'>Первый в списке</a></li>
        <li><a href='#222'>Второй в списке</a></li>
        <li><a href='#333'>Третий в списке</a></li>
        <li><a href='#444'>Четвертый в списке</a></li>
      </ul>
    </ul>
    <ul class='menu-block'>
      <li class='menu-tittle'> Меню 444 </li>
      <ul class='menu-subList'>
        <li><a href='#1111'>Первый в списке</a></li>
        <li><a href='#2222'>Второй в списке</a></li>
        <li><a href='#3333'>Третий в списке</a></li>
        <li><a href='#4444'>Четвертый в списке</a></li>
      </ul>
    </ul>
    <ul class='menu-block'>
      <li class='menu-tittle'> Меню 555 </li>
      <ul class='menu-subList'>
        <li><a href='#11111'>Первый в списке</a></li>
        <li><a href='#22222'>Второй в списке</a></li>
        <li><a href='#33333'>Третий в списке</a></li>
        <li><a href='#44444'>Четвертый в списке</a></li>
      </ul>
    </ul>
  </ul>
</div>


</body>
<script type='text/javascript'>


</script>
</html>

oneguy 28.08.2012 20:12

У вас неправильный HTML-код: элемент <ul> может содержать только <li> в качестве детей.

PashPP 28.08.2012 20:48

oneguy,
Спасибо, ужасная ошибка.
Переверстал. Но мозила все так же вредничает.

<!DOCTYPE html>
<html>
<head>
  <meta charset='utf-8' />
  <title>My menu</title>
  <style>
body {
  margin: 0;
  padding: 0;
}


#menu-full {
  display: table;
  width: 800px;
  height: 30px;
}

#menu ul {
  list-style-type: none;
  margin: 0 auto;
  padding: 0;
}

#menu li {
  margin: 0;
  padding: 0;
}

#menu .menu-block {
  position: relative;
  display:table-cell;
  border: 1px solid black;
  text-align: center;
}

#menu .menu-subList {
  width: 100%;
  overflow: hidden;
  position: absolute;
  top: 32px;
  border: 1px solid green;
}

#menu .menu-subList :last-child a {
  border-bottom: none;
}


#menu .menu-subList a {
  text-decoration: none;
  display: block;
  width: 100%;
  padding: 5px 0px ;
  color: black;
  border-bottom: 1px solid red;
}

  </style>
</head>
<body>
<div id='menu'>
  <ul id='menu-full'>
    <li class='menu-block'> Меню 111 
      <ul class='menu-subList'>
        <li><a href='#1'>Первый в списке</a></li>
        <li><a href='#2'>Второй в списке</a></li>
        <li><a href='#3'>Третий в списке</a></li>
        <li><a href='#4'>Четвертый в списке</a></li>
      </ul>
    </li>
    <li class='menu-block'> Меню 222
      <ul class='menu-subList'>
        <li><a href='#11'>Первый в списке</a></li>
        <li><a href='#22'>Второй в списке</a></li>
        <li><a href='#33'>Третий в списке</a></li>
        <li><a href='#44'>Четвертый в списке</a></li>
      </ul>
    </li>
    <li class='menu-block'>Меню 333
      <ul class='menu-subList'>
        <li><a href='#111'>Первый в списке</a></li>
        <li><a href='#222'>Второй в списке</a></li>
        <li><a href='#333'>Третий в списке</a></li>
        <li><a href='#444'>Четвертый в списке</a></li>
      </ul>
    </li>
    <li class='menu-block'> Меню 444 
      <ul class='menu-subList'>
        <li><a href='#1111'>Первый в списке</a></li>
        <li><a href='#2222'>Второй в списке</a></li>
        <li><a href='#3333'>Третий в списке</a></li>
        <li><a href='#4444'>Четвертый в списке</a></li>
      </ul>
    </li>
    <li class='menu-block'>Меню 555 
      <ul class='menu-subList'>
        <li><a href='#11111'>Первый в списке</a></li>
        <li><a href='#22222'>Второй в списке</a></li>
        <li><a href='#33333'>Третий в списке</a></li>
        <li><a href='#44444'>Четвертый в списке</a></li>
      </ul>
    </li>
  </ul>
</div>


</body>

Serg_pnz 28.08.2012 21:29

#menu .menu-subList {
    border: 1px solid green;
    overflow: hidden;
    position: absolute; /*вот это не лишнее?*/
    top: 32px;
    width: 100%;
}

PashPP 28.08.2012 21:38

Serg_pnz,
Действительно, без него заработало.
Но ведь мне нужно position: absolute, чтоб этот элемент не сдвигал остальные.

Serg_pnz 29.08.2012 13:41

Посмотри тут меню http://sro001.jcase.ru/

PashPP 30.08.2012 00:08

Проблема была из-за display:table-cell;.
Это баг мозилы. Стек оверфлоу, оказывается, кишит этой темой.
Эх. Жаль, табличкой все так красиво делалось.

bes 30.08.2012 11:24

есть ещё display: inline-block

PashPP 30.08.2012 23:07

bes,
Так ведь не растягивает свои ячейки так красиво по ширине род. блока как табличка.
ну да ладно. Не так пока и важно.

Seva1986 07.09.2012 14:19

Цитата:

Сообщение от PashPP
Это баг мозилы.

Почему вдруг это баг? где написано что ячейка таблицы должна поддерживать релатив? не знаю как сейчас но раньше для ячеек position: relative было не определённым. а то что другие браузеры это поддерживали ну это вообще не о чём.


Часовой пояс GMT +3, время: 23:34.