IE浏览器动画中使用calc计算方法不生效的坑

最近在写一个动画效果时,在动画中利用calc去计算元素的移动距离,在火狐和谷歌chrome下运动正常,效果很简单:

示例代码如下:

<div id='moveDiv'>
	</div>
	
	<style>
		body{
			background-color:black;
		}
		#moveDiv{
			width:30px;
			height: 30px;
			background-color: yellow;
			animation:move 5s infinite;

		}
		@keyframes move{
			0%{
				transform: translate( calc(100% - 20px), calc(100% - 20px));
			}
			50%{
				transform: translate( calc(100% + 120px),calc(100% + 120px) );
			}
			100%{
				transform: translate( calc(100% - 20px),calc(100% - 20px) );
			}
		}
	</style>

在动画的keyframes帧中,使用到了calc方法去计算移动距离。目前效果很完美,but,打开IE浏览器尝试效果时,运动元素却傻傻的定在那里一动不动:

赶紧去查看了下transform和calc的浏览器兼容性:

transform:

calc浏览器支持:

    我用的IE11,浏览器兼容性没毛病啊。但是为毛动画中使用calc就不生效呢?

查了一些资料,有人说这是IE的一个bug。。。

解决方案:

曲线救国式的编码方式去实现想要的效果:

把上面的动画定义代码修改为;

@keyframes move{
	0%{
		transform: translate( 100%, 100%) translateX(-20px) translateY(-20px);
	}
	50%{
		transform: translate( 100%, 100%) translateX(120px) translateY(120px);
	}
	100%{
		transform: translate( 100%, 100%) translateX(-20px) translateY(-20px);
	}
}

即取消掉calc计算方法,利用translateX和translateY重新去定位偏移量;

效果达成:

    在此记录一下IE浏览器下的这个坑,遇到相同问题的小伙伴可以参考该解决方案。

过去的几十年里,计算机模拟在材料科学与技术的应用对于材料设计的定量化产生了革命性的影响。各种热力学和动力学模型的组合使得预测材料加工过程材料的成份、结构及性质成为了可能。 数学模型在产品研发和过程控制日益显著的重要性佐证了对于热力学计算和动力学模拟的迫切需求。并且现代定量化的材料设计已经从计算热力学及动力学获得了巨大的收益。 将多元多相体系各元素/组元/相的热力学平衡和局部平衡信息以及材料加工过程的相变动力学(以及化学反应、表面反应、形核、熟化、流体流动性等)信息整合在一个软件系统对于解决化工、冶金、汽车、航天及电子工业材料设计和过程控制的实际问题是至关重要的,并将同时满足自然和环境工程资源勘探、能源循环和废弃物处理的需要。热力学/动力学数据库最重要的特性之一就是提供了在不同外部和内部因素影响下研究热力学平衡以及动力学过程一种较之实验方法更为快捷的手段。此外,热力学及动力学数据库与工具手册相比可以为用户提供自相一致、可行的以及最新的数据。 一个通用的热力学/动力学数据库必将为多个传统上认为是不同的领域提供高品质的内部一致的数据,如冶金、钢铁/合金、陶瓷、高温气相平衡、溶液化学以及地球化学。在绝大多数的应用,多元多相体系/过程由于组分数量众多以至于必须采用计算机软件才可以快速并准确地计算各种热力学平衡及动力学过程。现有的Thermo-Calc 和DICTRA 数据库系统即是这样的成功的尝试,它是一套强大且精细的软件系统,简单易学同时可以用于计算各种热化学计算以及一些类型的动力学模拟。 通过Thermo-Calc 进行热力学计算以及DICTRA 进行动力学模拟可以显著地提高用户在研发设计新材料、选取热处理温度、优化制造过程、指导材料应用以及保护环境等方面的能力。这样一套功能全面的软件/数据库/接口程序在世界范围能被证明是最强大而灵活的工程软件,它可以大大减少耗时费力的实验,提高产品品质和控制环境影响。
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页