JavaScriptでstyleを一括で指定する方法はありますでしょうか?
hoge.style…に続いているCSSを何かに纏めるか、一度に指定したいです。
javascript
1 <h1 id="title">あいうえお</h1> 2 3 <script> 4 let hoge = document.getElementById("title"); 5 6 hoge.style.fontSize = "50px"; 7 hoge.style.color = "red"; 8 hoge.style.textAlign = "center"; 9 </script> 10
Jqueryの場合だと以下の様にできると思うのですが、JavaScriptでも同じ様な感じの定義方法はありますでしょうか?
jquery
1$("h1").css({ 2 font-size:"50px", 3 color:"red", 4 text-align:"center" 5});
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
javascript
1Object.assign(document.getElementById("title").style,{ 2fontSize:"50px", 3color:"red", 4textAlign:"center", 5});
スタイルを一つずつ書き換えるならクラスをつくってcssで指定するほうがよいでしょう
投稿2021/02/19 05:20
総合スコア117644
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/19 05:43

0
こんにちは。
こういうことでしょうか?
js
1hoge.style.cssText= "font-size: 50px; color: red; text-align: center;"
投稿2021/02/19 05:24
総合スコア37413
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/19 05:42

0
ベストアンサー
element.style
element.style
を書き換える方法は他の回答を参照頂くとして、element.style
の書き換えは下記観点がからお勧めできません。
- 今後、変更を加える場合にJavaScriptコードを書き換えなければならない(スタイル制御がCSSではない)
- 詳細度の制御が困難(
!important
で上書きする以外に手段がない) - セマンティクス的にNG
セレクタ
基本的には、「idセレクタ」「classセレクタ」「属性セレクタ」等のセレクタを予め定義しておき、JavaScript側でセレクタの適用条件を満たすようにコードを書くのが正攻法だと思います。
HTML
1<style> 2 .hoge { 3 font-size: 50px; 4 color: red; 5 text-align: center; 6 } 7</style> 8<h1 id="title1">あいうえお</h1> 9<h1 id="title2">かきくけこ</h1> 10<h1 id="title3">さしすせそ</h1> 11 12<script> 13 for (let h1 of document.getElementsByTagName('h1')) { 14 h1.classList.add('hoge'); 15 } 16</script>
CSSStyleSheet#insertRule
セレクタを含めたスタイル宣言をJavaScriptコード側で実装することは可能ですが、そうすると先のデメリットが復活する為、特別な事情があるのでもない限り、お勧めしません。
HTML
1<style></style> 2<h1 id="title1">あいうえお</h1> 3<h1 id="title2">かきくけこ</h1> 4<h1 id="title3">さしすせそ</h1> 5 6<script> 7 const styleSheets = document.styleSheets; 8 9 styleSheets[styleSheets.length - 1].insertRule(`.hoge { 10 font-size: 50px; 11 color: red; 12 text-align: center; 13 }`); 14 15 for (let h1 of document.getElementsByTagName('h1')) { 16 h1.classList.add('hoge'); 17 } 18</script>
Re: yukina00235 さん
投稿2021/02/19 07:47
総合スコア18194
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/19 07:56
2021/02/19 08:43
2021/02/19 09:34

0
html
1<div class="target">test</div>
こういうのがあるとして、
一括でバンと
既に同じロジックを回答されている方もいますが、1行というかまとめて書くと管理がアレならこれで良いかと。
このように書くと、仕組みが分離されている→おや?関数にできそうな気がする→スタイルの変数をいくつか用意して…といろいろ応用まで考えられるのではないでしょうか?
js
1const element = document.querySelector('.target'); 2const styles = { 3 color: 'red', 4 fontSize: '20px', 5 backgroundColor: '#f0f0f0', 6 padding: '10px' 7}; 8 9// ループなしで一括適用 10Object.assign(element.style, styles);
メリットは1回で全部設定できる所でしょうか。-webkit-
などのベンダープレフィックスが入るものには使用できません。
ループは入るが簡潔にまたちょっと使い勝手良く
js
1Object.entries(styles).forEach(([prop, value]) => { 2 element.style.setProperty(prop, value); 3});
前述のObject.assign
部分を上記のように変更するとループが入ることになりますが、これであれば次のようなスタイルも読めます。
js
1const styles = { 2 '--custom-property': 'value', // CSS変数も可能 3 'color': 'blue', 4 'font-size': '16px' 5};
つまり、ベンダープレフィックスも使用できます。
オーソドックスな方法 cssの設計を上手に
また、次のようにターゲットに当たる識別用のクラスと、そのスタイル(色やサイズ、諸々)が記述してあるクラスがあった場合、styleをダイレクトに変更するのではなく、クラスを付け替えるだけで対応できます。
html
1<div class="target red">test</div>
cssでいくつかスタイル用のクラスを作っておいてそのクラスを、元々あったクラスと交換するのが一番良いかと思います。ただcssの設定で変更したい部分と骨組みを別にする必要があります。サイズやマージン、パディングはそのままで文字色を変えるとか、背景を変えるとか何を変えるかを想定してスタイルするのが良いかと。
例えば上記htmlでは、target
とred
がついていて、redをblueにしたい場合は、
js
1const element = document.querySelector('.target'); 2element.classList.replace('red', 'blue');
とするだけです。必ず変更する元のクラス、例でいうとred
がある必要があります。もしredがない場合は変化はありません。
これは何かアクションがあった場合にクラスを変更してスタイルを変えるという時に使えます。
jsでダイレクトにstyleを変更するのは、cssでできないことをやるほうが良いのかなと。例えばjsで計算してその値を反映させたいとか。ある場面になったらposition: relative;
からfixed
に値が変わるとか。
できるだけシンプルに、わかりやすくが良いかと。この方法はつまりjsはjsで、cssはcssで管理するということです。全部jsファイルでできたら便利やんと思いがちですが、こんがらがってきたり、妙なエラーが発見できないとかということになったりすることも。
投稿2025/04/21 08:28
総合スコア368
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
とんだ勘違いしてしまったようなので削除します。。。
投稿2021/02/19 05:23
編集2021/02/19 05:50総合スコア3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。