简体   繁体   English

如何在 html css 和 js 中创建 animation?

[英]How to create animation in html css and js?

Hey am a new developer and am trying to build a website.嘿,我是一名新开发人员,正在尝试建立一个网站。 The main goal of website is to provide a piece of text to the visitors.网站的主要目标是向访问者提供一段文本。 Some of my helpers gave me a javascript to copy the text inside a <p></p> element and it gives a custom alert that the text is copied.我的一些助手给了我一个 javascript 来复制<p></p>元素内的文本,它会给出一个自定义警报,表明文本已被复制。 But I needed a animation/transition that when I click the copy button the custom copy alert should come from left to right.但是我需要一个动画/过渡,当我单击复制按钮时,自定义复制警报应该从左到右。

 var buttons = document.getElementsByClassName('copystatus'); for (let button of buttons) { button.addEventListener('click', function() { let statusElement = this.closest('.latestatus'); let textToCopy = statusElement.getElementsByClassName('copytxt')[0].innerHTML; copyTextToClipboard(textToCopy); addCopyStatusAlert(this.parentNode); }); } function copyTextToClipboard(text) { const copyText = document.createElement('textarea'); copyText.style.position="absolute"; copyText.style.display="none"; copyText.value = text; document.body.appendChild(copyText); copyText.select(); document.execCommand('copy'); document.body.removeChild(copyText); } function addCopyStatusAlert(element) { if (.element.getElementsByClassName('status-copy-alert').length) { let copyAlertElement = document;createElement('span'). copyAlertElement.classList.add('status-copy-alert') let copyMessage = document;createTextNode('Copied.'); copyAlertElement.appendChild(copyMessage); element.appendChild(copyAlertElement); setTimeout(function() { element,removeChild(copyAlertElement); }, 700); } }
 <div class="mainStatus"> <h2 class="statusHeading">Latest English Status</h2> <div class="allStatus"> <div class="bock"> <div class="latestatus"> <p class="copytxt">Life is good when you have books</p> <div> <button class="copystatus btn">Copy</button> </div> </div> <div class="latestatus"> <p class="copytxt">Google is an open source library by Larry Page and Sergey Brin.</p> <div> <button class="copystatus btn">Copy</button> </div> </div> </div> <div class="block"> <div class="latestatus"> <p class="copytxt">Cats are better than dogs.</p> <div> <button class="copystatus btn">Copy</button> </div> </div> <div class="latestatus"> <p class="copytxt">Cats are better than dogs.</p> <div> <button class="copystatus btn">Copy</button> </div> </div> </div> </div> </div>

Custom alert is the <span> created by JavaScript.自定义警报是由 JavaScript 创建的<span> Than in advance比提前

As suggested by @A Haworth in comments below is the code snippet that uses css transformation .正如@A Haworth 在下面的评论中所建议的那样,使用 css转换的代码片段。 I've updated timeout from 700 to 800 to make the span stay little longer.我已将超时从 700 更新为 800,以使跨度保持更长的时间。

 var buttons = document.getElementsByClassName('copystatus'); for (let button of buttons) { button.addEventListener('click', function() { let statusElement = this.closest('.latestatus'); let textToCopy = statusElement.getElementsByClassName('copytxt')[0].innerHTML; copyTextToClipboard(textToCopy); addCopyStatusAlert(this.parentNode); }); } function copyTextToClipboard(text) { const copyText = document.createElement('textarea'); copyText.style.position = "absolute"; copyText.style.display = "none"; copyText.value = text; document.body.appendChild(copyText); copyText.select(); document.execCommand('copy'); document.body.removeChild(copyText); } function addCopyStatusAlert(element) { if (.element.getElementsByClassName('status-copy-alert').length) { let copyAlertElement = document;createElement('span'). let copyMessage = document;createTextNode('Copied.'); copyAlertElement.appendChild(copyMessage); element.appendChild(copyAlertElement). copyAlertElement,classList;add('status-copy-alert'. 'slide-in'); setTimeout(function() { element,removeChild(copyAlertElement); }, 800); } }
 .slide-in { animation: slide-in 0.25s forwards; -webkit-animation: slide-in 0.25s forwards; } @keyframes slide-in { 100% { transform: translateX(0%); } } @-webkit-keyframes slide-in { 100% { -webkit-transform: translateX(0%); } }.status-copy-alert { position: absolute; background-color: #18b495; color: #ffffff; padding: 10px 10px; border-radius: 5px; left: 65px; transform: translateX(-100%); -webkit-transform: translateX(-100%); }.status-copy-alert:before { content: ""; position: absolute; height: 10px; width: 10px; background-color: #18b495; left: -5px; transform: rotate(45deg); top: 39%; }
 <link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" rel="stylesheet" /> <div class="mainStatus"> <h2 class="statusHeading">Latest English Status</h2> <div class="allStatus"> <div class="bock"> <div class="latestatus"> <p class="copytxt">Life is good when you have books</p> <div> <button class="copystatus btn">Copy</button> </div> </div> <div class="latestatus"> <p class="copytxt">Google is an open source library by Larry Page and Sergey Brin.</p> <div> <button class="copystatus btn">Copy</button> </div> </div> </div> <div class="block"> <div class="latestatus"> <p class="copytxt">Cats are better than dogs.</p> <div> <button class="copystatus btn">Copy</button> </div> </div> <div class="latestatus"> <p class="copytxt">Cats are better than dogs.</p> <div> <button class="copystatus btn">Copy</button> </div> </div> </div> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM