站長資訊網
最全最豐富的資訊網站

CSS Modules是啥子東西?一起來了解一下!

CSS Modules是啥子東西?一起來了解一下!

今年四月份的時候面試了一家公司,

技術面的時候被人家問到了CSS Module有了解過么,我說沒有了解過,

他就繼續問到,那你在平時開發的時候給組件和元素起類名要怎么辦呢?
我說給元素和組件加指定前綴,這樣就能夠保證自己寫的類名和其他同事寫的類名不會起沖突。

然后就沒然后了,,后續又問了我很多React原理啥的面試就過了。

今天我們就把CSS Modules是個啥子東西給他弄明白,這樣會更加分。

【推薦教程:CSS視頻教程 】

首先我們來看一張圖:

一張圖理解 CSS Modules 的工作原理:
CSS Modules是啥子東西?一起來了解一下!
我們自己編碼的時候有倆個文件,一個是ProductList.less文件,一個是ProductList.jsx文件
在構建之后會將less文件轉換成藍色標題的那個文件。

可以由此看出:

  • button class在構建之后會被重命名為ProductList_button_1FU0u。button是local name,而 ProductList_button_1FU0u 是 global name 。你可以用簡短的描述性名字,而不需要關心命名沖突問題。

然后你要做的全部事情就是在 css/less 文件里寫 .button {…},并在組件里通過 styles.button 來引用他。

定義全局CSS

CSS Modules默認是局部作用域的,想要聲名一個全局規則,可用:global語法。

比如:

.title { 	color: red; } :global(.title) { 	color: green; }

在引用的時候:

<App className={styles.title} /> // red <App className="title" />        // green
classnames Package

在一些復雜場景中,一個元素可能對應多個className,而每個className又基于一些條件來決定是否出現。這時,classnames這個庫就非常有用。

import classnames from 'classnames'; const App = (props) => { 	const cls = classnames({ 		btn: true, 		btnLarge: props.type === 'submit', 		btnSmall: props.type === 'edit', 	}); 	return <div className={ cls } />; }

這樣,傳入不同的 type 給 App 組件,就會返回不同的 className 組合:

<App type="submit" /> // btn btnLarge <App type="edit" />   // btn btnSmall

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲日韩欧洲无码av夜夜摸| 国产精品国产三级国产an| 国产精品视频色视频| 日韩免费的视频在线观看香蕉| 性虎精品无码AV导航| 精品欧洲AV无码一区二区男男| 久久99精品一区二区三区| 国产午夜精品一区理论片| 国内精品久久久久久不卡影院| 亚洲国产一成久久精品国产成人综合 | 国产精品网站在线观看| 久久99精品久久久久久hb无码 | 国产成人精品免费视频动漫| 亚洲天堂久久精品| 久久国产乱子伦精品免费不卡| 国产精品天天看天天狠| 九九热在线精品视频| 亚洲精品狼友在线播放| assbbwbbwbbwbbwbw精品| 91精品成人免费国产| 国内精品99亚洲免费高清| 9久久免费国产精品特黄| 久久国产精品波多野结衣AV| 精品乱子伦一区二区三区| 精品国产日韩亚洲一区| 久久精品国产亚洲精品| 精品精品国产理论在线观看| 国产啪亚洲国产精品无码| 精品国产毛片一区二区无码| 9久9久热精品视频在线观看| 国产99久久久国产精品小说 | 亚洲国产精品xo在线观看| 精品人妻中文字幕有码在线 | 日韩精品电影一区亚洲| 国产精品成人va在线观看| 91国内揄拍国内精品对白不卡| 91精品国产综合久久香蕉 | 国产成人精品午夜二三区波多野 | 热re99久久精品国产99热| 亚洲人精品午夜射精日韩| 国产香蕉精品视频在|