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

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

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

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Chrome extension

Chrome拡張機能

Q&A

2回答

1327閲覧

CSSに影響されないようなDOMのスタイル指定の方法は?

shun1028

総合スコア8

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2016/12/11 15:33

こんにちは。
DOM単位でスタイルシートのcssの影響を受けないようなcssの指定方法をご教授お願いしたいです。

私は今、GoogleChromeのアドオンを作っています。
簡単に言うと、ポップアップ内のボタンクリックなどを行った時、
表示されているページに対して、DOM要素(アイコンやスタンプ的なもの)を生成、追加するようなものです。
DOM生成までは順調でしたが、DOMのスタイル指定に躓いております。

DOM生成やそのstyle指定は以下のようにJavaScript内で行っているのですが、
表示するページに関して元々適用されているcssの影響を受けることがあります。

[content.js] let icon_p = document.createElement("p"); icon_p.className = "hoge"; icon_p.style.display="block"; icon_p.style.color = "green"; let icon_img = document.createElement("img"); icon_img.src = chrome.extension.getURL("images/hoge.png"); icon_img.alt = "ほげ"; icon_p.appendChild(icon_img); ...(他にもicon_pにappendしていく感じ) document.body.appendChild(icon_p);

このように指定した場合、ちゃんと表示はされるのですが、表示するページのcssで<p><img>にcolorやfontなど指定がされていた場合、それを受け継ぐ形となってしまい、ページ毎に生成したDOMのスタイルが変わってしまいます。
かといって、予想されるcssの種類も膨大なので、これら全てをコード上で指定するのは厳しいです。

このように、生成したDOMに関して、元々のページのcssに影響されず、かつ、元々のページのcssも破壊することな、
DOM単位でスタイルを1から指定する方法などはありますでしょうか?ご教授お願いしたいです。

自分の考える策としては、
1.自作タグを作る。
2.タグに指定されているcssを読み込み、それらに応じた指定を行う形に。
などが考えられますが、実現に難航している状態です。。。

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

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

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

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

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

guest

回答2

0

ShadowDOM 使ってみてはどうでしょうか

投稿2016/12/13 13:23

ryls-nmm

総合スコア633

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

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

shun1028

2016/12/16 05:32

ご回答ありがとうございます!こちら存じ上げませんでした、かなり有効そうですね!試させていただきます!
guest

0

MDN>開発者向けのWeb技術>Web API インターフェイス>HTMLElement>element.style

CSS Properties Reference
で指定できるスタイルを全てリセットするようなjavascriptを一回作って、それを実行させてから改めてスタイルを指定するか、

初心者向けリセットCSSを自作する手順まとめ
の様な形でリセットCSSを作り、そのリセットCSSを全体では無くてDOM生成されるクラスにのみ影響するような形に修正し、適用する。
その後改めてjavascript内でスタイルを定義する

という方向性はいかがでしょうか?
試したわけではないので、うまくいったら教えて頂ければ嬉しいです。

投稿2016/12/11 16:59

tanat

総合スコア18713

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

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

shun1028

2016/12/12 01:52

ご回答ありがとうございます!やはり、予想されるcssを網羅して初期化する形になりますよね、、試してみますね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問