欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

css為什么需要模塊化

這篇文章主要講解了“css為什么需要模塊化”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“css為什么需要模塊化”吧!

為阿拉善盟等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及阿拉善盟網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、阿拉善盟網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

css “局部”樣式

sass、less 通過(guò) @import ,部分解決的 css 模塊化的問(wèn)題。

由于 css 是全局的,在被引入的文件和當(dāng)前文件出現(xiàn)重名的情況下,前者樣式就會(huì)被后者覆蓋。
在引入一些公用組件,或者多人協(xié)作開(kāi)發(fā)同一頁(yè)面的時(shí)候,就需要考慮樣式會(huì)不會(huì)被覆蓋,這很麻煩。

// file A
.name {
    color: red
}

// file B
@import "A.scss";
.name {
    color: green
}

css 全局樣式的特點(diǎn),導(dǎo)致 css 難以維護(hù),所以需要一種 css “局部”樣式的解決方案。
也就是徹底的 css 模塊化,@import 進(jìn)來(lái)的 css 模塊,需要隱藏自己的內(nèi)部作用域。

CSS Modules 原理

通過(guò)在每個(gè) class 名后帶一個(gè)獨(dú)一無(wú)二 hash 值,這樣就不有存在全局命名沖突的問(wèn)題了。這樣就相當(dāng)于偽造了“局部”樣式。

// 原始樣式 styles.css
.title {
  color: red;
}

// 原始模板 demo.html
import styles from 'styles.css';

<h2 class={styles.title}>
  Hello World
</h2>


// 編譯后的 styles.css
.title_3zyde {
  color: red;
}

// 編譯后的 demo.html
<h2 class="title_3zyde">
  Hello World
</h2>

webpack 與 CSS Modules

webpack 自帶的 css-loader 組件,自帶了 CSS Modules,通過(guò)簡(jiǎn)單的配置即可使用。

{
    test: /\.css$/,
    loader: "css?modules&localIdentName=[name]__[local]--[hash:base64:5]"
}

命名規(guī)范是從 BEM 擴(kuò)展而來(lái)。

  • Block: 對(duì)應(yīng)模塊名 [name]

  • Element: 對(duì)應(yīng)節(jié)點(diǎn)名 [local]

  • Modifier: 對(duì)應(yīng)節(jié)點(diǎn)狀態(tài) [hash:base64:5]

使用 __ 和 -- 是為了區(qū)塊內(nèi)單詞的分割節(jié)點(diǎn)區(qū)分開(kāi)來(lái)。
最終 class 名為 styles__title--3zyde。

在生產(chǎn)環(huán)境中使用

在實(shí)際生產(chǎn)中,結(jié)合 sass 使用會(huì)更加便利。以下是結(jié)合 sass 使用的 webpack 的配置文件。

{
    test: /\.scss$/,
    loader: "style!css?modules&importLoaders=1&localIdentName=[name]__[local]--[hash:base64:5]!sass?sourceMap=true&sourceMapContents=true"
}

通常除了局部樣式,還需要全局樣式,比如 base.css 等基礎(chǔ)文件。
將公用樣式文件和組件樣式文件分別放入到兩個(gè)不同的目標(biāo)下。如下。

.
├── app                      
│   ├── styles               # 公用樣式
│   │     ├── app.scss       
│   │     └── base.scss      
│   │
│   └── components           # 組件
          ├── Component.jsx  # 組件模板
          └── Component.scss # 組件樣式

然后通過(guò) webpack 配置,將在 app/styles 文件夾的外的(exclude) scss 文件"局部"化。

{
    test: /\.scss$/,
    exclude: path.resolve(__dirname, 'app/styles'),
    loader: "style!css?modules&importLoaders=1&localIdentName=[name]__[local]--[hash:base64:5]!sass?sourceMap=true&sourceMapContents=true"
},
{
    test: /\.scss$/,
    include: path.resolve(__dirname, 'app/styles'),
    loader: "style!css?sass?sourceMap=true&sourceMapContents=true"
}

有時(shí)候,一個(gè)元素有多個(gè) class 名,可以通過(guò)  join(" ")  或字符串模版的方式來(lái)給元素添加多個(gè) class 名。

// join-react.jsx
<h2 className={[styles.title,styles.bold].join(" ")}>
  Hello World
</h2>

// stringTemp-react.jsx
<h2 className={`${styles.title} ${styles.bold}`}>
  Hello World
</h2>

如果只寫(xiě)一個(gè) class 就能把樣式定義好,那么最好把所有樣式寫(xiě)在一個(gè) class 中。
所以,如果我們使用了多個(gè) class 定義樣式,通常會(huì)帶一些一些邏輯判斷。這個(gè)時(shí)候?qū)懫饋?lái)就會(huì)麻煩不少。

引入 classnames ,即可以解決給元素寫(xiě)多個(gè) class 名的問(wèn)題,也可以解決寫(xiě)邏輯判斷的麻煩問(wèn)題。

classNames('foo', 'bar'); // => 'foo bar'
classNames('foo', { bar: true }); // => 'foo bar'
classNames({ 'foo-bar': true }); // => 'foo-bar'
classNames({ 'foo-bar': false }); // => ''
classNames({ foo: true }, { bar: true }); // => 'foo bar'
classNames({ foo: true, bar: true }); // => 'foo bar'

// lots of arguments of various types
classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'

// other falsy values are just ignored
classNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'

感謝各位的閱讀,以上就是“css為什么需要模塊化”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)css為什么需要模塊化這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站名稱:css為什么需要模塊化
地址分享:http://aaarwkj.com/article38/pcdspp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)網(wǎng)站營(yíng)銷(xiāo)、商城網(wǎng)站、外貿(mào)建站、建站公司、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
欧美伦理片三级在线观看| 亚洲经典日韩欧美一区| 情五月激情亚洲丁香佳色| 色91精品在线观看剧情| 国产精品久久久久久久亚洲| 成人免费激情在线观看| 国产精品福利手机在线观看| 蜜臀视频一区二区在线播放| 欧美日韩黄片免费在线观看| 一区二区在线视频中文字幕 | 日韩一区二区中文字幕| 中文字幕亚洲精品熟女少妇| 亚洲一区二区日韩人妻| 激情亚洲综合一区二区| 亚洲一区二区三区熟女av| 天天操夜夜骑日日干| 国产黄片大秀在线观看| 成人av男人天堂东京热| 亚洲精品成人午夜久久| 日本熟妇中文字幕系列| 国产精品情侣av自拍| 国产亚洲av综合人人精品| 好吊妞在线新免费视频| 五月婷婷色丁香综合激情| 日本特黄特色高清免费大片| 一本色道久久亚洲综合精品蜜桃| 亚洲不卡在线免费av| 中文日本强暴人妻另类视频| 亚洲婷婷久久一区二区| 99热这里只有精品欧美| 欧美伊人久久大综合精品| 亚洲毛片在线免费播放| 亚洲伦理国产一国产二| 国产b片免费在线观看| 97视频精品免费观看| 蜜桃视频国产在线观看| 日韩精品中文字幕国产精品| 91精品国产色综合久久不| 一区二区三区欧美日| 日本少妇人妻中文字幕| 日韩在线国产精品一区|