Come costruire un sito Web: da Photoshop al codice Html5 e Css3

By Andrea Marchetti
@marchetti_design

Come costruire un sito Web: da Photoshop al codice Html5 e Css3

Oggi proseguiamo il discorso, cominciato nell’ articolo precedente, nel quale spieghiamo quali sono le fasi di sviluppo di un Sito Web. Dopo aver disegnato il layout in photoshop bisogna scrivere il codice html necessario.
Cominceremo scrivendo il codice html della testata “header” e andremo avanti componendo le varie parti della pagina “Slider, Box e Footer” con il classico approccio “Top Down” dall’alto verso il basso. Nel costruire il codice della pagina utilizzeremo delle immagini ricavate dal nostro file Photoshop per realizzare particolari del layout che non si possono ottenere con il solo codice. Il codice che scriveremo è HTML5 e utilizza i CSS3.

Step 1

Come prima cosa creiamo una cartella “mio sito”, dentro questa creiamo altre 3 cartelle e le chiamiamo rispettivamente:

– img (conterrà le immagini)

– css (conterrà i fogli di stile)

– js (conterrà i file javascript)

Sempre nella cartella “mio sito”, creiamo un file html e lo chiamiamo index.html. Apriamo index e impostiamo l’html di base. Il codice che utilizziamo è html5 . Dando un’ occhiata al layout che abbiamo disegnato possiamo scomporre la nostra pagina in più blocchi. Avendo tenuto conto in fase di design della realizzazione del codice possiamo scomporre il layout facilmente in 5 blocchi (Header, Nav, Slider, Content e Footer).

Realizziamo il codice Html di base di questi elementi:

<body>

<header id="header">

<nav id="nav">

</nav>

</header>

<section id="slider">

</section>

<section id="content">

</section>

<footer id="footer">

</footer>

</body>

Fatto questo, inseriamo nel tag head il link che richiama il file stile.css, ovvero il foglio di stile css del nostro sito, attraverso il seguente codice:


<link rel="stylesheet" href="stile.css" type="text/css" media="screen" />

Step 2

Apriamo il file stile.css e definiamo lo stile dei cinque elementi che abbiamo definito nell’html.

L’header, lo slider e il footer devono essere larghi l’intera larghezza della pagina e quindi impostiamo la propieta width a 100%. Il content e il nav hanno invece larghezza fissa. Impostiamo quindi:


/*** Header ***/
#header {
width:100%;
min-height:90px;
background:red;
}

/*** Nav ***/
#nav {
width:960px;
min-height:80px;
background:blue;
color:#fff;
margin:0 auto;
}

/*** Slider ***/
#slider {
width:100%;
min-height:350px;
background:green;
}

/*** Content ***/
#content {
margin:0 auto;
width:960px;
min-height:200px;
background:#f0f;
}

/*** Footer ***/
#footer {
clear:both;
width:100%;
min-height:100px;
background:#ff0;
color:#666;
}

Dovremmo ottenere qualcosa di questo tipo:

Le altezze impostate ora dal foglio di stile non saranno quelle definitive, ma possiamo vedere lo scheletro della nostra pagina in tutto il suo splendore.

Andremo ora a sviluppare ogni sezione singolarmente ampliando il codice di ogni blocco e creando i contenuti veri e propri.

Step 3

Nel nostro design realizzato in photoshop abbiamo posizionato lo slider sotto l’header. Il colore dell’header ha una trasparenza impostata all’ 80%, quindi le immagini nello slider sotto l’header scorreranno creando un effetto in trasparenza grazioso e accattivante.

Per realizzare la sovrapposizione impostiamo nel file stile.css tutti i blocchi come position:relative. Successivamente impostiamo uno z-index maggiore al blocco header rispetto al blocco slider il quale avrà un margine superiore negativo. Il margine superiore sposta in alto il blocco slider che scorre sotto l’header. Ecco il codice:


/*** Slider ***/
#slider {
width:100%;
min-height: 350px;
background:green;
position: relative;
margin-top:-90px;
z-index: 10;
}

Rispetto a prima vediamo lo slider che ci appare più piccolo mentre in realtà la parte superiore è sotto l’header.

Impostiamo ora il colore dell’header. Apriamo il file photoshop, selezioniamo il livello header clicchiamo con il tasto destro e selezioniamo covert to smartobject. Ci apparirà un icona (quella degli smartobject) nel livello trasformato. Cliccando l’icona smartobject si apre una finestra con il livello, clicchiamo M e creiamo una selezione verticale larga due o tre pixel che comprenda tutta l’altezza dell’ elemento compresa la sfumatura.

Selezioniamo poi nel menu image -> crop e ritagliamo la nostra immagine di sfondo che salviamo facendo file -> save for web. Nel pannello che si apre selezioniamo png 24 e salviamo l’immagine nella nostra cartella img con il nome di bg-header.png.

(Questo è il procedimento di salvataggio che va utlizzato per ottimizzare le immagini per web file -> save for web)

Ora tramite i Css impostiamo bg-header.png come immagine di sfondo del blocco header. Utilizziamo la propieta repeat-x per far ripetere l’immagine orizzontalmente. Cosi facendo il background si adatterà a qualsiasi larghezza.

Step 4

Impostiamo un contenitore del logo e del menu  di navigazione largo 960px centrato dentro l’header e riaggiorniamo la larghezza del nav a 800px:

HTML

<div id="nav-container">

<nav id="nav">

</nav>

</div>

Css


[…]
#nav-container{
width:960px;
margin:0 auto;
}
/*** Nav ***/
#nav {
width:800px;
min-height: 80px;
background:blue;
color:#fff;
margin:0 auto;
}

Step 5

Ora da photoshop creiamo uno smartobject selezionando i livelli che formano il logo cliccando tasto destro e selezionando smartobject.

Salviamo ottimizzando per web “save for web” nella cartella img del sito. Fatto questo richiamiamo l’immagine che chiameremo logo.png nella pagina aggiungendo il codice necessario:

Html

<div id="nav-container">

<h1><a id="logo" href="">Logo</a></h1>

<nav id="nav">

</nav>

</div>

Css

#nav-container {
margin:0 auto;
width:960px;
}

#logo {
display:block;
float:left;
width:109px;
height:81px;
background:url(img/logo.png);
text-indent:-9999px;
}

/*** Nav ***/
#nav {
float:right;
margin:0 auto;
min-height:80px;
width:800px;
background:blue;
color:#fff;
}

Step 6

Ora impostiamo il menu con il font oswald “embeddato” da google font. Da notare l’embed del font nell’header:

HTML

<!– Embed Google font –>
<link href=’http://fonts.googleapis.com/css?family=Oswald:400,300′ rel=’stylesheet’ type=’text/css’>

</head>
<body>
<header id="header">

<div id="nav-container">

<h1><a id="logo" href="">Logo</a></h1>

<nav id="nav">

<ul>
<li><a href="">Home</a></li>
<li><a href="">Chi siamo</a></li>
<li><a href="">Servizi</a></li>
<li><a href="">Maps</a></li>
<li><a href="">Contatti</a></li>
</ul>

</nav>

</div>

</header>

Css


#logo {
position:relative;
bottom:-20px;
display:block;
float:left;
width:109px;
height:81px;
background:url(img/logo.png);
text-indent:-9999px;
}

/*** Nav ***/
#nav {
float:right;
margin:0 auto;
min-height:80px;
width:800px;
}

#nav ul {
position:relative;
bottom:-20px;
float:left;
margin:0;
padding:0;
width:100%;
list-style:none;
text-transform:uppercase;
font-family:oswald;
}

#nav ul li {
float:left;
}

#nav ul li a {
color:#322a2b;
}

Dovremmo ottenere qualcosa di simile a questo:

Step 7

Con lo stesso procedimento usato per il menu salviamo l’immagine che ripetuta orizzontalmente costituirà la sfumatura posta sopra lo slider. Selezioniamo il livello -> tasto destro -> smartobject. Apriamo lo smartobject cliccando sull’ icona e selezioniamo la striscia che ripeteremo orizzontalmente per creare la sfumatura:

Nel menu di photoshop selezioniamo file -> crop.

E salviamo per web chiamando l’immagine sfu-slider.

Ora creiamo il codice Html e Css necessario:

Html

<section id="slider">

<div id="sfu-slider">

</div>

</section>

Css


/*** Slider ***/
#slider {
position:relative;
z-index:10;
margin-top:-116px;
min-height:350px;
width:100%;
background:green;
}

#sfu-slider {
position:absolute;
bottom:0;
width:100%;
height:153px;
background:url(img/sfu-slider.png);
}

Dovremmo ottenere qualcosa del genere:

Ora impostiamo l’immagine “full-width” con il titolo sovrapposto mentre lo slider lo animeremo successivamente. Salviamo l’immagine da photoshop con il solito metodo e richiamiamola nella pagina con il codice necessario:

Html

<section id="slider">

<img src="img/apple-store.jpg"/>

<div id="sfu-slider">

</div>

</section>

Css


#sfu-slider {
position:absolute;
bottom:5px;
width:100%;
height:153px;
background:url(img/sfu-slider.png);
}

#slider img {
position:relative;
top:0;
left:0;
margin:-90px 0 0;
width:100%;
height:auto;
}

Ora il sito comincia a prendere forma:

Step 8

Posizioniamo il titolo sopra l’immagine e come sfondo usiamo la stessa sfumatura utilizzata prima per lo slider:

Html


<section id="slider">

<img src="img/apple-store.jpg"/>

<h2>Apple Store Boston</h2>

<div id="sfu-slider">

</div>

</section>

Css


#slider h2 {
position:absolute;
top:100px;
right:150px;
padding:20px;
background:url(img/sfu-slider.png) bottom;
text-transform:uppercase;
font-size:42px;
font-family:oswald;
}

Ecco il risultato:

Step 9

Ora dobbiamo definire i 3 box che costituiscono i 3 conteunti “più importanti” in evidenza del sito. Per farlo creiamo uno stile che vada bene per tutti e tre i box e successivamente aggiungiamo ad ognuno la sua icona nel titolo tramite i Css.

Ogni box avrà immagine (Salvata per web nel solito modo), titolo, testo e link “Leggi..”

Html

<section id="content">

<div class="box-evi prudential">
<img src="img/prudential.jpg"/>
<h3>Prudential Center</h3>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. </p>
<a href="">Leggi…</a>
</div>

<div class="box-evi mit">
<img src="img/mit.jpg"/>
<h3>M.I.T.</h3>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. </p>
<a href="">Leggi…</a>
</div>

<div class="box-evi monument">
<img src="img/monument.jpg"/>
<h3>Monument</h3>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. </p>
<a href="">Leggi…</a>
</div>

</section>

Css

/*** Content ***/
#content {
position:relative;
z-index:12;
margin:0 auto;
width:960px;
}

.box-evi {
float:left;
margin:-40px 0 50px 30px;
width:300px;
}

.box-evi:first-child {
margin:-40px 0 50px;
}

.box-evi h3 {
margin:-5px 0 0;
padding:20px 20px 20px 70px;
background:#322a2b;
color:#fff;
text-transform:uppercase;
font-weight:400;
font-family:oswald;
}

.box-evi p {
color:#6d6b6a;
font-size:12px;
}

.box-evi a {
text-transform:uppercase;
font-weight:400;
font-family:oswald;
}

Step 10

Ora che abbiamo definito lo stile in comune impostiamo un’icona diversa per ogni titolo. Le icone le salviamo da photoshop creando per ognuna il solito smartobject e salvando per web.

Css

.prudential h3{background: #322a2b url(img/icon-graph.png) no-repeat 20px 20px}

.mit h3{background: #322a2b url(img/icon-graduate.png) no-repeat 20px 20px}

.monument h3{background: #322a2b url(img/icon-monument.png) no-repeat 20px 20px}

Otterremo questo layout:

Step 11

Per realizzare il footer impostiamo un’immagine di sfondo che sarà il logo nella sua versione più piccola e aggiungiamo le informazioni a piè di pagina.

Html

<footer id="footer">

<p>Copyright – 2012 <br/> My Sweet Boston <br/> Boston U.S.A.</p>

</footer>

Css

/*** Footer ***/
#footer {
position:relative;
clear:both;
min-height:100px;
width:100%;
background:#322a2b url(img/logo-small.png) no-repeat 20px 20px;
color:#666;
}

#footer p {
float:left;
margin:15px 0 0 100px;
font-size:12px;
}

Questa è la struttura base:

Nel prossimo articolo vedremo come fare le ultime modifiche al layout aggiungendo i social, gli statì over e installando lo slider animato. Il download è disponibile qui sotto.

Stay tuned!

,

Commenti

  1. Avatar Rebel ha detto:

    Quando verrà pubblicata la guida sull’aggiunta dei social?

    • Andrea Marchetti ha detto:

      Ciao Rebel, entro settimana prossima spero di riuscire a finire l’articolo e pubblicarlo…

  2. Avatar Antonio ha detto:

    Sig. Marchetti mi permetto di congratularmi con lei e ringraziarla per questo fantastico tutorial come il precedente, tra l’altro.
    Sono un grafico e mi sto avvicinando al web design, vorrei farlo diventare la mia professione. Grazie al suo tutorial sono riuscito a realizzare un sito meraviglioso e spero di pubblicarlo al più presto. Mi auguro abbia voglia di pubblicare altre risorse che è che sono concepite senza dubbio solo da una mente professionale. Buon Lavoro.

  3. Avatar malf ha detto:

    Penso la spiegazione di compilazione di un sito più chiara, evoluta e immediata presente sul web! Grazie.
    Seguendola mi sono chiesto perché inserire la parola Logo nel link in html, per poi spostare quest’ultima non so dove con text-indent:-9999?
    Perché preferire l’immagine del logo come sfondo inserita in css e non inserita direttamente in html?
    Grazie.

    • Andrea Marchetti ha detto:

      Ciao Malf, Grazie dei complimenti!
      Nel logo viene inserito il testo e poi nascosto tramite text-indent: -9999px cosi gli spider di Google (che indicizzano il sito) “leggono” il nome del sito anche se il logo è un immagine e non del testo, è un accorgimento SEO. Io personalmente inserisco il logo attraverso i CSS perchè preferisco gestire tutto tramite i fogli di stile, nulla ti vieta di inserire un immagine 😉

      • Avatar il monaco ha detto:

        Ma i vari spider non hanno delle contromisure per contrastare le tecniche seo tipo indent -9999?
        Non si rischiano, così, penalizzazioni dai motori di ricerca?
        Chiedo perché sono principiante e non sono sicuro se utilizzare o meno questi sistemi, soprattutto per inserire immagini al posto di testo.
        Grazie per il chiarimento.

        • Andrea Marchetti ha detto:

          Se nascondi una parola come il logo o voci del menu no. Al contrario se nascondi blocchi di testo sostanzioso pieni di parole chiave.

  4. Avatar Luca ha detto:

    Complimenti per l’ottima guida; se ne trovano poche di cosi dettagliate.

  5. Avatar Wizard ha detto:

    Salve, complimenti per le guide, volevo sapere se è stata pubblicata la guida successiva a questa, vale a dire “Nel prossimo articolo vedremo come fare le ultime modifiche al layout aggiungendo i social, gli statì over e installando lo slider animato….”

    Grazie

  6. Avatar Riccardo ha detto:

    Forse è una domanda stupida, ma facendo un sito in questo modo come lo si rende dinamico?

  7. Avatar simone ha detto:

    ciao, io sono arrivato al terzo step e gia non mi torna, in poche parole quando provo a guardare l’html su browser non mi si vedono le tabelle colorate, non mi si vede niente..

    quadrifoglio

    il css è questo

    @charset “UTF-8”;
    /* CSS Document */
    /*** Header ***/
    #header {
    width:100%;
    min-height:162px;
    background:red;
    }

    /*** Nav ***/
    #nav {
    width:620px;
    min-height:60px;
    background:blue;
    color:#fff;
    margin:0 auto;
    }

    /*** Slider ***/
    #slider {
    width:100%;
    min-height:449px;
    background:green;
    }

    /*** Content ***/
    #content {
    margin:0 auto;
    width:936px;
    min-height:452px;
    background:#f0f;
    }

    /*** Footer ***/
    #footer {
    clear:both;
    width:100%;
    min-height:79px;
    background:#ff0;
    color:#666;
    }

    • Andrea Marchetti ha detto:

      Ciao Simone,
      ti consiglio di ricontrollare il codice, se ti dà problemi riparti da capo facendo attenzione a scrivere corretamente stile e html, basta una punto e virgola fuori posto che la pagina non viene visualizzata correttamente.

  8. Avatar simone ha detto:

    ho risolto per ora.. avevo messo il file “stile.css” dentro la cartella css 🙂

  9. Avatar ale ha detto:

    grazie per la guida, e’ uno spunto per rinnovare la mia pag web, con html5 e nuovo css fatto con gimp (uso debian)

  10. Avatar Duilio ha detto:

    I miei complimenti per la guida. Dettagliata e chiara come non se ne trovano.
    Ho un piccolo problema, spero tu possa aiutarmi.
    Dallo step 3 la disposizione non mi viene mai come la tua.
    Addirittura quando imposto margin-top e z-index nel css lo slider sale e copre tutto l’ header e il nav.
    Il codice l’ ho controllato con i tuoi e sembra tutto ok.
    Quale può essere il problema?
    Ancora complimenti.

    • Andrea Marchetti ha detto:

      Ciao Duilio, probabilmente è un problema css, potresti procedere commentando blocchi di codice e provare blocco dopo blocco il codice cercando di trovare e isolare l’errore.

    • Avatar Matteo Cavaterra ha detto:

      Ciao, la discussione è vecchia e la riattivo, io ho risolto inserendo un diverso valore a z-index, -100 per l’esattezza….

  11. Avatar Diego ha detto:

    Bravo Proprio i miei complimenti ottimo stile. Ciao !!

  12. Avatar giuseppe ha detto:

    Ciao, Complimenti e grazie, vorrei realizzare un sito tutto mio parto da 0 , quindi la domanda sarà credo un po banale tu hai usato photoshop, ma poi per scrivere html e css che programma bisogna usare? grazie

  13. Avatar Peppe ha detto:

    E’ da un po’ che giro in lungo e in largo alla ricerca di un tutorial o comunque notizie per la realizzazione del mio sito, ma questi tuoi lavori li superano tutti. La completezza, la semplicità espositiva, la precisione e non ultimo la “pulizia” fanno di questo tutorial uno dei migliori in assoluto che abbia mai conosciuto.
    Complimenti davvero.
    Peppe

  14. Avatar Davide ha detto:

    Ciao anche io quando faccio lo scaffolding coloro i div in più colori solo che li metto in una classe così li rimuovo piu facilmente!

  15. Avatar giorgio ha detto:

    ciao complimenti per i tuoi tutorial molto interessanti e utili. ti volevo chiedere come faccio a impostare l’header, il corpo della pagina e il footer della larghezza dello schermo? per intenderci nello stile dei principali siti di oggi (youtube, facebook, ecc…)

    • Andrea Marchetti ha detto:

      Ciao Giorgio,
      tramite css imposta width: 100% all’elemento che vuoi rendere largo come lo schermo..

      • Avatar Antonio Carbone ha detto:

        Ciao Andrea sei molto bravo. Volevo sapere se si può fare un sito con photoshop senza usare i codici, ovviamente te lo chiedo perchè stò alle primissime armi.

        • afmarchetti ha detto:

          Ciao Antonio,
          ci sono software che consentono di creare codice senza toccare un linea di codice,i cosidetti (WYSIWYG editor) ma te li sconsiglio.
          Photoshop no penso abbia questa funzionalità.
          Se sei interessato a imparare a scrivere codice segui la pagina facebook del blog stò preparando una guida base su html e css 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Share