目次
CSSカスタムプロパティとJavaScript
SASS変数とJavaScript
ホームページ ウェブフロントエンド CSSチュートリアル JavaScriptをCSSとSASSと話すようにします

JavaScriptをCSSとSASSと話すようにします

Apr 08, 2025 am 10:18 AM

JavaScriptをCSSとSASSと話すようにします

JavaScriptとCSSは20年以上にわたって共存していますが、それらの間でデータを共有することは非常に困難です。もちろん、多くの試みがありましたが、構造を変更する代わりに、CSSカスタムプロパティやSASS変数を活用する代わりに、シンプルで直感的なアプローチを思いつきました。

CSSカスタムプロパティとJavaScript

ここのCSSカスタムプロパティは、それほど驚くべきことではありません。ブラウザがカスタムプロパティのサポートを開始して以来、彼らはJavaScriptで値を設定および操作することができました。

具体的には、いくつかの方法でカスタムプロパティを使用してJavaScriptを使用できます。 setPropertyを使用して、カスタムプロパティの値を設定できます。

 document.documentelement.style.setProperty( " -  padding"、124 "px"); // 124px
ログイン後にコピー

また、JavaScriptのgetComputedStyleを使用してCSS変数を取得することもできます。その背後にあるロジックは非常に簡単です。カスタムプロパティはスタイルの一部であるため、計算されたスタイルの一部でもあります。

 getComputedStyle(document.DocumentElement).GetPropertyValue( ' -  Padding')// 124px
ログイン後にコピー

getPropertyValue 、HTMLタグのインラインスタイルからカスタムプロパティ値を取得できるようにするための同様の方法でもあります。

 document.documentelement.style.getPropertyValue( " - パディング"); // 124px
ログイン後にコピー

カスタムプロパティはスコープされていることに注意してください。これは、特定の要素から計算されたスタイルを取得する必要があることを意味します。以前の:rootで変数を定義したため、HTML要素でそれらを取得します。

SASS変数とJavaScript

SASSは前処理言語です。つまり、Webサイトの一部になる前にCSSに変換されます。したがって、CSSカスタムプロパティのようなJavaScriptからアクセスすることはできません(DOMの計算スタイルとしてアクセス)。

これを変更するには、ビルドプロセスを変更する必要があります。ローダーは通常すでにビルドプロセスの一部であるため、ほとんどの場合、これは必要ではないと思います。ただし、プロジェクトに当てはまらない場合は、SASSモジュールをインポートおよび変換できる3つのモジュールが必要です。

Webpack構成の例は次のとおりです。

 module.exports = {
  // ...
  モジュール:{
    ルール:[
      {
        テスト:/\.scss$/、
        使用:["Style-Roader"、 "css-roader"、 "sass-roader"]]
      }、
      // ...
    ]
  }
};
ログイン後にコピー

JavaScriptで使用可能なSASS(またはより具体的には、ここでSCSS)変数を作成するには、それらを「エクスポート」する必要があります。

 // variables.scss
$プライマリカラー:#fe4e5e;
$ background-color:#fefefe;
$パディング:124px;

:輸出 {
  プライマリカラー:$プライマリカラー;
  BackgroundColor:$ background-color;
  パディング:$パディング;
}
ログイン後にコピー

:exportブロックは、マジックウェブパックが変数をインポートするために使用するものです。このアプローチの利点は、Camelの命名法を使用して変数の名前を変更し、開示するものを選択できることです。

次に、SASSファイル( variables.scss )をJavaScriptにインポートし、ファイルに定義された変数にアクセスできるようにします。

 './variables.scss'から変数をインポートします。

/*
  {
    PrimaryColor: "#fe4e5e"
    BackgroundColor: "#fefefe"
    パディング:「124px」
  }
*/

document.getElementById( "App")。style.padding= variables.padding;
ログイン後にコピー

:export構文にはいくつかの顕著な制限があります。

  • 上位レベルにある必要がありますが、ファイルのどこにでもある必要があります。
  • ファイルに複数がある場合、キーと値が結合され、一緒にエクスポートされます。
  • exportedKeyが繰り返される場合、最後の(ソースの順序で)優先されます。
  • exportedValue 、CSS宣言値に有効な文字(スペースを含む)を含めることができます。
  • exportedValue 、すでに文字通りの文字列と見なされているため、引用符を必要としません。

JavaScriptでSASS変数にアクセスすることを利用するには多くの方法があります。この方法を使用してブレークポイントを共有する傾向があります。 breakpoints.scssファイルは次のとおりです。これを後でJavaScriptにインポートしてmatchMedia()メソッドを使用して一貫したブレークポイントを取得できるようにします。

 //ブレークポイント値を定義するSASS変数$ブレークポイント:(
  モバイル:375px、
  タブレット:768px、
  //など
);

// sass変数$メディアメディアクエリの書き込みに使用される:(
  モバイル: '(max-width:#{map-get($ breakpoints、Mobile)})'、
  タブレット: '(max-width:#{map-get($ breakpoints、tablet)})'、
  //など
);

// SASS変数をJavaScriptでアクセスできるようにするエクスポートモジュール:エクスポート{
  BreakPointMobile:unquote(Map-Get($ Media、Mobile));
  BreakPointTablet:Unquote(Map-Get($ Media、Tablet));
  //など
}
ログイン後にコピー

アニメーションは別のユースケースです。アニメーションの期間は通常CSSに保存されますが、より複雑なアニメーションにはJavaScriptの助けが必要です。

 // animation.scss
$ Global-Animation-Duration:300ms;
$ global-animation-easing:容易さ。

:輸出 {
  AnimationDuration:Strip-Unit($ global-animation-duration);
  アニメーションイースト:$ global-animation-easing;
}
ログイン後にコピー

変数をエクスポートするときにカスタムstrip-unit関数を使用したことに注意してください。これにより、JavaScript側のコンテンツを簡単に解析できます。

 // main.js
document.getElementById( 'Image')。
  {transform: 'scale(1)'、ofacity:1、offset:0}、
  {transform: 'scale(.6)'、ofacity:.6、offset:1}
]、{
  持続時間:数(変数.AnimationDuration)、
  簡単:変数。
});
ログイン後にコピー

CSS、SASS、JavaScript間でデータを簡単に交換できることを嬉しく思います。このような変数を共有すると、コードが簡潔に乾燥します。

もちろん、同じ機能を達成するには多くの方法があります。レス・ジェームズは、2017年にSASSとJavaScriptがJSONを介してやり取りできるようにする興味深い方法を共有しました。私は偏っているかもしれませんが、ここで紹介している方法は最も簡単で最も直感的な方法だと思います。既に使用して書いたCSSとJavaScriptの狂気の変更は必要ありません。

他の場所で他の方法を使用しましたか?コメントを共有してください - 私はあなたがこの問題をどのように解決したかを見てみたいです。

以上がJavaScriptをCSSとSASSと話すようにしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

それは' Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

CI/CDで少し CI/CDで少し Apr 02, 2025 pm 06:21 PM

「ウェブサイト」は「モバイルアプリ」よりも適していると言いますが、Max Lynchからのこのフレーミングが好きです。

ブラウザから有効なCSSプロパティ値を取得できますか? ブラウザから有効なCSSプロパティ値を取得できますか? Apr 02, 2025 pm 06:17 PM

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

WordPressブロックエディターでのマークダウンとローカリゼーションを使用します WordPressブロックエディターでのマークダウンとローカリゼーションを使用します Apr 02, 2025 am 04:27 AM

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

レスポンシブデザインのブラウザを比較します レスポンシブデザインのブラウザを比較します Apr 02, 2025 pm 06:25 PM

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

スティッキーヘッダーとフッターにCSSグリッドを使用する方法 スティッキーヘッダーとフッターにCSSグリッドを使用する方法 Apr 02, 2025 pm 06:29 PM

CSS Gridは、レイアウトをこれまで以上に簡単にするように設計されたプロパティのコレクションです。何でもするように、少し学習曲線がありますが、グリッドは

Googleフォント変数フォント Googleフォント変数フォント Apr 09, 2025 am 10:42 AM

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

See all articles