網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、官網(wǎng)地址
https://www.styled-components.com/
二、styled-components
1、styled-components 樣式化組件,主要作用是它可以編寫實(shí)際的CSS代碼來(lái)設(shè)計(jì)組件樣式,也不需要組件和樣式之間的映射,即創(chuàng)建后就是一個(gè)正常的React 組件,
并且可以附加樣式給當(dāng)前組件。 優(yōu)化react組件
2、在一個(gè)組件內(nèi)會(huì)將結(jié)構(gòu)、樣式和邏輯寫在一起,雖然這違背了關(guān)注點(diǎn)分離的原則,但是這有利于組件間的隔離。為了順應(yīng)組件化的潮流
3、使用styled-components不需要再使用className屬性來(lái)控制樣式,而是將樣式寫成更具語(yǔ)義化的組件的形式
4、使用style-components會(huì)隨機(jī)生成一個(gè)class名稱,這樣不會(huì)污染到全局變量,當(dāng)然因?yàn)殡S機(jī)生成,維護(hù)會(huì)增加難度
三、基本使用
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/>
)
}
}
四、全局默認(rèn)樣式引入
引入新的API createGlobalStyle ,在下面創(chuàng)建一個(gè) GlobalStyle 變量,用 createGlobalStyle 方法把全局樣式包裹在其中
import { createGlobalStyle } from "styled-components";
export const GlobalStyle = createGlobalStyle`
html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, 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;
五、傳參
如果我們需要?jiǎng)討B(tài)改變?cè)氐臉邮剑瑒t可以通過(guò)傳遞參數(shù)的方式進(jìn)行改變
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}
六、繼承
如果我們需要繼承樣式的時(shí)候我們可以通過(guò) styled(繼承的組件名稱)``
const button = styled.button`
border:0;
width:100px;
height:40px;
text-align:center;
color:#000;
`
export const StyledButton = styled(button)`
color:#fff;
`
七、修改組件內(nèi)部標(biāo)簽
在調(diào)用組件的時(shí)候我們可以通過(guò)as來(lái)修改組件 as="元素名稱"
render(){
return (
<Header as="p"/>
)
}
Header組件內(nèi)部渲染的時(shí)候就是用的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)是組件,需要給這些組件添加樣式,這時(shí)需要用到塑造組件
import React from "react";
import styled from "styled-components";
const Link = ({className,children})=>(
<a className={className}>
{children}
</a>
)
export StyleLink = styled(Link)`
color:red
`
十一、動(dòng)畫```javascript
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;
`
十二、當(dāng)標(biāo)簽過(guò)多時(shí)需要?jiǎng)澐痔嘟M件,我們可以通過(guò)以下寫法來(lái)簡(jiǎn)化組件的編寫
&代表父級(jí)
export const StyledUl = styled.ul`
border:1px solid #ccc;
>li{
border-bottom:1px solid #green;
line-height:30px;
padding-left:20px;
&>p{
color:red
}
}
原文鏈接:https://juejin.cn/post/7088876240404217886
相關(guān)推薦
- 2022-11-14 Go語(yǔ)言Goroutinue和管道效率詳解_Golang
- 2023-03-15 pandas中fillna()函數(shù)填充NaN和None的實(shí)現(xiàn)_python
- 2022-05-25 <C++>詳解類對(duì)象作為類成員時(shí)調(diào)用構(gòu)造和析構(gòu)的時(shí)機(jī)及靜態(tài)成員解釋
- 2022-04-11 C#基于SerialPort類實(shí)現(xiàn)串口通訊詳解_C#教程
- 2022-04-09 SpringBoot項(xiàng)目的Dockerfile和docker-compose.yml部署文件
- 2022-09-13 flutter狀態(tài)管理Provider的使用學(xué)習(xí)_IOS
- 2022-12-14 VSCode如何巧用正則表達(dá)式快速處理字符段_相關(guān)技巧
- 2023-10-16 element組件autofocus( 自動(dòng)獲取焦點(diǎn))失效
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支