摘要:的弱化與的強(qiáng)化的三要素在前端組件化的過(guò)程中,比如等組件化框架的運(yùn)用,使的弱化與的強(qiáng)化成為了一種趨勢(shì),而在這個(gè)過(guò)程中,其實(shí)還有另一種趨勢(shì)也在慢慢形成的弱化與的強(qiáng)化。使用對(duì)象都是采用的這種寫(xiě)法。
css 的弱化與 js 的強(qiáng)化
web 的三要素 html, css, js 在前端組件化的過(guò)程中,比如 react、vue 等組件化框架的運(yùn)用,使 html 的弱化與 js 的強(qiáng)化 成為了一種趨勢(shì),而在這個(gè)過(guò)程中,其實(shí)還有另一種趨勢(shì)也在慢慢形成:css 的弱化與 js 的強(qiáng)化。
之前有寫(xiě)過(guò)一篇 CSS 模塊化,但對(duì) css in js 這種理念沒(méi)有過(guò)多講解,所以這次深入一下。
css in js 理念,即是摒棄原有的用 .css 文件書(shū)寫(xiě)樣式,而把樣式寫(xiě)進(jìn) js 里面,這樣就可以做到一個(gè)組件對(duì)應(yīng)一個(gè)文件、一個(gè)文件便是一個(gè)組件。
1. 支持的第三方庫(kù)styled-components: 僅支持 react
radium: 僅支持 react
emotion
aphrodite
polished
jss
glamorous: 僅支持 react
styled-jsx: 僅支持 react
glamor: 僅支持 react
styletron: 僅支持 react
更多第三方庫(kù)可以參考 css-in-js。
2. 書(shū)寫(xiě)方式一般 css in js 的寫(xiě)法有兩種:
使用 es6 的模板字符串
使用 js 對(duì)象 {}
2.1 使用 es6 的模板字符串styled-components、emotion、styled-jsx 都是采用的這種寫(xiě)法。
比如 styled-components:
import React from "react"; import styled from "styled-components"; // 創(chuàng)建一個(gè)使用標(biāo)簽的
React 組件 const Title = styled.h1` font-size: 1.5em; text-align: center; color: palevioletred; `; // 創(chuàng)建一個(gè)使用 標(biāo)簽的 React 組件 const Wrapper = styled.section` padding: 4em; background: papayawhip; `; // 就像正常的 React 組件一樣,只不過(guò)他們都自帶樣式 Hello World, this is my first styled component!
比如 emotion:
import { css } from "emotion"; const app = document.getElementById("root"); const myStyle = css` color: rebeccapurple; `; app.classList.add(myStyle);
這種寫(xiě)法的好處是,通過(guò)編輯器插件和 lint 插件(如 stylelint),就像寫(xiě)正常的 css 一樣,有自動(dòng)完成提示、錯(cuò)誤提示、lint 自動(dòng)矯正等功能。
2.2 使用 js 對(duì)象 {}radium、aphrodite、polished、jss、glamorous、glamor、styletron 都是采用的這種寫(xiě)法。
比如 radium:
import Radium from "radium"; import React from "react"; import color from "color"; var styles = { base: { color: "#fff", ":hover": { background: color("#0074d9").lighten(0.2).hexString() } }, primary: { background: "#0074D9" }, warning: { background: "#FF4136" } }; class Button extends React.Component { render() { return ( ); } } Button = Radium(Button);
比如 aphrodite:
import React, { Component } from "react"; import { StyleSheet, css } from "aphrodite"; const styles = StyleSheet.create({ red: { backgroundColor: "red" }, blue: { backgroundColor: "blue" }, hover: { ":hover": { backgroundColor: "red" } }, small: { "@media (max-width: 600px)": { backgroundColor: "red", } } }); class App extends Component { render() { returnThis is red. This turns red on hover. This turns red when the browser is less than 600px width. This is blue. This is blue and turns red when the browser is less than 600px width.; } }
這種寫(xiě)法的好處是,不需要 es6 的語(yǔ)法,對(duì)屬性可以更方便的操作。
3. 決定是否使用如果你是喜歡把樣式和組件分開(kāi)書(shū)寫(xiě),那么這種方式就可能不太適合你;如果你追求一個(gè)組件對(duì)應(yīng)一個(gè)文件、一個(gè)文件便是一個(gè)組件,那就立馬用上吧。
4. 后續(xù)更多博客,查看 https://github.com/senntyou/blogs
作者:深予之 (@senntyou)
版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/116958.html
摘要:的弱化與的強(qiáng)化的三要素在前端組件化的過(guò)程中,比如等組件化框架的運(yùn)用,使的弱化與的強(qiáng)化成為了一種趨勢(shì),而在這個(gè)過(guò)程中,其實(shí)還有另一種趨勢(shì)也在慢慢形成的弱化與的強(qiáng)化。使用對(duì)象都是采用的這種寫(xiě)法。 css 的弱化與 js 的強(qiáng)化 web 的三要素 html, css, js 在前端組件化的過(guò)程中,比如 react、vue 等組件化框架的運(yùn)用,使 html 的弱化與 js 的強(qiáng)化 成為了一種趨...
摘要:接著只要在中使用就能搞定自適應(yīng)。代碼如下標(biāo)題標(biāo)題標(biāo)題標(biāo)題標(biāo)題在上述點(diǎn)功能中,可以用變量解決,比如實(shí)現(xiàn)了寬度,高度圓點(diǎn)大小直徑的控件。 未完待續(xù) 背景 如今css3越來(lái)越發(fā)達(dá),focus-within等屬性也已經(jīng)開(kāi)始在Chrome得到支持。如果有出色的css功底,一點(diǎn)點(diǎn)ps技能,你也能用css3配合原生html標(biāo)簽寫(xiě)出優(yōu)秀的框架。通過(guò)對(duì)css3的實(shí)踐,我發(fā)現(xiàn)自定義原生控件并不是什么難事,...
摘要:接著只要在中使用就能搞定自適應(yīng)。代碼如下標(biāo)題標(biāo)題標(biāo)題標(biāo)題標(biāo)題在上述點(diǎn)功能中,可以用變量解決,比如實(shí)現(xiàn)了寬度,高度圓點(diǎn)大小直徑的控件。 未完待續(xù) 背景 如今css3越來(lái)越發(fā)達(dá),focus-within等屬性也已經(jīng)開(kāi)始在Chrome得到支持。如果有出色的css功底,一點(diǎn)點(diǎn)ps技能,你也能用css3配合原生html標(biāo)簽寫(xiě)出優(yōu)秀的框架。通過(guò)對(duì)css3的實(shí)踐,我發(fā)現(xiàn)自定義原生控件并不是什么難事,...
摘要:接著只要在中使用就能搞定自適應(yīng)。代碼如下標(biāo)題標(biāo)題標(biāo)題標(biāo)題標(biāo)題在上述點(diǎn)功能中,可以用變量解決,比如實(shí)現(xiàn)了寬度,高度圓點(diǎn)大小直徑的控件。 未完待續(xù) 背景 如今css3越來(lái)越發(fā)達(dá),focus-within等屬性也已經(jīng)開(kāi)始在Chrome得到支持。如果有出色的css功底,一點(diǎn)點(diǎn)ps技能,你也能用css3配合原生html標(biāo)簽寫(xiě)出優(yōu)秀的框架。通過(guò)對(duì)css3的實(shí)踐,我發(fā)現(xiàn)自定義原生控件并不是什么難事,...
閱讀 1865·2021-09-29 09:35
閱讀 2726·2021-09-22 15:25
閱讀 1980·2021-08-23 09:43
閱讀 2061·2019-08-30 15:54
閱讀 3359·2019-08-30 15:53
閱讀 2396·2019-08-30 13:50
閱讀 2408·2019-08-30 11:24
閱讀 2281·2019-08-29 15:37