前提・実現したいこと
現在hoverで疑似要素をアニメーションさせるところまでうまくいっております。
がもう少し変化させて本来と違うところにマウスが乗っているときにhoverが動いてくれるようなコードを考えています。
現状の単純にhoverで動く成功しているコードを記載しておきます
html
1<!DOCTYPE html> 2<head> 3<meta charset="UTF-8"> 4<link rel="stylesheet" href="stylecss.css"> 5</head> 6<html> 7<body> 8 <main> 9 <p>サンプル1</p> 10 <p>サンプル2</p> 11 </main> 12</body> 13</html>
css
1*{ 2 padding: 0; 3 margin: 0; 4} 5p, { 6 font-size: 50px; 7 text-align: center; 8} 9 10main{ 11 height:1000px; 12} 13p::after, p::before{ 14 content:""; 15 background-image: url(images/2color-border.png); 16 display: inline-block; 17 width: 0px; 18 height: 40px; 19 background-position-y: 20px; 20 background-repeat: no-repeat; 21 22transition-property: width; 23transition-duration: 0.5s; 24} 25p:hover::after, p:hover::before{ 26 27 width: 800px; 28}
上記のコードでは<p>にマウスが乗った時に<p>の左右にbackgroundimageが動くコードです。
画像で差し込んでいる画像(2色の線)がびよーんと800pxまで左右に伸びます。
(水平線みたいな役割の線だとイメージしていただければいいかなと思います)
で<p>に載っているときだけでなくもっと大きなボックスに載っているときにも反応してほしいと考えるようになりました。
で、html上記のコードで<main>に載っているときに反応してくれればと思いコードを色々書き換えたり練習しております。
がうまくいかず無反応で困っております。
試したこと
ググってみたら参考になりそうなサイトはありましたhttps://techacademy.jp/magazine/19418
が自分が書くとうまくいかずきっと何かが違うんだろうなという結果になっています。(何が違うのかは検証したりしてますがわからない状態に陥っています。)
###どうコードを変えたのか
cssで下方部分の変更を行ってみました
『p:hover::after, p:hover::before』この部分を『main:hover + p::before, main:hover + p::after 』にしてみました
mainにhoverしたときpの疑似要素が変わると書いたつもりです。
###結果書いたcss
css
1*{ 2 padding: 0; 3 margin: 0; 4} 5p, { 6 font-size: 50px; 7 text-align: center; 8} 9 10main{ 11 height:1000px; 12} 13p::after, p::before{ 14 content:""; 15 background-image: url(images/2color-border.png); 16 display: inline-block; 17 width: 0px; 18 height: 40px; 19 background-position-y: 20px; 20 background-repeat: no-repeat; 21 22transition-property: width; 23transition-duration: 0.5s; 24} 25main:hover + p::before, main:hover + p::after { /*変更した部分*/ 26 27 width: 800px; 28}
変更したcssコードではなぜダメなのでしょうか?
お忙しいと思いますが宜しくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/03 16:57 編集