2010-02-19 3 views
3

Je cherche un plugin jquery pour faire effet zoom zoom texte/page (comme FF 3 ctrl ++/ctrl--), qui peut ...Plugin jQuery pour simuler le zoom de la page du navigateur/le zoom du texte?

  1. redimensionner le texte avec réglage de la taille de police différente (c. zoom/zoom par texte)

  2. de travail avec HTML complexe + structure CSS

Toute recommandation ici?

+3

peut être "simuler" pas "stimuler" :) –

+1

zooMooz le fait très bien, mais est seulement compatible avec les navigateurs modernes. Voir ceci [page] (http://janne.aukia.com/zoomooz/). –

Répondre

3

Si vous recherchez un zoom de texte, la manière la plus simple de le faire serait de spécifier la taille de la police de base sur votre body dans une unité absolue, par ex. body { font-size: 13pt; } et ensuite tout le reste utilise des unités relatives, par ex. .postTitle { font-size: 120%; }.

Ensuite, si vous avez des liens +/- zoom ou autres joyeusetés:

 
$('#enlargeText').click(function() { 
    $(document.body).css('font-size', $(document.body).css('font-size') * 1.5); 
} 

Cela augmentera toutes les tailles de police qui sont par rapport à body.

Cependant, si vous souhaitez simuler la page zoom (par opposition au texte zoom), vous devez également soit spécifier les dimensions de l'image en unités relatives, ou en boucle par toutes les images et les redimensionner en conséquence:

 
$('#enlargeText').click(function() { 
    $('img').each(function() { 
     this.width *= 1.5; 
    }) 
} 

Mais alors vous êtes toujours bloqué avec les images d'arrière-plan CSS, qui n'ont pas été redimensionnées. AFAIK, c'est seulement possible en utilisant CSS 3 qui n'est pas largement supporté, ou en ayant redimensionné des versions de toutes ces images sur le serveur. Vous pouvez alors simplement activer une nouvelle feuille de style qui fait référence à ces images plus grandes/plus petites.

+0

C'est ma dernière solution ... (trop de lignes et héritage complexe) En fait, je travaille pour un plugin jquery comme solution, mais il ne peut pas une bonne solution car il utilise le * sélecteur ... vous pouvez prendre un coup d'oeil ici: http://jsbin.com/egutu3/ mais je pense que votre post rappellera à tous les auteurs de css d'accorder une attention particulière quand ils veulent que leur texte soit redimensionnable. Je vous remercie! –

+0

Votre syntaxe est erronée, il devrait être: .each $ ('img', function() { this.largeur * = 1,5; } – Rick

+0

@Rick:. Il y a deux 'each' fonctions jQuery L'un J'ai utilisé appelle la fonction spécifiée pour chaque élément de l'ensemble jQuery, c'est-à-dire pour chaque 'img', le second auquel vous semblez faire référence, appelle une fonction pour chaque élément d'un tableau ou d'une propriété d'un objet. Cependant, '' img'' est une chaîne fixe, pas une collection d'images. S'il vous plaît expliquer votre downvote et comment mon exemple fait la mauvaise chose, et comment le vôtre ne l'est pas. (Notez que j'avais une fermeture manquante ")", qui a maintenant été ajoutée.) – janmoesen

3

Vous pourriez le faire comme ceci. Il a besoin de brancher à un cookie pour les pages suivantes si

var currZoom = $("body").css("zoom"); 
if(currZoom == 'normal') currZoom=1; // For IE 

$(".zoomIn").click(function(){ 
    currZoom*=1.2; 
    $("body").css("zoom",currZoom); 
}); 
$(".zoomOff").click(function(){ 
    jQuery("body").css("zoom",1); 
}); 
$(".zoomOut").click(function(){ 
    currZoom*=.8; 
    $("body").css("zoom",currZoom); 
}); 

HTML

<span class="zoomIn" style="font-size:120%">A</span> 
<span class="zoomOff">A</span> 
<span class="zoomOut" style="font-size:80%">A</span> 
+0

Légende. Tu es un sauveur. – Scully

8

Set contentWidth à votre largeur visible minimum requis.

jQuery(document).ready(function(){ 
    jQuery(window).bind('resize load', function(){ 
     contentWidth = 1010; 
     jQuery('body').css('zoom', jQuery(window).width()/contentWidth); 
    }); 
}); 

Testé avec Chrome.