11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Je souhaiterais faire un bouton on/off sur mon site (dans le meme style que ce site la : http://www.powergloveaudio.com/)
J'ai monté mon site sur wordpress, j'ai integré ma video avec un plugin Jquery (je ne sais d'ailleur pas comment j'ai fait xD) du coup le son se coupe quqnd je clique sur l'image. Mais j'aurais besoin de vous pour faire changer l'image.

Je ne sais pas si cela sera assez clair mais est-ce quelqu'un peut me guider
Merci beaucoup Smiley ravi

Voici mon code Jquery pour lancer la video.
(function ($, window) {

    // test for feature support and return if failure
    
    // defaults
    var defaults = {
        ratio: 16/9, // usually either 4/3 or 16/9 -- tweak as needed
        videoId: 'RxJG5rmQusQ', // toy robot in space is a good default, no?
        repeat: true,
        width: $(window).width(),
        wrapperZIndex: 99,
        playButtonClass: 'tubular-play',
        pauseButtonClass: 'tubular-pause',
        muteButtonClass: 'tubular-mute',
        volumeUpClass: 'tubular-volume-up',
        volumeDownClass: 'tubular-volume-down',
        increaseVolumeBy: 10,
        start: 0
    };

    // methods

    var tubular = function(node, options) { // should be called on the wrapper div
        var options = $.extend({}, defaults, options),
            $body = $('body') // cache body node
            $node = $(node); // cache wrapper node

        // build container
        var tubularContainer = '<div id="tubular-container" style="overflow: hidden; position: fixed; z-index: 1; width: 100%; height: 100%"><div id="tubular-player" style="position: absolute"></div></div><div id="tubular-shield" style="width: 100%; height: 100%; z-index: 2; position: absolute; left: 0; top: 0;"></div>';

        // set up css prereq's, inject tubular container and set up wrapper defaults
        $('html,body').css({'width': '100%', 'height': '100%'});
        $body.prepend(tubularContainer);
        $node.css({position: 'relative', 'z-index': options.wrapperZIndex});

        // set up iframe player, use global scope so YT api can talk
        window.player;
        window.onYouTubeIframeAPIReady = function() {
            player = new YT.Player('tubular-player', {
                width: options.width,
                height: Math.ceil(options.width / options.ratio),
                videoId: options.videoId,
                playerVars: {
                    controls: 0,
                    showinfo: 0,
                    modestbranding: 1,
                    wmode: 'transparent'
                },
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        }

        window.onPlayerReady = function(e) {
            resize();
            if (options.mute) e.target.mute();
            e.target.seekTo(options.start);
            e.target.playVideo();
        }

        window.onPlayerStateChange = function(state) {
            if (state.data === 0 && options.repeat) { // video ended and repeat option is set true
                player.seekTo(options.start); // restart
            }
        }

        // resize handler updates width, height and offset of player after resize/init
        var resize = function() {
            var width = $(window).width(),
                pWidth, // player width, to be defined
                height = $(window).height(),
                pHeight, // player height, tbd
                $tubularPlayer = $('#tubular-player');

            // when screen aspect ratio differs from video, video must center and underlay one dimension

            if (width / options.ratio < height) { // if new video height < window height (gap underneath)
                pWidth = Math.ceil(height * options.ratio); // get new player width
                $tubularPlayer.width(pWidth).height(height).css({left: (width - pWidth) / 2, top: 0}); // player width is greater, offset left; reset top
            } else { // new video width < window width (gap to right)
                pHeight = Math.ceil(width / options.ratio); // get new player height
                $tubularPlayer.width(width).height(pHeight).css({left: 0, top: (height - pHeight) / 2}); // player height is greater, offset top; reset left
            }

        }

        // events
        $(window).on('resize.tubular', function() {
            resize();
        })

        $('body').on('click','.' + options.playButtonClass, function(e) { // play button
            e.preventDefault();
            player.playVideo();
        }).on('click', '.' + options.pauseButtonClass, function(e) { // pause button
            e.preventDefault();
            player.pauseVideo();
        }).on('click', '.' + options.muteButtonClass, function(e) { // mute button
            e.preventDefault();
            (player.isMuted()) ? player.unMute() : player.mute();
        }).on('click', '.' + options.volumeDownClass, function(e) { // volume down button
            e.preventDefault();
            var currentVolume = player.getVolume();
            if (currentVolume < options.increaseVolumeBy) currentVolume = options.increaseVolumeBy;
            player.setVolume(currentVolume - options.increaseVolumeBy);
        }).on('click', '.' + options.volumeUpClass, function(e) { // volume up button
            e.preventDefault();
            if (player.isMuted()) player.unMute(); // if mute is on, unmute
            var currentVolume = player.getVolume();
            if (currentVolume > 100 - options.increaseVolumeBy) currentVolume = 100 - options.increaseVolumeBy;
            player.setVolume(currentVolume + options.increaseVolumeBy);
        })
    }

    // load yt iframe js api

    var tag = document.createElement('script');
    tag.src = "//www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    // create plugin

    $.fn.tubular = function (options) {
        return this.each(function () {
            if (!$.data(this, 'tubular_instantiated')) { // let's only run one
                $.data(this, 'tubular_instantiated', 
                tubular(this, options));
            }
        });
    }

})(jQuery, window);


Voici mon code Jquery qui appelle ma fontion


$('document').ready(function() {
	var options = { videoId: 'RxJG5rmQusQ', start: 3 };
	$('#wrapper').tubular(options);
});


et voici le code que j'ai rajouté pour changer l'image et qui ne marche pas.

$('document').ready(function() {
  
      $('.js-mute-audio').click(function() {
		$(this).toggleClass("is-mute");
	}
  });


Voici le code html que j'ai integré dans un widget

<em class="mute-audio tubular-mute js-mute-audio is-mute" title="Mute audio">mute audio</em>


Et enfin le css

.mute-audio {
    background: rgba(0, 0, 0, 0) url(".../images/audio-icon-2x.png") no-repeat scroll center center / 20px 20px;
    cursor: pointer;
    height: 20px;
    opacity: 0.6;
    position: absolute;
    text-indent: -9999px;
    transition: opacity 0.25s ease-in-out 0s;
    width: 20px;
    z-index: 1000;
margin-left: 6px;
 margin-right: 6px;
}

.mute-audio:hover {
    opacity: 1;
}

.mute-audio .is-mute {
background: rgba(0, 0, 0, 0) url(".../images/audio-icon-mute-2x.png") no-repeat scroll center center / 20px 20px;}

Modifié par ginie0612 (27 Jul 2017 - 07:49)
Bonjour,

Ne serait-ce pas plutôt
.mute-audio.is-mute {
  background: rgba(0, 0, 0, 0) url(".../images/audio-icon-mute-2x.png") no-repeat scroll center center / 20px 20px;
}

que tu voulais écrire !?
Bonjour, j'ai pas bien compris, il te faut un boutton on/off pour le son?pour remplacer le click sur l'image
Modifié par lynxbe (28 Jul 2017 - 08:38)
lynxbe a écrit :
Bonjour, j'ai pas bien compris, il te faut un boutton on/off pour le son?pour remplacer le click sur l'image


oui c'est exactement ca desolé si c'est pas super claire. Je me pers moi meme. La pour le moment je clique sur l'image le son s'arrete mais l'image ne change pas. Et j'aimerai l'image play et pause.
Mais mon JS ne fonctionne pas