【问题标题】:jQuery resize video, reset the sizejQuery调整视频大小,重置大小
【发布时间】:2014-05-13 15:47:54
【问题描述】:

我有 3 个视频。我想做的是: 点击 video1 > video2 and video3 变小 50% > 点击 video2 > video1 and video3 重置为原始大小 > video1 and video3 变小 50%。

目前我在这一点上: 单击 video1 后,我重新调整了 2 个视频的大小。 在我点击相同的视频后,video2 和 video3 重新调整为原始大小。 但是如果我点击 video2(当它小 50% 时),那么 video1 会比原来的小(50%),video3 会恢复到原来的大小。

Fiddle DEMO(由于某种原因,它不能在我的电脑上运行)。

HTML 代码:

<div>
    <video id="video1" class="normal" height="200" width="300">
    <source src="http://www.craftymind.com/factory/html5video/BigBuckBunny_640x360.mp4" type="video/mp4"></source>  
     HTML5 Video is required for this example. 
    </video>
</div>

<div>
    <video id="video2" class="normal" height="200" width="300">
    <source src="http://www.craftymind.com/factory/html5video/BigBuckBunny_640x360.mp4" type="video/mp4"></source>  
     HTML5 Video is required for this example. 
    </video>
</div>


<div>
    <video id="Video3" class="small" height="200" width="300">
    <source src="http://www.craftymind.com/factory/html5video/BigBuckBunny_640x360.mp4" type="video/mp4"></source>  
     HTML5 Video is required for this example. 
    </video>
</div>

CSS 代码:

.normal {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
        transform: scale(1, 1);
}

.big {
   -webkit-transform: scale(2, 2);
   -moz-transform: scale(2, 2);
    -ms-transform: scale(2, 2);
        transform: scale(2, 2);

}

.small {
    -webkit-transform: scale(0.5, 0.5);
    -moz-transform: scale(0.5, 0.5);
    -ms-transform: scale(0.5, 0.5);
    transform: scale(0.5, 0.5);
}

#video1{
-webkit-transition: -webkit-transform 0.3s ease-in;
   -moz-transition: -moz-transform 0.3s ease-in;
    -ms-transition: -ms-transform 0.3s ease-in;
        transition: transform 0.3s ease-in;
}
#video2{
-webkit-transition: -webkit-transform 0.3s ease-in;
   -moz-transition: -moz-transform 0.3s ease-in;
    -ms-transition: -ms-transform 0.3s ease-in;
        transition: transform 0.3s ease-in;
}
#video3{
    -webkit-transition: -webkit-transform 0.3s ease-in;
    -moz-transition: -moz-transform 0.3s ease-in;
    -ms-transition: -ms-transform 0.3s ease-in;
    transition: transform 0.3s ease-in;
}

JavaScript 代码:

$("#video1").on('click', function() {
    $(this).toggleClass('big');
    $("#video2").toggleClass('small');
    $("#video3").toggleClass('small');
});

$("#video2").on('click', function() {
    $(this).toggleClass('big');
    $("#video1").toggleClass('small');
    $("#video3").toggleClass('small');
});

$("#video3").on('click', function() {
    $(this).toggleClass('big');
    $("#video1").toggleClass('small');
    $("#video2").toggleClass('small');

});

如何在调整视频大小之前重置视频大小?

提前致谢!!

【问题讨论】:

  • 在切换小类之前,您需要检查元素是否已经拥有它。如果是这样,您的函数不应再次应用该类。
  • 你能帮我看看如何检查元素是否已经有类吗? @Paulie_D?我对 JavaScript 很陌生..

标签: javascript css video resize reset


【解决方案1】:

切换类是一个不错的功能,但我认为这不是您在这里使用的最佳选择。 认为您可以使用单个函数并将其全部调用,接近

function videoClicked(e)
{
    //get a referance to the video clicked
    var sender = e.target;

    //get all the videos 
    var $videos = $('.videos');
    //if the sender had class big it was already clicked and we need to reset all to normal
    if($(sender).hasClass('big'))
    {
        //remove all big classes
        $videos.removeClass('big');
        //and small class
        $videos.removeClass('small');
        //then add normal class
        $videos.addClass('normal');
        //we are done, lets go home
        return;
    }

    //remove big from all videos
    $videos.removeClass('big');
    //add small to videos that were not the sender (aka clicked video)
    $videos.not(sender).addClass('small');
    //add big to the sender
    $(sender).addClass('big');
}

我会向所有人添加一个 .video 类,然后添加

//this is jquery short hand for an on load function
$(function()
{
    //add event for all videos 
    $('.video').click(videoClicked);
});

【讨论】:

  • 不幸的是,这对我不起作用。我想我遗漏了一些东西,或者我做错了,因为我对 JavaScript 很陌生。
  • @StartedFromTheBottom,能不能加个jsbin给我看看。您是否将“视频”课程添加到所有三个?是否有任何js错误被抛出?
  • 最后,我让它工作了。我的错 - 不了解课程。但我还有一个问题。我希望如果我再次点击同一个视频(已经很大),所有 3 个视频都会恢复到原来的状态。我试过玩你给定的代码,但没有运气。任何帮助将不胜感激!
  • @StartedFromTheBottom 我刚刚所做的编辑应该为您完成,没有运行它,所以可能不是 100%,但应该足够接近,您可以使用它。
  • 完美!非常感谢你。我真诚的尊重,@workabyte!
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多