お世話になっております。
https://ringo-applepie.com/
このサイトの ABOUT RINGO や SHOP の項のように、画像を左から右に表示させたいとき、
どのようにすれば良いのでしょうか。
背景を隠したくないので、マスクは使わずに画像幅だけを変えたいのです。
上記サイトではTweenMaxを使用しており、ソースを見て同じ動作をするものは作れたのですが、jQueryとCSSでもっとシンプルにできないのかなと試したのですがうまくいかず、質問させていただきました。
以下、試したものです。
codepenはこちらです
1: imgタグにobject fitを使用
→ 画像が0から100%になる途中、画像自体も一緒に左から右へ移動してしまうのでだめ
2: background-imageを使用
→ 画像が0から100%になる途中、画像自体も一緒に左から右へ移動してしまうのでだめ
3: background-imageを使用して、background-size/positionを使用しない
→ この場合は画像が0から100%になる途中も画像が動くことがなく理想に近いのですが、画像そのものが原寸表示になっていて枠内ぴったりや中央表示の指定ができない。(指定すると、2と同じになってしまう)
固定された画像幅を0から100%にして、サイズ感なども調整するにはどのようにすればいいのでしょうか。
何卒よろしくお願いいたします。
html
1<body> 2 3 <div class="wrap"> 4 <p>1:imgタグにobject fit</p> 5 <div class="box box1"> 6 <img src="https://mutimutisan.com/wp/wp-content/uploads/2020/09/sea.jpg"> 7 </div> 8 9 <p>2:background-image cover使用</p> 10 <div class="box box2"> 11 <div style="background-image:url('https://mutimutisan.com/wp/wp-content/uploads/2020/09/sea.jpg')"></div> 12 </div> 13 <p>3:backgroundimage指定 background-position/size不使用</p> 14 <div class="box box3"> 15 <div style="background-image:url('https://mutimutisan.com/wp/wp-content/uploads/2020/09/sea.jpg')"></div> 16 </div> 17 18 <script src="https://code.jquery.com/jquery-3.3.1.js"></script> 19</body>
CSS
1.box { 2 width: 50%; 3 height: 300px; 4 margin-bottom: 50px; 5 overflow: hidden; 6 position: relative; 7} 8 9.box.scroll_img { 10 & > img { 11 width: 100%; 12 } 13 & > div { 14 width: 100%; 15 } 16} 17 18.box1 { 19 & > img { 20 width: 0%; 21 height: 100%; 22 object-fit: cover; 23 object-position: 50% 50%; 24 transition: width 3s; 25 } 26} 27.box2 { 28 & > div { 29 background-repeat: no-repeat; 30 background-position: center; 31 background-size: cover; 32 width: 0; 33 height: 100%; 34 transition: width 3s; 35 } 36} 37.box3 { 38 & > div { 39 position: absolute; 40 top: 50%; 41 transform: translateY( -50% ); 42 width: 0%; 43 height: 100%; 44 transition: width 3s; 45 } 46} 47 48 49.wrap { 50 padding: 300px 50px; 51} 52p { 53 background: #fff; 54 font-size: 18px; 55} 56body { 57 background-image: url(https://mutimutisan.com/wp/wp-content/uploads/2019/09/arab_tile.png); 58}
jQuery
1jQuery(function ($) { 2 3 scroll_img(); 4 5 $(window).scroll(function () { 6 scroll_img(); 7 }); 8 9 function scroll_img() { 10 $('.box').each(function () { 11 var POS = $(this).offset().top; 12 var scroll = $(window).scrollTop(); 13 var windowHeight = $(window).height(); 14 15 if (scroll > POS - windowHeight) { 16 $(this).addClass('scroll_img'); 17 } else { 18 $(this).removeClass('scroll_img'); 19 } 20 }); 21 } 22 23});
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/08 10:46
2020/09/08 12:39
2020/09/08 23:31