js追加樣式css樣式的方法「js樣式選擇」

介紹

JSS是CSS的創作工具,它允許你使用JavaScript以聲明,無衝突和可重用的方式描述樣式。它可以在瀏覽器,伺服器端或在構建時在Node中編譯。JSS與框架無關。它由多個包組成:核心部分,插件以及框架集成等。


使用JavaScript來編寫你的CSS樣式代碼——JSS

Github

https://github.com/cssinjs/jss stars:5.1k


快速開始

如果你已經對使用JSS感興趣,可以使用在線代碼編輯器。在CodeSandbox(一個非常實用的在線編輯器,可以用來學習各種編程技能)上嘗試Hello World示例。以下是三種不同框架下的用法(代碼圖片生成自carbon網站):

  • JSS
使用JavaScript來編寫你的CSS樣式代碼——JSS

  • React-JSS
使用JavaScript來編寫你的CSS樣式代碼——JSS

  • Styled-JSS

使用JavaScript來編寫你的CSS樣式代碼——JSS

特性

  • 真實的CSS

JSS生成實際的CSS,而不是內聯樣式。它支持每個現有的CSS功能。CSS規則只創建一次,並使用其類名與元素重複使用,與內聯樣式相反。此外,當DOM元素更新時,將應用先前創建的CSS規則。

  • 無衝突選擇器

JSS默認生成唯一的類名。它允許避免典型的CSS問題,默認情況下一切都是全局的。它完全消除了命名約定的需要。

  • 代碼重用

使用JavaScript作為宿主語言使我們有機會以常規CSS無法實現的方式重用CSS規則。您可以利用JavaScript模塊,變數,函數,數學運算等。如果做得好,它仍然可以完全聲明。

  • 易於拆卸和修改

CSS規則的明確使用允許您跟蹤消費者並確定是否可以安全地刪除或修改它。

  • 動態Style

使用JavaScript函數和Observable可以在瀏覽器中動態生成樣式,使有機會訪問應用程序狀態,瀏覽器API或遠程數據以進行樣式設置。你不僅可以定義一次樣式,還可以在任何時間點以有效的方式更新樣式。

  • 用戶控制的動畫

JSS可以高效地處理CSS更新,可以使用它創建複雜的動畫。使用函數值,Observables並將它們與CSS過渡相結合,可以為用戶控制的動畫提供最大的性能。對於預定義的動畫,使用@keyframes和transition更好,因為它們將完全取消阻止JavaScript線程。

  • 關鍵的CSS

要優化第一次繪製的時間,你可以使用伺服器端渲染並提取關鍵CSS。可以將CSS的呈現與HTML的呈現結合起來,這樣就不會生成未使用的CSS。它將導致在伺服器端呈現期間提取的最小關鍵CSS,並允許內聯它。

  • 插件

JSS核心實現了基於插件的架構。它允許您創建可以實現自定義語法或其他強大功能的自定義插件。JSS有許多官方插件,可以單獨安裝或使用默認預設。社區插件的一個很好的例子是jss-rtl。

  • Expressive 語法

由於各種插件,JSS允許您使用現有的全局類名來嵌套,全局選擇器和組合。例如,允許您以比CSS更可讀的方式表達屬性。如果要直接從瀏覽器開發工具複製粘貼樣式,也可以使用模板字元串。
jss-plugin-expandbox-shadow

  • 完全隔離

另一個有用的插件示例是,它允許您完全隔離元素與全局級聯規則,並可能覆蓋不需要的屬性。在創建應該在第三方文檔內部呈現的窗口小部件時尤其有用。jss-plugin-isolate

  • React整合。

React-JSS包提供了一些額外的功能:

  1. 動態主題 – 允許基於上下文的主題傳播和運行時更新。
  2. 關鍵CSS提取 – 僅提取渲染組件中的CSS。
  3. 延遲評估 – 樣式表在組件安裝時創建。
  4. 樣式表的靜態部分在所有元素之間共享。
  5. 使用props作為參數自動更新函數值和規則。
  • JavaScript構建管道

CSS不需要額外的構建管道配置。無論你選擇構建JavaScript的工具是什麼,它都可以與JSS一起使用。

安裝使用

yarn add jss

yarn add jss-preset-default //使用默認設置

import jss from 'jss'
import preset from 'jss-preset-default'
jss.setup(preset())
// 創造你的style.
const style = {
 myButton: {
 color: 'green'
 }
}
//編譯樣式,應用插件。
const sheet = jss.createStyleSheet(style)
//如果要在客戶端上呈現,請將其插入DOM。
sheet.attach()
//如果要渲染伺服器端,請獲取CSS文本。
sheet.toString()

  • 使用自定義插件進行設置
import jss from 'jss'
import camelCase from 'jss-plugin-camel-case'
import somePlugin from 'jss-some-plugin'
//使用插件。
jss.use(camelCase(), somePlugin())
// Create your style.
const style = {
 myButton: {
 color: 'green'
 }
}
//編譯樣式,應用插件。
const sheet = jss.createStyleSheet(style)
// 如果要在客戶端上呈現,請將其插入DOM
sheet.attach()
// 如果要渲染伺服器端,請獲取CSS文本。
sheet.toString()

  • 指定DOM插入點
<head>
 <title>JSS</title>
 <!-- 自定義插入點 -->
</head>

import jss from 'jss'
jss.setup({insertionPoint: 'custom-insertion-point'})

<head>
 <title>JSS in body</title>
</head>
<body>
 <div id="insertion-point">
 這可能是你選擇的任何DOM節點,可以作為插入點。
 </div>
</body

import jss from 'jss'
jss.setup({
 insertionPoint: document.getElementById('insertion-point')
})

簡單案例

通過兩張圖片來體驗:


使用JavaScript來編寫你的CSS樣式代碼——JSS

使用JavaScript來編寫你的CSS樣式代碼——JSS

總結

JSS的功能是十分強大的,不僅僅讓寫css的方式放到了JavaScript,這樣對更加喜愛編寫javascript的小夥伴來說是值得嘗試的,而且還支持伺服器端渲染等更多高級的特性,前端技術百花齊放,但目前仍然不變的是掌握JavaScript者得天下的時代!

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274028.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:09
下一篇 2024-12-17 14:10

相關推薦

發表回復

登錄後才能評論