react四種組件中DOM樣式設(shè)置方式詳解
1、行內(nèi)樣式
想給虛擬dom添加行內(nèi)樣式,需要使用表達(dá)式傳入樣式對象的方式來實現(xiàn)
行內(nèi)樣式需要寫入一個樣式對象,而這個樣式對象的位置可以放在很多地方
例如:render函數(shù)里、組件原型上、外鏈js文件中
注意:這里的兩個括號,第一個表示我們在要JSX里插入JS了,第二個是對象的括號
<p style={{color:'red', fontSize:'14px'}}>Hello world</p>
2、使用class
React推薦我們使用行內(nèi)樣式,因為React覺得每一個組件都是一個獨立的整體
其實我們大多數(shù)情況下還是大量的在為元素添加類名,但是需要注意的是,class需要寫成className(因為畢竟是在寫類js代碼,會收到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不同的條件添加不同的樣式
有時候需要根據(jù)不同的條件添加不同的樣式,比如:完成狀態(tài),完成是綠色,未完成是紅色。那么這種情況下,我們推薦使用classnames這個包:
目的:
由于react原生動態(tài)添加多個className會報錯
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是針對React寫的一套css-in-js框架,簡單來講就是在js中寫css。npm鏈接
- 傳統(tǒng)的前端方案推崇"關(guān)注點分離"原則,HTML、CSS、JavaScript 應(yīng)該各司其職,進(jìn)行分離。
- 而在react項目中,更提倡組件化方案,自然形成了將HTML、CSS、JavaScript集中編寫管理的方式。
styled-components 應(yīng)該是CSS-in-JS最熱門的一個庫,通過styled-components,你可以使用ES6的標(biāo)簽?zāi)0遄址Z法,為需要styled的Component定義一系列CSS屬性,當(dāng)該組件的JS代碼被解析執(zhí)行的時候,styled-components會動態(tài)生成一個CSS選擇器,并把對應(yīng)的CSS樣式通過style標(biāo)簽的形式插入到head標(biāo)簽里面。動態(tài)生成的CSS選擇器會有一小段哈希值來保證全局唯一性來避免樣式發(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;
h3{
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>
我只是一個標(biāo)題
<h3>你好世界</h3>
</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;
`;
// 一個繼承 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>我是一個按鈕1</Button>
<Button2>我是一個按鈕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
到此這篇關(guān)于react之四種組件中DOM樣式設(shè)置方式的文章就介紹到這了,更多相關(guān)react組件DOM樣式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ReactJS?應(yīng)用兼容ios9對標(biāo)ie11解決方案
這篇文章主要為大家介紹了ReactJS?應(yīng)用兼容ios9對標(biāo)ie11解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
react中實現(xiàn)搜索結(jié)果中關(guān)鍵詞高亮顯示
這篇文章主要介紹了react中實現(xiàn)搜索結(jié)果中關(guān)鍵詞高亮顯示,使用react實現(xiàn)要比js簡單很多,方法都是大同小異,具體實現(xiàn)代碼大家跟隨腳本之家小編一起看看吧2018-07-07
React之如何在Suspense中優(yōu)雅地請求數(shù)據(jù)
Suspense 是 React 中的一個組件,直譯過來有懸掛的意思,能夠?qū)⑵浒漠惒浇M件掛起,直到組件加載完成后再渲染,本文詳細(xì)介紹了如何在Suspense中請求數(shù)據(jù),感興趣的小伙伴可以參考閱讀本文2023-04-04
使用React+SpringBoot開發(fā)一個協(xié)同編輯的表格文檔實現(xiàn)步驟
隨著云計算和團(tuán)隊協(xié)作的興起,協(xié)同編輯成為了許多企業(yè)和組織中必不可少的需求,本文小編就將為大家介紹如何使用React+SpringBoot簡單的開發(fā)一個協(xié)同編輯的表格文檔,感興趣的朋友一起看看吧2023-11-11
淺談React Native Flexbox布局(小結(jié))
這篇文章主要介紹了淺談React Native Flexbox布局(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
jenkins分環(huán)境部署vue/react項目的方法步驟
這篇文章主要介紹了jenkins分環(huán)境部署vue/react項目的方法,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
react國際化化插件react-i18n-auto使用詳解
這篇文章主要介紹了react國際化化插件react-i18n-auto使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
解決React報錯Unexpected default export of an
這篇文章主要為大家介紹了React報錯Unexpected default export of anonymous function解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

