js操作css3,js操作css動畫

本文目錄一覽:

如何使用js捕獲css3動畫

CSS Animation Store

這個主意是通過一個簡單的介面來訪問CSS動畫,實際上之前的Morf.js和CSSA中都有這樣的處理,大部分代碼已經有了,只需要整整,按照Chris所建議的介面風格寫下來

從GitHub下載CSS Animation Store

下面是CSS Animation Store的基本介面(關於代碼如何工作的信息),將代碼放在標籤之前,會創建一個全局的對象 CSSAnimations,這個對象包含所有當前可以使用的CSS動畫

比如,獲取名稱為」spin」的動畫,你可以按下面的代碼:

var spin = CSSAnimations.spin;

參數spin是一個KeyframeAnimation實例,有下面的屬性和函數:

keyframes – KeyframeRule 集合

original – 原始對象 WebKitCSSKeyframesRule 或者MozCSSKeyframesRule 類型

getKeyframeTexts() – 返回所有keyframe文本集合, e.g. [『0%』, 『50%』, 『100%』]

getKeyframe(text) – 返回指定文字的 KeyframeRule 對象, e.g. getKeyframe(『0%』)

setKeyframe(text, css) – 設置新的CSS, e.g.setKeyframe(『10%』, {background: 『red』, 『font-size’: 『2em』})

可以看出,KeyframeRule提供了一些方法和函數,是對 WebKitCSSKeyframeRule 和MozCSSKeyframeRule (注意是frame不是frames)的封裝,具有下面的屬性和方法

css – 該keyframe的css內容, e.g. {background: 『red』, 『font-size’: 『2em』}

keyText – 該幀的名稱, e.g. 10%

original – 原始對象 WebKitCSSKeyframeRule 或者MozCSSKeyframeRule

示例

獲取動畫中的所有幀

var spin = CSSAnimations.spin;

for(var i=0; ispin.keyframes.length; i++)

console.log(spin.keyframes[i].css);

修改動畫中的某一幀

var spin = CSSAnimations.spin;

spin.setKeyframe(‘10%’, {background: ‘red’, ‘font-size’: ‘2em’});

反饋

給我博客或者GitHub留言,讓我知道你的想法,我還開放了修改和增加的許可權

使用原生JavaScript訪問和創建CSS動畫

如果你不想使用CSS Animation Store,或者只是想知道它的實現原理,可以參看下面的介紹

訪問CSS動畫

可以通過CSSOM訪問keyframe動畫,下面是我CSSA中的代碼,用於訪問指定的CSS動畫

JS 怎麼動態設置CSS3動畫的樣式

引入jquery

然後給你要設置動畫的對象增加或者刪除css3動畫的類就可以了。

如我這裡用colorchange這個漸變類在css裡面寫好動畫效果以後在js裡面給對象添加上就可以實現動畫了

!DOCTYPE html

html

head lang=”en”

    meta charset=”UTF-8″

    titleTest/title

    style type=”text/css”

        body{

            padding: 20px;

            background-color:#FFF;

        }

        .colorchange

        {

            animation:myfirst 5s;

            -moz-animation:myfirst 5s; /* Firefox */

            -webkit-animation:myfirst 5s; /* Safari and Chrome */

            -o-animation:myfirst 5s; /* Opera */

        }

        @keyframes myfirst

        {

            from {background:red;}

            to {background:yellow;}

        }

        @-moz-keyframes myfirst /* Firefox */

        {

            from {background:red;}

            to {background:yellow;}

        }

        @-webkit-keyframes myfirst /* Safari and Chrome */

        {

            from {background:red;}

            to {background:yellow;}

        }

        @-o-keyframes myfirst /* Opera */

        {

            from {background:red;}

            to {background:yellow;}

        }

        #main{

            width:100px;

            height:100px;

            background:red;

        }

        #cgbt{

            width: 100px;

            margin: 20px 0 0 0;

            text-align: center;

            cursor: pointer;

        }

        #cgbt:hover{

            background-color: #2D93CA;

        }

    /style

/head

body

div id=”main”

    我會變么?

/div

div id=”cgbt”

    點我讓上面的變顏色

/div

script src=”jquery-3.2.1.min.js” type=”application/javascript”/script

script

    $(document).ready(function(){

        $(“#cgbt”).click(function(){

            $(“#main”).attr(“class”,”colorchange”);

        });

    });

/script

/body

/html

怎麼用js觸發css3動畫

你用CSS3的方式預先寫好動畫樣式,不調用這個class,前端中設置滑鼠經過增加一個class,這樣滑鼠指向的時候就有CSS3的動畫,滑鼠離開去除樣式動畫結束

如何用JS和CSS3製作炫酷的彈窗效果

首先回憶一下彈窗的實現,一般我們分為兩層,彈出窗口層(popus)和遮罩層(mask),通常情況下我習慣就這兩元素全部設成fixed定位,具體和absolute區別一試便知。對於mask層自不用多少,我們如下給他設置屬性,讓他鋪滿整個屏幕。

.mask{position:fixed;top:0px;bottom:0px;left:0px;right:0px;background-color:#000;opacity:0.6;filter:alpha(opacity=60)}

popus層則要稍微麻煩點兒,這裡我們有兩種實現方法

1.已知大小的彈窗,如下,主要通過top,left與負的margin來實現。

.popus{width:300px;height:200px;position:fixed;left:50%;top:50%;margin-left:-150px;margin-top:-100px;background-color:#000}

2.未知彈窗大小,則通過js獲取彈窗層的width與height,然後在進行如上設置,在此不多述。

3.在支持css3的情況下,我們不需要知道彈窗的寬高,便可進行如下設置

.popus{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%)}

主要通過translate屬性來設置,偏移的值百分比是相對於本身的寬高,因此從原理上來說跟第一種寫法有異曲同工之妙,不過使用卻更方便。

言歸正傳,下面我們回歸到正題,即讓元素實現ps中高斯模糊的效果。

這裡引出一個css屬性:filter,注意這裡的filter並不是ie中的filter,filter有很多值,感興趣的可以點擊這裡,作者講的非常詳細。我們今天只講其中的一個blur,首先看下面的預覽圖

ps:目前來說該屬性只支持webkit瀏覽器,所以我們直接使用了css3屬性,效果也需要在webkit瀏覽器中查看

是不是很神奇,其中起作用的代碼就這一行 -webkit-filter:blur(8px) ,後面的像素值即代表模糊程度,當然在日常項目中,我們還可以加一些動畫,使頁面更加的生動,本案例完整代碼如下:

div class=’bg’

img src=’bg.jpg’ /

/div

div class=’popus’

效果是不是要好過純色加透明呢

div

div class=’left btn ‘確實不錯/div

div class=’right btn’也就那樣/div

/div

/div

css:

*{padding:0px;margin:0px}

img{width:100%;margin:0px auto;display:block}

.bg.blur{-webkit-filter:blur(8px)}

.popus{width:400px;color:#000;;position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);font-family:”微軟雅黑”;padding:20px 0px;font-weight:bold;background-color:rgba(255,255,255,0.6);border-radius:18px;text-align:center;padding:30px 0px;box-shadow:0px 0px 10px rgba(0,0,0,0.4);display:none}

.popus div{width:220px;margin:10px auto}

.popus div.btn{width:80px;padding:5px 10px;color:#000}

.left{float:left;border:1px solid #000}

.popus div.btn.right{float:right;color:#666}

js:

$(‘.bg’).on(‘click’,function(){

console.log(98)

$(this).addClass(‘blur’);

$(‘.popus’).show();

})

$(‘.btn’).on(‘click’,function(){

$(‘.bg’).removeClass(‘blur’);

$(‘.popus’).hide();

})

這樣是不是就完了?很明顯不是,看控制台

當我們彈出窗口外,肯定要禁止掉我們其他層的點擊事件,但是我們發現目前我們雖然將其他層模糊化了,但是並沒有禁止掉相應的事件,當然解決辦法也很簡單,我們可以加一層沒有背景顏色的遮罩層,覆蓋在頁面上,這樣我們每次點擊作用在遮罩層上,自然不會觸發底層的事件了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/186509.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 05:46
下一篇 2024-11-27 05:46

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • Python磁碟操作全方位解析

    本篇文章將從多個方面對Python磁碟操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件許可權修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python元祖操作用法介紹

    本文將從多個方面對Python元祖的操作進行詳細闡述。包括:元祖定義及初始化、元祖遍歷、元祖切片、元祖合併及比較、元祖解包等內容。 一、元祖定義及初始化 元祖在Python中屬於序…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • Python列表的讀寫操作

    本文將針對Python列表的讀取與寫入操作進行詳細的闡述,包括列表的基本操作、列表的增刪改查、列表切片、列表排序、列表反轉、列表拼接、列表複製等操作。 一、列表的基本操作 列表是P…

    編程 2025-04-29

發表回復

登錄後才能評論