整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          第13天 - 16天搞定前端,CSS的動畫效果,酷

          第13天 - 16天搞定前端,CSS的動畫效果,酷

          以往,想在HTML上實現動畫效果,要不就用被喬布斯恨死的了Flash 動畫,要不就用網頁動畫圖像或者JavaScript 實現效果。在CSS3之后,就可以用CSS在HTML上實現動畫了。

          要創建 CSS3 動畫,你需要了解 @keyframes 規則?,F在 @keyframes 創建動畫時,需將其綁定到一個選擇器,否則動畫不會有任何效果。

          13.1 原生創建動畫

          用CSS3原生代碼創建動畫,語法是@keyframes animationname {keyframes-selector {css-styles;}},其中animationname :必需,動畫的名稱;

          keyframes-selector:必需,動畫時長的百分比合法的值:0-100%, from(與 0% 相同),to(與 100% 相同)
          css-styles:必需,一個或多個合法的 CSS 樣式屬性。

          <!DOCTYPE html>
          <html>
          <head>
              <meta charset="UTF-8">
              <title>動起來</title>
              <style>
                  div {
                      width: 100px;
                      height: 100px;
                      background: red;
                      position: relative;
                      animation: myfirst 5s;
                      -webkit-animation: firstan 5s; /* Safari and Chrome */
                  }
          
                  @keyframes firstan {
                      0% {
                          background: red;
                          left: 0px;
                          top: 0px;
                      }
                      25% {
                          background: yellow;
                          left: 200px;
                          top: 0px;
                      }
                      50% {
                          background: blue;
                          left: 200px;
                          top: 200px;
                      }
                      75% {
                          background: green;
                          left: 0px;
                          top: 200px;
                      }
                      100% {
                          background: red;
                          left: 0px;
                          top: 0px;
                      }
                  }
          
                  @-webkit-keyframes myfirst /* Safari and Chrome */
                  {
                      0% {
                          background: red;
                          left: 0px;
                          top: 0px;
                      }
                      25% {
                          background: yellow;
                          left: 200px;
                          top: 0px;
                      }
                      50% {
                          background: blue;
                          left: 200px;
                          top: 200px;
                      }
                      75% {
                          background: green;
                          left: 0px;
                          top: 200px;
                      }
                      100% {
                          background: red;
                          left: 0px;
                          top: 0px;
                      }
                  }
              </style>
          </head>
          <body>
          <div/>
          </body>
          </html>
          

          輸出結果


          13.2 動畫庫創建

          如果每次都要自己手動用CSS去創建動畫,那效果太低了。為此,有人專門專門開發了CSS動畫庫animation.css??梢栽诰€https://animate.stylek看效果,它里面的動畫效果,可以滿足大多數需求了。下載https://github.com/animate-css/animate.css里的animate.min.css文件,放到HTML文件相同目錄下。

          <!DOCTYPE html>
          <html>
          <head>
              <meta charset="UTF-8">
              <title>用動畫庫實現動畫</title>
              <link rel="stylesheet" type="text/css" href="animate.min.css"/>
          </head>
          <body>
          <main class="animate__animated animate__fadeInLeft">
              老陳說編程,動畫效果行
          </main>
          </body>
          </html>

          輸出結果



          好了,有關CSS動畫效果的內容,老陳講完了,如果覺得對你有所幫助,希望老鐵能轉發點贊,讓更多的人看到這篇文章。你的轉發和點贊,就是對老陳繼續創作和分享最大的鼓勵。

          一個當了10年技術總監的老家伙,分享多年的編程經驗。想學編程的朋友,可關注:老陳說編程。分享Python,前端(小程序)、App和嵌入式方面的干貨。關注我,沒錯的。

          #前端##HTML5##CSS##程序員##Web#

          家好,今天我們來聊聊一個非常酷的JavaScript特性——裝飾器。裝飾器(Decorators)最早在Python和Java等語言中廣受歡迎,而現在它也逐漸在JavaScript中得到應用。它能讓我們的代碼變得更加優雅和模塊化。這篇文章將帶你一步步了解什么是裝飾器,并教你如何在項目中使用它們。

          什么是裝飾器?

          簡單來說,裝飾器是一種特殊的函數,它可以用來修改類、方法、屬性等的行為。通過裝飾器,我們可以在不修改原始代碼的情況下,添加額外的功能。裝飾器通常在類定義前使用@符號來應用,就像給代碼加上特殊的“裝飾品”一樣。

          裝飾器的基本語法

          讓我們從一個簡單的裝飾器函數開始:

          function myDecorator(target) {
              // 給目標對象加個標記,表示它被裝飾過了
              target.decorated=true;
          }

          這個示例中的myDecorator是一個簡單的裝飾器函數,它給目標添加了一個decorated屬性,表示這個對象被裝飾過了。

          應用場景

          裝飾器的應用場景非常廣泛,包括但不限于:

          1. 日志記錄:在方法調用前后記錄日志。
          2. 權限驗證:在執行方法前檢查用戶權限。
          3. 數據驗證:在設置屬性值時進行數據校驗。

          將裝飾器應用于類

          要將裝飾器應用于類,可以在類定義前使用@符號。以下是一個簡單的示例:

          function addTimestamp(target) {
              // 給類的原型添加一個timestamp屬性,初始化為當前時間
              target.prototype.timestamp=new Date();
          }
          
          @addTimestamp
          class MyClass {}
          
          const instance=new MyClass();
          console.log(instance.timestamp); // 輸出當前日期和時間

          在這個示例中,addTimestamp裝飾器為MyClass類添加了一個timestamp屬性。當創建MyClass的實例時,該屬性會被初始化為當前的日期和時間。

          方法裝飾器

          方法裝飾器可以修改類方法的行為。假設我們有一個需要記錄方法調用情況的需求,可以這樣實現:

          function logMethod(target, propertyKey, descriptor) {
              const originalMethod=descriptor.value;
              
              descriptor.value=function (...args) {
                  console.log(`調用方法${propertyKey},參數為:`, args);
                  return originalMethod.apply(this, args);
              };
              return descriptor;
          }
          
          class MyClass {
              @logMethod
              greet(name) {
                  return `Hello, ${name}!`;
              }
          }
          
          const instance=new MyClass();
          console.log(instance.greet('World')); 
          // 輸出:
          // 調用方法greet,參數為: [ 'World' ]
          // Hello, World!

          在這個示例中,logMethod裝飾器記錄了方法調用時的參數,然后再調用原始方法。

          訪問器裝飾器

          訪問器裝飾器可以用來修改getter和setter的行為。假設我們希望每次獲取某個屬性值時,值都被轉換為大寫,可以這樣實現:

          function capitalize(target, propertyKey, descriptor) {
              const originalGetter=descriptor.get;
              descriptor.get=function () {
                  const result=originalGetter.call(this);
                  return result.toUpperCase();
              };
              return descriptor;
          }
          
          class Person {
              constructor(name) {
                  this._name=name;
              }
              @capitalize
              get name() {
                  return this._name;
              }
          }
          
          const person=new Person('john');
          console.log(person.name); // 輸出: JOHN

          在這個示例中,capitalize裝飾器修改了name屬性的getter,使其返回大寫的名字。

          屬性裝飾器

          屬性裝飾器可以用于添加元數據,但不能直接修改屬性值。假設我們希望某個屬性是只讀的,可以這樣實現:

          function readOnly(target, propertyKey) {
              Object.defineProperty(target, propertyKey, {
                  writable: false
              });
          }
          
          class Car {
              @readOnly
              make='Toyota';
          }
          
          const myCar=new Car();
          console.log(myCar.make); // 輸出: Toyota
          myCar.make='Honda'; // 此操作將靜默失敗或在嚴格模式下拋出錯誤
          console.log(myCar.make); // 仍輸出: Toyota

          在這個示例中,readOnly裝飾器使make屬性變為只讀,因此任何修改該屬性值的嘗試都不會成功。

          參數裝飾器

          參數裝飾器可以用于為方法參數添加元數據。假設我們希望在方法調用時記錄某個參數的值,可以這樣實現:

          function logParameter(target, propertyKey, parameterIndex) {
              const originalMethod=target[propertyKey];
              target[propertyKey]=function (...args) {
                  console.log(`方法${propertyKey}的第${parameterIndex}個參數值為:`, args[parameterIndex]);
                  return originalMethod.apply(this, args);
              };
          }
          
          class User {
              greet(@logParameter name) {
                  return `Hello, ${name}!`;
              }
          }
          
          const user=new User();
          console.log(user.greet('Alice')); 
          // 輸出:
          // 方法greet的第0個參數值為: Alice
          // Hello, Alice!

          在這個示例中,logParameter裝飾器記錄了特定參數的值,每當調用該方法時都會執行此記錄。

          總結

          裝飾器是一種非常實用的工具,無論是日志記錄、權限驗證還是數據校驗,它都能讓我們的代碼更優雅。隨著裝飾器在JavaScript中的廣泛支持和標準化,它們將成為我們開發中的利器。如果你有任何問題或想法,歡迎在評論區留言,我們一起交流探討!

          我比較喜歡使用 Vue 來開發,所以有時會深入研究其功能和特性。通過這篇文章,向你們介紹十個很酷的竅門和技巧,以幫助大家成為更好的 Vue 開發者。

          插槽語法更漂亮

          隨著Vue 2.6的推出,已經引入了插槽的簡寫方式,之前簡寫可用于事件(例如,@click表示v-on:click事件)或冒號表示方式用于綁定(:src)。例如,如果有一個表格組件,則可以按以下方式使用此功能:

          $on(‘hook:’)

          如果要在created或mounted方法中定義自定義事件偵聽器或第三方插件,并且需要在beforeDestroy方法中將其刪除以免引起任何內存泄漏,則可以使用此功能。使用$on(‘hook:’)方法,我們可以僅使用一種生命周期方法(而不是兩種)來定義/刪除事件。

          prop 驗證

          你可能已經知道可以將props驗證為原始類型,例如字符串,數字甚至對象。我們還可以使用自定義驗證器,例如,如果要針對字符串列表進行驗證:

          動態指令參數

          Vue 2.6 的最酷功能之一是可以將指令參數動態傳遞給組件。假設有一個按鈕組件,并且在某些情況下想監聽單擊事件,而在其他情況下想監聽雙擊事件。這就是動態指令派上用場的地方了:

          重用同一路由的組件

          有時,我們不同路由共用某些時,如果在這些路由之間切換,則默認情況下,共享組件將不會重新渲染,因為Vue 出于性能原因會重用該組件。但是,如果我們仍然希望重新渲染這些組件,則可以通過在路由器視圖組件中提供:key屬性來實現重新渲染。

          從父類到子類的所有 props

          這是一個非常酷的功能,可將所有prop從父組件傳遞到子組件。如果我們有另一個組件的包裝器組件,這將特別方便。因為,我們不必一個一個將prop傳遞給子組件,而是一次傳遞所有prop:

          上面的可以代替下面的做法

          從父類到子類的所有事件偵聽器

          如果子組件不在父組件的根目錄下,則可以將所有事件偵聽器從父組件傳遞到子組件,如下所示:

          如果子組件位于其父組件的根目錄下,則默認情況下它將獲得那些組件,因此不需要此小技巧。

          $createElement

          默認情況下,每個Vue實例都可以訪問$createElement方法來創建和返回虛擬節點。例如,可以利用它在可以通過v-html指令傳遞的方法中使用標記。在函數組件中,可以將此方法作為渲染函數中的第一個參數訪問。

          使用 JSX

          由于Vue CLI 3默認支持使用JSX,因此現在(如果愿意)我們可以使用JSX編寫代碼(例如,可以方便地編寫函數組件)。如果尚未使用Vue CLI 3,則可以使用babel-plugin-transform-vue-jsx獲得JSX支持。

          自定義 v-model

          默認情況下,v-model是@input事件監聽器和:value props上的語法糖。但是,我們可以在Vue組件中指定一個模型屬性,以定義使用什么事件和值

          總結

          希望這些竅門和技巧對你有所幫助,如果你也知道哪些技巧,歡迎留言。


          原文:https://www.telerik.com/blogs/12-tips-and-tricks-to-improve-your-vue-projects


          主站蜘蛛池模板: 亚洲一区二区三区免费| 无码人妻精品一区二| 国产一区二区三区影院| 精品乱人伦一区二区三区| 久久免费区一区二区三波多野| 国产精品无码一区二区三区毛片| 在线视频精品一区| 一区二区精品视频| 亚洲国产综合精品中文第一区| 亚洲乱码一区二区三区在线观看| 精品视频无码一区二区三区| 国产精品成人一区二区三区| 亚洲乱码一区二区三区在线观看| 精品一区精品二区制服| 国产一区二区三区视频在线观看| 中文字幕精品一区二区精品| 无码人妻精品一区二区蜜桃 | 国产精品成人99一区无码| 午夜视频久久久久一区 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 国产精品高清一区二区三区不卡| 北岛玲在线一区二区| 无码国产精成人午夜视频一区二区 | 麻豆国产一区二区在线观看| 一区二区三区在线观看中文字幕| 亚洲视频免费一区| 亚洲国产一区视频| 久久久无码精品人妻一区| 国产伦精品一区二区免费| 成人区精品一区二区不卡亚洲 | 国产丝袜视频一区二区三区| 国精产品一区一区三区有限在线| 无人码一区二区三区视频| 欧美激情一区二区三区成人| 国产乱码一区二区三区爽爽爽| 在线精品一区二区三区电影 | 日韩一区二区在线观看| 国产成人综合一区精品| 免费观看一区二区三区| 国产a久久精品一区二区三区| 亚洲一区中文字幕在线观看|