欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于javascript實(shí)現(xiàn)按圓形排列DIV元素(二)

 更新時(shí)間:2016年12月02日 09:47:54   作者:船長(zhǎng)op  
本篇文章主要介紹基于javascript實(shí)現(xiàn)按圓形排列DIV元素的方法,此文著重于介紹怎樣實(shí)現(xiàn)的按圓形排列DIV元素的運(yùn)動(dòng)原理和實(shí)現(xiàn)效果代碼,需要的朋友來(lái)看下吧

一、原理分析

  1.1怎么才能讓DIV元素動(dòng)起來(lái)?

  動(dòng)起來(lái)的實(shí)質(zhì),就是改變DIV的位置,也就是改變其left和top值;

  2.2怎么上DIV元素動(dòng)起來(lái)的時(shí)候,是在規(guī)定的圓周上面?

  通過(guò)上一次的分析,讓DIV按圓形排隊(duì),我們知道了,如要讓DIV定位在圓周上面,主要是根據(jù)角度(弧度)來(lái)實(shí)現(xiàn)的。

  看下圖:

上圖中,我們B元素和C元素的定位是如何實(shí)現(xiàn)的?根據(jù)上一次講的公式,如下:

(index:元素的索引值,radius半徑,dotLeft:圓心的橫坐標(biāo),dotTop:圓心的縱坐標(biāo))

B的left = Math.sin((ahd*Bindex))*radius+dotLeft
B的top = Math.cos((ahd*Bindex))*radius+dotTop
C的left = Math.sin((ahd*Cindex))*radius+dotLeft
C的top = Math.cos((ahd*Cindex))*radius+dotTop

從公式中可以看出,都一樣,只是B和C的index,即索引值不一樣,從而讓角度(弧度)數(shù)不一樣,結(jié)果就是正弦和余弦的值不一樣,所以定位也就不一樣了,但結(jié)果都是在這個(gè)圓周上變化。不會(huì)跑離這個(gè)圓周;

如果我現(xiàn)在想讓B元素,定位到C元素的位置,該怎么做呢?

就是讓B元素的角度(弧度)和C元素的一樣,然后,套用上面的公式,就可以了。

B元素的現(xiàn)在的用的圓心角,是AOB,C元素用的圓心角,是AOC;  B元素和C元素之間相差了上圖中BOC這個(gè)角度(弧度)值,也就是兩個(gè)藍(lán)色線條之間的角度(弧度);

得出結(jié)論:改變角度(弧度)就可以讓元素在圓周上改變位置;

二、實(shí)例分析

根據(jù)上面的分析,我們已經(jīng)知道如何在圓周上,改變DIV的位了;現(xiàn)在我們要做的就是怎么去改變才能讓元素看起來(lái)是在運(yùn)動(dòng)?

是“速度”;有運(yùn)動(dòng)就會(huì)有速度

速度就是在規(guī)定時(shí)間內(nèi)移動(dòng)的距離:速度 = 距離/時(shí)間

速度太快就是“瞬間移動(dòng)”讓B移動(dòng)到C;

速度慢,就可以看到B一點(diǎn)點(diǎn)向C的位置移動(dòng);

時(shí)間:在Javascript里的時(shí)間:就是用的setInterval(....,時(shí)間) 

例如:setInterval(移動(dòng),1000)  我們規(guī)定間隔1000毫秒,讓元素做移動(dòng)。

在本例中的移動(dòng):就是改變DVI的left和TOP值,而要改變這個(gè)值,需要用到上面的圓周上移動(dòng)的公式;

速度:設(shè)一個(gè)速度 speed = 5;

這里的5,就是角度,即讓圓心角,每1000毫秒,變化5度。

speed =  speed*Math.PI/180;將這個(gè)變化的角度轉(zhuǎn)換成弧度,因?yàn)镸ath.sin只接受弧度單位的參數(shù);

得出:

function 移動(dòng)(){
  speed ++
  left = Math.sin((ahd*Bindex+speed ))*radius+dotLeft;
  Math.cos((ahd*Bindex+speed))*radius+dotTop
}

三、實(shí)現(xiàn)代碼:

$(function(){
 //中心點(diǎn)橫坐標(biāo)
 var dotLeft = ($(".container").width()-$(".dot").width())/2;
 //中心點(diǎn)縱坐標(biāo)
 var dotTop = ($(".container").height()-$(".dot").height())/2;
 //起始角度
 var stard = 0;
 //半徑
 var radius = 200;
 //每一個(gè)BOX對(duì)應(yīng)的角度;
 var avd = 360/$(".box").length;
 //每一個(gè)BOX對(duì)應(yīng)的弧度;
 var ahd = avd*Math.PI/180;
 //運(yùn)動(dòng)的速度
 var speed = 2;
 //設(shè)置圓的中心點(diǎn)的位置
 $(".dot").css({"left":dotLeft,"top":dotTop});
 //設(shè)置DIV圓形排列
 $(".box").each(function(index, element){
 $(this).css({"left":Math.sin((ahd*index))*radius+dotLeft,"top":Math.cos((ahd*index))*radius+dotTop});
 });
 //運(yùn)動(dòng)函數(shù)
 var fun_animat = function(){ 
 speed = speed<360?speed:2; 
 //運(yùn)運(yùn)的速度
 speed+=2;
 //運(yùn)動(dòng)距離,即運(yùn)動(dòng)的弧度數(shù);
 var ainhd = speed*Math.PI/180; 
 //按速度來(lái)定位DIV元素
 $(".box").each(function(index, element){
 $(this).css({"left":Math.sin((ahd*index+ainhd))*radius+dotLeft,"top":Math.cos((ahd*index+ainhd))*radius+dotTop});
 });
 }
 //定時(shí)調(diào)用運(yùn)動(dòng)函數(shù)
 var setAnimate = setInterval(fun_animat,100);
 })

    其實(shí)也可以反過(guò)來(lái)思考,即每1000毫秒,我們獲得圓周上的一個(gè)坐標(biāo)點(diǎn),將這個(gè)點(diǎn)的left和TOP值,賦給,需要改變位置,即運(yùn)動(dòng)的DIV元素!~~

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家有所幫助,有興趣的朋友可以參考文章《基于javascript實(shí)現(xiàn)按圓形排列DIV元素(一)》《基于javascript實(shí)現(xiàn)按圓形排列DIV元素(三)》,謝謝對(duì)腳本之家的支持!

相關(guān)文章

  • JavaScript打印網(wǎng)頁(yè)指定區(qū)域的例子

    JavaScript打印網(wǎng)頁(yè)指定區(qū)域的例子

    這篇文章主要介紹了JavaScript打印網(wǎng)頁(yè)指定區(qū)域的例子,需要的朋友可以參考下
    2014-05-05
  • layer.js之回調(diào)銷毀對(duì)話框的例子

    layer.js之回調(diào)銷毀對(duì)話框的例子

    今天小編就為大家分享一篇layer.js之回調(diào)銷毀對(duì)話框的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • 詳解CocosCreator系統(tǒng)事件是怎么產(chǎn)生及觸發(fā)的

    詳解CocosCreator系統(tǒng)事件是怎么產(chǎn)生及觸發(fā)的

    這篇文章主要介紹了CocosCreator系統(tǒng)事件是怎么產(chǎn)生及觸發(fā)的,雖然內(nèi)容不少,但是只要一點(diǎn)點(diǎn)抽絲剝繭,具體分析其內(nèi)容,就會(huì)豁然開(kāi)朗
    2021-04-04
  • javascript重復(fù)綁定事件造成的后果說(shuō)明

    javascript重復(fù)綁定事件造成的后果說(shuō)明

    最近在修改百度地圖開(kāi)源的東西,想把里面耦合在一起的代碼給拆分出來(lái)。拆解之后,發(fā)現(xiàn)了一些坑爹的問(wèn)題。邏輯上沒(méi)有問(wèn)題的情況下,該出現(xiàn)的效果沒(méi)有出現(xiàn)
    2013-03-03
  • javascript中異常處理案例(推薦)

    javascript中異常處理案例(推薦)

    下面小編就為大家?guī)?lái)一篇javascript中異常處理案例(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • JavaScript 注冊(cè)事件代碼

    JavaScript 注冊(cè)事件代碼

    最基本的寫(xiě)法 ,然后實(shí)現(xiàn)Js和HTML的分離,然后又實(shí)現(xiàn)對(duì)同一個(gè)元素注冊(cè)多個(gè)事件,期間,我們發(fā)現(xiàn)注冊(cè)事件的兼容性問(wèn)題。最后我們對(duì)注冊(cè)事件的方法進(jìn)行封裝,方便以后使用。
    2011-01-01
  • 基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實(shí)例

    基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實(shí)例

    這篇文章主要介紹了基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • JavaScript滾動(dòng)條屬性scrollTop和scrollHeight

    JavaScript滾動(dòng)條屬性scrollTop和scrollHeight

    在開(kāi)發(fā)中我們常常會(huì)用到判斷滾動(dòng)條是否觸底的邏輯,我一般都會(huì)在網(wǎng)上搜一段代碼,這段代碼有用到scrollTop、clientHeight、 scrollHeight,這篇文章主要給大家介紹了關(guān)于JavaScript滾動(dòng)條屬性scrollTop和scrollHeight的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • mustache.js實(shí)現(xiàn)首頁(yè)元件動(dòng)態(tài)渲染的示例代碼

    mustache.js實(shí)現(xiàn)首頁(yè)元件動(dòng)態(tài)渲染的示例代碼

    這篇文章主要介紹了mustache.js實(shí)現(xiàn)首頁(yè)元件動(dòng)態(tài)渲染的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • js控制臺(tái)輸出的方法(詳解)

    js控制臺(tái)輸出的方法(詳解)

    下面小編就為大家?guī)?lái)一篇js控制臺(tái)輸出的方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11

最新評(píng)論