詳解如何在Javascript和Sass之間共享變量
在環(huán)境之間共享變量是編程的圣杯。以下是在Javascript和
Sass(或CSS?。┲g共享變量的方法。
隨著大型單頁(yè)應(yīng)用程序的興起,Javascript和CSS越來越交織在一起。通常在兩個(gè)值之間復(fù)制值(例如,與React的CSSTransitionGroup一起使用的動(dòng)畫持續(xù)時(shí)間或?qū)⑵放祁伾珎鬟f到圖形庫(kù)中)。但是,保持兩個(gè)具有相同值的副本不可避免地導(dǎo)致僅更新一個(gè)副本并最終導(dǎo)致令人沮喪的錯(cuò)誤。幸運(yùn)的是,使用webpack和CSS模塊,有更好的方法。在此博客文章中,我們將通過上述示例為共享動(dòng)畫持續(xù)時(shí)間,探討如何在腳本和樣式之間共享變量CSSTransitionGroup。
第一步是安裝我們的依賴項(xiàng):
npm install sass-loader node-sass webpack --save-dev
接下來,我們需要配置webpack以便使用,sass-loader以便我們可以從Javascript訪問我們的Sass代碼。
// webpack.config.js module.exports = { module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader', 'sass-loader'] } ] } }
現(xiàn)在開始有趣的部分。我們?cè)赟ass中定義實(shí)際的變量值,并將其導(dǎo)出到Javascript。CSS模塊有一個(gè)名為的簡(jiǎn)潔實(shí)用程序:export。該:export指令的工作原理基本上類似于ES6的export關(guān)鍵字。您的Sass代碼將導(dǎo)出一個(gè)對(duì)象,其中包含要在Javascript中使用的變量名稱及其關(guān)聯(lián)的值。這些值都導(dǎo)出為字符串。
// styles/animation.scss $animation-length: 250; $animation-length-ms: $animation-length + 0ms; :export { animationMillis: $animation-length-ms; } .component-enter { ... transition: all $animation-length-ms ease-in; }
您會(huì)注意到,我們首先在一個(gè)變量中聲明整數(shù)值,然后在另一個(gè)變量中將0ms其添加。這樣一來,我們就只能導(dǎo)出,"250"而不是"250ms"在Javascript方面更容易解析(將0ms數(shù)字強(qiáng)制將其“類型”插入ms)。
現(xiàn)在,在Javascript中,我們只需要從樣式表中導(dǎo)入樣式,然后從導(dǎo)出的變量中解析出一個(gè)int即可!
// js/animation.js import styles from '../styles/animation.scss' import CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup' const millis = parseInt(styles.animationMillis) ... <CSSTransitionGroup transitionName="component" transitionEnterTimeout={millis} transitionLeaveTimeout={millis} /> ...
這種方法非常簡(jiǎn)單,但是當(dāng)您避免在Javascript和Sass之間同步更改的麻煩時(shí),它會(huì)成倍地回報(bào)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript中去掉數(shù)組中的重復(fù)值的實(shí)現(xiàn)方法
百度面試時(shí)問的一道題目,蠻常規(guī)的,但是當(dāng)時(shí)自己的回答挺差勁的。現(xiàn)在總結(jié)記錄下~2011-08-08終于解決了IE8不支持?jǐn)?shù)組的indexOf方法
今天,測(cè)試報(bào)過來一個(gè)js bug, 在IE8下有個(gè)js錯(cuò)誤,但是在其它瀏覽器下(Firefox, Chrome, IE9)下面都很正常。后來調(diào)試發(fā)現(xiàn)原因是在IE8下,js數(shù)組沒有indexOf方法。2013-04-04JavaScript 原型學(xué)習(xí)總結(jié)
每個(gè)對(duì)像都有一個(gè)隱慝的屬性用于指向到它的父對(duì)像(構(gòu)造對(duì)像的函數(shù))的原型(這里稱為父原型或隱式原型),并從中繼承它的屬性和方法2010-10-10微信小程序 動(dòng)態(tài)修改頁(yè)面數(shù)據(jù)及參數(shù)傳遞過程詳解
這篇文章主要介紹了微信小程序 動(dòng)態(tài)修改頁(yè)面數(shù)據(jù)及參數(shù)傳遞過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09JavaScript從數(shù)組中刪除特定數(shù)據(jù)的方法總結(jié)
js數(shù)組是js部分非常重要的知識(shí),有時(shí)我們有這么個(gè)需求js數(shù)組刪除指定元素,下面這篇文章主要給大家介紹了關(guān)于JavaScript從數(shù)組中刪除特定數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-08-0810個(gè)功能強(qiáng)大的JavaScript動(dòng)畫庫(kù)分享
動(dòng)畫,從人群中脫穎而出、吸引訪客注意力的絕佳方式,本文將給大家分享10 個(gè)功能強(qiáng)大的 JavaScript 動(dòng)畫庫(kù),有了這 10 個(gè)功能強(qiáng)大的 JavaScript 庫(kù),創(chuàng)建動(dòng)畫再簡(jiǎn)單不過了,感興趣的同學(xué)可以參考閱讀2023-09-09js實(shí)現(xiàn)七夕表白彈幕效果 jQuery實(shí)現(xiàn)彈幕技術(shù)
這篇文章主要介紹了js實(shí)現(xiàn)七夕表白彈幕效果,jQuery實(shí)現(xiàn)彈幕技術(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08