<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Portfolio - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Impara a programmare gratuitamente! Tutorial di programmazione su Python, JavaScript, Linux e molto altro. ]]>
        </description>
        <link>https://www.freecodecamp.org/italian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Portfolio - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/italian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 26 May 2026 10:15:25 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/italian/news/tag/portfolio/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ 5 Progetti da Includere nel tuo Portfolio Front-End ]]>
                </title>
                <description>
                    <![CDATA[ Un portfolio è un ottimo modo per mostrare le proprie competenze ai potenziali datori di lavoro. È particolarmente utile per gli sviluppatori principianti che potrebbero non avere alcuna esperienza professionale. Tuttavia, un problema comune che si può incontrare quando si costruisce un portfolio è sapere cosa includervi. La semplice pagina ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/5-progetti-da-includere-nel-tuo-portfolio-front-end/</link>
                <guid isPermaLink="false">64cf7c66defe990699bf68c9</guid>
                
                    <category>
                        <![CDATA[ Portfolio ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Giovanni Marletta ]]>
                </dc:creator>
                <pubDate>Tue, 29 Aug 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/08/5-Projects-To-Include-in-Your-Frontend-Portfolio.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/coding-projects-to-include-in-your-frontend-portfolio/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">5 Coding Projects You Should Include in Your Front End Portfolio</a>
      </p><p>Un portfolio è un ottimo modo per mostrare le proprie competenze ai potenziali datori di lavoro. È particolarmente utile per gli sviluppatori principianti che potrebbero non avere alcuna esperienza professionale.</p><p>Tuttavia, un problema comune che si può incontrare quando si costruisce un portfolio è sapere cosa includervi.</p><p>La semplice pagina web che hai costruito per un corso è sufficiente per essere inserita nel tuo sito web? Devi includere solo i progetti per cui sei stato pagato o puoi includere anche le cose più piccole? Esiste un numero "giusto" di progetti da inserire?</p><p>Lo scopo di questo articolo è quello di fornire alcune linee guida su come popolare il tuo portfolio di sviluppatore frontend, attraverso progetti di esempio.</p><p>Ecco un breve riepilogo dei progetti che tratteremo in questo articolo:</p><ol><li>Un sito web portfolio</li><li>Un sito web clone</li><li>Un'applicazione web CRUD</li><li>Un sito web collegato a un'API</li><li>Un sito web dal punteggio perfetto</li></ol><p>Nota: questo non significa che devi costruire tutti questi progetti. Questo elenco serve solo a fornire idee sul tipo di progetti che si possono realizzare.</p><p>Inoltre, questi progetti sono rivolti a sviluppatori principianti che hanno acquisito le basi dello sviluppo frontend e sono alla ricerca di progetti leggermente più avanzati.</p><h2 id="1-creare-un-sito-web-portfolio"><strong>1. Creare un Sito Web Portfolio</strong></h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/image-293.png" class="kg-image" alt="image-293" width="600" height="400" loading="lazy"><figcaption>Photo by <a href="https://unsplash.com/@goshua13?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Joshua Aragon</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Unsplash</a></figcaption></figure><p>Se hai costruito il tuo sito web portfolio da solo, puoi includerlo nell'elenco dei progetti. Se si tende a cambiare regolarmente il design del portfolio, è possibile includere anche le versioni precedenti.</p><p>Quando includi un progetto nel tuo portfolio, non solo metti in mostra le tue capacità, ma spieghi anche la mentalità che sta dietro al progetto. E questo è un aspetto che di solito interessa ai potenziali datori di lavoro.</p><p>Per gli sviluppatori frontend, spiegare come si è arrivati al layout scelto è importante quanto avere un design esteticamente accattivante.</p><p>Puoi andare oltre e descrivere le misure adottate per garantire che il tuo sito web segua le migliori pratiche di sviluppo. Ad esempio, potresti condividere il modo in cui ti sei concentrato sul miglioramento della SEO e delle prestazioni del tuo sito.</p><p><strong><strong>R</strong>isorse ed esempi</strong>: <a href="https://www.freecodecamp.org/news/15-web-developer-portfolios-to-inspire-you-137fb1743cae/">Questo articolo di Laurence Bradford</a> fornisce ulteriori informazioni sulla struttura di un portfolio e include esempi di fantastici portfolio di sviluppatori web da cui trarre ispirazione.</p><p><strong>Tecnologia consigliata<strong>:</strong></strong> per i principianti, consiglio di usare HTML, CSS e JavaScript vanilla per costruire un portfolio, soprattutto se è la prima volta.</p><h2 id="2-creare-un-sito-web-clone"><strong>2. Creare un Sito Web Clone</strong></h2><p>La capacità di convertire accuratamente un progetto in una pagina web completamente funzionale è un'abilità che ogni sviluppatore frontend dovrebbe possedere.</p><p>Per farlo, è necessario avere un occhio di riguardo per il layout e i colori. Dovrete inoltre possedere conoscenze basate sull'esperienza, come ad esempio conoscere la migliore proprietà di visualizzazione CSS da abbinare a un layout o essere in grado di eseguire il rendering di un'animazione secondo le specifiche.</p><p>Nella maggior parte delle aziende, gli sviluppatori frontend sono responsabili della traduzione di mockup e prototipi in pagine web, quindi è utile che il portfolio mostri le tue competenze "design-to-code". Costruire un sito web clone è un buon modo per farlo.</p><p>Ci sono due modi per costruire un sito web clone:</p><p>In primo luogo, è possibile ricreare un sito web esistente. Una sfida comune per gli sviluppatori junior è <a href="https://www.theodinproject.com/courses/web-development-101/lessons/html-css">clonare la homepage di Google</a>.</p><p>Questo metodo è particolarmente utile per comprendere le applicazioni reali delle scelte di stile nei siti web più diffusi. È possibile ispezionare gli elementi della pagina e cercare di capire i metodi utilizzati per il box-model, il posizionamento e la visualizzazione.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/image-294.png" class="kg-image" alt="image-294" width="600" height="400" loading="lazy"><figcaption>Photo by <a href="https://unsplash.com/@solenfeyissa?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Solen Feyissa</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Unsplash</a></figcaption></figure><p>In secondo luogo, è possibile ricreare un progetto da zero. Per un progetto più impegnativo, si possono consultare i design su <a href="https://dribbble.com/shots/popular/web-design">Dribble</a> o <a href="https://www.behance.net/search/projects?field=web%20design">Behance</a> e cercare di tradurre il design in codice.</p><p>Per rendere questo metodo più adatto ai principianti, provate a ricreare una pagina o una funzione semplice, come un form di login o un'applicazione meteo.</p><p><strong>Tecnologia consigliata<strong>:</strong></strong> la clonazione del design di un sito web non richiede alcuna funzionalità, quindi solo HTML e CSS vanno bene. Si può anche utilizzare questo tempo per familiarizzare con un framework CSS o un preprocessore come <a href="https://sass-lang.com/guide">SASS</a>.</p><p><strong><strong>Not</strong>a</strong>: tutti i progetti caricati su queste piattaforme sono protetti da copyright dei rispettivi proprietari, pertanto non è consentito utilizzarli per scopi commerciali. Tuttavia, se invii un'e-mail o lasci un commento chiedendo il permesso di ricreare il disegno per scopi non commerciali, il creatore potrebbe essere disposto a lasciarti ricreare i suoi progetti gratuitamente.</p><p>È inoltre importante specificare nel proprio portfolio che il progetto è un lavoro clonato o una ricreazione di un design altrui.</p><h2 id="3-un-applicazione-web-crud"><strong>3. Un'applicazione web CRUD</strong></h2><p>L'esecuzione di operazioni CRUD (Create-Read-Update-Delete) è una caratteristica molto comune per la maggior parte dei siti web (come blog, e-commerce, dashboard e così via), quindi è un'operazione che bisogna essere abituati a costruire come sviluppatori front-end.</p><p>Un'applicazione CRUD basilare può essere una lista di cose da fare (To-Do List) o una pagina web di appunti (Notes). La presenza di uno di questi progetti sul tuo sito web dimostra la tua abilità nella manipolazione delle strutture di dati. È anche una buona occasione per mostrare il tuo lavoro con un framework frontend.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/image-295.png" class="kg-image" alt="image-295" width="600" height="400" loading="lazy"><figcaption>Photo by <a href="https://unsplash.com/@jessbaileydesigns?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Jess Bailey</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Unsplash</a></figcaption></figure><p>L'articolo di Tania Rascia su come <a href="https://www.taniarascia.com/how-to-use-local-storage-with-javascript/">lavorare con il local storage</a> è un'utile introduzione per imparare a creare applicazioni web CRUD con JavaScript vanilla. Oppure, se vuoi un articolo più specifico su un framework, dai un'occhiata all'articolo della stessa autrice su come <a href="https://www.taniarascia.com/crud-app-in-react-with-hooks/">creare un'applicazione Crud con gli hook di React</a>.</p><p><strong>Tecnologia consigliata<strong>: </strong></strong>le applicazioni CRUD richiedono l'uso di componenti riutilizzabili, quindi è una buona idea costruirle usando un framework come React o Vue, a seconda della tua familiarità.</p><p><strong>Sito di esempio<strong>: </strong></strong><a href="https://taniarascia.github.io/react-hooks/">App CRUD con i React Hook</a></p><h2 id="4-un-sito-web-collegato-ad-un-api"><strong>4. Un sito web collegato ad un'API</strong></h2><p>Molti progetti su larga scala richiedono una sorta di comunicazione con un server backend e la visualizzazione dei dati recuperati da tale server. Nella maggior parte dei casi, ciò richiede l'uso di un interfaccia di programmazione delle applicazioni, in inglese <a href="https://www.freecodecamp.org/news/what-does-api-stand-for-a-definition-of-the-coding-acronym-in-plain-english/">Application Programming Interface (API)</a>.</p><p>Un'API è... Mi piace pensarla come un bibliotecario digitale. Immaginate di avere dei libri conservati in una biblioteca e di doverli utilizzare per una relazione.</p><p>Quindi, si va dal bibliotecario e si chiede di prendere in prestito un libro. È necessario indicare al bibliotecario alcune parole chiave (diciamo il nome del libro e il nome dell'autore) e avere la giusta autorizzazione (in questo caso, la tessera della biblioteca) per ottenere il libro.</p><p>Ora sostituisci "biblioteca" con "server", "libri" con "dati", "relazione" con "sito web" e "bibliotecario" con "API".</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/image-296.png" class="kg-image" alt="image-296" width="600" height="400" loading="lazy"><figcaption>Photo by <a href="https://unsplash.com/@ismailenesayhan?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">İsmail Enes Ayhan</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">Unsplash</a></figcaption></figure><p>Le API consentono agli sviluppatori frontend di raccogliere, modificare e cancellare dati da un database backend. La creazione di un sito che utilizza un'API per visualizzare i dati è un ottimo progetto da includere nel tuo portfolio.</p><p><strong>Siti di esempio<strong>: </strong></strong>si può scegliere di creare un sito per la visualizzazione di dati (ad esempio, un <a href="https://webdesign.tutsplus.com/tutorials/build-a-simple-weather-app-with-vanilla-javascript--cms-33893">sito web che si connette a un'API meteo</a> e visualizza il tempo corrente) oppure, per un progetto più impegnativo, si può impostare un'<a href="https://www.callicoder.com/node-js-express-mongodb-restful-crud-api-tutorial/">API RESTful</a> ed eseguire le operazioni sul proprio sito web.</p><h2 id="5-un-sito-web-dal-punteggio-perfetto"><strong>5. Un sito web dal punteggio perfetto</strong></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2021/01/perfect-score.png" class="kg-image" alt="perfect-score" width="600" height="400" loading="lazy"></figure><p>Un sito web con punteggio perfetto è un sito web che ottiene un punteggio del 100% in tutte le categorie del rapporto di verifica di <a href="https://developers.google.com/web/tools/lighthouse">Chrome Lighthouse</a>. La creazione di un sito web che soddisfa tutte le caratteristiche richieste dimostra la tua abilità nel seguire le best practice e nel garantire progetti di alta qualità.</p><p>Per sapere come ottimizzare il tuo sito web in termini di prestazioni e accessibilità per ottenere un punteggio Lighthouse perfetto, puoi leggere l'articolo <a href="https://blog.jemimaabu.com/how-i-built-my-perfect-score-portfolio-website#how-to-get-a-perfect-lighthouse-score-on-your-website">Come ho costruito il mio sito web Portfolio</a> dal punteggio perfetto.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Ecco quindi i 5 progetti che puoi includere nel tuo portfolio frontend. Inoltre, questi non devono essere tutti progetti separati. Potresti creare un sito web clone dal punteggio perfetto o un'applicazione CRUD che utilizza un'API per richiamare dati da un file JSON.</p><p>Ora puoi andare avanti e creare. Happy coding :)</p><p>Se questo articolo ti è stato utile o se hai delle domande, puoi farmelo sapere su <a href="https://www.twitter.com/jemimaabu">Twitter</a>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come creare un sito Web portfolio con React ]]>
                </title>
                <description>
                    <![CDATA[ Oggi creerai una delle app più importanti che puoi costruire per te stesso: il tuo portfolio da sviluppatore. Ogni sviluppatore React o sviluppatore web in generale, deve essere in grado di mostrare ciò che può fare a qualsiasi potenziale cliente o datore di lavoro. Questo è esattamente ciò che costruiremo ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-creare-un-sito-web-portfolio-con-react/</link>
                <guid isPermaLink="false">6228f10c07e6d705139eb4db</guid>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Portfolio ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angelo Mirabelli ]]>
                </dc:creator>
                <pubDate>Fri, 11 Mar 2022 09:52:17 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/03/react-portfolio-2021.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/build-portfolio-website-react/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How To Build A Simple Portfolio Blog With Next.js</a>
      </p><p>Oggi creerai una delle app più importanti che puoi costruire per te stesso: il tuo portfolio da sviluppatore.</p><p>Ogni sviluppatore React o sviluppatore web in generale, deve essere in grado di mostrare ciò che può fare a qualsiasi potenziale cliente o datore di lavoro.</p><p>Questo è esattamente ciò che costruiremo in questa guida, con l'aiuto di una serie di strumenti standard del settore, tra cui React, Tailwind CSS e Netlify.</p><p>Iniziamo!</p><h2 id="come-sar-il-portfolio"><strong>Come sarà il Portfolio?</strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/06/portfolio-1-min.gif" class="kg-image" alt="portafoglio-1-min" width="600" height="400" loading="lazy"></figure><p>Questa è la versione finale del portfolio che creerai.</p><p>Conterrà informazioni su di te, quali progetti hai realizzato, quali abilità hai utilizzato per realizzare quei progetti e includerà un modulo di contatto per i clienti o i datori di lavoro per contattarti.</p><h2 id="quali-strumenti-utilizzeremo"><strong>Quali strumenti utilizzeremo?</strong></h2><ul><li>Useremo React per creare l'interfaccia utente dell'app. Ci consentirà di comporre ogni parte della nostra landing page attraverso componenti riutilizzabili ed estendere la nostra app se vogliamo aggiungere funzionalità aggiuntive, come un blog.</li><li>Per definire lo stile della nostra applicazione, utilizzeremo Tailwind CSS. Per dare alla nostra app un aspetto professionale, Tailwind ci consentirà di applicare facilmente più stili combinando i nomi delle classi sui nostri elementi React.</li><li>Per pubblicare la nostra app sul web, utilizzeremo il servizio gratuito Netlify. Servirà il nostro progetto su un dominio personalizzato per gli utenti molto rapidamente con l'aiuto di una CDN (rete di distribuzione dei contenuti).</li></ul><h2 id="come-iniziare"><strong>Come iniziare</strong></h2><p><strong><strong><a href="https://reedbarger.com/resources/react-portfolio-2021">Puoi scaricare i file di partenza per il nostro progetto qui.</a></strong></strong></p><p>Quando prendi il codice, tutto ciò che dovrai fare è trascinare la cartella del progetto (decompresso) nell'editor di codice ed eseguire il comando:</p><pre><code class="language-bash">npm install</code></pre><p>E sei a posto!</p><h2 id="di-quali-strumenti-ho-bisogno-per-costruire-il-mio-portfolio"><strong>Di quali strumenti ho bisogno per costruire il mio portfolio?</strong></h2><p>Per eseguire l'intero processo di creazione della nostra app dall'inizio alla distribuzione, dovrai disporre di quanto segue:</p><ol><li>Node.js installato sul tuo computer. Puoi scaricarlo su nodejs.org.</li><li>Git installato sul tuo computer. Puoi scaricarlo su git-scm.com.</li><li>Consiglierei di utilizzare VS Code come editor di codice. Puoi scaricarlo su code.visualstudio.com.</li><li>Un account Netlify gratuito su netlify.com.</li><li>Un account GitHub gratuito su github.com.</li></ol><h2 id="come-costruire-la-struttura-del-portfolio"><strong>Come costruire la struttura del Portfolio</strong></h2><p>Il vantaggio dell'utilizzo di React è che potremmo espandere la nostra app a tutte le pagine che vogliamo, molto semplicemente, e aggiungere molti contenuti aggiuntivi.</p><p>Tuttavia, poiché stiamo lavorando solo con una pagina, all'interno del nostro componente <em>app</em> possiamo immaginare &nbsp;molto rapidamente i diversi componenti di cui avremo bisogno. Avremo una barra di navigazione in cima con tutti i collegamenti per passare alle diverse sezioni del nostro portfolio.</p><p>Successivamente, includeremo una sezione informazioni, una sezione per i nostri progetti, testimonianze e infine il nostro modulo di contatto.</p><p>Questa rapida pianificazione ci consente di capire come devono essere nominati i nostri componenti e in quale ordine. Possiamo andare avanti e aggiungerli tutti al nostro file App.js (in src):</p><pre><code class="language-js">// src/App.js

import React from "react";

export default function App() {
  return (
    &lt;main&gt;
      &lt;Navbar /&gt;
      &lt;About /&gt;
      &lt;Projects /&gt;
      &lt;Skills /&gt;
      &lt;Testimonials /&gt;
      &lt;Contact /&gt;
    &lt;/main&gt;
  );
}</code></pre><h2 id="come-creare-i-nostri-componenti"><strong>Come creare i nostri componenti</strong></h2><p>Ora che abbiamo elencato tutti questi componenti, dobbiamo andare avanti e crearli.</p><p>All'interno della nostra cartella di origine (src), creeremo una cartella chiamata <em>components</em> con tutti i file di cui abbiamo bisogno:</p><pre><code>my-portfolio
├── README.md
├── node_modules
├── package.json
├── .gitignore
├── public
│   ├── favicon.ico
│   ├── index.html
│   └── manifest.json
└── src
    ├── App.js
    ├── data.js
    ├── index.css
    ├── index.js
    └── components
        ├── About.js
        ├── Contact.js
        ├── Navbar.js
        ├── Projects.js
        ├── Skills.js
        └── Testimonials.js</code></pre><p>Quindi creeremo la struttura di base di ogni componente React e la esporteremo da quel file con <code>export default</code>:</p><pre><code class="language-js">// src/components/About.js

export default function About() {}

// ripetere la stessa struttura di base per tutti e 6 i componenti</code></pre><p>E infine assicurati di importarlo di nuovo in App.js:</p><pre><code class="language-js">// src/App.js

import React from "react";
import About from "./components/About";
import Contact from "./components/Contact";
import Navbar from "./components/Navbar";
import Projects from "./components/Projects";
import Skills from "./components/Skills";
import Testimonials from "./components/Testimonials";

export default function App() {
  return (
    &lt;main&gt;
      &lt;Navbar /&gt;
      &lt;About /&gt;
      &lt;Projects /&gt;
      &lt;Skills /&gt;
      &lt;Testimonials /&gt;
      &lt;Contact /&gt;
    &lt;/main&gt;
  );
}</code></pre><p><em><em>Nota che ci dovrebbero essere sei componenti in totale.</em></em></p><h2 id="introduzione-a-tailwind-css"><strong>Introduzione a Tailwind CSS</strong></h2><p>Una volta fatto, possiamo cominciare a lavorare con Tailwind CSS, in modo da iniziare a dare alla nostra app un aspetto di base.</p><p>Il vantaggio dell'utilizzo di Tailwind CSS è che non è necessario scrivere manualmente alcuno stile in un foglio di stile CSS. Tutto quello che dobbiamo fare è combinare più classi per creare l'aspetto che vogliamo.</p><p>Ad esempio, per dare al nostro portfolio uno sfondo scuro con testo grigio applicato a tutti i nostri componenti figlio, puoi aggiungere le seguenti classi al nostro elemento <code>main</code>:</p><pre><code class="language-js">// src/App.js

import React from "react";
import About from "./components/About";
import Contact from "./components/Contact";
import Navbar from "./components/Navbar";
import Projects from "./components/Projects";
import Skills from "./components/Skills";
import Testimonials from "./components/Testimonials";

export default function App() {
  return (
    &lt;main className="text-gray-400 bg-gray-900 body-font"&gt;
      &lt;Navbar /&gt;
      &lt;About /&gt;
      &lt;Projects /&gt;
      &lt;Skills /&gt;
      &lt;Testimonials /&gt;
      &lt;Contact /&gt;
    &lt;/main&gt;
  );
}</code></pre><h2 id="come-costruire-il-componente-about"><strong>Come costruire il componente About</strong></h2><p>Iniziamo dalla nostra prima sezione, la sezione <em>About</em>. Questo consisterà in un'introduzione di base a noi stessi e alle competenze in cui siamo specializzati.</p><p>Includerà anche alcuni collegamenti al modulo di contatto e ai nostri progetti passati. Poiché questi collegamenti saranno in parti diverse della stessa pagina, possiamo utilizzare gli hash: "/#projects" e "/#contact".</p><p>Per far funzionare questi collegamenti e per poter saltare a ciascuna sezione, imposteremo l'attributo <code>id</code> della sezione progetti su "projects" e quelli della sezione contatti su "contact".</p><pre><code class="language-js">// src/components/About.js

import React from "react";

export default function About() {
  return (
    &lt;section id="about"&gt;
      &lt;div className="container mx-auto flex px-10 py-20 md:flex-row flex-col items-center"&gt;
        &lt;div className="lg:flex-grow md:w-1/2 lg:pr-24 md:pr-16 flex flex-col md:items-start md:text-left mb-16 md:mb-0 items-center text-center"&gt;
          &lt;h1 className="title-font sm:text-4xl text-3xl mb-4 font-medium text-white"&gt;
            Hi, I'm Reed.
            &lt;br className="hidden lg:inline-block" /&gt;I love to build amazing
            apps.
          &lt;/h1&gt;
          &lt;p className="mb-8 leading-relaxed"&gt;
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui
            laborum quasi, incidunt dolore iste nostrum cupiditate voluptas?
            Laborum, voluptas natus?
          &lt;/p&gt;
          &lt;div className="flex justify-center"&gt;
            &lt;a
              href="#contact"
              className="inline-flex text-white bg-green-500 border-0 py-2 px-6 focus:outline-none hover:bg-green-600 rounded text-lg"&gt;
              Work With Me
            &lt;/a&gt;
            &lt;a
              href="#projects"
              className="ml-4 inline-flex text-gray-400 bg-gray-800 border-0 py-2 px-6 focus:outline-none hover:bg-gray-700 hover:text-white rounded text-lg"&gt;
              See My Past Work
            &lt;/a&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div className="lg:max-w-lg lg:w-full md:w-1/2 w-5/6"&gt;
          &lt;img
            className="object-cover object-center rounded"
            alt="hero"
            src="./coding.svg"
          /&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;
  );
}</code></pre><p>Per l'immagine sul lato destro della sezione, sto usando un file svg dalla cartella <code>public</code>, coding.svg.</p><p>Questa immagine funge semplicemente da segnaposto temporaneo. Consiglio vivamente di utilizzare un'immagine reale di te stesso.</p><h2 id="come-costruire-il-componente-projects"><strong>Come costruire il componente Projects</strong></h2><p>La nostra sezione progetti sarà composta da un elemento <code>section</code> con una <code>id</code> di "projects". Questo conterrà una galleria di tutti i progetti che abbiamo creato, che includerà immagini.</p><p>Avrà il titolo del progetto, insieme alle tecnologie che abbiamo utilizzato per realizzarlo, e un collegamento ad esso (se è distribuito).</p><pre><code class="language-js">// src/components/Projects.js

import { CodeIcon } from "@heroicons/react/solid";
import React from "react";
import { projects } from "../data";

export default function Projects() {
  return (
    &lt;section id="projects" className="text-gray-400 bg-gray-900 body-font"&gt;
      &lt;div className="container px-5 py-10 mx-auto text-center lg:px-40"&gt;
        &lt;div className="flex flex-col w-full mb-20"&gt;
          &lt;CodeIcon className="mx-auto inline-block w-10 mb-4" /&gt;
          &lt;h1 className="sm:text-4xl text-3xl font-medium title-font mb-4 text-white"&gt;
            Apps I've Built
          &lt;/h1&gt;
          &lt;p className="lg:w-2/3 mx-auto leading-relaxed text-base"&gt;
            Lorem ipsum, dolor sit amet consectetur adipisicing elit. Explicabo
            facilis repellat ab cupiditate alias vero aliquid obcaecati quisquam
            fuga dolore.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div className="flex flex-wrap -m-4"&gt;
          {projects.map((project) =&gt; (
            &lt;a
              href={project.link}
              key={project.image}
              className="sm:w-1/2 w-100 p-4"&gt;
              &lt;div className="flex relative"&gt;
                &lt;img
                  alt="gallery"
                  className="absolute inset-0 w-full h-full object-cover object-center"
                  src={project.image}
                /&gt;
                &lt;div className="px-8 py-10 relative z-10 w-full border-4 border-gray-800 bg-gray-900 opacity-0 hover:opacity-100"&gt;
                  &lt;h2 className="tracking-widest text-sm title-font font-medium text-green-400 mb-1"&gt;
                    {project.subtitle}
                  &lt;/h2&gt;
                  &lt;h1 className="title-font text-lg font-medium text-white mb-3"&gt;
                    {project.title}
                  &lt;/h1&gt;
                  &lt;p className="leading-relaxed"&gt;{project.description}&lt;/p&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/a&gt;
          ))}
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;
  );
}</code></pre><p>Nota che useremo anche la libreria <code>@heroicons/react</code> per poter scrivere alcune icone SVG come componenti di React.</p><p>Stiamo importando una serie di progetti da un file data.js nella stessa cartella. Lì stiamo esportando una serie di oggetti che includono ciascuno i dati di un singolo progetto:</p><pre><code class="language-js">// src/data.js

export const projects = [
  {
    title: "React Reserve",
    subtitle: "MERN Stack",
    description:
      "Lorem ipsum dolor sit amet consectetur adipisicing elit. Praesentium dolore rerum laborum iure enim sint nemo omnis voluptate exercitationem eius?",
    image: "./project-1.gif",
    link: "https://reactbootcamp.com",
  },
  {
    title: "React Tracks",
    subtitle: "React and Python",
    description:
      "Lorem ipsum dolor sit amet consectetur adipisicing elit. Praesentium dolore rerum laborum iure enim sint nemo omnis voluptate exercitationem eius?",
    image: "./project-2.gif",
    link: "https://reedbarger.com",
  },
  {
    title: "DevChat",
    subtitle: "React and Firebase",
    description:
      "Lorem ipsum dolor sit amet consectetur adipisicing elit. Praesentium dolore rerum laborum iure enim sint nemo omnis voluptate exercitationem eius?",
    image: "./project-3.gif",
    link: "https://jsbootcamp.com",
  },
  {
    title: "Epic Todo App",
    subtitle: "React Hooks",
    description:
      "Lorem ipsum dolor sit amet consectetur adipisicing elit. Praesentium dolore rerum laborum iure enim sint nemo omnis voluptate exercitationem eius?",
    image: "./project-4.gif",
    link: "https://pythonbootcamp.com",
  },
];</code></pre><h2 id="come-costruire-il-componente-delle-skills"><strong>Come costruire il componente delle Skills</strong></h2><p>Compiliamo la sezione per tutte le competenze e le tecnologie che conosciamo.</p><p>Questo consisterà in un semplice elenco di tutti i principali strumenti con cui abbiamo familiarità e che possiamo utilizzare nei progetti dei nostri datori di lavoro o clienti.</p><p>Ancora una volta, importeremo un array dalla nostra cartella dati. Ma questo array è costituito da un numero di stringhe che rappresentano ciascuna delle abilità che conosciamo come JavaScript, React e Node:</p><pre><code class="language-js">// src/components/Skills.js

import { BadgeCheckIcon, ChipIcon } from "@heroicons/react/solid";
import React from "react";
import { skills } from "../data";

export default function Skills() {
  return (
    &lt;section id="skills"&gt;
      &lt;div className="container px-5 py-10 mx-auto"&gt;
        &lt;div className="text-center mb-20"&gt;
          &lt;ChipIcon className="w-10 inline-block mb-4" /&gt;
          &lt;h1 className="sm:text-4xl text-3xl font-medium title-font text-white mb-4"&gt;
            Skills &amp;amp; Technologies
          &lt;/h1&gt;
          &lt;p className="text-base leading-relaxed xl:w-2/4 lg:w-3/4 mx-auto"&gt;
            Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nisi sit
            ipsa delectus eum quo voluptas aspernatur accusantium distinctio
            possimus est.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div className="flex flex-wrap lg:w-4/5 sm:mx-auto sm:mb-2 -mx-2"&gt;
          {skills.map((skill) =&gt; (
            &lt;div key={skill} className="p-2 sm:w-1/2 w-full"&gt;
              &lt;div className="bg-gray-800 rounded flex p-4 h-full items-center"&gt;
                &lt;BadgeCheckIcon className="text-green-400 w-6 h-6 flex-shrink-0 mr-4" /&gt;
                &lt;span className="title-font font-medium text-white"&gt;
                  {skill}
                &lt;/span&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          ))}
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;
  );
}</code></pre><h2 id="come-costruire-il-componente-testimonials"><strong>Come costruire il componente Testimonials</strong></h2><p>Nella componente Testimonials, elencheremo un paio di testimonianze, magari di clienti passati o di persone che hanno familiarità con il nostro lavoro.</p><p>Questi consisteranno in un paio di cards che mostreranno la testimonianza stessa, come anche da chi proviene e l'azienda da cui proviene questa persona.</p><p>Stiamo anche importando una array di testimonianze con una serie di oggetti che presentano la citazione, l'immagine, il nome e l'azienda.</p><pre><code class="language-js">// src/components/Testimonials

import React from "react";
import { TerminalIcon, UsersIcon } from "@heroicons/react/solid";
import { testimonials } from "../data";

export default function Testimonials() {
  return (
    &lt;section id="testimonials"&gt;
      &lt;div className="container px-5 py-10 mx-auto text-center"&gt;
        &lt;UsersIcon className="w-10 inline-block mb-4" /&gt;
        &lt;h1 className="sm:text-4xl text-3xl font-medium title-font text-white mb-12"&gt;
          Client Testimonials
        &lt;/h1&gt;
        &lt;div className="flex flex-wrap m-4"&gt;
          {testimonials.map((testimonial) =&gt; (
            &lt;div className="p-4 md:w-1/2 w-full"&gt;
              &lt;div className="h-full bg-gray-800 bg-opacity-40 p-8 rounded"&gt;
                &lt;TerminalIcon className="block w-8 text-gray-500 mb-4" /&gt;
                &lt;p className="leading-relaxed mb-6"&gt;{testimonial.quote}&lt;/p&gt;
                &lt;div className="inline-flex items-center"&gt;
                  &lt;img
                    alt="testimonial"
                    src={testimonial.image}
                    className="w-12 rounded-full flex-shrink-0 object-cover object-center"
                  /&gt;
                  &lt;span className="flex-grow flex flex-col pl-4"&gt;
                    &lt;span className="title-font font-medium text-white"&gt;
                      {testimonial.name}
                    &lt;/span&gt;
                    &lt;span className="text-gray-500 text-sm uppercase"&gt;
                      {testimonial.company}
                    &lt;/span&gt;
                  &lt;/span&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          ))}
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;
  );
}</code></pre><h2 id="come-costruire-il-componente-contact"><strong>Come costruire il componente Contact</strong></h2><p>Alla fine della nostra <em>landing page</em>, includeremo il nostro modulo di contatto per consentire ai potenziali datori di lavoro di contattarci.</p><p>Questo modulo avrà 3 campi di inserimento: un nome, un'e-mail e un campo per scrivere il messaggio.</p><p>Per gestire questi invii di moduli, utilizzeremo lo strumento Netlify Forms per occuparci molto facilmente del salvataggio di quei messaggi.</p><pre><code class="language-js">// src/components/Contact.js

import React from "react";

export default function Contact() {
  return (
    &lt;section id="contact" className="relative"&gt;
      &lt;div className="container px-5 py-10 mx-auto flex sm:flex-nowrap flex-wrap"&gt;
        &lt;div className="lg:w-2/3 md:w-1/2 bg-gray-900 rounded-lg overflow-hidden sm:mr-10 p-10 flex items-end justify-start relative"&gt;
          &lt;iframe
            width="100%"
            height="100%"
            title="map"
            className="absolute inset-0"
            frameBorder={0}
            marginHeight={0}
            marginWidth={0}
            style={{ filter: "opacity(0.7)" }}
            src="https://www.google.com/maps/embed/v1/place?q=97+warren+st+new+york+city&amp;key=AIzaSyBFw0Qbyq9zTFTd-tUY6dZWTgaQzuU17R8"
          /&gt;
          &lt;div className="bg-gray-900 relative flex flex-wrap py-6 rounded shadow-md"&gt;
            &lt;div className="lg:w-1/2 px-6"&gt;
              &lt;h2 className="title-font font-semibold text-white tracking-widest text-xs"&gt;
                ADDRESS
              &lt;/h2&gt;
              &lt;p className="mt-1"&gt;
                97 Warren St. &lt;br /&gt;
                New York, NY 10007
              &lt;/p&gt;
            &lt;/div&gt;
            &lt;div className="lg:w-1/2 px-6 mt-4 lg:mt-0"&gt;
              &lt;h2 className="title-font font-semibold text-white tracking-widest text-xs"&gt;
                EMAIL
              &lt;/h2&gt;
              &lt;a className="text-indigo-400 leading-relaxed"&gt;
                reedbarger@email.com
              &lt;/a&gt;
              &lt;h2 className="title-font font-semibold text-white tracking-widest text-xs mt-4"&gt;
                PHONE
              &lt;/h2&gt;
              &lt;p className="leading-relaxed"&gt;123-456-7890&lt;/p&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;form
          netlify
          name="contact"
          className="lg:w-1/3 md:w-1/2 flex flex-col md:ml-auto w-full md:py-8 mt-8 md:mt-0"&gt;
          &lt;h2 className="text-white sm:text-4xl text-3xl mb-1 font-medium title-font"&gt;
            Hire Me
          &lt;/h2&gt;
          &lt;p className="leading-relaxed mb-5"&gt;
            Lorem ipsum dolor sit amet consectetur, adipisicing elit. Illum
            suscipit officia aspernatur veritatis. Asperiores, aliquid?
          &lt;/p&gt;
          &lt;div className="relative mb-4"&gt;
            &lt;label htmlFor="name" className="leading-7 text-sm text-gray-400"&gt;
              Name
            &lt;/label&gt;
            &lt;input
              type="text"
              id="name"
              name="name"
              className="w-full bg-gray-800 rounded border border-gray-700 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-900 text-base outline-none text-gray-100 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out"
            /&gt;
          &lt;/div&gt;
          &lt;div className="relative mb-4"&gt;
            &lt;label htmlFor="email" className="leading-7 text-sm text-gray-400"&gt;
              Email
            &lt;/label&gt;
            &lt;input
              type="email"
              id="email"
              name="email"
              className="w-full bg-gray-800 rounded border border-gray-700 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-900 text-base outline-none text-gray-100 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out"
            /&gt;
          &lt;/div&gt;
          &lt;div className="relative mb-4"&gt;
            &lt;label
              htmlFor="message"
              className="leading-7 text-sm text-gray-400"&gt;
              Message
            &lt;/label&gt;
            &lt;textarea
              id="message"
              name="message"
              className="w-full bg-gray-800 rounded border border-gray-700 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-900 h-32 text-base outline-none text-gray-100 py-1 px-3 resize-none leading-6 transition-colors duration-200 ease-in-out"
            /&gt;
          &lt;/div&gt;
          &lt;button
            type="submit"
            className="text-white bg-indigo-500 border-0 py-2 px-6 focus:outline-none hover:bg-indigo-600 rounded text-lg"&gt;
            Submit
          &lt;/button&gt;
        &lt;/form&gt;
      &lt;/div&gt;
    &lt;/section&gt;
  );
}</code></pre><h2 id="come-incorporare-una-posizione-di-google-maps"><strong>Come incorporare una posizione di Google Maps</strong></h2><p>A sinistra del modulo includeremo una mappa di Google incorporata in Google Maps di dove ci troviamo.</p><p>Possiamo farlo con l'aiuto di uno strumento online: embed-map.com. Tutto quello che devi fare è inserire la tua posizione e premere "Generate HTML code".</p><p>Nel riga che ci viene fornita, non copiare tutto il codice, solo l'attributo <code>src</code> dell'elemento <em>iframe</em>. Sostituiremo quel valore con il valore <code>src</code> predefinito che abbiamo nel nostro<em> iframe</em>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/06/portfolio-2.png" class="kg-image" alt="portafoglio-2" width="600" height="400" loading="lazy"></figure><p>Per inviare i dati dei moduli a Netlify, Netlify Forms deve riconoscere un modulo come HTML statico. Poiché la nostra app React è controllata da JavaScript e non è costituita da comune HTML, è necessario aggiungere un modulo nascosto al nostro file index.html nella cartella pubblica.</p><pre><code class="language-html">&lt;!-- public/index.html --&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;!-- contenuto di head saltato --&gt;
  &lt;/head&gt;
  &lt;body&gt;

  &lt;form name="contact" netlify netlify-honeypot="bot-field" hidden&gt;
    &lt;input type="text" name="name" /&gt;
    &lt;input type="email" name="email" /&gt;
    &lt;textarea name="message"&gt;&lt;/textarea&gt;
  &lt;/form&gt;
  
    &lt;noscript&gt;You need to enable JavaScript to run this app.&lt;/noscript&gt;
    &lt;div id="root"&gt;&lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><p>Abbiamo bisogno di nascondere questo modulo, perché non è necessario che venga visualizzato dall'utente ma solo da Netlify.</p><p>Gli daremo l'attributo <code>hidden</code> e &nbsp;l'attributo <code>name</code> che corrisponde al modulo JSX in Contact.js. Dobbiamo anche assegnargli l'attributo <code>netlify</code> in modo che Netlify Forms lo riconosca. Infine, dobbiamo includere tutti gli stessi campi di input del nostro modulo JSX: &nbsp;name, email, message.</p><h2 id="come-inviare-il-modulo-di-contatto"><strong>Come inviare il modulo di contatto</strong></h2><p>Una volta fatto, torneremo a Contact.js. Useremo JavaScript per inviare questo modulo.</p><p>Prima di tutto, creeremo uno stato dedicato per ciascuno dei valori digitati nel modulo per name, email, message:</p><pre><code class="language-js">const [name, setName] = React.useState("");
const [email, setEmail] = React.useState("");
const [message, setMessage] = React.useState("");</code></pre><p>Memorizziamo ciò che l'utente digita in ciascuno degli input nello <em>stato</em> con l'aiuto dell'handler &nbsp;<code>onChange</code>.</p><p>Per gestire l'invio del modulo, aggiungeremo il prop <code>onSubmit</code> ad esso. La funzione che verrà chiamata, <code>handleSubmit</code>, effettuerà una richiesta di post all'endpoint "/" con tutti i nostri dati del modulo.</p><p>Imposteremo le intestazioni della richiesta per indicare che stiamo inviando i dati del modulo. Per il corpo della richiesta, includeremo il nome del modulo e tutti i dati del modulo tramite le variabili di stato &nbsp;<code>name</code>, <code>email</code> e <code>message</code>.</p><pre><code class="language-js">// src/components/Contact.js

import React from "react";

export default function Contact() {
  const [name, setName] = React.useState("");
  const [email, setEmail] = React.useState("");
  const [message, setMessage] = React.useState("");

  function encode(data) {
    return Object.keys(data)
      .map(
        (key) =&gt; encodeURIComponent(key) + "=" + encodeURIComponent(data[key])
      )
      .join("&amp;");
  }

  function handleSubmit(e) {
    e.preventDefault();
    fetch("/", {
      method: "POST",
      headers: { "Content-Type": "application/x-www-form-urlencoded" },
      body: encode({ "form-name": "contact", name, email, message }),
    })
      .then(() =&gt; alert("Message sent!"))
      .catch((error) =&gt; alert(error));
  }

  return (
    &lt;section id="contact" className="relative"&gt;
      &lt;div className="container px-5 py-10 mx-auto flex sm:flex-nowrap flex-wrap"&gt;
        &lt;div className="lg:w-2/3 md:w-1/2 bg-gray-900 rounded-lg overflow-hidden sm:mr-10 p-10 flex items-end justify-start relative"&gt;
          &lt;iframe
            width="100%"
            height="100%"
            title="map"
            className="absolute inset-0"
            frameBorder={0}
            marginHeight={0}
            marginWidth={0}
            style={{ filter: "opacity(0.7)" }}
            src="https://www.google.com/maps/embed/v1/place?q=97+warren+st+new+york+city&amp;key=AIzaSyBFw0Qbyq9zTFTd-tUY6dZWTgaQzuU17R8"
          /&gt;
          &lt;div className="bg-gray-900 relative flex flex-wrap py-6 rounded shadow-md"&gt;
            &lt;div className="lg:w-1/2 px-6"&gt;
              &lt;h2 className="title-font font-semibold text-white tracking-widest text-xs"&gt;
                ADDRESS
              &lt;/h2&gt;
              &lt;p className="mt-1"&gt;
                97 Warren St. &lt;br /&gt;
                New York, NY 10007
              &lt;/p&gt;
            &lt;/div&gt;
            &lt;div className="lg:w-1/2 px-6 mt-4 lg:mt-0"&gt;
              &lt;h2 className="title-font font-semibold text-white tracking-widest text-xs"&gt;
                EMAIL
              &lt;/h2&gt;
              &lt;a className="text-indigo-400 leading-relaxed"&gt;
                reedbarger@email.com
              &lt;/a&gt;
              &lt;h2 className="title-font font-semibold text-white tracking-widest text-xs mt-4"&gt;
                PHONE
              &lt;/h2&gt;
              &lt;p className="leading-relaxed"&gt;123-456-7890&lt;/p&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;form
          netlify
          name="contact"
          onSubmit={handleSubmit}
          className="lg:w-1/3 md:w-1/2 flex flex-col md:ml-auto w-full md:py-8 mt-8 md:mt-0"&gt;
          &lt;h2 className="text-white sm:text-4xl text-3xl mb-1 font-medium title-font"&gt;
            Hire Me
          &lt;/h2&gt;
          &lt;p className="leading-relaxed mb-5"&gt;
            Lorem ipsum dolor sit amet consectetur, adipisicing elit. Illum
            suscipit officia aspernatur veritatis. Asperiores, aliquid?
          &lt;/p&gt;
          &lt;div className="relative mb-4"&gt;
            &lt;label htmlFor="name" className="leading-7 text-sm text-gray-400"&gt;
              Name
            &lt;/label&gt;
            &lt;input
              type="text"
              id="name"
              name="name"
              className="w-full bg-gray-800 rounded border border-gray-700 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-900 text-base outline-none text-gray-100 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out"
              onChange={(e) =&gt; setName(e.target.value)}
            /&gt;
          &lt;/div&gt;
          &lt;div className="relative mb-4"&gt;
            &lt;label htmlFor="email" className="leading-7 text-sm text-gray-400"&gt;
              Email
            &lt;/label&gt;
            &lt;input
              type="email"
              id="email"
              name="email"
              className="w-full bg-gray-800 rounded border border-gray-700 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-900 text-base outline-none text-gray-100 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out"
              onChange={(e) =&gt; setEmail(e.target.value)}
            /&gt;
          &lt;/div&gt;
          &lt;div className="relative mb-4"&gt;
            &lt;label
              htmlFor="message"
              className="leading-7 text-sm text-gray-400"&gt;
              Message
            &lt;/label&gt;
            &lt;textarea
              id="message"
              name="message"
              className="w-full bg-gray-800 rounded border border-gray-700 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-900 h-32 text-base outline-none text-gray-100 py-1 px-3 resize-none leading-6 transition-colors duration-200 ease-in-out"
              onChange={(e) =&gt; setMessage(e.target.value)}
            /&gt;
          &lt;/div&gt;
          &lt;button
            type="submit"
            className="text-white bg-indigo-500 border-0 py-2 px-6 focus:outline-none hover:bg-indigo-600 rounded text-lg"&gt;
            Submit
          &lt;/button&gt;
        &lt;/form&gt;
      &lt;/div&gt;
    &lt;/section&gt;
  );
}</code></pre><p>Come puoi vedere sopra, stiamo codificando i dati del modulo con una funzione speciale <code>encode</code> che vedi qui.</p><p>Se il messaggio viene inviato correttamente, visualizzeremo un avviso che dice "Message sent". Altrimenti, se si verifica un errore, avviseremo l'utente di tale situazione.</p><h2 id="come-costruire-il-componente-navbar"><strong>Come costruire il componente Navbar</strong></h2><p>L'ultimo passaggio è creare il nostro componente Navbar.</p><p>Vogliamo che questa barra di navigazione rimanga in cima alla nostra app su dispositivi di grandi dimensioni e non sia ferma sullo schermo su dispositivi mobili.</p><p>Inoltre, vogliamo includere collegamenti a ciascuna delle nostre sezioni importanti per il nostro progetto come capacità, testimonianze e il nostro modulo di contatto:</p><pre><code class="language-js">// src/components/Navbar.js

import { ArrowRightIcon } from "@heroicons/react/solid";
import React from "react";

export default function Navbar() {
  return (
    &lt;header className="bg-gray-800 md:sticky top-0 z-10"&gt;
      &lt;div className="container mx-auto flex flex-wrap p-5 flex-col md:flex-row items-center"&gt;
        &lt;a className="title-font font-medium text-white mb-4 md:mb-0"&gt;
          &lt;a href="#about" className="ml-3 text-xl"&gt;
            Reed Barger
          &lt;/a&gt;
        &lt;/a&gt;
        &lt;nav className="md:mr-auto md:ml-4 md:py-1 md:pl-4 md:border-l md:border-gray-700	flex flex-wrap items-center text-base justify-center"&gt;
          &lt;a href="#projects" className="mr-5 hover:text-white"&gt;
            Past Work
          &lt;/a&gt;
          &lt;a href="#skills" className="mr-5 hover:text-white"&gt;
            Skills
          &lt;/a&gt;
          &lt;a href="#testimonials" className="mr-5 hover:text-white"&gt;
            Testimonials
          &lt;/a&gt;
        &lt;/nav&gt;
        &lt;a
          href="#contact"
          className="inline-flex items-center bg-gray-800 border-0 py-1 px-3 focus:outline-none hover:bg-gray-700 rounded text-base mt-4 md:mt-0"&gt;
          Hire Me
          &lt;ArrowRightIcon className="w-4 h-4 ml-1" /&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/header&gt;
  );
}</code></pre><p>In che modo questo componente rimane in cima alla pagina su un dispositivo più grande? Con l'aiuto della classe <code>md:sticky</code> sul nostro elemento <code>header</code>.</p><p>Questa classe significa che avrà la regola di stile <code>position: sticky;</code> applicata a partire da un punto di interruzione di medie dimensioni (768px).</p><h2 id="come-distribuire-il-tuo-portfolio"><strong>Come distribuire il tuo Portfolio</strong></h2><p>Ora per rendere attivo il nostro portfolio, dobbiamo trasferire la nostra applicazione su GitHub.</p><p>Se non hai familiarità con Git e GitHub, sarebbe necessario un po' di tempo solo per imparare a come inviare il tuo codice al tuo account GitHub per la prima volta. È un'abilità essenziale che qualsiasi sviluppatore deve conoscere.</p><p>Dopo aver acquisito familiarità con questo processo, possiamo prima creare un nuovo repository Github. Successivamente, eseguiremo <code>git add .</code>, <code>git commit -m "Deploy"</code>, creando il nostro git remoto e quindi <code>git push -u origin master</code>.</p><p>Una volta che il nostro progetto è su GitHub, possiamo andare su Netlify e selezionare l'opzione "Choose Site from Git". Quindi sceglieremo GitHub per la nostra distribuzione continua e selezioneremo il repository GitHub in cui abbiamo appena inviato il nostro codice.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/06/portfolio-3-min.gif" class="kg-image" alt="portafoglio-3-min" width="600" height="400" loading="lazy"></figure><p>Dopodiché, il nostro progetto verrà pubblicato automaticamente sul web!</p><h2 id="cosa-viene-dopo"><strong>Cosa viene dopo</strong></h2><p>Congratulazioni! Ora hai un'app &nbsp;portfolio live sul Web che mostra tutti i tuoi progetti e le tue abilità ai potenziali datori di lavoro.</p><p>Il prossimo passo da fare sarebbe impostare un dominio personalizzato, preferibilmente con il tuo nome (es. <a href="https://reedbarger.com/">reedbarger.com</a> ). Poiché Netlify include un DNS, puoi facilmente configurare un dominio personalizzato con loro.</p><p>Cerca di aggiungere un blog alla tua app React per mostrare ancora di più la tua conoscenza da sviluppatore ai potenziali datori di lavoro.</p><p>Rendi il tuo portfolio personale un'espressione di te stesso e di ciò che ti appassiona come sviluppatore e avrai successo!</p><h2 id="vuoi-il-modo-n-1-per-imparare-react"><strong>Vuoi il modo n. 1 per imparare React?</strong></h2><p><strong><strong><a href="http://bit.ly/join-react-bootcamp">Il Bootcamp React</a></strong></strong> prende tutto ciò che dovresti sapere sull'apprendimento di React e lo raggruppa in un unico pacchetto completo, inclusi video, cheatsheet e bonus speciali.</p><p>Ottieni le informazioni privilegiate che <strong><strong>centinaia</strong></strong> di sviluppatori hanno già utilizzato per padroneggiare React, per trovare il lavoro dei loro sogni e assumere il controllo del loro futuro:</p><figure class="kg-card kg-image-card"><img src="https://reedbarger.nyc3.digitaloceanspaces.com/react-bootcamp-banner.png" class="kg-image" alt="Il Bootcamp di reazione" width="600" height="400" loading="lazy"></figure><p><br><em><em>Clicca qui per essere avvisato quando apre</em>.</em></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come creare un sito Web portfolio utilizzando HTML, CSS, JavaScript e Bootstrap 5 ]]>
                </title>
                <description>
                    <![CDATA[ Se sei uno sviluppatore web o un web designer, è essenziale per te avere un sito web portfolio. Ti consente di fornire informazioni su di te e mostrare il tuo miglior lavoro con le tue competenze ed esperienze pertinenti. In questo post del blog, discuterò alcuni dei vantaggi nella creazione ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-creare-un-sito-web-portfolio-utilizzando-html-css-javascript-e-bootstrap-5/</link>
                <guid isPermaLink="false">620be0cd88090d0542dcb808</guid>
                
                    <category>
                        <![CDATA[ Portfolio ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angelo Mirabelli ]]>
                </dc:creator>
                <pubDate>Thu, 24 Feb 2022 11:31:58 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/02/Untitled-design-6.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/how-to-create-a-portfolio-website-using-html-css-javascript-and-bootstrap/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Create a Portfolio Website Using HTML, CSS, JavaScript, and Bootstrap 5</a>
      </p><p>Se sei uno sviluppatore web o un web designer, è essenziale per te avere un sito web portfolio. Ti consente di fornire informazioni su di te e mostrare il tuo miglior lavoro con le tue competenze ed esperienze pertinenti.</p><p>In questo post del blog, discuterò alcuni dei vantaggi nella creazione di un sito Web portfolio. Quindi ti mostrerò come creare un bellissimo e responsivo sito Web portfolio per te stesso utilizzando HTML, CSS, JavaScript e Bootstrap versione 5.</p><h2 id="sommario"><strong>Sommario</strong></h2><ul><li><a href="#vantaggi-di-avere-un-sito-web-portfolio">Vantaggi di avere un sito web portfolio</a></li><li><a href="#cos-bootstrap">Cos'è Bootstrap</a> ?</li><li><a href="#struttura-delle-cartelle">Struttura delle cartelle</a></li><li><a href="#come-aggiungere-un-menu-di-navigazione-al-tuo-portfolio">Come aggiungere un menu di navigazione al tuo portfolio</a></li><li><a href="#come-aggiungere-un-intestazione-hero-al-portafoglio">Come aggiungere un'intestazione Hero al portfolio</a></li><li><a href="#come-creare-la-sezione-informazioni">Come creare la sezione Informazioni</a></li><li><a href="#come-realizzare-la-sezione-servizi">Come realizzare la sezione Servizi</a></li><li><a href="#come-aggiungere-un-colore-di-sfondo-scuro-alla-barra-di-navigazione-durante-lo-scorrimento-della-pagina">Come aggiungere un colore di sfondo scuro alla barra di navigazione durante lo scorrimento della pagina</a></li><li><a href="#come-costruire-la-sezione-portfolio">Come costruire la sezione Portfolio</a></li><li><a href="#come-costruire-la-sezione-contatti">Come costruire la sezione contatti</a></li><li><a href="#come-costruire-la-sezione-del-pi-di-pagina">Come costruire la sezione del piè di pagina</a></li><li><a href="#tocchi-finali">Tocchi finali</a></li><li><a href="#conclusione">Conclusione</a></li></ul><h2 id="vantaggi-di-avere-un-sito-web-portfolio"><strong>Vantaggi di avere un sito Web portfolio</strong></h2><p>Avere un sito Web portfolio ha diversi vantaggi, tra cui:</p><ul><li>fornisce una vetrina per mostrare le tue abilità ed esperienze più rilevanti</li><li>mostra la tua personalità</li><li>consente ai responsabili delle assunzioni di trovare te invece di contattarli tu</li><li>sei facilmente ricercabile su motori di ricerca come Google</li></ul><h2 id="cos-bootstrap"><strong>Cos'è Bootstrap?</strong></h2><p>Bootstrap è un popolare framework CSS front-end che viene utilizzato per sviluppare siti Web reattivi e ottimizzati per i dispositivi mobili. L'ultima versione di Bootstrap è la versione 5. Puoi trovare la documentazione ufficiale di Bootstrap 5 <a href="https://getbootstrap.com/docs/5.0/getting-started/introduction/">qui</a> .</p><h2 id="struttura-delle-cartelle"><strong>Struttura delle cartelle</strong></h2><p>Inizieremo ora a lavorare sulla creazione del sito Web del portfolio.</p><p>Innanzitutto, creiamo la struttura delle cartelle. Puoi ottenere i file di avvio del progetto su <a href="https://github.com/SampurnaC/portfolio_website_fcc/tree/portfolio-starter-files">GitHub</a> . Inoltre, puoi cliccare <a href="https://brad-portfolio.netlify.app/">qui</a> per vedere la demo dal vivo di questo progetto.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/Screenshot-from-2022-01-22-19-10-25.png" class="kg-image" alt="Screenshot-dal-25-01-2022-19-10-25" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Struttura della cartella del progetto</font></font></figcaption></figure><p>La struttura delle cartelle è composta dai file index.html, style.css e script.js e da una cartella images. Scriveremo tutto il CSS nel file style.css e il JavaScript nel file script.js .</p><p>Nel file index.html, puoi vedere il codice standard HTML con il CDN di Bootstrap , <a href="https://fontawesome.com/">font awesome kit</a> e il collegamento ai file esterni CSS e JavaScript.</p><p>Qui, il file script.js viene caricato dopo aver caricato tutto il codice HTML.</p><h2 id="come-aggiungere-un-menu-di-navigazione-al-tuo-portfolio"><strong>Come aggiungere un menu di navigazione al tuo portfolio</strong></h2><p>Ora, lavoriamo per aggiungere un menu di navigazione nel nostro progetto. Aiuterà i visitatori a trovare le informazioni pertinenti che stanno cercando.</p><p>Useremo la classe <code>fixed-top</code> di Bootstrap nell'elemento nav per mantenere la barra di navigazione nella parte superiore della pagina. La barra di navigazione ha anche una classe <code>navbar-brand</code> in cui manteniamo il nome della persona come marchio.</p><pre><code class="language-html">&lt;nav class="navbar navbar-expand-lg fixed-top navbarScroll"&gt;
        &lt;div class="container"&gt;
            &lt;a class="navbar-brand" href="#"&gt;Brad&lt;/a&gt;
            &lt;button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"&gt;
                &lt;span class="navbar-toggler-icon"&gt;&lt;/span&gt;
            &lt;/button&gt;
            &lt;div class="collapse navbar-collapse" id="navbarSupportedContent"&gt;
                &lt;ul class="navbar-nav ms-auto"&gt;
                    &lt;li class="nav-item active"&gt;
                        &lt;a class="nav-link" href="#home"&gt;Home&lt;/a&gt;
                    &lt;/li&gt;
                    &lt;li class="nav-item"&gt;
                        &lt;a class="nav-link" href="#about"&gt;About&lt;/a&gt;
                    &lt;/li&gt;
                    &lt;li class="nav-item"&gt;
                        &lt;a class="nav-link" href="#services"&gt;Services&lt;/a&gt;
                    &lt;/li&gt;
                    &lt;li class="nav-item"&gt;
                        &lt;a class="nav-link" href="#portfolio"&gt;Portfolio&lt;/a&gt;
                    &lt;/li&gt;
                    &lt;li class="nav-item"&gt;
                        &lt;a class="nav-link" href="#contact"&gt;Contact&lt;/a&gt;
                    &lt;/li&gt;
                &lt;/ul&gt;
                
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/nav&gt;</code></pre><p>La barra di navigazione ha le seguenti caratteristiche:</p><ul><li>Ha sei collegamenti: home, about, services, portfolio, contact e footer</li><li>Ha uno sfondo trasparente. Aggiungeremo uno sfondo scuro sullo scorrimento della pagina in un secondo momento.</li><li>Si può aprire e chiudere su dispositivi più piccoli</li></ul><p>Puoi trovare maggiori dettagli sulle funzionalità della barra di navigazione di Bootstrap 5 <a href="https://getbootstrap.com/docs/5.0/components/navbar/">qui</a> .</p><p>Tuttavia, la barra di navigazione ha un problema durante lo scorrimento. È completamente trasparente in tutta la pagina cosa che causa problemi di leggibilità. Risolveremo questo problema dopo aver completato la <a href="#come-realizzare-la-sezione-servizi">sezione Servizi</a> per farti comprendere correttamente il problema.</p><h2 id="come-aggiungere-un-intestazione-hero-al-portafoglio"><strong>Come aggiungere un'intestazione Hero al portafoglio</strong></h2><p>Ora aggiungeremo un'immagine <em>hero</em> con del testo al centro. Un'immagine <em>hero</em> è un termine di web design che si riferisce a un'immagine a larghezza intera di alta qualità che mostra gli obiettivi principali dell'azienda o dell'individuo, un'immagine rappresentativa, una foto o altri elementi accattivanti. Aiuta ad attirare utenti sul tuo sito.</p><pre><code class="language-html"> &lt;!-- main banner --&gt;
    &lt;section class="bgimage" id="home"&gt;
        &lt;div class="container-fluid"&gt;
            &lt;div class="row"&gt;
            &lt;div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 hero-text"&gt;
                &lt;h2 class="hero_title"&gt;Hi, it's me Brad&lt;/h2&gt;
                &lt;p class="hero_desc"&gt;I am a professional freelancer in New York City&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;</code></pre><p>Inoltre, aggiungiamo il CSS per il codice sopra nel file style.css:</p><pre><code class="language-css">/* hero background image */
.bgimage {
    height:100vh;
    background: url('images/heroImage.jpeg');
    background-size:cover;
    position:relative;
}
/* text css above hero image*/
.hero_title {
    font-size: 4.5rem;
}
.hero_desc {
    font-size: 2rem;
}
.hero-text {
    text-align: center;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: white;
}</code></pre><p>Qui possiamo vedere che la sezione ha un id chiamato <code>bgimage</code> che è responsabile della visualizzazione dell'immagine hero di sfondo a tutta larghezza. Visualizza anche del testo al centro, sopra l'immagine di sfondo con l'aiuto del CSS di sopra.</p><p>Ecco come appare il sito finora con la barra di navigazione e la sezione hero:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/Screenshot-from-2022-01-25-10-13-25.png" class="kg-image" alt="Screenshot del 25-01-2022-25-10-13-25" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Immagine dell'eroe con Navbar</font></font></figcaption></figure><h2 id="come-creare-la-sezione-informazioni"><strong>Come creare la sezione Informazioni</strong></h2><p>La pagina Informazioni contiene informazioni importanti su di te e sul tuo background. I visitatori del tuo sito portfolio possono conoscerti attraverso le informazioni che fornisci in questa pagina.</p><p>Aggiungeremo un'immagine sul lato sinistro della riga e sul lato destro aggiungeremo la nostra rapida introduzione a questa sezione. Dimostriamolo usando il codice qui sotto:</p><pre><code class="language-html">&lt;!-- about section--&gt;
    &lt;section id="about"&gt;
        &lt;div class="container mt-4 pt-4"&gt;
            &lt;h1 class="text-center"&gt;About Me&lt;/h1&gt;
            &lt;div class="row mt-4"&gt;
                &lt;div class="col-lg-4"&gt;
                    &lt;img src="images/about.jpeg" class= "imageAboutPage" alt=""&gt;
                &lt;/div&gt;

                &lt;div class="col-lg-8"&gt;
                    &lt;p&gt; Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged
                        
                    &lt;/p&gt;
                    &lt;div class="row mt-3"&gt;
                        &lt;div class="col-md-6"&gt;
                            &lt;ul&gt;
                                &lt;li&gt;Name: David Parker&lt;/li&gt;
                                &lt;li&gt;Age: 28&lt;/li&gt;
                                &lt;li&gt;Occupation: Web Developer&lt;/li&gt;

                            &lt;/ul&gt;
                        &lt;/div&gt;
                        &lt;div class="col-md-6"&gt;
                            &lt;ul&gt;
                                &lt;li&gt;Name: David Parker&lt;/li&gt;
                                &lt;li&gt;Age: 28&lt;/li&gt;
                                &lt;li&gt;Occupation: Web Developer&lt;/li&gt;

                            &lt;/ul&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class="row mt-3"&gt;
                        &lt;p&gt; Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
                            Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
                        &lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
    &lt;/section&gt;
</code></pre><p>Aggiungiamo alcuni CSS per l'immagine sul lato sinistro:</p><pre><code class="language-css">/* about section image css */
.imageAboutPage {
    width: 100%;
}</code></pre><p>Questo creerà una sezione <em>about</em>. Puoi modificare il contenuto in base ai tuoi casi d'uso. Abbiamo aggiunto le classi denominate <code>mt-4</code> e <code>pt-4</code> con classe <code>container</code> che imposterà sia il margine superiore che il padding superiore su 1.5 rem.</p><p>La riga ha due colonne. Una ha la classe <code>col-lg-4</code> per visualizzare l'immagine che occuperà la colonna di sinistra con una griglia in 4 parti per schermi di grandi dimensioni.</p><p>All'altra colonna viene assegnata una classe <code>col-lg-8</code> che occuperà la colonna di destra con una griglia a 8 parti per schermi più grandi. Per schermi medi e piccoli si sovrapporranno tra loro come possiamo vedere nel file GIF sottostante:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/about.gif" class="kg-image" alt="di" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Informazioni sulla sezione</font></font></figcaption></figure><h2 id="come-realizzare-la-sezione-servizi"><strong>Come realizzare la sezione servizi</strong></h2><p>Questa sezione aiuta a trasformare i visitatori del sito Web in potenziali clienti. Qui è dove spieghi quali servizi specifici offri e in quale <a href="https://www.freecodecamp.org/news/web-design-niche/">nicchia</a> essi si posizionano.</p><p>Aggiungiamo il codice per questa sezione e lo descriviamo di seguito:</p><pre><code class="language-html">&lt;!-- services section--&gt;
    &lt;section id="services"&gt;
        &lt;div class="container"&gt;
            &lt;h1 class="text-center"&gt;Services&lt;/h1&gt;
            &lt;div class="row"&gt;
                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card servicesText"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;i class="fas servicesIcon fa-clock"&gt;&lt;/i&gt;
                            &lt;h4 class="card-title mt-3"&gt;Website Development&lt;/h4&gt;
                            &lt;p class="card-text mt-3"&gt;Some quick example text to build on the card title and make up the bulk of the card's content.
                                Some quick example text to build on the card title and make up the bulk of the card's content.
                            &lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;  
                &lt;/div&gt;
                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card servicesText"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;i class='fas servicesIcon fa-layer-group'&gt;&lt;/i&gt;
                            &lt;h4 class="card-title mt-3"&gt;Website Design&lt;/h4&gt;
                            &lt;p class="card-text mt-3"&gt;Some quick example text to build on the card title and make up the bulk of the card's content.
                                Some quick example text to build on the card title and make up the bulk of the card's content.
                            &lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;  
                &lt;/div&gt;

                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card servicesText"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;i class='far servicesIcon fa-check-circle'&gt;&lt;/i&gt;
                            &lt;h4 class="card-title mt-3"&gt;Website Deployment&lt;/h4&gt;
                            &lt;p class="card-text mt-3"&gt;Some quick example text to build on the card title and make up the bulk of the card's content.
                                Some quick example text to build on the card title and make up the bulk of the card's content.
                            &lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;  
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class="row"&gt;
                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card servicesText"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;i class='fas servicesIcon fa-search'&gt;&lt;/i&gt;
                            &lt;h4 class="card-title mt-3"&gt;SEO&lt;/h4&gt;
                            &lt;p class="card-text mt-3"&gt;Some quick example text to build on the card title and make up the bulk of the card's content.
                                Some quick example text to build on the card title and make up the bulk of the card's content.
                            &lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;  
                &lt;/div&gt;

                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card servicesText"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;i class='fas servicesIcon fa-shield-alt'&gt;&lt;/i&gt;
                            &lt;h4 class="card-title mt-3"&gt;DevOps&lt;/h4&gt;
                            &lt;p class="card-text mt-3"&gt;Some quick example text to build on the card title and make up the bulk of the card's content.
                                Some quick example text to build on the card title and make up the bulk of the card's content.
                            &lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;  
                &lt;/div&gt;

                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card servicesText"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;i class='fas servicesIcon fa-wrench'&gt;&lt;/i&gt;
                            &lt;h4 class="card-title mt-3"&gt;QA&lt;/h4&gt;
                            &lt;p class="card-text mt-3"&gt;Some quick example text to build on the card title and make up the bulk of the card's content.
                                Some quick example text to build on the card title and make up the bulk of the card's content.
                            &lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;  
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;</code></pre><p>Poiché questo sito Web è rivolto a sviluppatori e Web designer, ho incluso alcuni dei servizi che uno sviluppatore o un Web designer potrebbe offrire.</p><p>Abbiamo utilizzato le schede bootstrap per visualizzare i servizi. La nostra sezione servizi ha 2 righe e 3 colonne ciascuna. Per schermi di grandi dimensioni con una larghezza maggiore o uguale a 992px, vengono visualizzate tre schede per riga. Per gli schermi di larghezza inferiore a 992px, viene visualizzata solo una scheda per riga.</p><p>Puoi trovare ulteriori informazioni sui punti di interruzione bootstrap <a href="https://getbootstrap.com/docs/5.0/layout/breakpoints/">qui</a> .</p><p>Inoltre, ci sono dei caratteri aggiunti in ogni scheda per farli sembrare migliori.</p><p>Senza CSS, la sezione dei servizi sarebbe simile a questa:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/01/Screenshot-from-2022-01-23-14-01-00.png" class="kg-image" alt="Screenshot-dal-2022-01-23-14-01-00" width="600" height="400" loading="lazy"></figure><p>Quindi, aggiungiamo un po' di CSS per aumentare la dimensione del carattere, la dimensione dell'icona, l'altezza della scheda e aggiungere un po' di colore extra quando un utente passa con il mouse su una scheda.</p><pre><code class="language-css">/* services section css */
.servicesText.card {
    height: 280px;
    cursor: pointer;
  }
.servicesIcon {
    font-size: 36px;
    text-align: center;
    width: 100%;
}
.card-title {
    text-align: center;
}
.card:hover .servicesIcon {
    color: #008000;
}
.servicesText:hover {
    border: 1px solid #008000;
}</code></pre><p>Ecco come appare ora la nostra sezione servizi:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/services.gif" class="kg-image" alt="Servizi" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Servizi&nbsp;</font></font></figcaption></figure><h2 id="come-aggiungere-un-colore-di-sfondo-scuro-alla-barra-di-navigazione-durante-lo-scorrimento-della-pagina"><strong>Come aggiungere un colore di sfondo scuro alla barra di navigazione durante lo scorrimento della pagina</strong></h2><p>Se esamini correttamente la gif sopra, vedrai che la barra di navigazione è trasparente in tutta la pagina, il che causa problemi di leggibilità. Quindi lavoriamo per risolvere questo problema.</p><p>Scriveremo alcuni script JavaScript e CSS per risolvere questo problema. Aggiungeremo una classe <code>navbarDark</code> per mostrare un colore di sfondo scuro per la barra di navigazione sullo scorrimento della pagina.</p><p>Per questo dobbiamo andare al file script.js e aggiungere il seguente codice:</p><pre><code class="language-javascript">// add class navbarDark on navbar scroll
const header = document.querySelector('.navbar');

window.onscroll = function() {
    var top = window.scrollY;
    if(top &gt;=100) {
        header.classList.add('navbarDark');
    }
    else {
        header.classList.remove('navbarDark');
    }
}</code></pre><p>Ora, analizziamo il codice sopra:</p><ul><li><em>header</em> contiene il valore dell'elemento nav poiché il metodo querySelector restituisce il primo elemento che corrisponde al selettore CSS (che in questo caso è <code>.navbar</code>).</li><li><code>window.onscroll</code> si attiva quando si verifica l'evento di scorrimento.</li><li><code>window.scrollY</code> restituisce il numero di pixel di scorrimento verticale del documento e il suo valore viene assegnato a una variabile denominata <code>top</code>.</li><li>Se il valore di <code>top</code> è maggiore o uguale a 100, aggiunge una classe &nbsp;<code>navbarDark</code> a header.</li></ul><p>Aggiungiamo rapidamente il CSS per la classe<code>navbarDark</code>. Per questo, vai al tuo file style.css e aggiungi il seguente codice:</p><pre><code class="language-css">/* display background color black on navbar scroll */
.navbarScroll.navbarDark {
    background-color: black;
}</code></pre><p>Ecco come ora apparirà la barra di navigazione:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/navbar.gif" class="kg-image" alt="barra di navigazione" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Colore di sfondo scuro sulla barra di navigazione sullo scorrimento della pagina</font></font></figcaption></figure><h2 id="come-costruire-la-sezione-portfolio"><strong>Come costruire la sezione Portfolio</strong></h2><p>Questa sezione include il tuo lavoro migliore. Le persone possono vedere cosa sei in grado di fare e mostrare un buon lavoro eseguito in passato attirerà sicuramente più potenziali clienti o reclutatori. Quindi aggiungi solo il tuo lavoro migliore in questa sezione.</p><p>Utilizzeremo le schede Bootstrap per visualizzare i progetti di portfolio. Ci saranno 2 righe e ogni riga avrà 3 colonne di schede.</p><p>Questo sarà il codice per la sezione portfolio:</p><pre><code class="language-html">&lt;!-- portfolio section--&gt;
    &lt;section id="portfolio"&gt;
        &lt;div class="container mt-3"&gt;
            &lt;h1 class="text-center"&gt;Portfolio&lt;/h1&gt;
            &lt;div class="row"&gt;
                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card"&gt;
                        &lt;img class="card-img-top" src="images/portfolioImage1.jpg" alt="Card image" style="width:100%"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;h4 class="card-title"&gt;YouTube Clone&lt;/h4&gt;
                            &lt;p class="card-text"&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&lt;/p&gt;
                            &lt;div class="text-center"&gt;
                                &lt;a href="#" class="btn btn-success"&gt;Link&lt;/a&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card portfolioContent"&gt;
                        &lt;img class="card-img-top" src="images/portfolioImage4.jpg" alt="Card image" style="width:100%"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;h4 class="card-title"&gt;Quiz App&lt;/h4&gt;
                            &lt;p class="card-text"&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&lt;/p&gt;
                            &lt;div class="text-center"&gt;
                                &lt;a href="#" class="btn btn-success"&gt;Link&lt;/a&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card portfolioContent"&gt;
                        &lt;img class="card-img-top" src="images/portfolioImage3.jpg" alt="Card image" style="width:100%"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;h4 class="card-title"&gt;Product Landing Page&lt;/h4&gt;
                            &lt;p class="card-text"&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&lt;/p&gt;
                            &lt;div class="text-center"&gt;
                                &lt;a href="#" class="btn btn-success"&gt;Link&lt;/a&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;br&gt;
            &lt;div class="row"&gt;
                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card portfolioContent"&gt;
                        &lt;img class="card-img-top" src="images/portfolioImage4.jpg" alt="Card image" style="width:100%"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;h4 class="card-title"&gt;Messaging Service&lt;/h4&gt;
                            &lt;p class="card-text"&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&lt;/p&gt;
                            &lt;div class="text-center"&gt;
                                &lt;a href="#" class="btn btn-success"&gt;Link&lt;/a&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card portfolioContent"&gt;
                        &lt;img class="card-img-top" src="images/portfolioImage1.jpg" alt="Card image" style="width:100%"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;h4 class="card-title"&gt;Twitter Clone&lt;/h4&gt;
                            &lt;p class="card-text"&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&lt;/p&gt;
                            &lt;div class="text-center"&gt;
                                &lt;a href="#" class="btn btn-success"&gt;Link&lt;/a&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class="col-lg-4 mt-4"&gt;
                    &lt;div class="card portfolioContent"&gt;
                        &lt;img class="card-img-top" src="images/portfolioImage4.jpg" alt="Card image" style="width:100%"&gt;
                        &lt;div class="card-body"&gt;
                            &lt;h4 class="card-title"&gt;Blog App&lt;/h4&gt;
                            &lt;p class="card-text"&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&lt;/p&gt;
                            &lt;div class="text-center"&gt;
                                &lt;a href="#" class="btn btn-success"&gt;Link&lt;/a&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
    &lt;/section&gt;</code></pre><p>Ogni scheda ha un'immagine, un titolo, una descrizione e un collegamento ai progetti. Vengono visualizzate tre schede per riga per schermi di grandi dimensioni con punti di interruzione in larghezza ≥ 992 px , ma per schermi di larghezza &lt; 992 px viene visualizzata solo una singola scheda per riga.</p><p>La GIF qui sotto mostra come appare ora la sezione portfolio:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/portfolio.gif" class="kg-image" alt="portafoglio" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Portafoglio</font></font></figcaption></figure><h2 id="come-costruire-la-sezione-contatti"><strong>Come costruire la sezione contatti</strong></h2><p>Dovresti includere le tue informazioni di contatto in questa sezione in modo che i visitatori possano contattarti se vogliono assumerti.</p><p>La nostra sezione contatti includerà 2 colonne in un'unica riga: Google maps per la posizione e un modulo di contatto.</p><p>Per incorporare la mappa di Google, devi seguire questi passaggi:</p><ul><li>vai su <a href="https://www.embed-map.com/">https://www.embed-map.com</a></li><li>inserisci la tua posizione</li><li>fai clic sul pulsante <strong><strong>Genera codice HTML</strong></strong> che fornirà il codice HTML di Google Map</li></ul><p>Il nostro codice sarà simile a questo con il modulo di contatto incluso:</p><pre><code class="language-html">&lt;!-- contact section--&gt;
    &lt;section id="contact"&gt;
        &lt;div class="container mt-3 contactContent"&gt;
            &lt;h1 class="text-center"&gt;Contact Me&lt;/h1&gt;

            &lt;div class="row mt-4"&gt;
                &lt;div class="col-lg-6"&gt;
                    &lt;!-- to edit google map goto https://www.embed-map.com type your location, generate html code and copy the html  --&gt;
                    &lt;div style="max-width:100%;overflow:hidden;color:red;width:500px;height:500px;"&gt;
                        &lt;div id="embedmap-canvas" style="height:100%; width:100%;max-width:100%;"&gt;
                            &lt;iframe style="height:100%;width:100%;border:0;" frameborder="0" src="https://www.google.com/maps/embed/v1/place?q=new+york&amp;key=AIzaSyBFw0Qbyq9zTFTd-tUY6dZWTgaQzuU17R8"&gt;
                            &lt;/iframe&gt;
                        &lt;/div&gt;
                        &lt;a class="googlemaps-html" href="https://www.embed-map.com" id="get-data-forembedmap"&gt;https://www.embed-map.com&lt;/a&gt;
                        &lt;style&gt;#embedmap-canvas img{max-width:none!important;background:none!important;font-size: inherit;font-weight:inherit;}
                        &lt;/style&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class="col-lg-6"&gt;
                    &lt;!-- form fields --&gt;
                    &lt;form&gt;
                        &lt;input type="text" class="form-control form-control-lg" placeholder="Name"&gt;
                        &lt;input type="email" class="form-control mt-3" placeholder="Email"&gt;
                        &lt;input type="text" class="form-control mt-3" placeholder="Subject"&gt;
                        &lt;div class="mb-3 mt-3"&gt;
                            &lt;textarea class="form-control" rows="5" id="comment" name="text" placeholder="Project Details"&gt;&lt;/textarea&gt;
                        &lt;/div&gt;
                    &lt;/form&gt;
                    &lt;button type="button" class="btn btn-success mt-3"&gt;Contact Me&lt;/button&gt;
                    
                &lt;/div&gt;

            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;</code></pre><p>La prima colonna visualizzerà la mappa di Google e la successiva visualizzerà il modulo di contatto.</p><p>Il modulo di contatto ha quattro diversi campi: nome, e-mail, oggetto e dettagli del progetto. Il modulo non invia la richiesta in autonomia. Dovrai collegarlo a un qualsiasi codice di back-end. Oppure per questo puoi semplicemente usare <a href="https://www.netlify.com/products/forms/">Netlify Form</a> o <a href="https://formspree.io/">Formspree</a><strong><strong> </strong></strong>.</p><p>Ecco come apparirà la sezione contatti:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/Screenshot-from-2022-01-25-11-31-56.png" class="kg-image" alt="Screenshot-dal-2022-01-25-11-31-56" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Sezione Contatti</font></font></figcaption></figure><h2 id="come-costruire-la-sezione-del-pi-di-pagina"><strong>Come costruire la sezione del piè di pagina</strong></h2><p>Ora siamo arrivati ​​all'ultima sezione di questo post, che è la sezione del piè di pagina. Abbiamo già aggiunto un collegamento CDN al font Awesome nel file index.html.</p><p>Nel footer, aggiungeremo collegamenti ai nostri social media tramite icone e caratteri awesome.</p><pre><code class="language-html"> &lt;!-- footer section--&gt;
    &lt;footer id="footer"&gt;
        &lt;div class="container-fluid"&gt;
            &lt;!-- social media icons --&gt;
            &lt;div class="social-icons mt-4"&gt;
                &lt;a href="https://www.facebook.com/" target="_blank"&gt;&lt;i class="fab fa-facebook"&gt;&lt;/i&gt;&lt;/a&gt;
                &lt;a href="https://www.instagram.com/" target="_blank"&gt;&lt;i class="fab fa-instagram"&gt;&lt;/i&gt;&lt;/a&gt;
                &lt;a href="https://www.twitter.com/" target="_blank"&gt;&lt;i class="fab fa-twitter"&gt;&lt;/i&gt;&lt;/a&gt;
                &lt;a href="https://www.linkedin.com/" target="_blank"&gt;&lt;i class="fab fa-linkedin"&gt;&lt;/i&gt;&lt;/a&gt;
                &lt;a href="https://www.twitch.tv/" target="_blank"&gt;&lt;i class="fab fa-twitch"&gt;&lt;/i&gt;&lt;/a&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/footer&gt;</code></pre><p>Senza il CSS, il nostro footer sarà simile a questo:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/Screenshot-from-2022-01-23-17-56-37.png" class="kg-image" alt="Screenshot-dal-2022-01-23-17-56-37" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">piè di pagina senza stile</font></font></figcaption></figure><p>Quindi aggiungiamo uno stile al piè di pagina con questo codice:</p><pre><code class="language-css">/* social media icons styling */
.social-icons {
    font-size: 36px;
    cursor: pointer;
}
.fa-facebook:hover,.fa-instagram:hover,.fa-twitter:hover,.fa-linkedin:hover, .fa-twitch:hover {
    color: #008000;
}
.fab {
    color: #000000;
}
/* footer styling */
#footer {
    background-color: #808080;
    text-align: center;
}</code></pre><p>Le icone sono ora visualizzate al centro con un effetto al passaggio del mouse che possiamo vedere nel file GIF sottostante.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/01/footer.gif" class="kg-image" alt="piè di pagina" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Piè di pagina</font></font></figcaption></figure><h2 id="tocchi-finali"><strong>Tocchi finali</strong></h2><p>Per aggiungere un po' di spazio tra tutte le sezioni, aggiungiamo un po' di stile in più:</p><pre><code class="language-css">/* spacing on all sections */
#about, #services, #portfolio, #contact {
    margin-top: 4rem;
    padding-top: 4rem;
}
#contact {
    padding-bottom: 4rem;
}</code></pre><p>Ora abbiamo finito di creare il nostro sito Web portfolio.</p><p>Puoi trovare il codice sorgente completo di questo progetto <a href="https://github.com/SampurnaC/portfolio_website_fcc/tree/master">qui</a> .</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Ecco come puoi creare un sito Web portfolio completo e responsivo utilizzando HTML, CSS, JavaScript e Bootstrap 5 .</p><p>In questo post abbiamo visto alcuni dei vantaggi nella creazione di un sito Web portfolio per sviluppatori Web e designer. Abbiamo diviso l'intero sito Web in diverse sezioni e di ognuna ne abbiamo discusso individualmente mentre lo costruivamo.</p><p>Puoi personalizzare questo sito Web in base ai tuoi casi d'uso.</p><p>Spero che tu abbia trovato utile questo post.</p><p>Buona codifica!</p><p>Puoi trovarmi su <a href="https://twitter.com/saam_codes">Twitter</a> per contenuti quotidiani sullo sviluppo Web.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
