Elementi di design: onde del mare dinamiche, icone e font

di il
5 risposte

Elementi di design: onde del mare dinamiche, icone e font

Ciao a tutti,

Ho visto un sito che mi piace molto. Non so se si possa riportare sul forum così lo scrivo in fondo al post sostituendo "o" con "@" e "." con "-". 

Ho 3 domande:

1) Quale libreria si può usare per ricreare le onde del mare?

2) Quale libreria è stata usata per le icone?

3) Quale font per le scritte a mano libera?

Grazie

nic@lecuri@ni-com

5 Risposte

  • Re: Elementi di design: onde del mare dinamiche, icone e font

    05/01/2025 - iBaffiPro ha scritto:

    Non so se si possa riportare sul forum così lo scrivo in fondo al post sostituendo "o" con "@" e "." con "-". 

    Non credo che l'essere o meno "spam" cambi in base alla fruibilità del link. :)

    05/01/2025 - iBaffiPro ha scritto:

    Ho 3 domande [...]

    Hai provato a chiedere a ChatGPT come riprodurre un effetto?

    Spesso genera esempi calzanti che sono validi come punto di partenza da analizzare ed eventualmente modificare/perfezionare.

  • Re: Elementi di design: onde del mare dinamiche, icone e font

    Grazie Alka, ChatGPT è davvero uno spettacolo.

    Sono riuscito a farmi scrivere un codice ma c'è un solo problema che non sono riuscito a risolvere. Quando eseguo uno zoom della pagina le onde perdono di definizione.

    Sapresti come risolvere?

    <!DOCTYPE html>
    <html lang="it">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Onde Irregolari con Linea Curva Morbida</title>
        <style>
            body {
                margin: 0;
                overflow: hidden;
                background-color: #0099ff; /* Colore di sfondo che richiama il mare */
            }
    
            canvas {
                display: block;
                background-color: #0099ff; /* Colore di sfondo del canvas */
            }
        </style>
    </head>
    <body>
        <canvas id="ocean"></canvas>
    
        <script>
            // Otteniamo il canvas e il contesto 2D
            const canvas = document.getElementById('ocean');
            const ctx = canvas.getContext('2d');
    
            // Funzione per aggiornare la dimensione del canvas
            function resizeCanvas() {
                canvas.width = window.innerWidth;
                canvas.height = window.innerHeight;
            }
    
            // Impostiamo la dimensione del canvas all'inizio
            resizeCanvas();
    
            // Funzione per generare un valore casuale in un intervallo
            function getRandom(min, max) {
                return Math.random() * (max - min) + min;
            }
    
            // Parametri per le onde (modificato wavelength per onde più ampie)
            const waves = [
                { baseAmplitude: 100, wavelength: 0.008, speed: 0.0005, color: 'rgba(255, 255, 255, 0.6)' },  // Onde più ampie
                { baseAmplitude: 80, wavelength: 0.01, speed: 0.0004, color: 'rgba(255, 255, 255, 0.4)' }, // Onde più ampie
                { baseAmplitude: 150, wavelength: 0.006, speed: 0.0003, color: 'rgba(255, 255, 255, 0.3)' }, // Onde più ampie
                { baseAmplitude: 50, wavelength: 0.012, speed: 0.0006, color: 'rgba(255, 255, 255, 0.5)' }  // Onde più ampie
            ];
    
            // Funzione per la linea curvata di separazione tra mare e cielo, con meno "dune"
            function getCurvedLine(x) {
                return Math.sin(x * 0.003) * 100 + canvas.height / 2; // Linea curva più irregolare
            }
    
            // Funzione per disegnare tutte le onde
            function drawWaves() {
                ctx.clearRect(0, 0, canvas.width, canvas.height); // Pulisce il canvas
    
                // Disegnare ogni onda
                waves.forEach(wave => {
                    ctx.beginPath();
                    // Iniziamo dalla curva di separazione
                    ctx.moveTo(0, getCurvedLine(0)); // Partenza dell'onda dalla curva
    
                    // L'ampiezza varia nel tempo in modo irregolare
                    const amplitude = wave.baseAmplitude + Math.sin(Date.now() * wave.speed) * 100; // Ampiezza che oscilla
    
                    for (let x = 0; x < canvas.width; x++) {
                        let y = Math.sin(x * wave.wavelength) * amplitude + getCurvedLine(x); // Aggiungiamo la curvatura della linea base
                        ctx.lineTo(x, y);
                    }
    
                    ctx.lineTo(canvas.width, canvas.height); // Scende fino al fondo del canvas
                    ctx.lineTo(0, canvas.height); // E torna al lato sinistro
                    ctx.closePath();
    
                    ctx.fillStyle = wave.color; // Colore dell'onda
                    ctx.fill(); // Riempie l'onda con il colore
                });
    
                requestAnimationFrame(drawWaves); // Rende l'animazione fluida
            }
    
            // Aggiungi un evento di ridimensionamento per ridimensionare il canvas
            window.addEventListener('resize', function() {
                resizeCanvas(); // Aggiorna la dimensione del canvas
            });
    
            drawWaves(); // Avvia l'animazione
        </script>
    </body>
    </html>
    
    
  • Re: Elementi di design: onde del mare dinamiche, icone e font

    05/01/2025 - iBaffiPro ha scritto:

    Quando eseguo uno zoom della pagina le onde perdono di definizione.

    Sapresti come risolvere?

    Direi che è sufficiente ridisegnare al cambio dello zoom, ad ogni modo se chiedi questa modifica direttamente all'AI - qualora il resto vada bene - te la aggiusta di conseguenza.

  • Re: Elementi di design: onde del mare dinamiche, icone e font

    Se scrivo che dsw è eccezionale potrebbe offendersi perché in realtà è molto di più che eccezionale!

    Nei prossimi giorni mi studio il codice e provo ad adattarlo al mio progetto.

    Grazie per le informazioni.

  • Re: Elementi di design: onde del mare dinamiche, icone e font

    Ho studiato il codice di dsw e devo ammettere che funziona ed è molto carino.

    Per caso sapete come editare l'altezza dell'onda oppure si può anche eseguire un'operazione di traslazione dell'onda?

    .parallax > use {
      animation: move-forever 25s cubic-bezier(.55,.5,.45,.5) infinite;
    }
    .parallax > use:nth-child(1) {
      animation-delay: -5s;
      animation-duration: 19s;
    }
    .parallax > use:nth-child(2) {
      animation-delay: -4s;
      animation-duration: 14s;
    }
    .parallax > use:nth-child(3) {
      animation-delay: -3s;
      animation-duration: 10s;
    }
    .parallax > use:nth-child(4) {
      animation-delay: -2s;
      animation-duration: 7s;
    }
    @keyframes move-forever { /* NOTA: animation: move-foreve */
      0% {
    	transform: translate3d(-90px,0,0);
      }
      100% { 
    	transform: translate3d(90px,0,0);
      }
    }
    	<div>
    		<svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
    		viewBox="90 0 172 71" preserveAspectRatio="none" shape-rendering="auto">
    			<defs>
    				<path id="gentle-wave" d="M0 0v44c30 0 58 18 88 18s58-18 88-18 58 18 88 18 58-18 88-18V0H0z" />
    			</defs>
    			<g class="parallax">
    				<use xlink:href="#gentle-wave" x="0" y="0" fill="rgba(66,133,250,1.00)" />
    				<use xlink:href="#gentle-wave" x="0" y="3" fill="rgba(66,133,250,0.75)" />
    				<use xlink:href="#gentle-wave" x="0" y="6" fill="rgba(66,133,250,0.50)" />
    				<use xlink:href="#gentle-wave" x="0" y="9" fill="rgba(66,133,250,0.25)" />
    			</g>
    		</svg>
    	</div>
Devi accedere o registrarti per scrivere nel forum
5 risposte