2017-04-01 42 views
1

所以,我一直在嘗試創建大量的div(我們可以稱之爲酒吧),並讓它們旋轉和定位,以便它在中心創建一個圓。我不善於解釋,所以這裏有一個例子,所有的酒吧都有相同的寬度和高度。
JSFiddle Here:

在這裏一切看起來不錯。但是,當我更改條的高度時會出現問題。 JSFiddle Here:

我假設我的煩惱來自於我的定位和旋轉功能,或者是絕對定位的本質。這裏是我的第二個JSFiddle的例子。圍繞一個半徑的圓安排不同的高度div

var $bars = []; 
var viz = document.getElementById('viz'); 

function create(num) { 
    for(var i = 0; i < num; i++) { 
     var a = document.createElement('div'); 
     a.classList.add('bar'); 
     viz.appendChild(a); 
     $bars.push($(a)); 
    } 
} 

create(256); 

$(document).ready(function(){ 
    var step = Math.PI * 2/$bars.length; 
    var radius = 200; 
    var angle = 0; 

    for (var i = 0; i < $bars.length; i++) { 
     var x = Math.round(radius * Math.cos(angle)); 
     var y = Math.round(radius * Math.sin(angle)); 
     $bars[i].css('left', x + 'px'); 
     $bars[i].css('top', y + 'px'); 
     $bars[i].css('height', i + 1); 
     var rot = 90 + (1.4025 * i); 
     $bars[i].css('transform', 'rotate(' + rot + 'deg)'); 
     angle += step; 
    } 
}); 

即使高度與我的例子不同,是否有辦法保持所有div/bar的圓弧半徑? (我相對比較新,所以請原諒我可憐的代碼)

回答

1

我已經加入

transform-origin: center top; 

你的風格。這樣,元素只在一個方向上增長:

fiddle

0

代碼按照預期執行,您在圍繞圓圈時改變高度。但是,如果更新的高度,以堅實的號碼,然後它會正確執行:

$bars[i].css('height', 20); 

https://jsfiddle.net/rzt5L0sh/1/