溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

react組件中如何設(shè)置DOM樣式

發(fā)布時(shí)間:2021-10-11 16:35:32 來源:億速云 閱讀:229 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下react組件中如何設(shè)置DOM樣式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、行內(nèi)樣式

想給虛擬dom添加行內(nèi)樣式,需要使用表達(dá)式傳入樣式對(duì)象的方式來實(shí)現(xiàn)
行內(nèi)樣式需要寫入一個(gè)樣式對(duì)象,而這個(gè)樣式對(duì)象的位置可以放在很多地方
例如:render函數(shù)里、組件原型上、外鏈js文件中
注意:這里的兩個(gè)括號(hào),第一個(gè)表示我們?cè)谝狫SX里插入JS了,第二個(gè)是對(duì)象的括號(hào)

 <p style={{color:'red', fontSize:'14px'}}>Hello world</p>

2、使用class

React推薦我們使用行內(nèi)樣式,因?yàn)镽eact覺得每一個(gè)組件都是一個(gè)獨(dú)立的整體

其實(shí)我們大多數(shù)情況下還是大量的在為元素添加類名,但是需要注意的是,class需要寫成className(因?yàn)楫吘故窃趯戭恓s代碼,會(huì)收到j(luò)s規(guī)則的現(xiàn)在,而class是關(guān)鍵字)

import React, { Component } from 'react'
1. 外部引入定義的樣式
import styles from './style.css'

class ClassStyle extends Component {
  render() {
    // js邏輯
    let className = cx({
      font: false
    })
    return (
      <>
        <div className={className}>hello</div>
        <p className='setstyle'>樣式</p>
        <DivContainer>
          world
        </DivContainer>
      <>
    )
  }
}

export default ClassStyle

3、classNames不同的條件添加不同的樣式

有時(shí)候需要根據(jù)不同的條件添加不同的樣式,比如:完成狀態(tài),完成是綠色,未完成是紅色。那么這種情況下,我們推薦使用classnames這個(gè)包:
目的:
由于react原生動(dòng)態(tài)添加多個(gè)className會(huì)報(bào)錯(cuò)

import style from './style.css'
<div className={style.class1 style.class2}</div>

想要得到最終渲染的效果是:

<div class='class1 class2'></div>

下載安裝

npm i -S classnames

使用

import classnames from 'classnames'
<div className=classnames({
    'class1': true,
    'class2': true
    )>
</div>

4、css-in-js

styled-components是針對(duì)React寫的一套css-in-js框架,簡(jiǎn)單來講就是在js中寫css。npm鏈接

  • 傳統(tǒng)的前端方案推崇"關(guān)注點(diǎn)分離"原則,HTML、CSS、JavaScript 應(yīng)該各司其職,進(jìn)行分離。

  • 而在react項(xiàng)目中,更提倡組件化方案,自然形成了將HTML、CSS、JavaScript集中編寫管理的方式。

styled-components 應(yīng)該是CSS-in-JS最熱門的一個(gè)庫,通過styled-components,你可以使用ES6的標(biāo)簽?zāi)0遄址Z法,為需要styled的Component定義一系列CSS屬性,當(dāng)該組件的JS代碼被解析執(zhí)行的時(shí)候,styled-components會(huì)動(dòng)態(tài)生成一個(gè)CSS選擇器,并把對(duì)應(yīng)的CSS樣式通過style標(biāo)簽的形式插入到head標(biāo)簽里面。動(dòng)態(tài)生成的CSS選擇器會(huì)有一小段哈希值來保證全局唯一性來避免樣式發(fā)生沖突。

1.安裝

npm i -S styled-components

定義樣式
2.樣式j(luò)s文件

import styled from 'styled-components'
const Title = styled.div`
    color:red;
    font-size:16px;
    h4{
        color:blue;
        font-size:20px;
    }
`
export {
    Title
}

顯示
就像使用常規(guī) React 組件一樣使用 Title

import React, { Component } from 'react'
import { Title } from './Styles'
class App extends Component {
render() {
    return (
        <div>
            <Title>
            我只是一個(gè)標(biāo)題
            <h4>你好世界</h4>
            </Title>
        </div >
        );
    }
}
export default App

3.樣式繼承
樣式

import styled from 'styled-components'
const Button = styled.button`
    font-size: 20px;
    border: 1px solid red;
    border-radius: 3px;
`;

// 一個(gè)繼承 Button 的新組件, 重載了一部分樣式
const Button2 = styled(Button)`
    color: blue;
    border-color: yellow;
`;

export {
    Button,
    Button2
}

顯示

import React, { Component } from 'react'
import {
Button,
Button2
} from './Styles'
class App extends Component {
render() {
    return (
    <div>
        <Button>我是一個(gè)按鈕1</Button>
        <Button2>我是一個(gè)按鈕2</Button2>
    </div >
    );
}
}
export default App

4.屬性傳遞
樣式

import styled from 'styled-components'
const Input = styled.input`
    color: ${props => props.inputColor || "blue"};
    border-radius: 3px;
`;
export {
    Input
}

顯示

import React, { Component } from 'react'
import { Input } from './Styles'
class App extends Component {
render() {
    return (
    <div>
        <Input defaultValue="你好" inputColor="red"></Input>
    </div >
    );
}
}
export default App

以上是“react組件中如何設(shè)置DOM樣式”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI