Maison interface Web js tutoriel Comment faire en sorte que votre Lightbox prenne en charge le zoom de la roue et les images Base64_jquery

Comment faire en sorte que votre Lightbox prenne en charge le zoom de la roue et les images Base64_jquery

May 16, 2016 pm 04:29 PM
lightbox

Lors de la création de pages Web de type article, vous rencontrez souvent le besoin d'ouvrir les points clés pour avoir une vue d'ensemble. LightBox2 est un excellent plug-in Jquery parmi de nombreux produits. Je n'entrerai pas dans les détails de la configuration. Ce que je souhaite principalement partager aujourd'hui, c'est : comment zoomer et dézoomer sur l'image grâce à la molette de la souris après avoir cliqué sur la grande image,

1. Modifiez le code source de Lightbox pour prendre en charge le zoom sur la roue

Le principal moyen de prendre en charge la molette de la souris est de lier l'intégralité de la boîte contextuelle à l'événement mousewheel. Ouvrez lightbox.js et recherchez la section Lightbox.prototype.build = function() {...}, qui peut. être trouvé ici (temps d'initialisation de la lightbox) Liez l'événement de molette de défilement souhaité, par exemple, ajoutez le code suivant à la fin de la fonction :

Copier le code Le code est le suivant :

// Zoom avec la molette de défilement de l'image
This.img = this.$container.find('.lb-image');
This.label = this.$lightbox.find('.lb-dataContainer');
         $([this.$overlay[0],this.$lightbox[0]]).bind("mousewheel", function(e){
         var flag= e.originalEvent.wheelDelta < 0;           var imgH = self.img.height();
          var imgW = self.img.width();
          var nw = Math.round(20*imgW/imgH);
          var ctH = self.$outerContainer.height();
          var ctW = self.$outerContainer.width();
          var layH = self.$overlay.height()-20;
          var layW = self.$overlay.width()-20;
                                   // Bas
Si(drapeau && imgH>20 && imgW>20) {
                   self.img.css('hauteur', imgH - 20);
                    self.img.css('width', imgW - nw);
                    self.$outerContainer.css('height', ctH - 20);
                    self.$outerContainer.css('width', ctW - nw);
Si (ctW-nw > 240){
                               self.label.css('width', ctW - nw);
                }
                   } else if(!flag && imgH                     self.img.css('height', imgH 20);
                    self.img.css('width', imgW nw);
                    self.$outerContainer.css('height', ctH 20);
                    self.$outerContainer.css('width', ctW nw);
                   self.label.css('width', ctW nw);
                                                                                                                                    e.stopPropagation();
            return false ;
});

Le code est plus facile à comprendre. Il consiste à ajouter une surveillance de la molette de la souris à la fois à l'arrière-plan et à l'image de devant, puis à redimensionner la hauteur et la largeur proportionnellement (faites défiler vers le haut pour zoomer, faites défiler vers le bas pour effectuer un zoom arrière). chaque hauteur passe à 20 pixels, puis la largeur change proportionnellement. Ce qui nécessite une attention particulière, c'est la taille minimale réduite de l'image, et l'agrandissement de l'image ne peut pas dépasser la limite de la plage de l'écran. Dans le même temps, pour une meilleure expérience, assurez-vous d'ajouter e.stopPropagation() et de renvoyer false pour empêcher le navigateur de défiler.

2. Modifiez le code source de Lightbox pour prendre en charge les images Base64

Il peut être difficile d'en parler ici. Jetons d'abord un coup d'œil aux exigences en matière de format de code HTML lors de l'utilisation de Lightbox native :

Copier le code Le code est le suivant :

Il s'agit de l'image pop-up la plus simple. Lorsque vous cliquez sur l'image n°1, une lightbox apparaîtra pour afficher le contenu de img/image.jpg (un élément Considérons maintenant cette situation. Si l'image est encodée en Base64 sur le serveur, est-elle stockée dans la base de données ? Ça devrait être ça :

Copier le code Le code est le suivant :

Image #1

Voici le problème, la longueur du href est limitée sous IE Il est impossible de mettre une grande image dans le champ href, et l'image sera castré (seule la partie supérieure sera affichée).
Il existe une autre situation courante. Si j'affiche d'abord la petite image et que je clique sur la petite image pour voir la grande image, cela devrait ressembler à ceci :

Copier le code Le code est le suivant :

D'accord, il y a deux données base64 en double, et elles sont toutes deux transmises depuis le serveur, ce qui prend du temps et de la bande passante.
Je l'ai donc modifié selon mes besoins. Le code est très simple Modifier la sous-fonction addToAlbum:

dans Lightbox.prototype.start = function($link) {...}

Copier le code Le code est le suivant :

Fonction addToAlbum ($ lien) {
          self.album.push({
// lien : $link.attr('href'),
            lien : $link.children().attr("src"),
Titre : $link.attr('data-title') || $link.attr('title')
        });
>

La partie commentée est l'originale, $link est la balise a dans le code HTML précédent, la fonction de la fonction addToAlbum après le changement est : lors de la définition du src de l'image pop-up, les caractères ne sont plus pris à partir du href d'origine en tant que src contextuel de la balise img, mais recherchez directement l'attribut src à partir du sous-élément de la balise a. Étant donné que la longueur de l'attribut src est illimitée, cela ne posera pas de problème de troncature d'image. .

3. Appliquer Lightbox aux articles existants

La section 2 a déjà mentionné que le HTML a un certain format lors de l'utilisation de Lightbox. Si les images dans les articles existants ressemblent à , elles doivent être modifiées.

Copier le code Le code est le suivant :

fonction initLightbox(){
var imgs = $(".lightbox-container").find('img');
$.each(imgs,function(i) {
        var img = $(imgs[i]);
img.wrap(""); });
>

Parmi eux, "lightbox-container" est la classe du conteneur où se trouve l'article. La fonction initLightbox doit être placée lorsque la page est prête à être chargée. Elle encapsulera toutes les balises img de l'article au format lightbox.

C'est tout pour cet article. Pour les points 2 et 3, vous pouvez les utiliser selon vos propres scénarios d'utilisation. L'objectif des modifications de la lightbox est de prendre en charge le zoom avec la molette de défilement.

Ci-joint la lightbox modifiée http://xiazai.jb51.net/201412/yuanma/lightbox(jb51.net).rar

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Remplacer les caractères de chaîne en javascript Remplacer les caractères de chaîne en javascript Mar 11, 2025 am 12:07 AM

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

8 Superbes plugins de mise en page JQuery Page 8 Superbes plugins de mise en page JQuery Page Mar 06, 2025 am 12:48 AM

Tirez parti de jQuery pour les dispositions de page Web sans effort: 8 plugins essentiels JQuery simplifie considérablement la mise en page de la page Web. Cet article met en évidence huit puissants plugins jQuery qui rationalisent le processus, particulièrement utile pour la création de sites Web manuels

Créez vos propres applications Web Ajax Créez vos propres applications Web Ajax Mar 09, 2025 am 12:11 AM

Vous voici donc, prêt à tout savoir sur cette chose appelée Ajax. Mais qu'est-ce que c'est exactement? Le terme Ajax fait référence à un regroupement lâche de technologies utilisées pour créer un contenu Web interactif dynamique. Le terme Ajax, inventé à l'origine par Jesse J

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Chargez le contenu de la boîte dynamiquement à l'aide de AJAX Chargez le contenu de la boîte dynamiquement à l'aide de AJAX Mar 06, 2025 am 01:07 AM

Ce didacticiel montre la création de boîtes de page dynamiques chargées via AJAX, permettant un actualisation instantanée sans rechargement de page pleine. Il exploite JQuery et JavaScript. Considérez-le comme un chargeur de boîtes de contenu de style Facebook personnalisé. Concepts clés: Ajax et jQuery

10 JQUERY FUN ET PLIGINS DE GAMES 10 JQUERY FUN ET PLIGINS DE GAMES Mar 08, 2025 am 12:42 AM

10 plugins de jeu JQuery amusants pour rendre votre site Web plus attrayant et améliorer l'adhérence des utilisateurs! Bien que Flash soit toujours le meilleur logiciel pour développer des jeux Web occasionnels, JQuery peut également créer des effets surprenants, et bien qu'il ne soit pas comparable aux jeux Flash Pure Action, dans certains cas, vous pouvez également vous amuser inattendu dans votre navigateur. jeu jquery tic toe Le "Hello World" de la programmation de jeux a désormais une version jQuery. Code source JQUERY Crazy Word Composition Game Il s'agit d'un jeu de remplissage, et il peut produire des résultats étranges en raison de ne pas connaître le contexte du mot. Code source Jeu de balayage de la mine jQuery

Comment rédiger une bibliothèque de session sans cookie pour JavaScript Comment rédiger une bibliothèque de session sans cookie pour JavaScript Mar 06, 2025 am 01:18 AM

Cette bibliothèque JavaScript exploite la propriété Window.Name pour gérer les données de session sans compter sur les cookies. Il offre une solution robuste pour stocker et récupérer des variables de session à travers les navigateurs. La bibliothèque fournit trois méthodes de base: Session

Tutoriel JQuery Parallax - Contexte d'en-tête animé Tutoriel JQuery Parallax - Contexte d'en-tête animé Mar 08, 2025 am 12:39 AM

Ce tutoriel montre comment créer un effet de fond de parallaxe captivant à l'aide de jQuery. Nous allons construire une bannière d'en-tête avec des images en couches qui créent une profondeur visuelle étonnante. Le plugin mis à jour fonctionne avec jQuery 1.6.4 et plus tard. Télécharger le

See all articles