2015-02-09 16 views
0

我想創建一個頁面,該頁面的按鈕應該在隨機的地方。地方:我想創建一個頁面,該頁面的按鈕應該在隨機的地方

點:

1)按鈕應當出現在屏幕內

2)按鈕不應碰撞

+7

你能告訴你嘗試過這麼遠嗎? – Almis 2015-02-09 07:19:23

+4

哪個確切的部分是你有問題:創建按鈕?定位按鈕?確定屏幕的大小?挑選隨機頭寸?檢測碰撞?別的東西? – Rup 2015-02-09 07:39:38

+3

如果編碼部分(這是你的工作_)是由用戶在這裏完成的,你永遠不會知道。 [按您的興趣發行] – 2015-02-09 08:17:30

回答

1

我有擴展可用here和這裏的解決方案是你可以做什麼:

[請注意,此解決方案使用jQuery和沒有棱角。]

var min_x = 0; 
 
var max_x = 200; 
 
var min_y = 0; 
 
var max_y = 200; 
 
var filled_areas = new Array(); 
 

 
$('.word').each(function() { 
 
    var rand_x=0; 
 
    var rand_y=0; 
 
    var area; 
 
    do { 
 
     rand_x = Math.round(min_x + ((max_x - min_x)*(Math.random() % 1))); 
 
     rand_y = Math.round(min_y + ((max_y - min_y)*(Math.random() % 1))); 
 
     area = {x: rand_x, y: rand_y, width: $(this).width(), height: $(this).height()}; 
 
    } while(check_overlap(area)); 
 
    
 
    filled_areas.push(area); 
 
    
 
    $(this).css({left:rand_x, top: rand_y}); 
 
}); 
 

 
function check_overlap(area) { 
 
    for (var i = 0; i < filled_areas.length; i++) { 
 
     
 
     check_area = filled_areas[i]; 
 
     
 
     var bottom1 = area.y + area.height; 
 
     var bottom2 = check_area.y + check_area.height; 
 
     var top1 = area.y; 
 
     var top2 = check_area.y; 
 
     var left1 = area.x; 
 
     var left2 = check_area.x; 
 
     var right1 = area.x + area.width; 
 
     var right2 = check_area.x + check_area.width; 
 
     if (bottom1 < top2 || top1 > bottom2 || right1 < left2 || left1 > right2) { 
 
      continue; 
 
     } 
 
     return true; 
 
    } 
 
    return false; 
 
}
.word { 
 
    position: absolute; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="word1" class="word"><button>hello</button></div> 
 
<div id="word2" class="word"><button>tag</button></div> 
 
<div id="word3" class="word"><button>cloud</button></div> 
 
<div id="word4" class="word"><button>hello</button></div>

+0

謝謝Rahul Desai對我來說非常有用 – 2015-02-09 16:40:56

+0

@RavindharKonka我很高興你覺得這很有用。 :)如果您對此表示滿意,請註冊並將此答案標記爲已接受。 – 2015-02-09 17:11:38

0

支票本的jsfiddle鏈接....你可以改變的隨機值.. http://jsfiddle.net/abcdurga/uparw4tc/

makeRandomButtons(10, 10, 2, 255, 2, 255, 2, 255, 'buttonId','Button');//  call this in ur for loop. 

function makeRandomButtons(min_w, max_w, min_col_r, max_col_r, min_col_g, max_col_g, min_col_b, max_col_b, buttonId,ButtonName){ 

    var w = Math.floor(rand(min_w/2,max_w/2))*2+80; 
    var col_r = Math.floor(rand(min_col_r,max_col_r)); 
    var col_g = Math.floor(rand(min_col_g,max_col_g)); 
    var col_b = Math.floor(rand(min_col_b,max_col_b)); 
    var col_a = 1; 
    var left = Math.floor(rand(150,40)); 
    var top = Math.floor(rand(110,40)); 

    var borderrad = 10; 

    var params = buttonId; 

    var divTag = '<div onclick="buttonClick('+params+')" style="position:relative;float:left;margin-left:'+left+'px;margin-top:'+top+'px;width:'+w+'px;height:'+w+'px;background-color:rgba('+col_r+','+col_g+','+col_b+','+col_a+');-moz-border-radius:'+borderrad+'px;-webkit-border-radius:'+borderrad+'px;border-radius:'+borderrad+'px;z-index:9999;" >' 
     +'<div style="color:black;margin-top:5%;margin-left:43%;width:52%;height:10%;">'+ButtonName+'</div></div>'; 

    $('#contentId').append(divTag); 

}

function rand(minv,maxv){ 
return (Math.random()*(maxv-minv))+minv; 

}

+0

感謝它的幫助 – 2015-02-09 16:42:35

+0

@RavindharKonka請投票並接受答案,如果它有幫助.. – 2015-02-10 10:05:41

相關問題