Files
2020-09-23 15:50:29 +02:00

78 lines
1.9 KiB
JavaScript

(function($) {
$.fn.menucloud = function(settings)
{
settings = $.extend({}, $.fn.menucloud.defaults, settings);
$('ul', this).css({
'position':'relative',
'width':'100%',
'height':'100%',
'padding':0
})
$('li', this).css({'top':"-100px", 'left':'-100px'}).each(function(i,e){
var $li = $(e);
$li.css({
// 'border':'1px solid red',
'position':'absolute'
});
var $prt = $li.parent('ul.menu');
// $.log('li', $li);
// $.log('$this | width = '+$li.width()+' | height = '+$li.height());
// $.log('$prt | width = '+$prt.width()+' | height = '+$prt.height());
function _testPos(t){
var isok = true;
$li.siblings().each(function(j, sib){
$sib = $(sib);
// var pos = $sib.position();
// $.log('pos',pos);
var css_sib_top = $sib.css('top');
// $.log('css_sib_top.match("/em/") = '+css_sib_top.search('em'));
var sib_top = css_sib_top.search('em') >= 0 ? parseFloat(css_sib_top)/settings.q : parseFloat(css_sib_top);
// $.log('sib_top = '+sib_top);
// $.log('t = '+t+' | sib_top = '+sib_top);
// $.log('Math.abs(top-sib_top) = '+Math.abs(top-sib_top));
if(Math.abs(t-sib_top) < 35){
isok = false;
return false;
};
});
return isok;
};
var isPosOK = false;
var limit = 0;
while(!isPosOK && limit < 10){
var top = (Math.round(Math.random()*(($prt.height()-settings.margin.t-settings.margin.b)-$li.height()))+settings.margin.t);
var left = (Math.round(Math.random()*(($prt.width()-settings.margin.l-settings.margin.r)-$li.width()))+settings.margin.l);
isPosOK = _testPos(top);
// $.log('isPosOK = '+isPosOK);
limit = limit+1;
}
$li.css({
'top':(top*settings.q)+'em',
'left':(left*settings.q)+'em'
});
// $.log('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ');
});
return this;
}
$.fn.menucloud.defaults = {
q:0.063,
margin : {t:0,r:0,b:0,l:0}
};
})(jQuery);