React(八)樣式及CSS模塊化


(1)內聯樣式

注:樣式要采用駝峰命令發,如果非要使用原生css樣式寫法,需加引號

缺點:一些動畫,偽類不能使用

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }

  render() {
    const styleCss = {
      header : { color: 'red', backgroundColor: '#ccc', "padding-top": '20px', paddingBottom: '20px' }
    }

    return (
      <div className="App">
        <p style={styleCss.header}>這是一段文字,哈哈</p>
      </div>
    );
  }
}

 

  內聯樣式中的表達式:

class App extends Component {
  constructor () {
    super();
    this.state = {
      minHeader: false
    };
  };

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

  render() {
    const styleCss = {
      header: {
        cursor: 'pointer',
        backgroundColor: 'red',
        color: '#fff',
        padding: (this.state.minHeader) ? '10px' : '30px'
      }
    };
    return (
      <div className="App">
        <p style={styleCss.header} onClick={this.switchHeader.bind(this)}>這是一段文字,哈哈</p>
      </div>
    );
  }
}

 

(2)引入css文件

  在該文件夾下使用import引入或者在index.html上面使用link引入

注:給html標簽添加class屬性需使用className

import './style/style.css' //創建的css文件

class App extends Component {
  render() {
    return (
      <div>
        <p className="blueColor">這是一段文字,哈哈</p>
      </div>
    );
  }
}

 

(3)CSS模塊化

  安裝依賴 style-loader、css-loader

  babel-plugin-react-html-attrs(如果安裝了這個插件,className 可以直接寫成 class)

  優點:

    • 所有的樣式都是local的,解決了命名沖突和全局污染的問題
    • class名生成規則靈活,可以此來壓縮class名
    • 只需引入組件的JS就能搞定組件的所有JS和CSS
npm install style-loader css-loader babel-plugin-react-html-attrs --save
render() {
    var colorCss = require('./style/style.css')   
    return (
      <div className="App">
        <p className={colorCss.blueColor}></p>
        <p >這是一段文字,哈哈</p>
      </div>
    );
}

 

(4)JSX樣式與Css樣式互轉(內聯樣式模式)

  在線轉換工具:https://staxmanade.com/CssToReact/

  render() {
    const styleCss = {
      header : {
        color: 'red',
        backgroundColor: '#ccc',
        "padding-top": '20px',
        paddingBottom: '20px'
      }
    }

    return (
      <div className="App">
        <p style={styleCss.header}>這是一段文字,哈哈</p>
      </div>
    );
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM