热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将关键帧动画文本与容器中心对齐

这是一个简单的显示文字动画代码。我需要使用不同的字体大小,这导致

这是一个简单的显示文字动画代码。

我需要使用不同的字体大小,这导致文本在不同的垂直位置结束(请运行代码段以了解我的意思)。

问题是我想使动画文本垂直垂直对齐其container的中间,即使将字体大小更改,也要水平对齐其左侧的水平。

如果我从position: absolute中删除了textClass,则文本会在container的中间淡入淡出,但我会失去从下到上的翻译动画!

注意:
 我知道使用视口单位的弊端,但我确实需要使用视口单位(vw和vh)或%单位,而且我不允许使用px em等。


let textId = document.getElementById("textId");
// Text with 1vw font size
setTimeout(function(){
//Our Text
let myText = 'First text here';
//Define the font size
textId.style.fOntSize= "1vw";
//append text to the elemnt
textId.innerHTML = `${myText}`;
//animate the text
textId.classList.add("animeShow");
textId.classList.remove("animeHide");
},1000);

// Hide Text by adding `animeHide` class
setTimeout(function(){
textId.classList.remove("animeShow");
textId.classList.add("animeHide");
},4000);

// Text with 3vw font size
setTimeout(function(){
let myText = 'Second text here';
textId.style.fOntSize= "3vw";

textId.innerHTML = `${myText}`;

textId.classList.add("animeShow");
textId.classList.remove("animeHide");
},5000);

.container {
position: absolute;
overflow: hidden;
left: 10vw;
top: 51vh;
height: 26vh;
width: 88vw;
display: flex;
justify-content: center;
align-items: center;
outline: 0.1vw dashed orange;
}
.textClass {
position: absolute;
font-family: 'Open Sans',sans-serif;
font-weight: bold;
color: rgb(128,128,128);
left: 0.5vw;
opacity: 0;
}
.animeShow {
animation: Show 0.3s ease-in-out;
animation-delay: 0.5s;
animation-fill-mode: forwards ;
}
.animeHide {
animation: Hide 0.3s ease-in-out;
animation-fill-mode: forwards ;
}
@-webkit-keyframes Show {
from { opacity: 0; top: 30vh }
to { opacity: 1; top: 0vh }
}
@-webkit-keyframes Hide {
from { opacity: 1; top: 0vh }
to { opacity: 0; top: 30vh }
}





我没有成功使用它:

transition: 200ms transform;
transform: translateY(-50%);

也使用此:

@-webkit-keyframes Show {
from { opacity: 0; top: 0% }
to { opacity: 1; top: 50% }
}


我想我明白了

@-webkit-keyframes Show {
from { opacity: 0; padding-top: 10%; }
to { opacity: 1; padding-top: 0%; }
}
@-webkit-keyframes Hide {
from { opacity: 1; padding-top: 0%; }
to { opacity: 0; padding-top: 10%; }
}

我尝试使用margin-top,但是元素已经使用它了。

,

  • 使容器相对放置,这将其声明为绝对放置元素的容器。

  • 使元素本身绝对定位。

  • 将其放在容器的中间,并选择“顶部:50%”。 (请注意,这里的“ 50%”表示容器高度的50%。)

  • 使用平移将元素向上移动自己的高度(“ translate(0,-100%)”中的“ 100%”是指元素本身的高度。)

这会将文本移到靠近容器中间的位置。

使用较高的负值调整-100%,以将元素移至顶部。
但我发现-100%是距离中心最近的东西


let textId = document.getElementById("textId");
// Text with 1vw font size
setTimeout(function() {
//Our Text
let myText = 'First text here';
//Define the font size
textId.style.fOntSize= "1vw";
//append text to the elemnt
textId.innerHTML = `${myText}`;
//animate the text
textId.classList.add("animeShow");
textId.classList.remove("animeHide");
},1000);
// Hide Text by adding `animeHide` class
setTimeout(function() {
textId.classList.remove("animeShow");
textId.classList.add("animeHide");
},4000);
// Text with 3vw font size
setTimeout(function() {
let myText = 'Second text here';
textId.style.fOntSize= "3vw";
textId.innerHTML = `${myText}`;
textId.classList.add("animeShow");
textId.classList.remove("animeHide");
},5000);

.container {
position: relative;
overflow: hidden;
left: 10vw;
top: 51vh;
height: 26vh;
width: 88vw;
display: flex;
justify-content: center;
align-items: center;
outline: 0.1vw dashed orange;
}
.container p {
position: absolute;
font-family: 'Open Sans',sans-serif;
font-weight: bold;
color: rgb(128,128,128);
left: 0.5vw;
opacity: 0;
}
.animeShow {
animation: Show 0.3s ease-in-out;
animation-delay: 0.5s;
animation-fill-mode: forwards;
}
.animeHide {
animation: Hide 0.3s ease-in-out;
animation-fill-mode: forwards;
}
@-webkit-keyframes Show {
from {
opacity: 0;
top: 30vh;
}
to {
opacity: 1;
top: 50%;
transform: translateY(-100%);
}
}
@-webkit-keyframes Hide {
from {
opacity: 1;
top: 0vh
}
to {
opacity: 0;
top: 30vh
}
}





,

我认为您只需要使用以下CSS更新此(.textClass)类,这将使文本在容器内垂直居中。我希望这能解决您的问题。

.textClass {
position: absolute;
font-family: 'Open Sans',sans-serif;
font-weight: bold;
color: rgb(128,128);
left: 0.5vw;
opacity: 0;
margin: 0;
top: 0;
bottom: 0;
display: flex;
align-items: center;
}

推荐阅读
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 标题: ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文整理了Java中com.evernote.android.job.JobRequest.getTransientExtras()方法的一些代码示例,展示了 ... [详细]
author-avatar
我病态见不得你跟别人恩爱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有