L’esercizio si propone di realizzare una piccola interfaccia con quattro bottoni che spostano un piccolo contenitore rettangolare o lo nascondano o mostrano nel DOM della nostra pagina

La pagina HTML è alquanto scarna, giusto un blocco colorato da spostare e i pulsanti. E’ realizzata integrando la libreria Bootstrap ma non è ovviamente necessario se non ai fine estetici.
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="js/script.js"></script>
<link href="css/stile.css" rel="stylesheet">
<title>Conta maggiori/minori</title>
</head>
<body>
<div class="container">
<h1>Sposta oggetti e nascondi</h1>
<br>
<div id="blocco"></div>
<br><br><br><br><br><br>
<button class="btn btn-primary" onclick="destra()">Vai a destra</button>
<button class="btn btn-primary" onclick="sinistra()">Vai a sinistra</button>
<button class="btn btn-danger" onclick="nascondi()">Nascondi</button>
<button class="btn btn-warning" onclick="mostra()">Mostra</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</body>
</html>
Il listato JavaScript non è complesso ma merita un approfondimento: la prima cosa da fare è prelevare la posizione con l’attributo offsetleft. A questo punto spostare l’oggetto non è difficile con l’attributo CSS a cui assegniamo la posizione iniziale più un certo numero di pixel, qui ad esempio 50px.
Analogamente, sfruttiamo un attributo dello stile CSS per nascondere e mostrare il blocco.
function destra()
{
let objBlocco = document.getElementById("blocco");
let posizioneBlocco = objBlocco.offsetLeft;
objBlocco.style.left = posizioneBlocco + 50 + "px";
}
function sinistra()
{
let objBlocco = document.getElementById("blocco");
let posizioneBlocco = objBlocco.offsetLeft;
objBlocco.style.left = posizioneBlocco - 50 + "px";
}
function nascondi()
{
let objBlocco = document.getElementById("blocco");
objBlocco.style.display = "none";
}
function mostra()
{
let objBlocco = document.getElementById("blocco");
objBlocco.style.display = "block";
}
Per completezza il CSS utilizzato è il seguente. Contiene solo il codice per disegnare un semplice rettangolo. Ricorda che altezza e larghezza sono spesso attributi molto importanti per la disposizione di oggetti e il loro eventuale contenuto.
#blocco
{
position: absolute;
width: 200px;
height: 50px;
background-color: blueviolet;
border: 2px dotted black;
}
Codice completo su GitHub -> https://github.com/alfredocentinaro/esercizi-js/tree/main/muovi-oggetti
Provalo su Replit -> https://replit.com/@AlfredoCentina2/muovi-oggetti
Ultima modifica 26 Ottobre 2022