2013-12-05 8 views
2

У меня есть раскрывающиеся меню CSS, jquery-диалоги и другие компоненты jquery на моей веб-странице.Работа с элементами «кругового штабеля»

Проблема, с которой я сталкиваюсь, заключается в том, что выпадающие меню должны быть выше других компонентов jquery, но ниже диалогов, а компоненты должны быть выше диалогов, но ниже раскрывающегося списка, а диалоги должны быть выше выпадающих меню но ниже компонентов.

Наглядное пособие:

enter image description here

Так эта проблема не так просто, как установление z-index.

Я попытался быстро скрыть/показать меню при открытии диалога (эффективно скрывая меню, поскольку он полагается на зависание, чтобы оставаться активным, чтобы оставаться открытым).

Код:

$('.allegDropdownMenu').css("display", "none"); 
$('.allegDropdownMenu').css("display", ""); 

Проблема заключается в том, что этот код, кажется, выполнить так быстро, что он парить государство никогда не станет неактивным.

Я добавил тайм-аут 10 мс, но это похоже на действительно грязный и хакерский способ сделать это.

Так что я думаю, мне интересно, есть ли у кого-нибудь решения для этого типа проблем?

+0

Я не уверен, я понимаю, что именно вы имеете в виду под "Singleton Components". Можете ли вы уточнить? –

+0

@CoreyOgburn - Я изменил формулировку. Это просто другие компоненты jquery на странице. Слово singleton только подчеркивало, что я использую один и тот же компонент во всем, что означает, что я не могу просто сказать, что компонент будет отображаться по-разному в разных точках без какой-либо тяжелой модификации. – Johannes

+0

Почему вы меняете состояние отображения на 'none', а затем' '' ', что должно было произойти? это синхронно, поэтому делать это сразу же после того, как другое не имеет особого смысла. У вашего раскрывающегося списка есть близкий метод, который позволит вам заставить его закрыться по требованию? –

ответ

1

Может ли псевдоэлемент в синей коробке, покрывающей зеленую коробку, делать трюк?

div { 
    height:2em; 
    line-height:2em; 
    width:8.5em; 
    background:gray; 
    position:relative; 
    text-align:center; 
    text-shadow:0 0 2px white; 
} 
#blue {background:#505DDA;z-index:3;} 
#red {background:#DA5050;z-index:2;} 
#green {background:#50DA74;} 
#blue:after { 
    content:''; 
    display:inline-block; 
    height:2.6em; 
    width:2em; 
    right:2px; 
    bottom:0; 
    position:absolute; 
    background:#50DA74; 
    transform:rotate(-27deg) ; 
} 

#blue { 
    transform:rotateZ(90deg) ; 
    transform-origin:7% 80% ; 
} 
#red { 
    transform:rotateZ(27deg); 
    transform-origin: 40%; 
} 
#green { 
    transform:rotateZ(-27deg) ; 
    transform-origin:right 110%; 
} 
<div id="blue"> BLUE </div> 
<div id="red"> RED </div> 
<div id="green"> GREEN</div> 

демо http://codepen.io/gc-nomade/pen/vKCeF

+0

Конечно, очень интересно. Хотя мой наглядный пример был просто для того, чтобы показать, как элементы на странице слоисты, они сами по себе не являются фактическими элементами и не похожими на них. Но это довольно круто! – Johannes

+0

ладно, я совершенно неправильно понял все это. спасибо за то, что вы вернули :) –

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