老师_start中不加定时器,为什么会出现无动画现象?
无动画现象是不是因为transform先进行改变了,而transition 是后设置的所导致的?
// 形变类
class Transform {
constructor(selector) {
this.el = document.querySelector(selector);
this._queue = [];
this._transform = {
rotate: '',
translate: '',
scale: ''
};
this.defaultTime = Transform.config.defaultTime;
this.el.style.transition = `all ${ .3 }s`;
}
// 位移
translate(value, time) {
return this._add('translate', value, time);
}
// 添加动画
_add(type, value, time = this.defaultTime) {
this._queue.push({ type, value, time });
return this;
}
// 添加完成 可以开始动了
done() {
this._start();
}
// 开始动 从队列中把动画一个个拿出来
_start() {
if (!this._queue.length) return;
// 先进先出
// setTimeout(() => {
const info = this._queue.shift();
this.el.style.transform = this._getTransform(info);
// }, 0);
}
_getTransform({ time, value, type }) {
const _tsf = this._transform;
switch (type) {
case 'translate':
_tsf.translate = `translate(${ value })`;
break;
case 'scale':
_tsf.scale = `scale(${ value })`;
break;
case 'rotate':
_tsf.rotate = `rotate(${value}deg)`;
}
return `${_tsf.translate} ${_tsf.scale} ${_tsf.rotate}`;
}
}
Transform.config = {
defaultTime: 300
};
Transform.config.defaultTime = 1000;
const tf = new Transform('.ball');
tf
.translate('200px, 200px')
.done();
// console.log(tf);
正在回答
同学你好,理解的没有问题,display属性值改变没有过渡效果。或者可以使用opacity属性值从0变化到1实现隐藏显示的效果。
祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星