Maison > Article > interface Web > Comment puis-je rendre mes visualisations D3.js réactives ?
Avez-vous une visualisation D3.js bloquée avec des dimensions fixes ? Voyons comment le rendre dynamique et réactif.
Considérez ce script d'histogramme qui crée un graphique SVG statique de 960 px x 500 px. Pour le rendre réactif, nous devons introduire des ajustements dynamiques de sa largeur et de sa hauteur.
Une approche courante consiste à redessiner le graphique lors du redimensionnement de la fenêtre. Nous pouvons utiliser l'écouteur d'événements de redimensionnement intégré au navigateur pour capturer les modifications dans la fenêtre d'affichage.
<code class="javascript">d3.select(window).on("resize", function() { // Update the width and height based on the current viewport width = window.innerWidth; height = window.innerHeight; // Redraw the visualization with the new dimensions });</code>
Cependant, il existe une solution alternative qui élimine le besoin de redessiner : manipuler les attributs viewBox et préserverAspectRatio de l'élément SVG. .
<code class="html"><svg id="chart" viewBox="0 0 960 500" preserveAspectRatio="xMidYMid meet"></svg></code>
Cette méthode permet au contenu SVG de s'adapter automatiquement à l'espace disponible, et la plupart des navigateurs modernes peuvent déduire le rapport hauteur/largeur à partir de la viewBox. Si nécessaire, vous pouvez ajouter du code pour mettre à jour la largeur et la hauteur du SVG en fonction de la taille de la fenêtre dans les anciens navigateurs.
<code class="javascript">var aspect = width / height, chart = d3.select('#chart'); d3.select(window) .on("resize", function() { var targetWidth = chart.node().getBoundingClientRect().width; chart.attr("width", targetWidth); chart.attr("height", targetWidth / aspect); });</code>
Avec ces modifications, votre visualisation D3.js s'adaptera désormais de manière transparente aux changements dans le navigateur. dimensions, garantissant une expérience utilisateur réactive.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!