J'ai une situation où je pense que l'utilisation de la métrique 'em' serait parfaite. J'ai un contenant avec plusieurs éléments à l'intérieur. Ces éléments utilisent tous em pour les dimensions, la taille des polices, les bordures .. tout. Je veux être en mesure de faire croître ou de réduire dynamiquement tous ces éléments en changeant simplement la valeur em du conteneur parent.Redimensionner tous les éléments contenant avec javascript en utilisant
Au moins c'est ma théorie. J'ai essayé d'implémenter quelque chose comme ça en utilisant jquery mais il semble que tout est converti en px et le changement de em n'a aucun effet sur les éléments enfants.
Voici un exemple:
<div id="parent">
<div class="child">Text</div>
<div class="child">Text</div>
<div class="child">Text</div>
</div>
<style>
#parent { font-size: 1em; }
.child { width: 10em; height: 10em; font-size: 5em; }
</style>
Avec javascript (jquery pour cet exemple), je voudrais pouvoir faire quelque chose comme ceci:
$('#parent').css('font-size', '2em') // This would make everything grow
$('#parent').css('font-size', '.5em') // This would make everything shrink
Cette ligne ne produit pas Erreur. Cependant, après avoir inspecté plus loin, il semble que tout a été converti en px. Ainsi, les valeurs parentales perdent leur pouvoir. Voici ce que je veux dire:
Une fois la page rend, je lance ces commandes via la console Firebug
$('#parent').css('font-size'); // Returns 100px (for example's sake)
$('.child:first').css('font-size'); // Returns 50px
$('#parent').css('font-size', '2em'); // This should affect all children
$('#parent').css('font-size'); // Returns 20px
$('.child:first').css('font-size'); // STILL Returns 50px
Comme vous pouvez le voir, tous les enfants restent à 50px.
Est-ce que je vais dans ce sens? Qu'est-ce que je rate? Est-ce vraiment beaucoup plus difficile que je le pense? Dans un sens, j'essaie de reproduire l'effet qu'a le zoom-navigateur.
Merci pour toute aide.
Mais un effet domino n'est-il pas possible? Je devrais utiliser cette technique pour tous les enfants avec toutes les règles de style dont j'ai besoin (largeur, hauteur, taille de police, bordure, etc.). Je suppose que dom traversal avec récursion est possible mais j'espérais éviter quelque chose comme ça. –
Cela affecte les enfants dans mes tests (ems et%).Peut-être que cela a quelque chose à voir avec l'exécution de la jquery dans la console firebug. Je vais coller le code que j'ai utilisé ci-dessus. – Emily
Eh bien, je me sens stupide ... Lorsque j'ai écrit mon code dans la page elle-même au lieu de la console firebug, il a fonctionné exactement comme je l'espérais. Merci pour votre aide Emily et jitter. –