在 MouseOver 中旋转缩略图并在 Mouseleave 中停止旋转

Posted

技术标签:

【中文标题】在 MouseOver 中旋转缩略图并在 Mouseleave 中停止旋转【英文标题】:Rotate Thumbnails in MouseOver and Stop Rotate in Mouseleave 【发布时间】:2017-07-24 04:53:46 【问题描述】:

当要旋转的缩略图数量为 16 并且位置都相同时,我的代码可以完美运行(仅由于缩略图编号而更改文件名)。示例:http://www.urltoimage1.jpg....http://www.urltoimage16.jpg

这是html

<img   src="http: //www.urltoimage8.jpg" class="someclass" id="latest-499" onmouseover="thumbStart('latest-499', 16, 'http: //www.urltoimage');" onmouseout="thumbStop('latest-499','http: //www.urltoimage8.jpg');">

这里是javascript

// JavaScript Document

    //rotating thumb functions
    var rotateThumbs = new Array();

    function changeThumb( index, i, num_thumbs, path)
    
        if (rotateThumbs[index])
        
            if(i<=num_thumbs)          
                document.getElementById(index).src = path + i + ".jpg";
                i++;
                setTimeout("changeThumb('"+ index +"'," + i + ", " + num_thumbs + ", '" + path + "')", 600);
            else
                changeThumb( index, 1, num_thumbs, path);
            
        
    

    function thumbStart(index, num_thumbs, path)
        
        rotateThumbs[index] = true;
        changeThumb( index, 1, num_thumbs, path);

    

    function thumbStop(index, srco)
    
        rotateThumbs[index] = false;    
        document.getElementById(index).src = srco;
    

现在,问题在于某些文章的缩略图不在同一位置。示例:http://www.urltoimage1.jpg....http://www.urltoimageksks16.jpg

我认为,在存在这种差异的情况下,最好将缩略图的所有url复制到图像的类中,以这种方式留下html:

<img   src="http: //www.urltoimage8.jpg" class="http: //www.urltoimage1.jpg,http: //www.urltoimage2.jpg,...,http: //www.urltoimageksks16.jpg" id="latest-499" onmouseover="thumbStart" onmouseout="thumbStop('latest-499','http: //www.urltoimage8.jpg');">

现在我已经有了img标签类中的所有url,如何实现缩略图旋转?

谢谢

【问题讨论】:

【参考方案1】:

不要将 url 存储在类属性中,而是使用 Data Attributes。 (或Data Attributes from jQuery)

类似

<img .. data-thumbnail-url="http: //www.urltoimageksks16.jpg" .. />

如果你使用 jQuery(你已经将它添加到你的标签中),你可以直接使用

var thumbnailSrc = jQuery('img').data('thumbnail');

如果你不使用它(因为我在你的代码中根本没有看到任何 jQuery)你必须使用它来代替

var thumbnailSrc = document.getElementById(index).dataset.thumbnail

使用它,您可以替换您的 src 属性。您可能希望将原始 src 存储在数据属性中。

关于旋转本身(不清楚它是否是您的问题的一部分,或者您是否想知道是否可以将 url 存储在类属性中),使用 jquery 有答案,例如jQuery animate image rotation You只需要调整悬停时执行的功能。你也可以使用纯 css Spin or rotate an image on hover

顺便说一句,使用这个

 var rotateThumbs = [];

而不是

 var rotateThumbs = new Array();

见In JavaScript, why is [ ] preferred over new Array();?

【讨论】:

以上是关于在 MouseOver 中旋转缩略图并在 Mouseleave 中停止旋转的主要内容,如果未能解决你的问题,请参考以下文章

使用 ec2 创建存储在 s3 上的图像缩略图并在完成时与 rails 通信的优雅方式?

PIL:缩略图并以方形图像结尾

.NET生成缩略图并下载

Android - 从服务器检索视频的缩略图并显示在手机上

使用 attachment_fu,您如何编辑现有照片、仅更新缩略图并保留原始未编辑?

Yii2 - Imagine - 创建缩略图并保持透明背景