Руслан Савенок
530 сообщений
#15 лет назад
Есть вот такой скрипт слайдинга:
var is_chrome=navigator.userAgent.toLowerCase().indexOf('chrome')>-1;
window.addEvent((is_chrome)?'load':'domready',function(){
var rokvmcat=$$('.rokvm_categories li.parent');
var slide=;
if(rokvmcat.length){
var handlers=rokvmcat.getElement('.arrow');
handlers.each(function(cat,i){
var sub=rokvmcat.getElement('.submenu');
if(sub){
var active=rokvmcat.getElement('.active')||rokvmcat.hasClass('active');
slide.push(new Fx.Slide(sub,{'wait':false,onStart:function(){
var parent=rokvmcat.getParent();
if(!parent.hasClass('menu')&&!this.open){


var h=rokvmcat.getSize().size.y;
var oh=slide.wrapper.getStyle('height').toInt();
var liparent = slide.wrapper.getParent('li');
var ulparent = liparent.getParent('ul');
ulparent.getParent('div').setStyle('height','100%');
}},onComplete:function(){
if(this.open){
var parent=rokvmcat.getParent();
if(!parent.hasClass('menu')){
var h=rokvmcat.getSize().size.y;
var oh=slide.wrapper.getStyle('height').toInt();
}cat.removeClass('arrow-collapse').addClass('arrow-expand').getFirst().setText('+');
rokvmcat.removeClass('cat-open').addClass('cat-close')}}})());
slide.wrapper.addClass('cat-bot-bg');
var first=sub.getFirst().addClass('first');
var last=sub.getLast().addClass('last');
if(active){
cat.removeClass('arrow-expand').addClass('arrow-collapse').getFirst().setText('-');
rokvmcat.removeClass('cat-close').addClass('cat-open');
slide.wrapper.setStyle('height','100%');
var height=slide.wrapper.getStyle('height').toInt();
var padding=last.getStyle('padding-bottom').toInt();

}else{
cat.removeClass('arrow-collapse').addClass('arrow-expand');
rokvmcat.removeClass('cat-open').addClass('cat-close')}cat.addEvent('click',function(){
var parent=rokvmcat.getParent();
slide.toggle();


if(!slide.open){
cat.removeClass('arrow-expand').addClass('arrow-collapse').getFirst().setText('-');rokvmcat.removeClass('cat-close').addClass('cat-open')}})}})}});

В котором я многое не могу понять. Этот скрипт работает так, что когда подпункты скрыты у них не display:none; а margin: -npx; это дело нужно заменить мбо ие6/7 не понимает эту штука, пожалуйста покажите какие строчки это делают тут
Владимир О.
206 сообщений
#15 лет назад
Да уж, скриптик... В явном виде - нигде. Смотрите что в классах cat-open, cat-close Но.... а он точно рабочий? Вижу, например, в строках 36-37 определение переменных height и padding, которые нигде больше не используются...
Руслан Савенок
530 сообщений
#15 лет назад
Да он глючный, но из-за того что мутулс еще нужен для нескольких других скриптов я не могу нормально использовать плагины jquery, мне кажется что эффект slidedown работает от самого мутулса и дает эту - высоту.

100% проблема не в ксс, т.к. если весь ксс убить то стили остаются (margin: 0; / margin: - npx так что где то в скриптах....
Владимир О.
206 сообщений
#15 лет назад
Motools гораздо прозрачнее и понятнее квери) Здесь программист, похоже, намудрил Но в приведенном куске нигде не устанавливается margin. Это выглядело бы так: элемент.setStyle('margin', значение); А у вас - только операции с классами.
В мутулзе нет slidedown готового; есть классы, на основе которых такое можно реализовать. Но то, что отступы он сам не расставляет - это 100%.
Руслан Савенок
530 сообщений
#15 лет назад
var oh=slide.wrapper.getStyle('height').toInt();
тут оно берет высоту скрытого блока. Что значит toInt();? Как я понял где то тут оно это значение делает с минусом.
Руслан Савенок
530 сообщений
#15 лет назад
Владимир О.
206 сообщений
#15 лет назад
ToInt() - это преобразование строкового представления в число. В данном случае высота в пикселах: 12px => 12
Руслан Савенок
530 сообщений
#15 лет назад
Это fail fxslide у муттулса, он работает с высотой и margin)))