成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

CSSModules

Youngdze / 776人閱讀

摘要:支持不同的構(gòu)建工具,這里我使用的是下文都是以為例。全局作用域允許用的語(yǔ)法聲明一個(gè)全局的作用域。使用普通的寫(xiě)法,就會(huì)引用全局的的樣式我是結(jié)果的顯示黑色。的組合在里,一個(gè)選擇器可以繼承另一個(gè)選擇器。

這篇文章來(lái)一起了解 css 模塊化的用法和原理 ,dome 地址:css modules ?

詳情,可訪(fǎng)問(wèn)我的博客 lishaoy.net

局部作用域

一般我們引入頁(yè)面的 CSS 的作用域都是全局的,都是對(duì)這個(gè)頁(yè)面起作用,產(chǎn)生局部的作用域,就是使用一個(gè)獨(dú)一無(wú)二的 class 的名稱(chēng),不會(huì)和其它選擇器重名的, CSS Modules 就是這個(gè)原理。下面我們看一段代碼

import $ from "jquery";
import styles from "./main.css";
import test from "./test.html";

$("body").append($("

我會(huì)變綠

")); $("div h1").addClass(styles.testGreen); $("body").append(test).find("h2").addClass(styles.testBlue);

上面的代碼我把 main.css 輸入到 style 對(duì)象,然后下面用了 styles.testGreen 對(duì)象的屬性形式調(diào)用,就會(huì)應(yīng)用 main.css 里的樣式

.testGreen {
  color: green;
}

構(gòu)建工具( webpack )編譯成一個(gè)哈希字符串

我會(huì)變綠

main.css 也會(huì)同時(shí)編譯

._305zeUSoiGREv3GqPa9H8F {
  color: #aaf200;
}

這樣一來(lái),這個(gè)類(lèi)名就是獨(dú)一無(wú)二的了,只對(duì)應(yīng)用的組件有效。
CSS Modules 支持不同的構(gòu)建工具,這里我使用的是 webpack ,下文都是以 webpack 為例。

下面我們來(lái)看下 webpack.config.js

module.exports = {
  context: __dirname + "/src",
  devtool: "eval-source-map", //配置生成Source Maps,選擇合適的選項(xiàng)
  entry: {
    app: ["./app.js", "./test.js"],
  },
  output: {
    path: __dirname + "/dist",
    filename: "bundle.js",
    publicPath: "/assets",
  },
  module: {
    loaders: [
      {test: /.json$/,loader: "json-loader"},
      {test: /.js$/,exclude: /node_modules/,loader: "babel-loader"},
      {test: /.css$/,loader: ExtractTextPlugin.extract({
          fallbackLoader: "style-loader",
          loader: {
            loader: "css-loader",
            query: {
              modules: true
            }
          }
        })
      },
      {test: /.html$/,loader: "html-loader"},
    ]
  },
  plugins: [
    new ExtractTextPlugin("style.css")
  ]
};

上面的代碼可以看到,query:{modules:true} 代表開(kāi)啟 CSS Modules 模塊,這里還配置了把所以得 css 合并一個(gè)文件,具體的可以了解 webpackextract-text-webpack-plugin插件。

全局作用域

CSS Modules 允許用 :global(.className) 的語(yǔ)法聲明一個(gè)全局的作用域。加了 :global 的不會(huì)被編譯成哈希值。

:global(.title) {
  color: black;
}

.title {
  color: red;
}

test.js 使用普通的寫(xiě)法,就會(huì)引用全局的 .title 的樣式

import $ from "jquery";
import styles from "./main.css";
import test from "./test.html";

$("body").append($("

我是title

")); $("div h1").addClass("title");

結(jié)果 h1 的title顯示黑色。

Class的組合

CSS Modules 里,一個(gè)選擇器可以繼承另一個(gè)選擇器。

mian.css 里,我讓 .testBlue 繼承 .testBg 類(lèi)

.testBg {
  background-color: red;
}

.testBlue {
  color: blue;
  composes: testBg;
}

不用修改 test.js ,應(yīng)用了 .testBlue 就會(huì)有一個(gè)紅色的背景。

編譯結(jié)果:

.eh33VC37uFHXkCZ8LfKYd {
  background-color: #ff0000;
}

.xrmZso54fTBX29J9G65Ai {
  color: #0c77f8;
}

相應(yīng)的 html 代碼:

我會(huì)變藍(lán)

輸入變量

CSS Modules 支持使用變量,不過(guò)要安裝 PsotCSSpostcss-modules-values。

$ npm install --save postcss-loader postcss-modules-values

postcss-loader 加入 webpack.config.js .

{
    test: /.css$/,
    loader: "style-loader!css-loader?modules!postcss-loader"
},

然后我在 colors.css 里定義了一些變量。

@value blue: #0c77f8;
@value red: #ff0000;
@value green: #aaf200;

main.css 里可以這樣引用變量

@value colors: "./color.css";
@value blue, red, green from colors;

.title {
  color: red;
}

.testBg {
  background-color: red;
}

.testGreen {
  color: green;
}

.testBlue {
  color: blue;
  composes: testBg;
  composes: div;
}

這樣就可以把 colors.css 的變量拿過(guò)來(lái)用了,是不是很神奇。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/115971.html

相關(guān)文章

  • cssModules從計(jì)劃使用到放棄

    摘要:隨著工程中代碼量的增加,一套有效的管理規(guī)范也是必須和必要的。鑒于以上兩種問(wèn)題,放棄使用,如同行有好的解決方案歡迎留言。現(xiàn)在我們工程中的做法,每個(gè)組件一個(gè)組件名稱(chēng)功能日期,然后使用的天然嵌套方式在此類(lèi)下進(jìn)行書(shū)寫(xiě)。 在實(shí)際開(kāi)發(fā)中,大部分人的精力都在js上,而css的管理總覺(jué)得不是那么重要。隨著工程中代碼量的增加,一套有效的css管理規(guī)范也是必須和必要的。最近一直想出一個(gè)工程中的css的命名...

    stormgens 評(píng)論0 收藏0
  • 關(guān)于一次線(xiàn)上出錯(cuò)的思考--如何規(guī)避線(xiàn)上程序崩盤(pán)

    摘要:近日在工作中由于疏忽問(wèn)題導(dǎo)致某個(gè)客戶(hù)的系統(tǒng)直接崩盤(pán),極大的影響了用戶(hù)使用產(chǎn)品的體驗(yàn)。在經(jīng)過(guò)修改之后,不得不思考下在日常開(kāi)發(fā)中的一些壞習(xí)慣以及如何規(guī)避這些日常問(wèn)題了。同時(shí)由于我們未能對(duì)錯(cuò)誤進(jìn)行好的處理,導(dǎo)致程序直接卡死。 近日在工作中由于疏忽問(wèn)題導(dǎo)致某個(gè)客戶(hù)的系統(tǒng)直接崩盤(pán),極大的影響了用戶(hù)使用產(chǎn)品的體驗(yàn)。在經(jīng)過(guò)修改之后,不得不思考下在日常開(kāi)發(fā)中的一些壞習(xí)慣以及如何規(guī)避這些日常問(wèn)題了。 在...

    LiuRhoRamen 評(píng)論0 收藏0
  • react搭建后臺(tái)管理(react初窺)

    摘要:前言以前一直是用進(jìn)行的開(kāi)發(fā)于是決定年后弄一弄所以年后這段時(shí)間也就一直瞎弄可算是看到成果了本來(lái)是想寫(xiě)一個(gè)類(lèi)似仿今日頭條那樣的項(xiàng)目來(lái)入手后來(lái)又尋思還不如寫(xiě)個(gè)后臺(tái)管理呢。于是乎自己便著手簡(jiǎn)單的搭建了一個(gè)集中設(shè)置的版本。 前言 以前一直是用vue進(jìn)行的開(kāi)發(fā), 于是決定年后弄一弄react, 所以年后這段時(shí)間也就一直瞎弄react, 可算是看到成果了 本來(lái)是想寫(xiě)一個(gè) 類(lèi)似 Vue仿今日頭條 那樣...

    wangjuntytl 評(píng)論0 收藏0
  • 讓CSS更完美: PostCSS-modules

    摘要:起初只是一個(gè)美化文檔的工具,但是事情到年發(fā)生了變化。對(duì)于來(lái)說(shuō),這意味著有問(wèn)題的布局。和朝夕相伴的有和最終確定的。他們通過(guò)增加前綴的辦法,解決了命名沖突的問(wèn)題。長(zhǎng)長(zhǎng)的前綴將成為歷史,歡迎來(lái)到未來(lái)的世界。 譯者注(GeoffZhu): 這篇適合一些使用過(guò)預(yù)處理CSS的開(kāi)發(fā)者,比如less,sass或stylus,如果你都沒(méi)用過(guò),那你一定不是個(gè)好司機(jī)。在PostCSS中早就可以使用CSS M...

    Barry_Ng 評(píng)論0 收藏0
  • 用 ReactJs 創(chuàng)建Mac版的 keep

    摘要:我們專(zhuān)注移動(dòng)體育領(lǐng)域的應(yīng)用開(kāi)發(fā),倡導(dǎo)開(kāi)放共享的精神,不模仿,不跟風(fēng),只做酷的產(chǎn)品。這就是正在做的事情,我們希望通過(guò)科技驅(qū)動(dòng),讓更多的人熱愛(ài)健身,喜歡運(yùn)動(dòng)。 序 因?yàn)樽约翰淮笙矚g喜歡用手機(jī),所以當(dāng)在手機(jī)上看到有些應(yīng)用只能在手機(jī)上使用時(shí)覺(jué)得好別扭,但我本身也不是寫(xiě)移動(dòng)App的,只是會(huì)寫(xiě)點(diǎn) js,都說(shuō)js啥都能干,那我就用它干! 關(guān)于 Keep Keep 是一個(gè)熱愛(ài)運(yùn)動(dòng)的年輕團(tuán)隊(duì),同時(shí)也是一...

    Tychio 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<