最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

隨便寫的JS片段分析 CSS粒子(偽)(一)

2017-08-13 00:02 作者:暗切線  | 我要投稿

開了兩天專欄一直沒想好寫點(diǎn)碼。在沫沫莉1K竹子賄賂之下,直播了兩小時寫代碼。想了想,干脆就寫著玩玩吧。

由于不能直播公司代碼,所以基本是我想到什么寫什么的。比較簡單的小東西。而且沒有半毛錢卵用。

定期傳gayhub: https://github.com/yqjiang/wtfanimates (嗯。手動黏貼吧。這里不可以站外地址呀)

代碼遵從 DWTFYW (你特么愛干嘛干嘛協(xié)議) V2 協(xié)議 (反正沒什么卵用)

文章更新順序 : 

這里 -> 個人博客 (darktan.top)換鏈接站內(nèi)信!引用源直接寫這里,服務(wù)器要錢租,我不想我博客訪問量過大。

由于我代碼太爛,我的一個房管忍不住辭職了。。。所以以后直播這事兒待定了。。。


----------

這期是上周寫的一個(偽)粒子系統(tǒng)。然而并沒有寫完。

先來說說 Motion (Windows下可以用AE生成 )的粒子:

選一個粒子發(fā)生器 (然而只寫了大約一種??)

選個原圖(然而并沒做)

選擇范圍(然而并沒做)

選擇源點(diǎn)(這里只寫了基于底邊線的)

選擇方向 (然而hardcode)

衰減度(然而hardcode)

生成

所以說,這只是個簡單例子,效果看封面(此處應(yīng)該是一張動圖)。

先說步驟吧。 

首先,準(zhǔn)備好單個粒子,硬性寫個衰減度(這里是 0.7-0)寫一段CSS試一試 代碼是這樣的

HTML:

<div class="point point0"></div>  <!-- 希望B站做了HTML encode -->

注:如果 這里沒有做HTML encode 上面那句話你們應(yīng)該看不到了 哈哈哈~ 

CSS:

.point1 {

    width10px; /** 此處應(yīng)產(chǎn)生一定范圍內(nèi)隨機(jī)數(shù) **/

    height10px; /** 此處隨機(jī)數(shù)應(yīng)與樓上保持一致 **/

    background#fff;  /** 額。懶,留著下周修成圖片**/

    border-radius5px; /** 此處隨機(jī)數(shù)應(yīng)是樓主 的一般,圖片情況下不饞合**/

    positionabsolute;

    animationparticle 5s both 0s infinite; /** 兩個隨機(jī)的時間  一直循環(huán),于是不用過多生成節(jié)點(diǎn) 此處沒做兼容,請自行添加 **/

    left10%;/** 隨機(jī)數(shù) **/

}

/** 動畫部分:**/

@keyframes particle {

    0% {  /** 先隱藏一下。。要么突然掉下來丑~ **/

        bottom: 0%;

        opacity: 0;

    } 

    1% {

        bottom: 0%;

        opacity: 0.7;

    } 

    100% {

        bottom: 100%;

        opacity: 0;

    }

}


下一步: 

產(chǎn)生隨機(jī):

寫了個js 

function particle(num) {

    var domstr = '';

    var cssstr = '';

    for (var i=0; i < num; i++) {

        var redius = parseInt(Math.random() * 15 + 5); // 隨機(jī)數(shù)生成 起名有問題,應(yīng)該是直徑!5-20之間的一個數(shù)字

        domstr += '<div class="point point' + i +'"></div>'

        cssstr += '.point' + i +' {'

            + 'width: ' + redius + 'px;'

            + 'height: ' + redius + 'px;'

            + 'background: #fff;'

            + 'border-radius: ' + (redius / 2) +'px;'

            + 'position: absolute;'

            + 'animation: particle ' + ((parseInt(Math.random() * 50) / 10) + 5) + 's both ' + ((parseInt(Math.random() * 10 + 1) / 10)) +'s infinite;' // 此處的隨機(jī)數(shù)是我亂寫的。。后面的延遲時間還需要改。

             + 'left: ' + (Math.random() * 100) + '%'

            + '}';

      }

       cssstr += '@keyframes particle {'

           + '0% {'

           + 'bottom: 0%;'

           + 'opacity: 0;'

           + '} '

            + '1% {'

            + 'bottom: 0%;'

            + 'opacity: 0.7;'

            + '} '

            + '100% {'

            + 'bottom: 100%;'

            + 'opacity: 0;'

            + '}}';

  var cssdom = document.querySelector('.gen');

  cssdom.innerHTML = cssstr;

  var previewdom = document.querySelector('.prefview');

  previewdom.innerHTML = domstr;

}


一些說明。這里的動畫function 用的默認(rèn) ease 為毛???

ease = 貝塞爾曲線(0.25, 0.1, 0.25, 1.0); 

大致上說就是先慢 中間快 后面慢。配合變淡??雌饋頃幸恍┳兓?。好看些

(以上是我胡扯的,只不過懶而已)

生成后,可以直接黏貼代碼進(jìn)某個頁面。。。效果相同→_→


然后還是說一下粒子系統(tǒng)的正確姿勢吧。這個是偽的!并不是有點(diǎn)的玩意都能叫粒子系統(tǒng)!

粒子系統(tǒng)應(yīng)當(dāng)遵循物理特征,我寫那玩意,牛頓棺材板都壓不住。

比如從一個點(diǎn)發(fā)出的粒子,首先是有個隨機(jī)橫向速度 和一個隨機(jī)縱向速度的。

橫向速度隨時間衰減(空氣阻力 忽略不計(jì)) 縱向速度也隨時間衰減 先衰減到0 然后變成負(fù)的(下落)形成一條完美而光滑的拋物線 (???我為毛要用形容詞)

然后就是由于粒子較小。(比如火焰,水滴)一定是越來越小 越來越暗的。包括燃燒原因,和蒸發(fā)原因。

以上說的是一個正常的粒子系統(tǒng)。


然后說說視頻特效里的

常用的幾種情況 

  1. 現(xiàn)在寫的 由下往上。。

  2. 由一個邊角,向屏幕中散發(fā) (這個其實(shí)純CSS也能偽出來)

  3. 由文字、圖形邊緣向外散發(fā)。(計(jì)算法向量最準(zhǔn)確,然而基本也是在邊緣隨機(jī)生成,然后從物體中心點(diǎn)向外散發(fā))

基本特征是,跟牛頓他老人家沒有半毛錢關(guān)系,隨機(jī)生成,變暗 完成。。(Motion里默認(rèn)不變暗,需要特殊調(diào)試)


所以先寫到這。高中物理,自己回去復(fù)習(xí),不貼公式裝逼。



隨便寫的JS片段分析 CSS粒子(偽)(一)的評論 (共 條)

分享到微博請遵守國家法律
顺平县| 太康县| 民权县| 屏南县| 武城县| 峡江县| 依兰县| 阿鲁科尔沁旗| 伊吾县| 建昌县| 吴桥县| 漯河市| 绥化市| 泽库县| 崇阳县| 克东县| 镇巴县| 宜都市| 孙吴县| 赣州市| 景谷| 安远县| 改则县| 平阳县| 布尔津县| 翁源县| 安平县| 台山市| 岚皋县| 集贤县| 马尔康县| 武乡县| 新乡市| 称多县| 秦皇岛市| 黄冈市| 大邑县| 景洪市| 白银市| 五台县| 包头市|