摘要:一關(guān)于的認(rèn)識(shí)是一種使用編寫樣式的處理方案。意味著你不需要關(guān)心如何檢測和刪除那些未使用的代碼。支持變量和繼承你可以使用變量來設(shè)置不同的樣式,使用這些不同樣式時(shí)只需要給樣式組件傳遞一個(gè)參數(shù)即可。
一、關(guān)于css-in-js的認(rèn)識(shí)1、css-in-js是一種使用 js 編寫 css 樣式的 css 處理方案。它的實(shí)現(xiàn)方案有很多,比如styled-components、polished、glamorous(paypal 開源的,不再維護(hù))、radium、emotion等等。
2、其中最成熟的便是styled-components和emotion。它們真正意義上實(shí)現(xiàn)了組件化style,可以說是專門為 react 打造的。
二、styled-components 簡介styled-components是 css-in-js 主流的實(shí)現(xiàn)方案,同時(shí)也是組件化style的主流實(shí)現(xiàn)方案。
下面是styled-components的一些特性:
1、唯一class類名:和 css-module 異曲同工,生成唯一類名,避免重復(fù)和全局污染,也不需要你費(fèi)腦筋思考該如何命名。
2、無冗余css代碼:它的樣式和組件綁定,組件調(diào)用則樣式起作用。意味著你不需要關(guān)心如何檢測和刪除那些未使用的 css 代碼。
3、動(dòng)態(tài)樣式: 它可以很簡單地調(diào)整和拓展組件的樣式,而不需要建立很多個(gè) class 類來維護(hù)組件的樣式。
4、自動(dòng)添加兼容前綴:和 Autoprefixer 類似,會(huì)自動(dòng)添加瀏覽器兼容前綴以支持舊版瀏覽器。
5、支持變量和繼承:你可以使用變量來設(shè)置不同的樣式,使用這些不同樣式時(shí)只需要給樣式組件傳遞一個(gè)參數(shù)即可。
三、styled-components使用方式
1、安裝
npm install styled-components
2、使用
styled-components主要基于 es6 的標(biāo)簽?zāi)0逭Z法調(diào)用標(biāo)簽函數(shù)
import React, { Component } from "react"
import styled from "styled-components"
export default class Style extends Component {
render() {
return (
<>
<div>
<Title>我是標(biāo)題Title>
div>
>
)
}
}
// 使用es6的模板字符串的方式(下面表示定義了h1的樣式)
const Title = styled.h1`
font-size: 20px;
color: #f00;
`
3、嵌套的使用
import React, { Component } from "react"
import styled from "styled-components"
export default class Style extends Component {
render() {
return (
<>
<div>
<Content>
<h2>你好h2>
<div className="content">我是內(nèi)容div>
Content>
div>
>
)
}
}
const Content = styled.div`
width: 100%;
height: 500px;
border: 1px solid #f00;
> h2 {
color: pink;
}
> .content {
text-align: center;
color: #f00;
}
`
4、使用props傳遞參數(shù)的方式
import React, { Component } from "react"
import styled, { css } from "styled-components"
export default class Style2 extends Component {
render() {
return (
<div>
<Button> 提交 Button>
<Button primary> 提交 Button>
div>
)
}
}
const Button = styled.button`
font-size: 1em;
margin: 1em;
padding: 0.25em 1em;
border-radius: 5px;
color: palevioletred;
border: 2px solid palevioletred;
cursor: pointer;
${props =>
props.primary &&
css`
border: 2px solid mediumseagreen;
color: mediumseagreen;
`}
`
5、樣式的繼承
import React, { Component } from "react"
import styled from "styled-components"
export default class Style3 extends Component {
render() {
return (
<div>
<Button> 提交 Button>
<ExtendingButton> 提交 ExtendingButton>
div>
)
}
}
const Button = styled.button`
background: palevioletred;
color: white;
`
const ExtendingButton = styled(Button)`
font-size: 18px;
padding: 5px 25px;
`
四、使用sass
使用create-react-app創(chuàng)建的項(xiàng)目是支持sass的但是需要自己安裝
1、安裝
npm install node-sass
2、直接使用
import React, { Component } from "react"
import "./style4.scss"
export default class Style4 extends Component {
render() {
return (
<div>
<div className="title">我是標(biāo)題div>
div>
)
}
}
五、使用css-module
使用create-react-app創(chuàng)建的項(xiàng)目,默認(rèn)情況下就支持css-module
1、樣式文件必須以[name].module.css或[name].module.scss的形式命名
2、以變量的形式導(dǎo)入樣式文件,比如 import styles from "./style.module.css";
3、className以變量引用的方式添加,比如 className={ styles.title }
import React, { Component } from "react"
import styles from "./Style5.module.scss"
export default class Style5 extends Component {
render() {
return (
<div>
<div className={styles.title}>我是標(biāo)題div>
div>
)
}
}
<div class="Style5_title__lsl4D">div>
4、如果不想使用默認(rèn)的哈希值
:global(.wrap) { color: green; }
// 直接使用你好
5、樣式的繼承
.className {
color: green;
background: red;
}
.otherClassName {
composes: className; // 直接繼承上面的
color: yellow;
}
.title {
composes: className from "./another.css"; // 直接使用外部樣式表
color: red;
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/7862.html
摘要:如何轉(zhuǎn)換知道了二者的不同,那么如何轉(zhuǎn)換我們也就有方向了。因?yàn)橄旅總€(gè)元件本身就是一個(gè)普通的組件,我們可以通過直接把他們當(dāng)作其他組件轉(zhuǎn)換為的代碼來使用。至于如何把這個(gè)放到上,我們放到后面一起說。 背景最近接手公司的一個(gè)移動(dòng)端項(xiàng)目,是通過 Rax 作為 dsl 開發(fā)的,在發(fā)布的時(shí)候構(gòu)建多分代碼,在 APP 端編譯為能夠運(yùn)行在 weex 上的代碼,在 H5(跑在瀏覽器或者 webview 里面...
摘要:入門與實(shí)戰(zhàn)組件虛擬的概念這是性能高效的核心算法為此引入了虛擬的機(jī)制。這個(gè)過程是自動(dòng)完成的。實(shí)際上是改變了樣式文件中類的名稱,使其唯一。如果希望使用達(dá)到的效果,則需要做件事情服務(wù)器支持。 React 入門與實(shí)戰(zhàn) react組件 虛擬DOM的概念 這是React性能高效的核心算法 React為此引入了虛擬DOM(Virtual DOM)的機(jī)制?;赗eact進(jìn)行開發(fā)時(shí)所有的DOM構(gòu)造都是通...
摘要:入門與實(shí)戰(zhàn)組件虛擬的概念這是性能高效的核心算法為此引入了虛擬的機(jī)制。這個(gè)過程是自動(dòng)完成的。實(shí)際上是改變了樣式文件中類的名稱,使其唯一。如果希望使用達(dá)到的效果,則需要做件事情服務(wù)器支持。 React 入門與實(shí)戰(zhàn) react組件 虛擬DOM的概念 這是React性能高效的核心算法 React為此引入了虛擬DOM(Virtual DOM)的機(jī)制?;赗eact進(jìn)行開發(fā)時(shí)所有的DOM構(gòu)造都是通...
摘要:上例中打印的結(jié)果是對(duì)中的名都做了處理,使用對(duì)象來保存原和混淆后的對(duì)應(yīng)關(guān)系。結(jié)合實(shí)踐在處直接使用中名即可。如因?yàn)橹粫?huì)轉(zhuǎn)變類選擇器,所以這里的屬性選擇器不需要添加。 showImg(http://gtms01.alicdn.com/tps/i1/TB15w0HLpXXXXbdaXXXjhvsIVXX-600-364.png); CSS 是前端領(lǐng)域中進(jìn)化最慢的一塊。由于 ES2015/201...
摘要:常見問題小結(jié)一行內(nèi)樣式內(nèi)聯(lián)樣式外部樣式行內(nèi)樣式代碼寫在具體網(wǎng)頁中的一個(gè)元素內(nèi)比如一般不需要擔(dān)心樣式優(yōu)先級(jí)與樣式覆蓋在制作頁面的時(shí)候需要為很多的標(biāo)簽設(shè)置屬性,所以會(huì)導(dǎo)致頁面不夠純凈,文件體積過大不利于,后期維護(hù)成本高。 CSS常見問題小結(jié) 一、行內(nèi)樣式、內(nèi)聯(lián)樣式、外部樣式 行內(nèi)樣式:代碼寫在具體網(wǎng)頁中的一個(gè)元素內(nèi);比如: 一般不需要擔(dān)心樣式優(yōu)先級(jí)與樣式覆蓋 在制作頁面的時(shí)...
閱讀 2485·2021-09-27 13:36
閱讀 2176·2019-08-29 18:47
閱讀 2143·2019-08-29 15:21
閱讀 1406·2019-08-29 11:14
閱讀 1991·2019-08-28 18:29
閱讀 1635·2019-08-28 18:04
閱讀 582·2019-08-26 13:58
閱讀 3222·2019-08-26 12:12