React學(xué)習(xí) - 四.樣式

內(nèi)聯(lián)樣式

  • 在 組件的render 函數(shù)里面迅皇,用 const 變量定義json 格式的 CSS樣式,只影響該組件破衔,方式不推薦
import React from 'react';
import ReactDOM from 'react-dom';

export default class ComponentHeader extends React.Component{
  render(){

    const styleComponentHeader = {
      header: {
        backgroundColor: "#333",
        color: "fff",
        paddingTop: "15px",
        paddingBottom: "15px"
      }
    }

    return (
      <header style={styleComponentHeader.header} className="smallFontSize">
        <h1>這里是頭部</h1>
      </header>
    );
  }
}
  • 文件中引用樣式
    注意在組件的 jsx 語法中屈糊, class 要更改為 className,然后再 html 文件中引用文件路徑

  • CSS 文件的命名規(guī)范
    dialog__confirm-button--highlight
    模塊 - 屬性名字 - 屬性制定


內(nèi)聯(lián)樣式的表達(dá)式

以一個(gè)點(diǎn)擊后產(chǎn)生樣式變化作為例子:
1租悄、給 header 節(jié)點(diǎn)綁定onClick={this.switchHeader.bind(this)} 事件
2谨究、構(gòu)造函數(shù) constructor 初始化 stateminiHeader 狀態(tài)
3、給 switchHeader事件綁定this.setStatede 的變化
4恰矩、用三元表達(dá)式來執(zhí)行事件變化paddingTop: (this.state.miniHeader) ? "3px" : "15px", paddingBottom: (this.state.miniHeader) ? "3px" : "15px",

import React from 'react';
import ReactDOM from 'react-dom';

export default class ComponentHeader extends React.Component{

  constructor(){
    super();
    this.state = {
      miniHeader: false
    }
  }

  switchHeader(){
    this.setState({
      miniHeader: !this.state.miniHeader
    })
  }

  render(){

    const styleComponentHeader = {
      header: {
        backgroundColor: "#333",
        color: "fff",
        paddingTop: (this.state.miniHeader) ? "3px" : "15px",
        paddingBottom: (this.state.miniHeader) ? "3px" : "15px",
      }
    }

    return (
      <header style={styleComponentHeader.header} className="smallFontSize" onClick={this.switchHeader.bind(this)}>
        <h1>這里是頭部</h1>
      </header>
    )
  }
}

CSS模塊化

1、配置依賴包

$ npm install --save css-loader style-loder babel-plugin-react-html-attrs

2.Webpack配置(將依賴的打包關(guān)系引入)

var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
var path = require('path');

module.exports = {
  context: path.join(__dirname),
  devtool: debug ? "inline-sourcemap" : null,
  entry: "./src/js/index.js",
  module: {
    loaders: [
      {
        test: /\.js?$/,
        exclude: /(node_modules)/,
        loader: 'babel-loader',
        query: {
          presets: ['react', 'es2015'],
          plugins: ['react-html-attrs'], //添加組件的插件配置
        }
      },
      //下面是添加的 css 的 loader憎蛤,也即是 css 模塊化的配置方法外傅,大家可以拷貝過去直接使用
      {
        test: /\.css$/,
        loader: 'style-loader!css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]'
      },
    ]
  },
  output: {
    path: __dirname,
    filename: "./src/bundle.js"
  },
  plugins: debug ? [] : [
    new webpack.optimize.DedupePlugin(),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
  ],
};

3、編寫 CSS 樣式文件
4俩檬、在組件文件引入樣式文件并保存為變量
5萎胰、在節(jié)點(diǎn)引用變量形成 CSS
示例:

import React from 'react';

var footerCss = require("../../css/footer.css");

export default class ComponentFooter extends React.Component{
  render(){
    console.log(footerCss);
    return (
      <footer className={footerCss.miniFooter}>
        <h1>這里是頁腳,一般放置版權(quán)的一些信息棚辽。</h1>
      </footer>
    )
  }
}

JSX樣式與 CSS 的互轉(zhuǎn)

1技竟、通過在線轉(zhuǎn)化工具https://staxmanade.com/CssToReact/,把 CSS 樣式拷貝近來屈藐,即可轉(zhuǎn)化成 JSX 樣式榔组。

image.png

Ant Design 樣式框架

https://ant.design/components/
1熙尉、引入依賴

npm install --save antd

2、配置Webpack

test: /\.css$/, loader: 'style-loader!css-loader',

3搓扯、在項(xiàng)目的最父文件引入全局 CSS 樣式

import 'antd/dist/antd.css';

4检痰、在組件中引入具體樣式

import { Input, Button } from 'antd';

export default class BodyIndex extends React.Component{
  render(){
    return (
      <Input placeholder="Basic usage" />
      <Button type="primary">Primary</Button>
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锨推,隨后出現(xiàn)的幾起案子铅歼,更是在濱河造成了極大的恐慌,老刑警劉巖换可,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎椰,死亡現(xiàn)場離奇詭異,居然都是意外死亡沾鳄,警方通過查閱死者的電腦和手機(jī)慨飘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洞渔,“玉大人套媚,你說我怎么就攤上這事〈沤罚” “怎么了堤瘤?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浆熔。 經(jīng)常有香客問我本辐,道長,這世上最難降的妖魔是什么医增? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任慎皱,我火速辦了婚禮,結(jié)果婚禮上叶骨,老公的妹妹穿的比我還像新娘茫多。我一直安慰自己,他們只是感情好忽刽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布天揖。 她就那樣靜靜地躺著,像睡著了一般跪帝。 火紅的嫁衣襯著肌膚如雪今膊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天伞剑,我揣著相機(jī)與錄音斑唬,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恕刘,可吹牛的內(nèi)容都是我干的缤谎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雪营,長吁一口氣:“原來是場噩夢啊……” “哼弓千!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起献起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤洋访,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谴餐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姻政,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年岂嗓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汁展。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厌殉,死狀恐怖食绿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情公罕,我是刑警寧澤器紧,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站楼眷,受9級特大地震影響铲汪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜罐柳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一掌腰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧张吉,春花似錦齿梁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔗崎,卻和暖如春酵幕,著一層夾襖步出監(jiān)牢的瞬間扰藕,已是汗流浹背缓苛。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人未桥。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓笔刹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親冬耿。 傳聞我的和親對象是個(gè)殘疾皇子舌菜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容