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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

CSS

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

Q&A

解決済

2回答

1510閲覧

[z-index]animeteを使用した際の疑似要素の位置がおかしい[cssのみ]

reiponu

総合スコア2

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

CSS

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

0グッド

0クリップ

投稿2021/06/22 00:24

編集2021/06/22 01:04

現在カスタムCSSの機能を使用して、初期表示のanimetionを作成しています。

疑似要素を親要素の後ろに置きたいのですが、animeteを使用すると、

  • 親要素の要素は前に出る
  • 親要素のborderが疑似要素の後ろに出てきてしまう

現象が発生してしまいます。

.description-md-title { color: var(--main-font-color); padding: 25px 0.5em; font-size: 20px; text-align: center; background-color: transparent; width: 100%; font-weight: bold; /* 取り消し+レイアウト調整 */ margin: 15px 0; margin-bottom: 40px; box-shadow: none; position: relative; border: 4px solid var(--main-font-color); z-index: auto; } .description-md-title::before { background-color: var(--main-color); content: ""; position: absolute; left: 15px; top: 15px; width: 100%; height: 100%; z-index: -1; } //animetion .description-md-title{ animation-name: fadeup-right; animation-duration: .5s; opacity: 0; animation-fill-mode: forwards; animation-delay: .5s; } @keyframes fadeup-right { from { opacity:0; transform: translateX(-100px); } to { opacity: 1; transform: translateX(0); } }

animeteを使用する前であればスタックコンテキストを発生させずに、beforeを後ろに置くことができるのですが、
animeteをつけた際に、opacityかtransformかの原因で、疑似要素が前に行くようになってしまします。

ちなみに、animeteのセレクタを親要素と疑似要素の2つに増やした際、

  • 初期では狙った描写が出る
  • フェードインするにあたって最初に記述した状態になってしまう

現象が発生しました。

##理想としていること
beforeが後ろの状態でanimetionを実装すること

##やってほしくないこと

  • 追加でHTMLの要素を増やす(カスタムCSSのため)
  • 追加でHTMLをのクラスを増やす(カスタムCSSでいじっているため)

以上です。助けていただければ大変ありがたいです。よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

before疑似要素単体でスタッキングコンテキストができているので、親要素よりも(記載順が後なので)上側に描画されてしまっていると思われます。(理屈はちょっと自信がないです)

before疑似要素と同じ兄弟レベルで他の要素にborderをつけ、z-indexをbeforeより上にすれば一応は解決します。
ということで、after疑似要素に親要素と同じborderをつける方法を紹介します。

css

1.description-md-title::after { 2 content: ""; 3 position: absolute; 4 border: 4px solid var(--main-font-color); 5 z-index: 1; 6 left: -4px; 7 right: -4px; 8 top: -4px; 9 bottom: -4px; 10}

要点は、

  • position: absolute;
  • ボックスの大きさを親要素の大きさ+borderの幅分拡張する

投稿2021/06/22 01:33

hope_mucci

総合スコア4447

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

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

0

animeteをつけた際に、opacityかtransformかの原因で、疑似要素が前に行くようになってしまします。

はい、opacityが1未満の値を持つ要素、そして何かしらのtransformを行う要素は、スタックコンテキストを構成しますMDN)。

投稿2021/06/22 00:31

maisumakun

総合スコア145208

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問