をダブルクリックします❤️
11208 ワード
今日、我々は有名なInstagramのダブルタップを効果的に再現しようとしている!
そして、驚きは、我々だけのJavaScriptの12行が必要です!
この効果のために、我々はダブルクリックハンドラーを我々のイメージにバインドします.そして、ポストの下の心臓アニメーションプラスカウンターを示します.
これがどのように見えるかです.
それから、我々はそれの中で炉床SVGで、我々のポストdivをつくります.
その下で、実際のInstagram Postをレンダリングします.
そして最後に私たちの好きな数があります.
ご覧のように、私たちは歌手の要素を使用しているので、私はこの例のためのクラスを追加する気にしませんでした.
次に、私たちはアイコン(心臓)を絶対にして、それに0の不透明度を与えます.
それから、私たちは、このアイコンにもクラスがあるかどうか言います
この動画はこの動画にはまだ動画レスポンスがありません.
彼らはそれをスケールし、それをバウンス効果を与えるために少しスケールダウン.
場所を追加する私たちの実際の効果のために、我々は
それが起こるならば、我々は我々のカウンタに1つ増加するように言います.
その後、我々のアイコンに似たようなクラスを追加し、好きな数を更新します.
1200ミリ秒後、同じクラスを再び削除します.
それだ!今ではcodepenで以下のようなinstagram効果があります.
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
そして、驚きは、我々だけのJavaScriptの12行が必要です!
この効果のために、我々はダブルクリックハンドラーを我々のイメージにバインドします.そして、ポストの下の心臓アニメーションプラスカウンターを示します.
これがどのように見えるかです.
HTML構造
<svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<symbol id="icon-heart" viewBox="0 0 32 32">
<path d="M23.6 2c-3.363 0-6.258 2.736-7.599 5.594-1.342-2.858-4.237-5.594-7.601-5.594-4.637 0-8.4 3.764-8.4 8.401 0 9.433 9.516 11.906 16.001 21.232 6.13-9.268 15.999-12.1 15.999-21.232 0-4.637-3.763-8.401-8.4-8.401z"></path>
</symbol>
</defs>
</svg>
<div class="post">
<svg class="icon icon-heart">
<use xlink:href="#icon-heart"></use>
</svg>
<img src="https://instagram.fcpt4-1.fna.fbcdn.net/v/t51.2885-15/sh0.08/e35/s640x640/105986995_880679399008682_4786248831928918923_n.jpg?_nc_ht=instagram.fcpt4-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=ZI2jfIEB-tUAX8MMD58&oh=4cc88009309dbc5b223b8334408ac213&oe=5F78F3A2" />
<p><span>0</span> likes</p>
</div>
HTMLに関しては、我々は我々を我々のものにしますSVG sprites .それから、我々はそれの中で炉床SVGで、我々のポストdivをつくります.
その下で、実際のInstagram Postをレンダリングします.
そして最後に私たちの好きな数があります.
ご覧のように、私たちは歌手の要素を使用しているので、私はこの例のためのクラスを追加する気にしませんでした.
CSS構造
.post {
margin: auto;
position: relative;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
.post img {
width: 400px;
cursor: pointer;
}
.post .icon {
position: absolute;
display: inline-block;
width: 128px;
opacity: 0;
fill: red;
}
.post .icon.like {
animation: 2s like-heart-animation ease-in-out forwards;
}
.post p {
align-self: baseline;
margin-top: 10px;
}
利用するFlex to center ポスト.次に、私たちはアイコン(心臓)を絶対にして、それに0の不透明度を与えます.
それから、私たちは、このアイコンにもクラスがあるかどうか言います
like
アニメーションを追加like-heart-animation
.この動画はこの動画にはまだ動画レスポンスがありません.
彼らはそれをスケールし、それをバウンス効果を与えるために少しスケールダウン.
@keyframes like-heart-animation {
0%,
to {
opacity: 0;
-webkit-transform: scale(0);
transform: scale(0);
}
15% {
opacity: 0.9;
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
30% {
-webkit-transform: scale(0.95);
transform: scale(0.95);
}
45%,
80% {
opacity: 0.9;
-webkit-transform: scale(1);
transform: scale(1);
}
}
JavaScriptのInstagramのような
場所を追加する私たちの実際の効果のために、我々は
like
クラスSVGにクラスを追加しました.const img = document.querySelector("img");
const icon = document.querySelector(".icon");
const countEl = document.querySelector("span");
let count = 0;
img.addEventListener("dblclick", () => {
count++;
icon.classList.add("like");
countEl.innerHTML = count;
setTimeout(() => {
icon.classList.remove("like");
}, 1200);
});
イベントリスナーを追加しますdblclick
(ダブルクリック).それが起こるならば、我々は我々のカウンタに1つ増加するように言います.
その後、我々のアイコンに似たようなクラスを追加し、好きな数を更新します.
1200ミリ秒後、同じクラスを再び削除します.
それだ!今ではcodepenで以下のようなinstagram効果があります.
読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
Reference
この問題について(をダブルクリックします❤️), 我々は、より多くの情報をここで見つけました https://dev.to/dailydevtips1/double-click-to-like-instagram-effect-in-javascript-hijテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol