実現したいこと
https://demo.tcd-theme.com/tcd050/
の美味に舌鼓。全国おすすめ温泉地特集!という部分のホバーしたらスライドする部分を真似て作成したいと思っております。
自分でコードを作成しているのですが、思ったようにスライドせずぎこちないような動きになってしまっているのでアドバイスをいただきたいです。
発生している問題・分からないこと
- スライドの仕方
実際にスライドをするのですが、画像の大きさをキープしながら移動させる方法がわかりません。大きさを100%に大きさにしてしまうと画像のスライドだけになってしまうので元々100%から60%に変更するようなコードに変更しているのですが、画像の大きさや表示範囲が中途半端になってしまうのでどうしても変更した際の違和感が否めないので修正したいです。
- jsの付け替え
ソースコードを確認してみてクラスの付け替えだとは思っているのですがそれで大丈夫なのかとホバーした際にコードの変換があっているかどうかお聞きしたいです。
該当のソースコード
HTML
1<div class="test"> 2 <div class="test-red"> 3 <img src="/image/epic/epic-bath-flower.jpeg" alt=""> 4 <p>テキスト</p> 5 </div> 6 <div class="test-red"> 7 <img src="/image/epic/epic-hokkaido.jpeg" alt=""> 8 <p>タイトル</p> 9 </div> 10 <div class="test-red"> 11 <img src="/image/epic/epic-maple.jpeg" alt=""> 12 <p>表題</p> 13 </div> 14 </div>
SCSS
1.test{ 2 overflow: hidden; 3 display: flex; 4 .test-red{ 5 position: relative; 6 transition: all 0.4s; 7 overflow: hidden; 8 width: 30%; 9 height: 300px; 10 transition: all 0.4s; 11 &:nth-child(1){ 12 img{ 13 width: 100%; 14 height: 100%; 15 object-fit: cover; 16 } 17 p{ 18 display: none; 19 } 20 } 21 &:nth-child(2){ 22 23 img{ 24 width: 100%; 25 height: 100%; 26 object-fit: cover; 27 } 28 p{ 29 display: none; 30 } 31 } 32 &:nth-child(3){ 33 34 img{ 35 width: 100%; 36 height: 100%; 37 } 38 p{ 39 display: none; 40 } 41 } 42 &:hover{ 43 &.test-green{ 44 height: 300px; 45 transition: all .5s; 46 img{ 47 position: absolute; 48 left: 0; 49 top: 0; 50 width: 60%; 51 object-fit: cover; 52 } 53 p{ 54 display: block; 55 position: absolute; 56 right: 0; 57 top: 0; 58 width: 40%; 59 } 60 } 61 } 62 } 63}
JavaScript
1document.addEventListener('DOMContentLoaded', function() { 2 const tests = document.querySelectorAll('.test-red'); 3 4 tests.forEach(function(test) { 5 test.addEventListener('mouseenter', function() { 6 test.classList.add('test-green'); 7 }); 8 9 test.addEventListener('mouseleave', function() { 10 test.classList.remove('test-green'); 11 }); 12 }); 13});
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ソースコードや検索で試してみたのですが、クラスの付け替えなどがjsで起きているのはなんとなくわかっているのですが、サイズ変換などはクラスの付け替えで起きているのはわかるのですが、その大きさの指定や画像の大きさをキープしたまま変更する方法(多分padding-topだとは思うのですが・・・)がよくわかっていないです。
補足
特になし
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/02/04 08:33
2024/02/05 03:16
2024/02/06 00:17
2024/02/07 01:56