摘要:清楚自己想要什么樣的組件,就自己動手擼唄。咱們先來看看它的效果吧如果大家有時間,窩還是鼓勵大家自己動手實現一些小插件。于是自己就琢磨能否繼承使用方法同時保持特有組件特性。需要確保已安裝。
副標題----為什么我要寫這個 react 插件
圖片懶加載是項目中常用的功能,然而現有 react 懶加載組件庫,用著都不是很爽了 ?。概括一下有如下幾點:
沒有只針對 image 懶加載組件。多數組件庫都內置了模塊、組件、腳本、iframe 懶加載功能,而弱化了 image 懶加載功能。
不支持動畫顯示效果。
不靈活,可配置度不高。
placeholder 不能組件化。
不支持響應式圖片( picture / srcset )。
react-lazyimg-component清楚自己想要什么樣的組件,就自己動手擼唄 ?。于是乎,react-lazyimg-component 就誕生了 ?。咱們先來看看它的效果吧:
singsong: 如果大家有時間,窩還是鼓勵大家自己動手實現一些小插件。
PC 預覽:
使勁猛擊這里
手機預覽(掃一掃):
什么情況需要使用它 1. 小巧輕便,簡單易用,基本無學習成本在那個 jQuery 一統天下的年代,擼代碼就用 jQuery 一把梭。其中
jQuery.lazyload 是一個很常用圖片懶加載插件。 可能很多像我一樣的小伙伴們,懶加載就直接上 jQuery.lazyload,早已習慣了 jQuery.lazyload 使用。 于是自己就琢磨能否繼承 jQuery.lazyload 使用方法同時保持 react 特有組件特性。這樣可以很快上手~?
singsong: 這里只是繼承了 jQuery.lazyload 配置特性,不是完全繼承。畢竟 jQuery 與現在主流的 MVVM 框架思想截然不同。
如果小伙伴們熟悉 jQuery.lazyload , 完全沒有學習成本直接上手 react-lazyimg-component 哈。 只說不是寫,然并卵。那我們來看看它到底好用不:
安裝// npm $> npm install react-lazyimg-component // yarn $> yarn add react-lazyimg-component使用
// 引入 import Lazyimg, { withLazyimg } from "react-lazyimg-component"; // 調用;
是不是很簡單,有木有 ?。上述只是使用 react-lazyimg-component 的默認配置。 這里我們可以通過配置項來定制懶加載的行為:
// 引入 lazyimg import Lazyimg, { withLazyimg } from "react-lazyimg-component"; // 引入 volecity.js import "velocity-animate"; import "velocity-animate/velocity.ui"; // 配置 const config = { threshold: 100, // 指定觸發閾值 js_effect: "transition.fadeIn", // 支持 velocity.js 動畫效果 }; // 基于配置項生成對應 Lazy 組件 const Lazy = withLazyimg(config); // 調用;
接下來我們來看看 react-lazyimg-component 都那些配置項:
threshold: 0, // 指定距離底部多少距離時觸發加載 event: "scroll", // 指定觸發事件,默認為"scroll" js_effect: undefined, // 顯示圖片的js動畫效果 css_effect: undefined, // 顯示圖片的css動畫效果 container: window, // 指定容器,默認為window parent: undefined, // 可以指定動畫效果作用于元素的哪個父級元素 appear: null, // 元素出現在可視窗口時觸發appear鉤子函數 load: null, // 元素圖片的加載完后觸發load鉤子函數 error: null, // 圖片加載出錯時觸發error鉤子函數 node_type: "img", // 指定生成的節點類型,默認為"img" placeholder: // 占位元素,除了支持普通的圖片外,還支持react組件。 "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",
是不是很眼熟 ?,如果你熟悉 jquery.lazyload,那么你只需了解如下幾個配置項即可:
js_effect: 指定元素顯示的動畫效果,基于velocity.js動畫實現。使用之前需加載velocity.js。
css_effect: 指定元素顯示的動畫效果,基于animate.css動畫實現。使用之前需安裝animate.css。
parent: 用于指定動畫效果作用于元素的哪個父級元素。可取值:
父元素的 selector 選擇器(字符串)
父級層級 level(整數)
node_type: 指定 react 將生成的元素類型,默認為"img"。
placeholder: 占位元素,除了支持普通的圖片外,還支持 react 組件。
2. 支持 velocity.js、animate.css 動畫效果庫,及自定動畫效果。同時還支持動畫效果作用于父級元素。指定 js-effect 配置項來配置 velocity.js 動畫效果
注意:js-effect 依賴于 velocity.js。需要確保 velocity.js 已加載。
// 引入 lazyimg import Lazyimg, { withLazyimg } from "react-lazyimg-component"; // 引入 volecity.js import "velocity-animate"; import "velocity-animate/velocity.ui"; // 配置 const config = { placeholder: "loading.svg", js_effect: "transition.fadeIn", // 支持 velocity.js 動畫效果 }; const Lazy = withLazyimg(config); // 調用;
直接上效果了 ?
指定 css-effect 配置項來配置 animate.css 動畫效果
注意:css-effect 依賴于 animate.css。需要確保 animate.css 已安裝。
// 配置 const config = { js_effect="transition.flipXIn" // 不會生效 css_effect={["animated", "rollIn"]} // 定制 css 動畫效果 }; const Lazy = withLazyimg(config); // 調用;
直接上效果了 ?
指定 parent 配置項指定父級元素動畫效果
singsong: 為什么懶加載的動畫效果只作用于目標元素,某些條件下作用于目標元素的父級元素會有意想不到效果哦 ?。
// 指定動畫效果作用于該父級元素
直接上效果了 ?
3. react 組件式 placeholdersingsong: 傳統的 placeholder 通常都是由圖片來代替,為什么不能用組件來定制,這樣可擴展性更高。完全可以擺脫設計師的束縛,咋們開發自由發揮?! 想想有木有有點小雞凍 ?~~
先定義 placeholder 組件
import React from "react"; import "./style.scss"; export default props => { let { className, text, img, children } = props; return ({ if (item) { return item; } }) .join(" ")} > {img && } {text && {children || text}}); };
指定 placeholder 配置項為上述定義的 placeholder 組件
// 配置 const Lazy = withLazyimg({ js_effect: "transition.perspectiveDownIn", placeholder:, }); // 調用 ;
直接上效果了 ?
singsong: 圖中小火焰有木有很耀眼~
接著咋們來看看組件式 placeholder 應用場景案例,直接上效果了 ?
上圖是分類頁通過定制顯示文案的 placeholder 組件來代替普通的灰色圖片,效果是不是看著還行 ?。這是我在實際項目中使用的案例。這里小伙伴可以自由發揮哈~。如果你有不錯 idea 可以@我哈,先謝了!
為了實現 web 應用的極致體驗,Progressive Web App 漸進式網頁應用程序越來越受到開發者們重視,其中響應式圖片就是其中一個重要技術項。為了跟著大部隊,咋們也需要了解了解噢!
srcset 特性實現響應式圖片
// dpr
直接上效果了 ?
singsong: 這里 srcset 配合 sizes 特性可以實現更好的效果
picture 元素實現響應式圖片
直接上效果了 ?
后語這個插件是我由項目中提煉出的,個人用著還挺順手,就拿出與大家分享分享。另外,畢竟個人能力有限,如果你發現插件有問題或有什么好的建議,也請告知一下,先這里謝過了 ?。最后歡迎star?、歡迎watch?、歡迎fork?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93278.html
摘要:清楚自己想要什么樣的組件,就自己動手擼唄。咱們先來看看它的效果吧如果大家有時間,窩還是鼓勵大家自己動手實現一些小插件。于是自己就琢磨能否繼承使用方法同時保持特有組件特性。需要確保已安裝。 副標題----為什么我要寫這個 react 插件 圖片懶加載是項目中常用的功能,然而現有 react 懶加載組件庫,用著都不是很爽了 ?。概括一下有如下幾點: 沒有只針對 image 懶加載組件。多...
摘要:清楚自己想要什么樣的組件,就自己動手擼唄。咱們先來看看它的效果吧如果大家有時間,窩還是鼓勵大家自己動手實現一些小插件。于是自己就琢磨能否繼承使用方法同時保持特有組件特性。需要確保已安裝。 副標題----為什么我要寫這個 react 插件 圖片懶加載是項目中常用的功能,然而現有 react 懶加載組件庫,用著都不是很爽了 ?。概括一下有如下幾點: 沒有只針對 image 懶加載組件。多...
摘要:第一點,先清楚你的目的你學編程想要做什么你對哪方面感興趣然后去百度查一下哪些編程語言適合做那個方向,帶著目的去學習,如果一開始沒選好,中途掉頭就很可惜了。 你是不是...
摘要:但是究竟什么是區塊鏈呢如何基于區塊鏈構建去中心化的應用這個系列文章很有料,有圖文解釋有代碼實例,非常適合入門。想知道我接下來會寫些什么歡迎訂閱我的掘金專欄或知乎專欄前端周刊讓你在前端領域跟上時代的腳步。 showImg(https://segmentfault.com/img/remote/1460000010417511); 共 2044 字,讀完需 4 分鐘。本期以《提問的智慧》作...
摘要:珍藏版收集了好幾年的書回過頭來一看真不少拿過來跟你們一起分享下載鏈接我也會在官網上發布視頻教程呀電影呀有用的資源你們懂得作者作者科技站長官網百度搜索科技博客公眾號搜索 珍藏版---收集了好幾年的書,回過頭來一看,真不少,拿過來跟你們一起分享 showImg(https://img-blog.csdnimg.cn/20181123115931741.png?x-oss-process=i...
閱讀 3244·2021-11-11 11:00
閱讀 2565·2019-08-29 11:23
閱讀 1441·2019-08-29 10:58
閱讀 2323·2019-08-29 10:58
閱讀 2952·2019-08-23 18:26
閱讀 2507·2019-08-23 18:18
閱讀 2038·2019-08-23 16:53
閱讀 3411·2019-08-23 13:13