javascript - 如何使图像获得带有过渡的“left:0”样式?
问题描述
我在这里有一个图像,最初有一个left: 100%
,我希望在执行left: 0
方法时将其移动到move
,但是有一个过渡以便可以看到运动,
我已经给了 a transition: 700ms
,.img
但这似乎不起作用,有人知道我如何使过渡工作吗?
document.addEventListener('DOMContentLoaded', function (event) {
let sliderWrapper = document.getElementsByClassName('slider-wrapper')[0];
class Image {
sliderWrapper = document.getElementsByClassName('slider-wrapper')[0];
constructor(_src) {
this.src = _src;
this.width = `${window.getComputedStyle(sliderWrapper).width}`;
this.move()
}
}
Image.prototype.move = function () {
let img = document.createElement('img');
img.setAttribute("src", this.src);
img.setAttribute("width", this.width);
img.classList.add('img')
img.style.left = '0';
sliderWrapper.appendChild(img);
}
let img = new Image('http://placehold.jp/24/cc9999/993333/150x100.png')
});
*{
padding: 0;
margin: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.slider-wrapper{
position: relative;
max-width: 60%;
height: 350px;
margin: 70px auto;
border: 1px solid #000;
}
.img{
position: absolute;
left: 100%;
top: 0;
transition: 700ms;
}
<div class="slider-wrapper">
</div>
解决方案
您可能需要在 javascript 代码中添加 setTimeout(...) :
Image.prototype.move = function () {
let img = document.createElement('img');
img.setAttribute("src", this.src);
img.setAttribute("width", this.width);
img.classList.add('img')
sliderWrapper.appendChild(img); // you need to append this before you set "left: 0"
// use setTimeout to animate the image
setTimeout(() => {
img.style.left = '0'; // now this will animate the image
}, 100);
}
[编辑]:无需输入
sliderWrapper = document.getElementsByClassName('slider-wrapper')[0];
在类中,Image
因为它已经在顶部声明。
推荐阅读
- css - 清理 node_modules 后缺少包
- apache-kafka - max.in.flight.requests.per.connection 和 Spring Kafka Producer 使用 KafkaTemplate 同步事件发布
- awk - Grep 在一行中的随机位置获取大于整数的值
- java - 从 java 客户端与 curl -d 发布到 Django 表单
- javascript - javascript 预期表达式,得到关键字'break'
- java - 为什么 Maven 中的动态版本范围不如最初预期的有用?
- python-3.x - 从任意嵌套的 xml 树总和返回结果
- java - 在流中键入擦除
- android - JavaFX 支持 Android 上的 64 位要求
- ionic-framework - 单元测试 - 离子框架中的警报控制器出现问题