有2種方式在圓形路徑中移動的容器DIV與CSS的:
1)動畫的CSS變換屬性:
其中要被旋轉的元件必須具有一個父元素。現在,如果要將孩子移動60度,請首先將父母旋轉60度,然後將兒童旋轉-60 degress(相反的角度,以便孩子看起來不倒)。
使用CSS過渡,CSS動畫或Web動畫API執行動畫。關於下面的代碼:
父母有相對定位通過給予相同的高度,寬度,邊界半徑= 50%來使它圓形。
孩子有絕對的位置。它已被給予高度&寬度,頂部&左側屬性,以便它出現在父級的中間位置。
#parent {
position: relative;
width: 300px;
height: 300px;
border: 1px solid rgba(0,0,0,0.1);
border-radius: 50%;
transform: rotate(0deg);
transition: transform 0.7s linear;
}
#child {
position: absolute;
width: 80px;
height: 80px;
transform: rotate(0deg);
transition: transform 0.7s linear;
top: -40px;
left: 110px;
border: 1px solid black;
}
$("#button").on('click', function() {
$("#parent").css({ transform: 'rotate(60deg)' });
$("#child").css({ transform: 'rotate(-60deg)' });
});
http://usefulangle.com/post/32/moving-an-element-in-circular-path-with-css是我寫的博客文章。還包含演示。
2)動畫的CSS偏移位置屬性:
隨着新的CSS運動路徑或偏移路徑,能夠進行動畫沿着任何路徑的元件。不過截至目前(2017年1月),它僅適用於最新版本的Chrome。
您必須使用偏移路徑屬性定義圓形SVG路徑。然後使用CSS過渡,CSS動畫或Web動畫API在此路徑上動畫偏移距離屬性。
除了定義SVG路徑,您可以給集offset-path:margin-box。這會將路徑定義爲父級的邊界邊界。如果父項已被製作爲具有邊界半徑的圓形,則該路徑也將是圓形的。
#child {
offset-path: margin-box;
}
見http://usefulangle.com/post/33/moving-element-in-circular-path-with-css-offset-path對相關的博客文章,圓形動畫處理運動路徑。
Sandeep +1爲此,但它不工作在Firefox上如何可以在Firefox上實現相同的結果.... –
對於CSS3的+1!注意:這僅適用於Webkit瀏覽器。 –
檢查我更新的小提琴,這是在Firefox中工作也 – sandeep