Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Проблема с созданием субменю (https://javascript.ru/forum/xhtml-html-css/17310-problema-s-sozdaniem-submenyu.html)

FINoM 14.05.2011 04:34

Проблема с созданием субменю
 
Есть стандартная задача: при наведении на пункт меню категорий показывать список подкатегорий.
<ul class="tree_main_categorys">
   ...
   <li class="sidebar_submenu">
      <a href="#" class="submenu_main_link">BlaBla</a>   
      <ul class="submenu_list">      
         <li><a href="#">Antiques</a></li>      
         <li><a href="#">Art</a></li>
         ...
      </ul>
   </li>
</ul>
Когда наводим на li.sidebar_submenu, должен показываться список ul.submenu_list. Но, к сожалению, li.sidebar_submenu ведет себя почему-то как блок со свойством overflow:hidden, то есть показывается только тот кусок списка, который помещается в этот li. Установка значения overflow:visible не помогает (сайту уже несколько лет и он имеет достаточно крупную таблицу стилей, установка в этом свойстве !important так же не дало результата). ul.submenu_list, естественно, position:absolute.

Что это может быть и как с этим бороться?
Заранее спасибо.

Gvozd 14.05.2011 07:12

фаербаг вам в руки

walik 14.05.2011 09:42

Это если не ошибаюсь из за position:absolute. Присвойте элементу li.sidebar_submenu свойство position:relative

ksa 14.05.2011 11:05

Цитата:

Сообщение от FINoM
Что это может быть и как с этим бороться?

По твоему огрызку не понятно что там у тебя и почему... Сделай полный тестовый пример - тогда и будет ясно.

FINoM 14.05.2011 18:00

Цитата:

Сообщение от Gvozd
фаербаг вам в руки

Пользуюсь инструментами разработчика в хроме, там всё так, как я прописываю в css.
Цитата:

Сообщение от walik
то если не ошибаюсь из за position:absolute. Присвойте элементу li.sidebar_submenu свойство position:relative

Я сразу так сделал, не первый раз подобный функционал реализовываю, всегда всё было ок.
Цитата:

Сообщение от ksa
По твоему огрызку не понятно что там у тебя и почему...

По-моему всё прозрачно. Наводим на блок со стилями
parent {position:relative; overflow:visible; height:100px; width:100px;},
появляется дочерний элемент
parent child {position:absolute; z-index:100; width:1000px; height:1000px;}
Ширина и высота для тестирования, в реальности они auto для обоих
Появляется только кусок child, который помещается в 100px*100px родительского элемента.

poorking 14.05.2011 19:29

<style type = "text/css">
ul{
	width: 100px;
	border: 1px solid red;
}
.with_sub{
	position:relative;
}
.with_sub ul{
	display: none;
	position: absolute;
	top:0px;
	left: 100%;
}
.with_sub:hover > ul{
	display: block;
}
</style>

<ul>
	<li>item 1</li>
	<li class = "with_sub"><div>item 2 (sub)</div>
		<ul>
			<li>sub 1</li>
			<li class = "with_sub"><div>sub 2(sub sub)</div>
				<ul>
					<li>sub sub 1</li>
					<li>sub sub 2</li>
					<li>sub sub 3</li>
					<li>sub sub 4</li>
				</ul>
			</li>
			<li>sub 3</li>
		</ul>
	</li>
	<li>item 3</li>
</ul>

так?

walik 14.05.2011 19:30

С overflow: auto; все работает как надо (если правильно понял)
<style>
.first {
	position:relative; overflow:auto; height:100px; width:100px;
}

.second {
	position:absolute; width:400px; height:400px;background-color: red;z-index: 100;
}
</style>
<div class="first">
	<div class="second"></div>
</div>

FINoM 15.05.2011 01:49

Отбой, господа. Только въехал что предыдущий разработчик, по непонятным причинам, одному из блоков (там вложенность элементов большая) присвоил overflow:hidden.
Всем спасибо за помощь и извините за ложную тревогу.

x-yuri 15.05.2011 21:18

Цитата:

Сообщение от walik
Это если не ошибаюсь из за position:absolute. Присвойте элементу li.sidebar_submenu свойство position:relative

что за проблема с position: absolute?

FINoM 16.05.2011 04:25

Цитата:

Сообщение от x-yuri
что за проблема с position: absolute?

У элемента с position:absolute свойства top, left, bottom, right будут срабатывать относительно первого встретившегося элемента с position:relative в цепочке родителей. Но проблемы я в этом не вижу.


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