2010-10-05 2 views
1

Y at-il un moyen de connaître la largeur et la hauteur de l'image de suivi avec Jquery?taille de l'image avec jquery sans balise prédéfinie, puis passez à CSS

<div id="imgBox"><img id="imgID" src="images/koala.gif" /></div> 

Puis le passer en CSS?

<style type="text/css"> 
    #imgBox, #imgBox img { width:imageWidth; height:imageHeight } 
</style> 

Je devine ...

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var imageWidth = $("#imgBox").width(); 
     var imgHeight = $("#imgID").height();   
    }); 
</script> 

Répondre

2

Pourquoi ne pas définir le CSS dynamiquement?

$(document).ready(function(){ 
    // make sure img is loaded: 
    $("#imgID").load(function() { 
     var $this = $(this); 

     // Set dimensions of box using dimensions of img 
     $("#imgBox").css("width", $this.width());  
     $("#imgBox").css("height", $this.height()); 
    });  
}); 

Vous pouvez bien sûr ajouter aux valeurs de $this.width() et $this.height() lorsque vous définissez la css pour #imgBox si vous avez besoin pour des raisons esthétiques ... disons que si vous avez une image d'arrière-plan #imgBox vous voulez montrer la bords de.

+0

Vous êtes géniaux! J'ai appris un nouvel outil aujourd'hui. CSS à Jquery va être PB & J pour moi. Merci mecs. – slowman21

+0

@ slowman21 - De rien;) –

0

Vous pouvez faire

$(function() { 
    var imgSrc = $('#imgId').attr('src');   
    var image = new Image(); 
    var width, height;  
    image.onload = function() { 
     width = image.width; 
     height = image.height; 
    }; 
    image.src = imgSrc;   

}); 

Vous pouvez alors écrire le CSS avec JavaScript.

$('<style />', { 
    html: '#imgBox, #imgBox img { width:' + width + 'px; height:' + height + 'px }', 
    type: 'text/css' 
}).appendTo('head'); 

Mais, pourquoi avez-vous besoin de faire cela?

+0

Je pense que vous oubliez que les images peuvent ne pas être mises en cache;) –

+0

@Nick Je ne suis pas au courant que c'est un problème! Voulez-vous dire que ce code échouera si l'utilisateur a désactivé son cache? – alex

+0

Les images prennent du temps à charger, dans votre code ci-dessus, sauf si elle est déjà en cache, les valeurs seront 0 :) –

0

vous pouvez le faire, mais pouvez-vous dire pourquoi vous voulez remplacer css.

 var $imgId = $('#imgId'); 
     var h = $imgId.height(); 
     var w = $imgId.width(); 

faire vos maths ici

$imgId.css('height', yourcalculatedheight); 
$imgId.css('width', yourcalculatedweight); 

vous pouvez analyser le dom et changer dynimically au lieu d'aller et changer le css qui pourrait être une bonne approche

+0

laissez-moi savoir ce que vous voulez faire pour cette image, je peux poster le code. – kobe

+0

4 espaces avant la mise en forme d'une ligne en tant que code. 'ctr-k' fait cela sur une sélection. –

Questions connexes