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

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

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

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

Q&A

解決済

2回答

593閲覧

背景色の指定を子要素が引き継いでしまう。

zindex_1

総合スコア9

CSS

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

0グッド

0クリップ

投稿2024/01/25 08:40

編集2024/01/25 09:38
コード ```### 実現したいこと 親要素の背景色を子要素に引き継がないように設定したい。 ### 発生している問題・分からないこと 要素①(親要素)にz-index指定1を指定していて、cssでopacity0.8を設定しています。 その上に要素②を配置し さらにその上に要素③(文字)を置いて文字をくっきり表示させたいですが 親要素の背景のopacity: 0.8; が要素③にも適用されてしまい、文字が透けてしまいます。 背景のbackground: #000000; opacity: 0.8;の記載は変えずに要素③の文字を透けないようにする設定方法が知りたいです。 ### 該当のソースコード

HTML

<!DOCTYPE HTML> <html> <head> <title>Sample</title> <meta charset="UTF-8" /> <link href="css/sample.css" rel="stylesheet" /> </head> <body style="background: red;"> <script> window.onload = function(){ const BG1 = document.createElement('div'); BG1.classList.add('BG'); BG1.style.display = "block"; document.body.appendChild(BG1); const Icon = document.createElement('div'); Icon.classList.add('setting'); Icon.innerHTML += '<div class="icon" >アイコン</div>'; Icon.innerHTML += '<div class="message">文字の表示</div>'; BG1.appendChild(Icon); } </script> </body> </html> ```css @charset "UTF-8"; .BG { display: none; position: fixed; width: 100%; height: 100%; background: #000000; opacity: 0.8; top: 0; left: 0; z-index: 1; } .setting { display: block; position: absolute; text-align:center; background-color: rgba(0, 0, 0, 0); padding: 20px 50px 40px 50px; margin: auto; width: 50%; height: auto; top: 35%; left: 0; right: 0; z-index: 2; } .icon { color: rgb(255, 255, 255) !important; width: 50px; height:50px; top: 35%; left: 0; right: 0; } .message { color: rgba(255, 255, 255) !important; opacity:1 !important; font-weight: bold; font-size: 15px; margin-top:30px; position:relative; z-index:999; }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

要素③のCSSの記述を下記に変更

要素3 {
position: relative;
z-index: 999;
background-color: rgba(0,0,0,0) !important ;
opacity: 1 !important ;
}

補足

特になし

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

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

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

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

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

yambejp

2024/01/25 08:43

再現できるソースを例示ください
Lhankor_Mhy

2024/01/25 08:52

『その上に要素②を配置し』とありますが、この『上』とは親要素という意味ですか?それともHTMLの出現順位のことですか?または、重ね合わせのことでしょうか?
Lhankor_Mhy

2024/01/25 09:31

質問の編集を拝読。 『要素①(親要素)にz-index指定1を指定していて、cssでopacity0.8を設定しています』とのことでしたが、ご提示のコードでopacity0.8のものを見つけることができませんでした。 『要素①(親要素)』はご提示のコードで言うと、どれですか?
Lhankor_Mhy

2024/01/25 09:35 編集

あ、0.5の間違いかな。 そうすると、yambejpさんの回答で大丈夫かな。
zindex_1

2024/01/25 09:40

ありがとうございます。 要素①→要素②→要素③ →が右に行くほど上に表示させたいです。 要素③はscriptタグの文字の表示部分です。
Lhankor_Mhy

2024/01/25 09:47

補足ありがとうございました。 yambejpさんのご回答で解決するかと思いますが、ご不明の点があればコメントをしてみるのがいいかと思います。
guest

回答2

0

ベストアンサー

opacity は重ね合わせコンテキスト全体に適用されて、子孫要素だけキャンセルということはできません。
opacity の指定を消して、.BGbackgroundrgba(0, 0, 0, 0.8) にしましょう。


opacity を変更できないなら、BG1.appendChild(Icon);document.body.appendChild(Icon); に変更しましょう。

投稿2024/01/25 22:18

編集2024/01/26 00:16
int32_t

総合スコア21927

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

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

zindex_1

2024/01/26 00:03

opacityの記述は変えれないので他の方法での解決方法を探しています。
int32_t

2024/01/26 00:08

なぜ opacity を消せないのでしょうか。 もし opacity を消せないなら、親子関係を変えるしかないです。例えば .setting の要素を .BG の子ではなく document.body の子にするとか。
int32_t

2024/01/26 00:28 編集

.setting は <dialog> で、.BG は ::backdrop で実装するのが理想ですね。
zindex_1

2024/01/26 03:19

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

0

rgbではなくrgbaで

css

1background-color: rgb(0,0,0,0) 2↓↓↓ 3background-Color: rgba(0,0,0,0.5)

投稿2024/01/25 08:57

yambejp

総合スコア117667

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

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

zindex_1

2024/01/26 00:02

回答ありがとうございます。試してみましたが解決できませんでした。 この場合どの辺りに原因がありそうでしょうか? JSの記述を変えればうまく動くのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問