摘要:一關于的認識是一種使用編寫樣式的處理方案。意味著你不需要關心如何檢測和刪除那些未使用的代碼。支持變量和繼承你可以使用變量來設置不同的樣式,使用這些不同樣式時只需要給樣式組件傳遞一個參數即可。
一、關于css-in-js的認識1、css-in-js是一種使用 js 編寫 css 樣式的 css 處理方案。它的實現方案有很多,比如styled-components、polished、glamorous(paypal 開源的,不再維護)、radium、emotion等等。
2、其中最成熟的便是styled-components和emotion。它們真正意義上實現了組件化style,可以說是專門為 react 打造的。
二、styled-components 簡介styled-components是 css-in-js 主流的實現方案,同時也是組件化style的主流實現方案。
下面是styled-components的一些特性:
1、唯一class類名:和 css-module 異曲同工,生成唯一類名,避免重復和全局污染,也不需要你費腦筋思考該如何命名。
2、無冗余css代碼:它的樣式和組件綁定,組件調用則樣式起作用。意味著你不需要關心如何檢測和刪除那些未使用的 css 代碼。
3、動態樣式: 它可以很簡單地調整和拓展組件的樣式,而不需要建立很多個 class 類來維護組件的樣式。
4、自動添加兼容前綴:和 Autoprefixer 類似,會自動添加瀏覽器兼容前綴以支持舊版瀏覽器。
5、支持變量和繼承:你可以使用變量來設置不同的樣式,使用這些不同樣式時只需要給樣式組件傳遞一個參數即可。
三、styled-components使用方式
1、安裝
npm install styled-components
2、使用
styled-components主要基于 es6 的標簽模板語法調用標簽函數
import React, { Component } from "react"
import styled from "styled-components"
export default class Style extends Component {
render() {
return (
<>
<div>
<Title>我是標題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">我是內容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傳遞參數的方式
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創建的項目是支持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">我是標題div>
div>
)
}
}
五、使用css-module
使用create-react-app創建的項目,默認情況下就支持css-module
1、樣式文件必須以[name].module.css或[name].module.scss的形式命名
2、以變量的形式導入樣式文件,比如 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}>我是標題div>
div>
)
}
}
<div class="Style5_title__lsl4D">div>
4、如果不想使用默認的哈希值
:global(.wrap) { color: green; }
// 直接使用你好
5、樣式的繼承
.className {
color: green;
background: red;
}
.otherClassName {
composes: className; // 直接繼承上面的
color: yellow;
}
.title {
composes: className from "./another.css"; // 直接使用外部樣式表
color: red;
}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7862.html
摘要:如何轉換知道了二者的不同,那么如何轉換我們也就有方向了。因為下每個元件本身就是一個普通的組件,我們可以通過直接把他們當作其他組件轉換為的代碼來使用。至于如何把這個放到上,我們放到后面一起說。 背景最近接手公司的一個移動端項目,是通過 Rax 作為 dsl 開發的,在發布的時候構建多分代碼,在 APP 端編譯為能夠運行在 weex 上的代碼,在 H5(跑在瀏覽器或者 webview 里面...
摘要:入門與實戰組件虛擬的概念這是性能高效的核心算法為此引入了虛擬的機制。這個過程是自動完成的。實際上是改變了樣式文件中類的名稱,使其唯一。如果希望使用達到的效果,則需要做件事情服務器支持。 React 入門與實戰 react組件 虛擬DOM的概念 這是React性能高效的核心算法 React為此引入了虛擬DOM(Virtual DOM)的機制。基于React進行開發時所有的DOM構造都是通...
摘要:入門與實戰組件虛擬的概念這是性能高效的核心算法為此引入了虛擬的機制。這個過程是自動完成的。實際上是改變了樣式文件中類的名稱,使其唯一。如果希望使用達到的效果,則需要做件事情服務器支持。 React 入門與實戰 react組件 虛擬DOM的概念 這是React性能高效的核心算法 React為此引入了虛擬DOM(Virtual DOM)的機制。基于React進行開發時所有的DOM構造都是通...
摘要:上例中打印的結果是對中的名都做了處理,使用對象來保存原和混淆后的對應關系。結合實踐在處直接使用中名即可。如因為只會轉變類選擇器,所以這里的屬性選擇器不需要添加。 showImg(http://gtms01.alicdn.com/tps/i1/TB15w0HLpXXXXbdaXXXjhvsIVXX-600-364.png); CSS 是前端領域中進化最慢的一塊。由于 ES2015/201...
閱讀 2458·2021-09-27 13:36
閱讀 2163·2019-08-29 18:47
閱讀 2129·2019-08-29 15:21
閱讀 1394·2019-08-29 11:14
閱讀 1979·2019-08-28 18:29
閱讀 1623·2019-08-28 18:04
閱讀 568·2019-08-26 13:58
閱讀 3206·2019-08-26 12:12