Javascript 动态更改所有的样式<;img>;标签
我试图通过改变div中img标签的位置来模拟震动 我让它一次为一个img工作 有没有一种方法可以一次更改div中所有img标记的样式 这就是我目前正在做的事情Javascript 动态更改所有的样式<;img>;标签,javascript,html,javascript-events,css,Javascript,Html,Javascript Events,Css,我试图通过改变div中img标签的位置来模拟震动 我让它一次为一个img工作 有没有一种方法可以一次更改div中所有img标记的样式 这就是我目前正在做的事情 bird = document.createElement('img'); bird.setAttribute('src',birdie); bird.setAttribute('class', 'birdie'); bird.setAttribute('id', id); bird.setAttribute('onLoa
bird = document.createElement('img');
bird.setAttribute('src',birdie);
bird.setAttribute('class', 'birdie');
bird.setAttribute('id', id);
bird.setAttribute('onLoad', 'shakeAll()');
map.appendChild(bird);
birds++;
if(birdmap[0] == 0){
birdmap = [id];
}else{
birdmap+=[,id];
}
此ShakeAll功能也适用于车身的过载
function shakeAll(){
if (birdmap[0] == 0) return;
i = 1;
while(i <= birds){
shakeIt(birdmap[i]);
i++;
}
setTimeout("shakeAll()",initialSpeed);
}
函数shakeAll(){
如果(birdmap[0]==0)返回;
i=1;
while(i为所有要抖动的img指定一个公共类名。然后,用户而不是getElementById()返回一个具有特定类名的元素数组。然后使用循环来设置每个元素的动画
但是,如果希望所有img都设置动画,请使用或。为所有要抖动的img指定一个通用类名。然后,使用用户而不是getElementById()返回具有特定类名的元素数组。然后使用循环设置每个元素的动画
但是,如果您希望所有IMG都设置动画,请使用或。我无法确定您在代码中尝试执行的操作。以下代码显示了来回移动某些图像的基本方法:
// quadratic easing in/out - acceleration until halfway, then deceleration
// t = time into the animation
// d = duration of the total animation
// b = base value
// c = max change from base value (range)
var easeInOutQuad = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
};
var linearTween = function (t, b, c, d) {
return c*t/d + b;
};
// cubic easing in/out - acceleration until halfway, then deceleration
var easeInOutCubic = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
};
function shakeAll() {
var container = document.getElementById("container");
var imgs = container.getElementsByTagName("img");
// save away original position
for (var i = 0; i < imgs.length; i++) {
imgs[i].basePos = parseInt(imgs[i].style.left, 10);
}
var numShakes = 0;
var maxShakes = 10;
var range = 100;
var direction = 1;
var duration = 300; // ms
var startTime = (new Date()).getTime();
var deltas = [];
function shakeImgs() {
var now = (new Date()).getTime();
var elapsed = Math.min(now - startTime, duration);
var delta = Math.round(easeInOutQuad(elapsed, 0, range, duration));
delta *= direction;
for (var i = 0; i < imgs.length; i++) {
var basePos = imgs[i].basePos;
if (direction < 0) {
basePos += range;
}
imgs[i].style.left = (basePos + delta) + "px";
}
if (now - startTime >= duration) {
startTime = now;
direction *= -1;
++numShakes;
}
if (numShakes < maxShakes) {
setTimeout(shakeImgs, 10);
}
}
shakeImgs();
}
获取容器对象,然后获取该容器中的所有图像对象。您可以在JSFIDLE中看到相应的HTML。该代码实现了一种定位方案,该方法在边缘减慢速度并在该范围中行得最快。其余的运动由变量de的初始值控制。在
shakeAll()
中声明。这些可以编辑,也可以更改以传递到函数中。我真的不知道您试图在代码中执行什么操作。以下是一些代码,展示了来回移动某些图像的基本方法:
// quadratic easing in/out - acceleration until halfway, then deceleration
// t = time into the animation
// d = duration of the total animation
// b = base value
// c = max change from base value (range)
var easeInOutQuad = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
};
var linearTween = function (t, b, c, d) {
return c*t/d + b;
};
// cubic easing in/out - acceleration until halfway, then deceleration
var easeInOutCubic = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
};
function shakeAll() {
var container = document.getElementById("container");
var imgs = container.getElementsByTagName("img");
// save away original position
for (var i = 0; i < imgs.length; i++) {
imgs[i].basePos = parseInt(imgs[i].style.left, 10);
}
var numShakes = 0;
var maxShakes = 10;
var range = 100;
var direction = 1;
var duration = 300; // ms
var startTime = (new Date()).getTime();
var deltas = [];
function shakeImgs() {
var now = (new Date()).getTime();
var elapsed = Math.min(now - startTime, duration);
var delta = Math.round(easeInOutQuad(elapsed, 0, range, duration));
delta *= direction;
for (var i = 0; i < imgs.length; i++) {
var basePos = imgs[i].basePos;
if (direction < 0) {
basePos += range;
}
imgs[i].style.left = (basePos + delta) + "px";
}
if (now - startTime >= duration) {
startTime = now;
direction *= -1;
++numShakes;
}
if (numShakes < maxShakes) {
setTimeout(shakeImgs, 10);
}
}
shakeImgs();
}
获取容器对象,然后获取该容器中的所有图像对象。您可以在JSFIDLE中看到相应的HTML。该代码实现了一种定位方案,该方法在边缘减慢速度并在该范围中行得最快。其余的运动由变量de的初始值控制。在
shakeAll()
中声明。这些可以编辑或更改以传递到函数中。假设bird引用包含的html元素bird.getElementsByTagName(“img”)将为您提供一个图像元素数组。您使用js创建html元素有什么原因吗?就我个人而言,我会让生活变得更简单,并使用jquery。请参阅此stack overflow>有一些其他演示/类/库可能会有所帮助。根据需要,它甚至可能与Bounce函数一样简单。假设指包含的html元素bird.getElementsByTagName(“img”)将为您提供一个图像元素数组。您使用js创建html元素有什么原因吗?就我个人而言,我会让生活变得更简单,并使用jquery。请参阅此stack overflow>有一些其他演示/类/库可能会有所帮助。根据需要,它甚至可能与Bounce函数一样简单。这太棒了!G回答得好。这太棒了!回答得好。
var container = document.getElementById("container");
var imgs = container.getElementsByTagName("img");