React css-in-js基礎(chǔ)介紹與應用
1. 介紹
CSS-in-JS 是一種技術(shù),而不是一個具體的庫實現(xiàn)。簡單來說 CSS-in-JS 就是將應用的CSS樣式寫在 JavaScript 文件里面,而不是獨立為一些 css,scss 或 less 之類的文件,這樣你就可以在 CSS 中使用一些屬于JS的諸如模塊聲明,變量定義,函數(shù)調(diào)用和條件判斷等語言特性來提供靈活的可擴展的樣式定義。CSS-in-JS 在 React 社區(qū)的熱度是最高的,這是因為 React 本身不會管用戶怎么去為組件定義樣式的問題,而 Vue 有屬于框架自己的一套定義樣式的方案。
styled-components 應該是 CSS-in-JS 最熱門的一個庫,通過 styled-components,你可以使用 ES6 的標簽模板字符串語法,為需要 styled 的 Component 定義一系列 CSS 屬性,當該組件的 JS 代碼被解析執(zhí)行的時候,styled-components 會動態(tài)生成一個 CSS 選擇器,并把對應的 CSS 樣式通過 style 標簽的形式插入到 head 標簽里面。動態(tài)生成的 CSS 選擇器會有一小段哈希值來保證全局唯一性來避免樣式發(fā)生沖突。
在react項目中,可以讓樣式命名不沖突的方案
- 定義樣式名稱時,就讓它唯一
- 使用內(nèi)置的cssModule
- css-in-js 把css當作js來使用
2. 使用
首先需要安裝相關(guān)包:
yarn add styled-components
使用:
App.jsx:
import React, { Component } from 'react'
import Child from './components/Child-07-樣式'
class App extends Component {
render() {
return (
<div>
<Child />
</div>
)
}
}
export default App
Child.jsx:
import React, { Component } from 'react'
// 導入樣式組件
import { ChildContainer, TitleContainer, SubTitleContainer, ContentContainer } from './style'
class Child extends Component {
render() {
return (
<ChildContainer>
{/* <TitleContainer>我是一個child組件</TitleContainer> */}
{/* 嵌套使用 */}
<div className="title">我是一個child組件</div>
<SubTitleContainer>我是一個副標題</SubTitleContainer>
<hr />
{/* 屬性傳遞 */}
<ContentContainer color='#00f' size="20">
我是內(nèi)容
</ContentContainer>
</ChildContainer>
)
}
}
export default Child
style.js:
// 使用css-in-js技術(shù)方案完成 react項目中的樣式編寫
// styled-components把樣式當作組件來定義和使用,樣式就是組件,組件就是樣式
import styled from 'styled-components'
// 語法
// export const ChildContainer = styled.html標簽名`樣式`
export const ChildContainer = styled.div`
/* 在此字符串模板中,寫css就可以了 */
font-size: 30px;
color:#f0f;
/* 嵌套定義 */
.title{
font-size:18px;
}
`
export const TitleContainer = styled.div`
color:red;
font-size:18px;
`
// 樣式繼承
export const SubTitleContainer = styled(TitleContainer)`
font-size:14px;
`
// 在樣式中獲取樣式組件中的屬性信息
export const ContentContainer = styled.div`
color:${props => props.color || '#888'};
font-size: ${props => props.size || 12}px;
`
到此這篇關(guān)于React css-in-js基礎(chǔ)介紹與應用的文章就介紹到這了,更多相關(guān)React css-in-js內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React-hook-form-mui基本使用教程(入門篇)
react-hook-form-mui可以幫助開發(fā)人員更輕松地構(gòu)建表單,它結(jié)合了React?Hook?Form和Material-UI組件庫,使用react-hook-form-mui,開發(fā)人員可以更快速地構(gòu)建表單,并且可以輕松地進行表單驗證和數(shù)據(jù)處理,本文介紹React-hook-form-mui基本使用,感興趣的朋友一起看看吧2024-02-02
React jsx轉(zhuǎn)換與createElement使用超詳細講解
這篇文章主要介紹了React jsx轉(zhuǎn)換與createElement使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-11-11
jsoneditor二次封裝實時預覽json編輯器組件react版
這篇文章主要為大家介紹了jsoneditor二次封裝實時預覽json編輯器組件react版示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
完美解決react-codemirror2?編輯器需點擊一下或者延時才顯示數(shù)據(jù)的問題
這篇文章主要介紹了react-codemirror2編輯器需點擊一下或者延時才顯示數(shù)據(jù)的問題,解決方法也很簡單,需要手動引入自動刷新的插件,配置一下參數(shù)就可以了,本文給大家介紹的非常詳細,需要的朋友可以參考下2023-08-08

