ホームページ  >  記事  >  ウェブフロントエンド  >  ネイティブJavaScriptで各種CSSスタイル属性を取得するメソッド例まとめ

ネイティブJavaScriptで各種CSSスタイル属性を取得するメソッド例まとめ

伊谢尔伦
伊谢尔伦オリジナル
2017-07-19 17:23:151491ブラウズ

ネイティブ JS でスタイルを操作する最も一般的な方法は、DOM の Style オブジェクトです。ただし、このメソッドは HTML ドキュメント内のインライン スタイルのみを取得および変更でき、非インライン スタイル (内部スタイルと外部スタイル) は操作できません。 )。 表面)。

スタイルの取得

1. dom スタイル

このメソッドはインライン スタイルのみを取得できます:


var text = document.getElementById('text');
var textColor = text.style.color;

// 得到textColor的值为 '#000'

2. この方法はIEにのみ適用されます。ブラウザは element.style と形式が似ていますが、違いは currentStyle がその名前と同じように、現在のスタイル (CSS がロードされた後のスタイル) であり、現在の最終 CSS 属性値を返します。内部スタイルタグ内のスタイルと外部からインポートされた CSS ファイルが含まれます。

使用法: element.currentStyle.property

element.style相近,区别在于正如currentStyle其名——目前的样式(css加载后的样式),返回的是元素当前最终的CSS属性值,包括了内部style标签里的样式和外部引入的css文件。

用法:元素.currentStyle.属性

比如我们要获取id为box的width:


var boxWidth = document.getElementById('box').currentStyle.width;

// 得到boxWidth的值为 '200px'

3. getComputedStyle

getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([object CSSStyleDeclaration]),并且是只读的。

在兼容性上,基本支持:Chrome、Firfox、IE9、Opera、Safari

用法:getComputedStyle(元素, 伪类).属性,第二个参数如果不是伪类就设置为null吧。


var el = document.getElementById("box");
var style = window.getComputedStyle(el , ":after");

来~封装一个通用的获取样式的函数

为了适用于各大主流浏览器,我们来写一个函数:


// 这个函数需要传递两个参数:元素对象和样式属性名称

function getStyle(el, styleName) {

 if( el.currentStyle ) {
 
 // for IE
 return el.currentStyle[styleName];
 
 } else {
 
 // for peace
 return getComputedStyle(el, false)[styleName];
 }
 
}

接着调用这个函数来获取box的宽度:


var box = document.getElementById("box");

var boxWidth = getStyle(box, 'width');

这个函数并没有考虑到对伪类的相关操作,可以根据需要自行扩展~

getComputedStyle与style的区别?

既然都是获取样式属性的值,它们有啥区别呢:

只读与可写

getComputedStyle方法是只读的,只能获取样式而不能设置,但是element.style既能读也能写。

获取的对象范围

getComputedStyle方法获取的是最终应用在元素上的所有CSS属性对象(即使没有CSS代码,也会把默认的祖宗八代都显示出来);而element.style只能获取元素style属性中的CSS样式。因此对于一个光秃秃的元素e388a4556c0f65e1904146cc1a846bee,getComputedStyle方法返回对象中length属性值(如果有)就是190+(据我测试FF:192, IE9:195, Chrome:253, 不同环境结果可能有差异), 而element.style就是0。

设置样式

1. dom style

这个不用说了吧,比如把元素的背景颜色改为红色:


var el = document.getElementById('box');
el.style.backgroundColor = 'red';

2. cssText属性

cssText 的本质就是设置 HTML 元素的 style 属性值。它是一组样式属性及其值的文本表示。这个文本格式化为一个 CSS 样式表,去掉了包围属性和值的元素选择器的花括号。

它的用法和innerHTML类似: document.getElementById("d1").style.cssText = "color:red; font-size:13px;";たとえば、ID:

🎜🎜🎜🎜rrreee🎜🎜3のボックスの幅を取得したいとします。getComputedStyle🎜🎜🎜🎜getComputedStyleは、すべてを取得できるメソッドです。現在の要素の最終的な CSS 属性値。返されるのは CSS スタイル宣言オブジェクト ([object CSSStyleDeclaration]) で、読み取り専用です。 🎜🎜互換性の観点からは、基本的に Chrome、Firma、IE9、Opera、Safari をサポートしています🎜🎜 使用法: getComputedStyle(element, pseudo-class) 属性、2 番目のパラメーターが疑似クラスでない場合は、null に設定します。 。 🎜🎜🎜🎜rrreee🎜 スタイルを取得するための一般的な関数をカプセル化してください🎜🎜🎜 主要なブラウザに適用できるように、関数を書きましょう: 🎜🎜🎜🎜rrreee🎜 次に、この関数を呼び出してボックスの幅を取得します: 🎜🎜🎜🎜rrreee🎜この関数は疑似クラスの関連操作を考慮しておらず、必要に応じて拡張できます~🎜🎜🎜🎜 getComputedStyle と style の違いは何ですか? 🎜🎜🎜🎜🎜どちらも style 属性の値を取得するので、両者の違いは何ですか: 🎜🎜🎜読み取り専用と書き込み可能🎜🎜🎜 getComputedStyle メソッドは読み取り専用で、スタイルを取得することのみができますが、設定することはできませんただし、 element.style は読み取りと書き込みの両方が可能です。 🎜🎜🎜取得されるオブジェクトのスコープ🎜🎜🎜 getComputedStyle メソッドは、要素に最終的に適用されるすべての CSS 属性オブジェクトを取得します (CSS コードがない場合でも、デフォルトの 8 世代の祖先が表示されます)。要素の style 属性でのみ CSS スタイルを取得できます。したがって、ベア要素 e388a4556c0f65e1904146cc1a846bee の場合、オブジェクトの getComputedStyle メソッドによって返される長さ属性値 (存在する場合) は 190 以上です (私のテストによると、FF: 192、IE9: 195、Chrome: 253、結果は環境によっては異なる場合があります)、element.style は 0 です。 🎜🎜🎜🎜スタイルを設定します🎜🎜🎜🎜🎜🎜1. domスタイル🎜🎜🎜🎜 たとえば、要素の背景色を赤に変更します: 🎜🎜🎜🎜rrreee🎜🎜2. 🎜 🎜 🎜 cssText の本質は、HTML 要素の style 属性値を設定することです。これは、一連のスタイル プロパティとその値のテキスト表現です。このテキストは CSS スタイルシートとして書式設定されており、属性および値要素セレクターを囲んでいる中括弧が削除されています。 🎜🎜その使用法は innerHTML と似ています: document.getElementById("d1").style.cssText = "color:red; font-size:13px;";🎜

以上がネイティブJavaScriptで各種CSSスタイル属性を取得するメソッド例まとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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