質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

232閲覧

jqueryでスタイルシートのセレクタを書き換えることは可能でしょうか?

snof

総合スコア17

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

0クリップ

投稿2018/04/01 08:34

スタイルシートに以下の記述があります。

@media screen and (min-width: 1000px) { #contents, #top .inner, #header, #topmenubox, #topmenu ul, #footer .inner, #footermenu, #pagetop { width: 1300px; max-width: 1300px; } }

以下のように .col2-header, .big-header .wrapを追加したい。

@media screen and (min-width: 1000px) { #contents, #top .inner, #header, #topmenubox, #topmenu ul, #footer .inner, #footermenu, #pagetop, .col2-header, .big-header .wrap { width: 1300px; max-width: 1300px; } }

jqueryでスタイルシートのセレクタを書き換える、または追加する方法があれば

defghi1977👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

jQueryを用いずとも次の何れかの方法でstyle要素内のスタイル記述を書き換えることは可能です.

  • CSSOMを使う
  • style要素のtextContentプロパティを書き換える

単なるテキスト処理となります.

※しかし, 特別な理由(例えば疑似要素:擬似クラスに対するスタイルを書き換えるなど)がない限りスタイル記述をJavaScriptで書き換えるのは避けたほうが良いと思います.


CSSOMを使うなら例えばこんな.
※スタイルを追加する部分や条件が予め判っている必要があります.

HTML

1<style id="styleNode"> 2@media screen and (min-width: 1000px) { 3 #contents, #top .inner, #header, #topmenubox, #topmenu ul, #footer .inner, #footermenu, #pagetop { 4 width: 1300px; 5 max-width: 1300px; 6 } 7} 8</style>

CSS

1"use strict"; 2{ 3 const sheet = styleNode.sheet; 4 //CSSもツリー構造をとる 5 const mediaRule = sheet.cssRules[0]; 6 const oldRule = mediaRule.cssRules[0]; 7 mediaRule.deleteRule(oldRule); 8 mediaRule.insertRule(`${oldRule.selectorText},.col2-header, .big-header .wrap{${oldRule.style.cssText}}`); 9 console.log(mediaRule.cssText); 10}

投稿2018/04/01 08:44

編集2018/04/02 05:51
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2018/04/02 05:53

具体的なやり方が提示されないからと言って、別の質問を立ち上げるのは如何なものでしょうか?
snof

2018/04/02 09:41

セレクタを書き換えることと、別のセレクタにスタイルを取得し追加することは、違うことなのかと思い質問させていただきました。
snof

2018/04/02 09:45

回答頂きありがとうございます。"use strict";について調べてみたいと思います。
defghi1977

2018/04/02 09:45

了解しました. なお、今後はもう少し質問の背景を詳しくお書き願います. 今回の質問であれば、「前者のスタイルシートが何らかのシステムから自動出力されるものであり、そのスタイルの内容に合わせて自前のスタイルシートを定義したい」旨が記述されていれば, 質問する側も回答する側もこのような遠回りをせずに済んだことでしょう.
snof

2018/04/02 09:47

以後気をつけたいと思います。お手数をおかけし申し訳ありません。
defghi1977

2018/04/02 09:49

とは言え、その背景が判ると非常にありそうなケースですから個人的には良い質問だと思います.
guest

0

元CSSがhtmlにダイレクトに埋め込まれているので
複数ページを変更するのが大変だということでしたら
外部ファイルに分離し、外部ファイルの方の該当箇所を修正するのが
効率的でしょう
なにもわざわざjQueryで処理する意味はありませんので。

jQueryでやるなら普通にタグのスタイルを書き換える方式で十分です

投稿2018/04/02 00:43

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問