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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

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

Q&A

解決済

2回答

3548閲覧

jQueryでのクロスフェードとbackground-positionの動き

T.G

総合スコア14

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

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

0グッド

1クリップ

投稿2018/02/03 00:35

http://8ya.jp
イメージでは上記のページのような動きの仕組みが知りたいです
現在は試行錯誤でクロスフェードの方は実装できたのですが
合わせてbackground-positionを動かそうとするとうまく行きません

稚拙なコードですが解決策がわかる方いらっしゃいましたらよろしくお願いします。

html

1<section class="topImg"> 2 <div class="slider"> 3 <div class="bgCrossFade bg_move"></div> 4 </div> 5</section>

css

1.topImg{ 2 width: 100%; 3 height: 520px; 4} 5.bgCrossFade { 6 position: relative; 7 height: 520px; 8} 9 10.bg_move{ 11 animation: moveBg 60s infinite linear; 12} 13@keyframes moveBg{ 14 0% { background-position: right top } 15 100% { background-position: left top } 16}

javascript

1$(function(){ 2 3var speed = 3000; // フェードイン・フェードアウトの処理時間(1000で1秒) 4var times = 4000; // 画像切り替えの間隔(1000で1秒) 5var className = '.bgCrossFade'; 6var bgArray = [ 7 "images/topImage1.jpg", 8 "images/topImage2.jpg" 9 ]; 10 11$.each(bgArray.reverse(), function(i, value) { 12 $(className).prepend('<div class="slides bg_move" style="background-image:url(' + value + ');"></div>'); 13}); 14 15var bgNo = 1; 16var bgLength = bgArray.length; 17 18setInterval(function(){ 19 $(className + ' .slides:nth-child(' + bgNo + ')').fadeOut(speed); 20 $(className + ' .slides:nth-child(' + ( bgNo === bgLength ? 1 : bgNo + 1) + ')').fadeIn(speed/3); 21 if ( bgNo >= bgLength ) { 22 bgNo = 1; 23 } else { 24 bgNo += 1; 25 } 26}, times); 27 28 29});

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

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

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

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

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

guest

回答2

0

ベストアンサー

よっ
ちょっと時間があって、試してみた。
Javascriptを使わずに、三昧の自動スライド + 自動背景の動き。

全く同じではないですが、こうなります ↓
http://study.jeromedupuis.net/teratail/111800/

HTMLは以下のようにします。

<!DOCTYPE> <html> <head> <link href="style.css" rel="stylesheet" /> </head> <body> <div class="hs-wrapper"> <div class="hs-wrapper-cover"> <img src="http://8ya.jp/img/top/mv_logo.png" /> </div> <div class="hs-wrapper-list" data-count="3"> <img src="http://8ya.jp/wp/wp-content/uploads/2018/01/mv_pc01.jpg" /> <img src="http://8ya.jp/wp/wp-content/uploads/2018/01/mv_pc02.jpg" /> <img src="http://8ya.jp/wp/wp-content/uploads/2018/01/mv_pc03.jpg" /> </div> </div> </body> </html>

CSSは以下のようにします。

body { margin:0; } .hs-wrapper { margin:14px; height: 520px; position: relative; overflow: hidden; } .hs-wrapper .hs-wrapper-cover { z-index: 200; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .hs-wrapper .hs-wrapper-cover img { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:115px; height:auto; } .hs-wrapper .hs-wrapper-list { position:relative; } .hs-wrapper .hs-wrapper-list > img { max-width: 1269px; width: 100%; height: auto; top: 0px; left: 0px; position: absolute; animation: fadeWrapper 10000ms linear infinite 0s forwards; } .hs-wrapper .hs-wrapper-list[data-count="1"] > img { animation-duration:10000ms; } .hs-wrapper .hs-wrapper-list[data-count="2"] > img { animation-duration:20000ms; } .hs-wrapper .hs-wrapper-list[data-count="3"] > img { animation-duration:30000ms; } .hs-wrapper .hs-wrapper-list > img:nth-child(1){ z-index:20; } .hs-wrapper .hs-wrapper-list > img:nth-child(2){ animation-delay:10000ms; z-index:19; } .hs-wrapper .hs-wrapper-list > img:nth-child(3) { animation-delay:20000ms; z-index:18; } @keyframes fadeWrapper { 0%{ opacity:1; } 10% { opacity:0; } 60% { opacity:0; } 70% { opacity:1; } 100% { opacity:1; } } .hs-wrapper .hs-wrapper-list { animation: matrixWrapper 30000ms linear infinite 0s forwards; } @keyframes matrixWrapper { 0% { transform: matrix(1,0,0,1,0,0); } 33% { transform: matrix(1.2,0,0,1.2,5,10); } 66% { transform: matrix(1.1,0,0,1.1,0,-10); } 100% { transform: matrix(1,0,0,1,0,0); } }

投稿2018/02/03 09:17

編集2018/02/03 09:24
jerome.dupuis

総合スコア172

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

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

T.G

2018/02/06 02:09

わざわざありがとうございます!参考にさせていただきました!
guest

0

インスペクタでスタイルを確認すると、冒頭で挙げられたサイトの背景画像は、background-position ではなく、transform の値を JavaScript で操作して動かしていることがわかります。

例えば、background-imageのある要素を左から右にアニメーションさせたいのであれば、以下のようなHTMLを用意します。

html

1<section class="topImg"> 2 <div class="image"></div> 3</section>

それから、CSSは以下のようにします。

css

1.topImg { 2 height: 300px; 3 overflow: hidden; 4} 5 6.image { 7 position: absolute; 8 left: -10%; 9 width: 110%; 10 top: 0; 11 bottom: 0; 12 background-image: url(...); 13 background-size: cover; 14 animation: slide linear 1s; 15} 16 17@keyframes slide { 18 0% { 19 transform: translateX(0); 20 } 21 100% { 22 transform: translateX(9%); 23 } 24}

.imageの幅を110%にして、移動しても後ろ側が見えないようにします。translateX(9%)のところをtranslateX(10%)としてしまうと、translateが.imageの大きさを基準に計算されるため、110%にした幅の10%、つまり11%の移動になり、はみ出してしまうので注意が必要です。

これをクロスフェードと組み合わせれば、期待している動きになるでしょう。


やりたいことと合っているかわかりませんが、keyframesが使えて、ユーザーの操作が関係ないのであれば、CSSだけで画像をアニメーションさせつつ、クロスフェードできます。
こちらにサンプルを用意しました。
https://codepen.io/anon/pen/PQZXqp

投稿2018/02/03 07:14

編集2018/02/03 17:16
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

T.G

2018/02/06 02:09

ありがとうございます、仕組みが理解できました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問