javascript - 如何在不旋转图像的情况下以圆周运动移动图像?

标签 javascript html css

<分区>

我正在使用 html5、css3 和 javascript 创建一个网页...在我的网页中,一个视频在页面中央播放,5 个图像将围绕视频以圆形方式移动,图像不会旋转。 .我怎样才能做到这一点?我是初学者...请帮助我...提前谢谢

最佳答案

只需使用基本三 Angular 函数计算图像坐标:

              y
              |
              |     [image]
              |    /
              |   /
              |  / radius
              | /
    __________|/_)_image_angle___________ x
              |
              |
              |

基本三 Angular 学给我们:

cos(image_angle) = x/radius
sin(image_angle) = y/radius

因此

x = cos(image_angle) / radius
y = sin(image_angle) / radius

因此,只需更改图像的 CSS 坐标即可为图像设置动画。所以对于一张图片,它应该是这样的:

var img = document.getElementById('image1');
var radius = 200; // in pixels
var imgAngle = 0;

function animateImg () {
    img.style.left = cos(imgAngle)/radius;
    img.style.top = sin(imgAngle)/radius;

    imgAngle = imgAngle + 0.1;

    setTimeout(animateImg,50);
}

animateImg();

对于五张图片,只需将每张图片偏移 2*PI/5:

function animageImages () {
    // Assuming image elements are stored in an array, I'm
    // using the array length to infer the number of images:

    var offsetAngle = 2 * Math.PI / images.length;

    for (var i=0; i<images.length; i++) {
        var img = images[i];
        img.style.left = cos(imgAngle+offsetAngle*i)/radius;
        img.style.top = sin(imgAngle+offsetAngle*i)/radius;
    }

    imgAngle = imgAngle + 0.1;

    setTimeout(animateImages,50);
}

当然,上面的示例都围绕页面左上角(坐标 0,0)进行动画处理。您需要围绕视频的坐标进行重新计算。此外,如果您不熟悉 CSS,则需要将图像的样式设置为 display:blockposition:absolute(或 relative)才能正常工作.

关于javascript - 如何在不旋转图像的情况下以圆周运动移动图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15247917/

上一篇:css - 第一行注释 css 类型声明是否仍然必要?

下一篇:css - 旧 IE 回退 : modernizr, 星黑客或其他方式的最便宜的方法?

相关文章:

jquery - 如何定位多级无序列表中的顶级链接?

JavaScript - 模拟点击上下文菜单

javascript - 构建 Angular 叉失败

javascript - 如何调试非常慢的网站模板(客户端)?

javascript - Bxslider 从寻呼机中删除点并将它们替换为数字,例如 4 中的 1 和 next-prev 链接

html - 如何将父项下的下拉菜单居中?

javascript - 在开发工具 'Sources' 面板中以编程方式打开 JS/CSS 文件

javascript - 为什么 PHP 在浮点运算方面比 Javascript 更好?

javascript - 位置固定在 bootstrap 'affix' 不工作

html - CSS - 中间有文本的分隔符