先程も投稿させていただいたものと同じコードについて、
別途 わからない点がありましたので、投稿いたします。
ザ・ベストテンのパタパタとしたパネルの動きをwebサイトで使用したく、
Code Penからソースをコピーし、デザイン面で修正を加えています。
(参照元URL:https://codepen.io/jesusbotella/pen/opmRrO)
① 「AAA」と「BBB」のアニメーションのスピードに差をつけたいのですが、
data-animation-delay="1200ms" の部分を変えても作用しません。
足りない記述、誤った記述がありますでしょうか?
②スクロールをして、その場所に来たら、フラップのアニメーションが始まるようにするためには
どのような記述が必要でしょうか…?
③アニメーションが動いている間に、最終的に見せたい言葉以外のものを出させるには、
どうしたらよいでしょうか??
JSの以下の部分でそのように設定できていると思ったのですが、実際は、「AAA」と「BBB」が回っているアニメーションになってしまいます。
function makeid() {
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
当方初心者のため、質問もうまくできているか不安ですが、ご回答いただけましたら幸いです。
よろしくお願いします。
html
1<div class="splitflap-display"> 2<div class="split-flap" data-letter="AAA" data-animation-delay="1200ms"></div> 3<div class="split-flap" data-letter="BBB" data-animation-delay="2000ms"></div></div>
css
1@keyframes slidein { 2 from { 3 height: 0%; 4 } 5 6 to { 7 height: 100%; 8 } 9} 10 11.splitflap-display { 12 display: flex; 13 margin: 10px; 14 flex-wrap: wrap; 15 align-items: center; 16 height: 100%; 17 justify-content: center; 18 align-content: center; 19} 20 21.split-flap { 22 width: 100%; 23 height: 4vw; 24 border: 2px solid rgba(0, 0, 0, 0.2); 25 position: relative; 26 margin: 0 20px 20px 0; 27 font-size: 2vw; 28 line-height: 70px; 29 text-align: center; 30 box-sizing: border-box; 31 box-shadow: inset 2px 2px 0px 0px rgba(0, 0, 0, 0.5); 32 overflow: hidden; 33 position: relative; 34} 35 36.split-flap:after { 37 content: ' '; 38 width: 100%; 39 height: 2px; 40 background-color: rgba(0, 0, 0, 0.5); 41 position: absolute; 42 top: 50%; 43 left: 0%; 44 transform: translate3d(0, -50%, 0); 45} 46 47.split-flap:before { 48 content: attr(data-letter); 49 width: 100%; 50 height: 100%; 51 top: 50%; 52 left: 50%; 53 transform: translate3d(-50%, -50%, 0); 54 position: absolute; 55/* transition: height 100ms linear;*/ 56 animation-duration: 120ms; 57 animation-delay: attr(data-animation-delay); 58 animation-name: slidein; 59 animation-iteration-count: 6; 60 overflow: hidden; 61} 62 63/*.split-flap.is-changing:before { 64 height: 0; 65}*/
JS
1<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 2<script> 3function makeid() { 4 var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 5 6 return possible.charAt(Math.floor(Math.random() * possible.length)); 7} 8 9function randomTime(){ 10 return Math.round(Math.random() * 200 ); 11} 12function changeAnimationTime(element){ 13 var random = randomTime(); 14 element.setAttribute('animation-delay', random + "ms"); 15 16 console.log('animation-delay', random + "ms") 17} 18 19 20var mapFn = function(element) { 21 changeAnimationTime(element); 22 var i = 0; 23 var originalAttribute = element.getAttribute('data-letter'); 24 var test = [makeid(), makeid(), makeid(), makeid(), makeid(), originalAttribute]; 25 element.addEventListener("animationend", function() { 26 element.setAttribute('data-letter', originalAttribute); 27 }, false); 28 element.addEventListener("animationiteration", function() { 29 element.setAttribute('data-letter', test[i++]); 30 }, false); 31}; 32 33var changingElements = Array.from(document.querySelectorAll('[data-letter]'), mapFn); 34</script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/06 06:17
2020/08/06 06:21
2020/08/06 06:25
2020/08/06 09:43