En aquest tema, aprendrem com seleccionar elements del Document Object Model (DOM) utilitzant D3.js. La selecció d'elements és una de les operacions més bàsiques i fonamentals en D3.js, ja que ens permet manipular i interactuar amb els elements HTML de la nostra pàgina web.
Conceptes Clau
Abans de començar amb els exemples pràctics, és important entendre alguns conceptes clau:
- Selecció: En D3.js, una selecció és un conjunt d'elements DOM que podem manipular.
- Metodes de Selecció: D3.js proporciona diversos mètodes per seleccionar elements, com
d3.select()id3.selectAll(). - Encadenament: D3.js permet encadenar múltiples operacions en una selecció, facilitant la manipulació d'elements de manera eficient.
Seleccionant un Element Únic
Per seleccionar un únic element del DOM, utilitzem el mètode d3.select(). Aquest mètode accepta un selector CSS com a argument i retorna el primer element que coincideix amb aquest selector.
Exemple
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Selecció d'Element Únic</title>
</head>
<body>
<h1 id="title">Hola, D3.js!</h1>
<script src="https://d3js.org/d3.v7.min.js"></script>
<script>
// Seleccionem l'element amb id "title"
var title = d3.select("#title");
// Canviem el text de l'element seleccionat
title.text("Benvingut a D3.js!");
</script>
</body>
</html>Explicació
- HTML: Tenim un element
<h1>amb l'id "title". - JavaScript: Utilitzem
d3.select("#title")per seleccionar l'element<h1>. - Manipulació: Utilitzem el mètode
.text()per canviar el text de l'element seleccionat.
Seleccionant Múltiples Elements
Per seleccionar múltiples elements del DOM, utilitzem el mètode d3.selectAll(). Aquest mètode accepta un selector CSS com a argument i retorna tots els elements que coincideixen amb aquest selector.
Exemple
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Selecció de Múltiples Elements</title>
</head>
<body>
<ul>
<li>Element 1</li>
<li>Element 2</li>
<li>Element 3</li>
</ul>
<script src="https://d3js.org/d3.v7.min.js"></script>
<script>
// Seleccionem tots els elements <li>
var items = d3.selectAll("li");
// Canviem el text de cada element seleccionat
items.text(function(d, i) {
return "Element " + (i + 1) + " actualitzat";
});
</script>
</body>
</html>Explicació
- HTML: Tenim una llista no ordenada amb tres elements
<li>. - JavaScript: Utilitzem
d3.selectAll("li")per seleccionar tots els elements<li>. - Manipulació: Utilitzem el mètode
.text()amb una funció de retorn per actualitzar el text de cada element seleccionat. La funció rep dos arguments:d(dada associada) ii(índex de l'element).
Encadenament de Mètodes
D3.js permet encadenar múltiples mètodes en una selecció per realitzar diverses operacions de manera eficient.
Exemple
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Encadenament de Mètodes</title>
</head>
<body>
<p class="text">Paràgraf 1</p>
<p class="text">Paràgraf 2</p>
<p class="text">Paràgraf 3</p>
<script src="https://d3js.org/d3.v7.min.js"></script>
<script>
// Seleccionem tots els elements <p> amb la classe "text"
d3.selectAll("p.text")
.style("color", "blue") // Canviem el color del text
.style("font-size", "20px") // Canviem la mida de la font
.text("Text actualitzat"); // Canviem el text
</script>
</body>
</html>Explicació
- HTML: Tenim tres elements
<p>amb la classe "text". - JavaScript: Utilitzem
d3.selectAll("p.text")per seleccionar tots els elements<p>amb la classe "text". - Encadenament: Utilitzem
.style()per canviar el color i la mida de la font, i.text()per actualitzar el text de cada element seleccionat.
Exercicis Pràctics
Exercici 1
Descripció: Selecciona tots els elements <div> amb la classe "box" i canvia el seu color de fons a "lightblue".
Codi Inicial:
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Exercici 1</title>
</head>
<body>
<div class="box">Caixa 1</div>
<div class="box">Caixa 2</div>
<div class="box">Caixa 3</div>
<script src="https://d3js.org/d3.v7.min.js"></script>
<script>
// Escriu el teu codi aquí
</script>
</body>
</html>Solució:
Exercici 2
Descripció: Selecciona l'element <h2> amb l'id "subtitle" i canvia el seu text a "Subtítol Actualitzat".
Codi Inicial:
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Exercici 2</title>
</head>
<body>
<h2 id="subtitle">Subtítol Original</h2>
<script src="https://d3js.org/d3.v7.min.js"></script>
<script>
// Escriu el teu codi aquí
</script>
</body>
</html>Solució:
Conclusió
En aquesta secció, hem après com seleccionar elements del DOM utilitzant D3.js. Hem vist com seleccionar un únic element amb d3.select(), com seleccionar múltiples elements amb d3.selectAll(), i com encadenar mètodes per realitzar múltiples operacions de manera eficient. Aquests conceptes són fonamentals per treballar amb D3.js i ens permetran manipular i interactuar amb els elements HTML de les nostres visualitzacions.
En el següent tema, explorarem com modificar els elements seleccionats per personalitzar les nostres visualitzacions.
D3.js: De Principiant a Avançat
Mòdul 1: Introducció a D3.js
Mòdul 2: Treballant amb Seleccions
Mòdul 3: Dades i Escales
- Carregant i Analitzant Dades
- Utilitzant Escales de D3
- Escales Lineals i Ordinals
- Escales de Temps i Logarítmiques
Mòdul 4: Creant Visualitzacions Bàsiques
- Creant Gràfics de Barres
- Creant Gràfics de Línies
- Creant Gràfics de Pastís
- Creant Gràfics de Dispersió
Mòdul 5: Visualitzacions Avançades
- Creant Disposicions Jeràrquiques
- Creant Disposicions de Força
- Creant Mapes Geo
- Creant Visualitzacions Personalitzades
Mòdul 6: Interactivitat i Animació
Mòdul 7: Treballant amb Dades Reals
- Recuperant Dades d'APIs
- Neteja i Transformació de Dades
- Integració amb Altres Llibreries
- Estudis de Cas i Exemples
Mòdul 8: Rendiment i Optimització
- Optimitzant el Rendiment de D3.js
- Gestionant Grans Conjunts de Dades
- Enllaç de Dades Eficient
- Depuració i Resolució de Problemes
Mòdul 9: Millors Pràctiques i Tècniques Avançades
- Organització del Codi i Modularitat
- Components Reutilitzables
- Patrons Avançats de D3.js
- Contribuint a la Comunitat de D3.js
