您好,登錄后才能下訂單哦!
小編給大家分享一下react組件中如何設置DOM樣式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
想給虛擬dom添加行內樣式,需要使用表達式傳入樣式對象的方式來實現
行內樣式需要寫入一個樣式對象,而這個樣式對象的位置可以放在很多地方
例如:render
函數里、組件原型上、外鏈js文件中
注意:這里的兩個括號,第一個表示我們在要JSX里插入JS了,第二個是對象的括號
<p style={{color:'red', fontSize:'14px'}}>Hello world</p>
React推薦我們使用行內樣式,因為React覺得每一個組件都是一個獨立的整體
其實我們大多數情況下還是大量的在為元素添加類名,但是需要注意的是,class
需要寫成className
(因為畢竟是在寫類js代碼,會收到js規則的現在,而class
是關鍵字)
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
有時候需要根據不同的條件添加不同的樣式,比如:完成狀態,完成是綠色,未完成是紅色。那么這種情況下,我們推薦使用classnames這個包:
目的:
由于react原生動態添加多個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>
styled-components
是針對React寫的一套css-in-js框架,簡單來講就是在js中寫css。npm鏈接
傳統的前端方案推崇"關注點分離"原則,HTML、CSS、JavaScript 應該各司其職,進行分離。
而在react項目中,更提倡組件化方案,自然形成了將HTML、CSS、JavaScript集中編寫管理的方式。
styled-components 應該是CSS-in-JS最熱門的一個庫,通過styled-components,你可以使用ES6的標簽模板字符串語法,為需要styled的Component定義一系列CSS屬性,當該組件的JS代碼被解析執行的時候,styled-components會動態生成一個CSS選擇器,并把對應的CSS樣式通過style標簽的形式插入到head標簽里面。動態生成的CSS選擇器會有一小段哈希值來保證全局唯一性來避免樣式發生沖突。
1.安裝
npm i -S styled-components
定義樣式
2.樣式js文件
import styled from 'styled-components' const Title = styled.div` color:red; font-size:16px; h4{ color:blue; font-size:20px; } ` export { Title }
顯示
就像使用常規 React 組件一樣使用 Title
import React, { Component } from 'react' import { Title } from './Styles' class App extends Component { render() { return ( <div> <Title> 我只是一個標題 <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; `; // 一個繼承 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
以上是“react組件中如何設置DOM樣式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。