您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“React中styled-components怎么使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“React中styled-components怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
1、styled-components 樣式化組件,主要作用是它可以編寫實際的CSS代碼來設(shè)計組件樣式,也不需要組件和樣式之間的映射,即創(chuàng)建后就是一個正常的React 組件,
并且可以附加樣式給當(dāng)前組件。 優(yōu)化react組件
2、在一個組件內(nèi)會將結(jié)構(gòu)、樣式和邏輯寫在一起,雖然這違背了關(guān)注點分離的原則,但是這有利于組件間的隔離。為了順應(yīng)組件化的潮流
3、使用styled-components不需要再使用className屬性來控制樣式,而是將樣式寫成更具語義化的組件的形式
4、使用style-components會隨機生成一個class名稱,這樣不會污染到全局變量,當(dāng)然因為隨機生成,維護會增加難度
1、安裝
cnpm i styled-components -S || yarn add styled-components
2、引入
import styled from "styled-components";
3、使用
export const Header = styled.div` width:100%; height:1rem; background:red ` import {Header} from "./style/index"; class App extends Component{ render(){ return ( <Header/> ) } }
引入新的API createGlobalStyle ,在下面創(chuàng)建一個 GlobalStyle 變量,用 createGlobalStyle 方法把全局樣式包裹在其中
import { createGlobalStyle } from "styled-components"; export const GlobalStyle = createGlobalStyle`
html, body, ul, li, ol, dl, dd, dt, p, h2, h3, h4, h5, h6, h7, form, fieldset, legend, img { margin:0; padding:0; } fieldset, c{ border:none; } img{display: block;} address, caption, cite, code, dfn, th, var { font-style:normal; font-weight:normal; } ul, ol ,li{ list-style:none; } body { color:#333; font:12px BASE "SimSun","宋體","Arial Narrow",HELVETICA; background:#fff;} a { color:#666; text-decoration:none; } *{box-sizing:border-box} body,html,#root{ height: 100%; overflow: hidden; }
//將 <GlobalStyle /> 組件放在 render() 中最外層元素下面 import React, { Component ,Fragment} from 'react'; import {GlobalStyle} from "./reset"; class App extends Component { render() { return ( <Fragment> <GlobalStyle/> </Fragment> ); } } export default App;
如果我們需要動態(tài)改變元素的樣式,則可以通過傳遞參數(shù)的方式進行改變
import {Header} from "style/index.js" render(){ return ( <Header bgColor="red"/> ) }
style/index.js
import styled from "styled-components"; export const Header = styled.div` width:100px; height:200px; props.bgColor}
如果我們需要繼承樣式的時候我們可以通過 styled(繼承的組件名稱)``
const button = styled.button` border:0; width:100px; height:40px; text-align:center; color:#000; ` export const StyledButton = styled(button)` color:#fff; `
在調(diào)用組件的時候我們可以通過as來修改組件 as="元素名稱"
render(){ return ( <Header as="p"/> ) }
Header組件內(nèi)部渲染的時候就是用的p標(biāo)簽
export const Input = styled.input.attrs({ value:(props)=>props.value, name:"input" })` border:0; width:100px; height:100px; `
import logo from "./imgs/logo.png"; export const BgLogo = styled.div` width:100px; height:200px; background:url(${logo}) no-repate; `
有一種情況,一些原本就已經(jīng)是組件,需要給這些組件添加樣式,這時需要用到塑造組件
import React from "react"; import styled from "styled-components"; const Link = ({className,children})=>( <a className={className}> {children} </a> ) export StyleLink = styled(Link)` color:red `
const move = keyframes` 0%{ transform:rotate(0%); } 100%{ transform :rotate(100%); } ` export const TransFormDiv = styled.div` width:100px; height:100px; background:red; animation:${move} 2s; `
&代表父級
export const StyledUl = styled.ul` border:1px solid #ccc; >li{ border-bottom:1px solid #green; line-height:30px; padding-left:20px; &>p{ color:red } }
讀到這里,這篇“React中styled-components怎么使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。