Corso gratuito: Costruire un blog da zero ??
di ZAYDEK
TIL…
Potrebbe essere più facile di quanto immaginato
Prima di arrivare all’articolo, voglio solo condividere che sto costruendo un prodotto, e mi piacerebbe raccogliere alcuni dati su come servire meglio gli sviluppatori web. Ho creato un breve questionario per verificare prima o dopo aver letto questo articolo. Si prega di controllare – grazie! E ora, torniamo alla nostra normale programmazione programmata.
Se sei come me, sei interessato al web e alla sua travolgente portata, ma sei anche inondato dal caos di informazioni che sta imparando HTML e CSS. Il fatto è che questi linguaggi sono diversi da altri domini, come Word Processor e linguaggi di programmazione. Il web è un altro mondo, e non è la cosa più bella in circolazione.
Avendo imparato un po ‘di web, sono qui per dare una leggera spinta di incoraggiamento, perché, con un po’ di guida, questi domini possono essere molto più facili di quanto immagini. Continua a leggere, e costruiremo un bel blog da zero. Impareremo anche alcuni Griglia CSS, Flexbox, e Responsive Design.
L’obiettivo è fare per te ciò che ho fatto per me stesso; imparare HTML e CSS dai primi principi.
Ho anche insegnato un corso HTML/CSS gratuito su Scrimba dove insegno come costruire un bellissimo blog da *zero*. Clicca qui per iscriverti! ?
Scrimba.com è una piattaforma front-end interattiva in cui i siti web vengono registrati come eventi – non video-e possono essere modificati! ?
Quindi da dove viene l’HTML?
HTML è un discendente del primo meta o linguaggio di markup: GML. I lettori Millennial stanno ora lavorando che GML sta per Generalized Markup Language, ma non è tutto ciò che rappresenta. E ‘ stato Charles Goldfarb, Edward Mosher, e Raymond Lorie che ha creato quello che ora conosciamo come un meta o markup language presso IBM. E nel 1996, Charles Goldfarb ha scritto:
“Ho dato a GML il suo nome attuale in modo che le nostre iniziali dimostrassero sempre dove aveva avuto origine. Una delle brutte verità del trasferimento tecnologico è che gli sviluppatori tendono ad essere grati per il lavoro di ricerca quando ricevuti per la prima volta, e praticamente ignari di esso entro la fine di un lungo ciclo di sviluppo” ”
— Charles Goldfarb, nel 1996
GML in seguito divenne Standardizzato, diventando così SGML. Quindi, Tim Berners-Lee che ha lavorato al CERN ha preso in prestito il ML da SGML (no, non machine learning, o qualunque cosa lo chiamino gli hipster) per creare HTML, dove HT sta per IpertEsto.
Whoa, bella parola. E come ho capito, ha radici da un ambiente di authoring interattivo chiamato HyperCard, da Bill Atkinson che ha lavorato presso Apple. Per un’esplorazione più approfondita, invio i seguenti video:
Quindi, ricapitoliamo. HTML non ha solo conquistato il mondo. In effetti, c’era un mondo intero prima dell’HTML. WUT? Lo so, sto tremando in stato di shock—ma non ero nato—quindi, non c’era un mondo.
E, HTML deve molto ai suoi predecessori. Come tutti noi ai nostri genitori. Tuttavia, è come facciamo il codice dal testo. Ora, in quattro lezioni di un minuto, insegnerò le basi di HTML, CSS e Responsive Design.
HTML e CSS in 4 minuti
Primo minuto: un sito web può essere meglio inteso come webtree
<html> <head></head> <body></body></html>
Tutti i siti web iniziano la loro vita come tali. Tuttavia-e questo è terribile-non c’è contenuto. Tuttavia, iniziamo qui perché dobbiamo prima capire cos’è un sito web. Pensate a come un albero-un albero a testa in giù* – un webtree. L’elemento html
è la radice, mentre head
e body
sono i primi rami del nostro webtree:
html <- root / \head body <- branches
L’elemento head
(o tag—stessa cosa) è per i metadati o le informazioni sul nostro sito web. L’elemento body
, d’altra parte, è per il contenuto del nostro sito web. E poiché il CSS è lo stile del nostro sito web, va nell’elemento head
, mentre i contenuti, come paragrafi, video cat ( ≧ ∇ ≦ ) e così via, vanno nell’elemento body
.
Secondo minuto: gli elementi o i tag hanno più apparizioni
<element><element>value</element><element attribute="value">value</element>
- Il primo elemento è un elemento di chiusura automatica, in cui comunichiamo qualcosa al browser, ma non ha anche un valore. Un esempio di questo è l’elemento
<
br>, che inserisce un’interruzione di linea. - Il secondo elemento è un elemento comune, in cui comunichiamo un valore come appartenente a qualche elemento. Ad esempio
<p>hello, worl
d!< / p> è il valore ” ciao, mondo!”come appartenente all’elemento paragrafo. - Infine, abbiamo un elemento con un attributo. E un attributo è ciò che sembra—dannazione, è un attributo! Dà un elemento più contesto o significato. Gli attributi possono avere più valori e gli elementi possono avere più attributi. Attributo-ception.
<element attribute="value" attribute="value value">value</element>
Ora-devo menzionare-non creiamo i nomi dei nostri elementi HTML. Li prendiamo in prestito da un elenco di oltre 100 elementi predefiniti. Naturalmente, questo rende alcune cose più facili, e alcune cose molto, molto più difficile, come la memorizzazione!
Terzo minuto: come HTML e CSS comunicano
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <style>
selector { property: value; }
</style> </head> <body> <element>value</element> </body></html>
Il !DOCTYPE html
specifica che stiamo scrivendo HTML5 – come supposto per tutte le altre versioni di HTML che vogliamo evitare. E dato l’elemento di chiusura automatica meta
con l’attributo charset
e il valore UTF-8
, il nostro testo è codificato in Unicode. UTF – 8 sta per Unicode Transformation Format… 8. Ora possiamo scrivere ????! Una volta, papà ha deciso di testo in solo emoji.
\_(()_/
Abbiamo anche aggiunto un elemento style
che è uno dei punti di ingresso disponibili per CSS. Dove selector
seleziona un elemento e applica un property
ad esso con un corrispondente value
. Esploreremo questo e altro nel prossimo minuto.
Ancora una volta—devo menzionare-non creiamo i nomi delle nostre proprietà CSS. Li prendiamo in prestito da un elenco di alcune centinaia di proprietà predefinite. Naturalmente, questo rende alcune cose più facili, e alcune cose molto, molto più difficile, come ad esempio ____________!
Quarto minuto: ciao, mondo!
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <style>
p { color: green; }
@media (max-width: 8.5in) { p { color: blue; } }@media (max-width: 5.0in) { p { color: red ; } }
</style> </head> <body> <p>hello, world!</p> </body></html>
Non è più il nostro sito terribile! Quello che abbiamo è ” ciao, mondo!”nel testo verde, e se la larghezza del nostro sito web fosse ridimensionata a 8,5 pollici o meno, leggerebbe in blu, e a 5 pollici o meno, rosso. Qui, abbiamo usato media query per sovrascrivere CSS in qualche circostanza, come la larghezza del nostro sito web.
Che cos’è un CSS Reset e Debugger?
Utilizziamo un reset per garantire che il nostro design sia coerente e un debugger per esporre le incongruenze.
Abbiamo bisogno del nostro reset, perché i browser sono supponenti e impostano alcune proprietà CSS per noi che vogliamo annullare. Esistono reset CSS popolari, ma faremo il nostro. E abbiamo bisogno del nostro debugger per mantenere il design del nostro sito web con facilità.
Possiamo creare una cartella denominata styles
per ospitare il nostro reset e debugger:
styles/ reset.css debug.css
E per collegare i nostri nuovi file CSS al nostro index.html
, aggiungiamo link
elementi:
… <meta charset="UTF-8"> <link rel="stylesheet" href="styles/reset.css"> <link rel="stylesheet" href="styles/debug.css"> <style> …
Il nostro CSS Reset
Delle proprietà che vogliamo annullare, ecco una shortlist:
:root { font: 20px/1.2 sans-serif; }
body, body * { margin: unset; box-sizing: unset; padding: unset; font-size: unset; color: unset; text-decoration: unset;}
Ignora riga 1. per ora—iniziamo con body, body * { … }
dove selezioniamo body
e tutti gli elementi di body
con un *
. L’asterisco significa selezionare tutti i bambini. Ricordate il nostro webtree?
html / \head body <- selected / \ \… … p <- selected
body, body * { … }
sta selezionando body
e—a ,
denota e—p
perché è uno dei figli di body
. Questa è nota come relazione genitore-figlio, dove body
è il genitore e p
è il figlio. E diciamo quegli elementi a unset
proprietà comuni. Le proprietà che ho scelto sono solo una shortlist. Ecco un esempio di uno dei reset CSS più famosi:
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain)*/
html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td,article, aside, canvas, details, embed,figure, figcaption, footer, header, hgroup,menu, nav, output, ruby, section, summary,time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline;}/* HTML5 display-role reset for older browsers */article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section { display: block;}body { line-height: 1;}ol, ul { list-style: none;}blockquote, q { quotes: none;}blockquote:before, blockquote:after,q:before, q:after { content: ''; content: none;}table { border-collapse: collapse; border-spacing: 0;}
Accidenti! Torniamo al nostro reset. Nella parte superiore abbiamo :root { font: 20px/1.2 sans-serif; }
. Che cosa è :root
? Ricordate il nostro webtree? È la radice, in altre parole, l’elemento html
. Questo pseudo-elemento appartiene a una classe speciale di elementi nota come psuedo-classes, che può essere utilizzata per organizzare e comprendere meglio il nostro CSS.
WAAAIT! Non abbiamo bisogno di un *
per selezionare tutti gli elementi figli, quindi le loro proprietà font
sono impostate? Bene-grande domanda-alcune proprietà, come le proprietà del testo ereditano dai loro genitori e font
lo fa. Quindi, invece, possiamo impostare font
una volta in :root
, che si propaga a tutti i suoi figli. Proprietà-ception.
Il nostro Debugger CSS
Un debugger enfatizza il contenuto e il bordo degli elementi:
body * { color: hsla(000, 100%, 100%, 0.88) !important; background: hsla(210, 100%, 50%, 0.33) !important; outline: 0.25rem solid hsla(000, 100%, 100%, 0.50) !important;}
Guardate! In sole tre righe, il nostro debugger. Questa tecnica intelligente sovrascrive tre proprietà comuni: color
, background
e outline
. I nostri colori sono costituiti da valori hsla()
, che è l’abbreviazione di tonalità, saturazione, luminanza e alfa. Per abilitare il nostro debugger, colleghiamo il file.
Se vogliamo disabilitare il nostro debugger, possiamo digitare erroneamente il nome del file in modo da nasconderlo dal filesystem del nostro computer, ad esempio:
<link rel="stylesheet" href="styles/-debug.css">
O semplicemente eliminare la linea. ٩ (^^ ^ )
Il nostro debugger utilizza valori esilaranti !important
in modo da affermare che in nessuna condizione queste proprietà possono essere sovrascritte. Ricordate media query?
p { color: green !important; }
@media (max-width: 8.5in) { p { color: blue; } }@media (max-width: 5.0in) { p { color: red ; } }
Se avessimo specificato che il nostro colore p
è !important
, le nostre query sui media sarebbero inerti, a causa della loro minore importanza.
Incontra CSS Grid e Flexbox
Direi che prima di CSS Grid e Flexbox, progettare per il web era il viaggio di un eroe.
Il fatto è che il web design era un giocoleria di hack in cui ingannavamo il browser per rendere i nostri progetti. Questo sta diventando meno vero con il tempo. Non sono religioso, ma grazie a Dio!- o, grazie ingegneri del browser!- pertanto ora possiamo appoggiarci a CSS Grid e Flexbox per avviare il nostro design.
Se non sei a conoscenza, CSS Grid e Flexbox sono nuove tecnologie cotte nei browser moderni che portano il viaggio dell’eroe fuori dal web design. E CSS Grid e Flexbox sono amici-li useremo insieme per creare una griglia e flex elementi nella nostra griglia.
La nostra prima griglia: HTML
… <body> <article> <p>ARTICLE</p> </article>
<article> <p>ARTICLE</p> </article> </body> …
Ricordate il nostro webtree?
body / \article article / \ p p
Stiamo creando un blog, quindi ogni post può essere pensato come un article
. E i nostri article
contengono un p
di ARTICLE
che è un altro trucco intelligente che possiamo usare. Usando il nome dell’elemento come valore dell’elemento per aiutarci a capire dove e cosa sono le cose. Valore-ception.
La nostra prima griglia: CSS
… <style>
article { display: grid; grid-template-columns: 1fr minmax(0, 8.5in) 1fr;
height: 11in; /* temp fix */}
article * { grid-column: 2 / 3; }
</style> …
Inserisci Griglia CSS. Innanzitutto, abbiamo selezionato l’articolo e applicato tre proprietà: display
definisce l’elemento come una griglia, grid-template-columns
templates columns e height
simula ogni article
come avente l’altezza di una pagina. Tuttavia, height
è un codice colla e verrà eliminato.
Concentriamoci sulle due linee più importanti:
article { grid-template-columns: 1fr minmax(0, 8.5in) 1fr; }article * { grid-column: 2 / 3; }
O, in altri tempi:
Avrai tre Colonne,
La cui Colonna centrale proteggerà i tuoi figli.
Innanzitutto, se avessimo impostato grid-template-columns
su 1fr 1fr 1fr
, dove fr
è l’abbreviazione di fraction-unit, le nostre tre colonne sarebbero divise in terzi. Eppure la nostra colonna centrale ha una larghezza minmax
, il che significa che è reattiva. A o inferiore a 8.5in
, la nostra colonna centrale viene visualizzata a 100%
larghezza e le nostre colonne sinistra e destra scompaiono, poiché non vi è alcun resto.
Barra laterale: si noti che il design reattivo non è limitato alle query multimediali. Questo è un esempio di dove il nostro design è implicitamente reattivo, al contrario di esplicitamente reattivo. Questo è il miglior tipo di design reattivo, perché non è hard-coded. E questo è uno dei motivi per cui CSS Grid e Flexbox sono così potenti.
In secondo luogo, per comunicare che i figli di article
appartengono alla colonna centrale, o iniziano dalla seconda colonna e terminano dalla terza, impostiamo grid-column
su 2 / 3
. Si noti la sottile differenza tra grid-template-column
e grid-column
, per le colonne del modello o per le colonne di span.
La griglia CSS è fantastica—e lo è—ma ora ci appoggeremo a Flexbox per centrare il nostro testo ARTICLE
. Quello che stiamo per fare è creare una classe di utilità, ed è un altro paradigma per scrivere CSS. Qui, usiamo il fatto che gli elementi possono avere attributi per lo stile in linea all’elemento p
:
<p class="debug-center">ARTICLE</p>
CSS in HTML?!
(╯°□°)╯︵ ┻━┻
Ecco cosa sta succedendo: gli elementi hanno un attributo di classe. E possiamo usare questo attributo non solo per scrivere CSS su elementi, ma su un tipo di elemento o classe di elemento. Ciò significa che possiamo riutilizzare le classi su più elementi, indipendentemente dalla loro somiglianza. Ahimè-non è cambiato nulla – dobbiamo anche creare una classe .debug-center
da qualche parte nel nostro CSS. Che ne dici del nostro debugger:
…
.debug-center { display: flex; justify-content: center; align-items: center;}
Nota usiamo un prefisso .
per differenziare le classi dagli elementi.
Ora, ovunque un elemento sia attribuito alla nostra classe debug-center
, il suo testo sarà centrale. Innanzitutto, impostiamo display
a flex
rendendo qualsiasi elemento un elemento Flexbox in contrapposizione a un elemento griglia CSS. Quindi impostiamo justify-content
su center
per centrare orizzontalmente e align-items
su center
per centrare verticalmente. Aaagh!
Immagina questo: usiamo Grid per impaginare il design del nostro sito web e Flexbox per flettere gli elementi nella nostra griglia in una posizione desiderata.
Iterando la nostra griglia
Abbiamo un problema: senza .debug-center
ARTICLE
abbraccia le pareti sinistra e destra. Ciò di cui abbiamo bisogno sono grondaie verticali e orizzontali in modo che il nostro contenuto possa respirare. Ah! Altrimenti la lettura diventerebbe frustrante e porterebbe a una scarsa esperienza utente. ヾ (•д*;) ノ
Per imbottitura verticale:
article { padding: 0.5in 0; …}
E per il padding orizzontale, potremmo usare il padding, e funzionerebbe:
padding: 0.5in 0.5in;padding: 0.5in;
Tuttavia, vogliamo che le nostre grondaie siano reattive, quindi useremo la griglia CSS:
article { … grid-template-columns: 1fr 0.5in 7.5in 0.5in 1fr}
Qui, abbiamo fatto tre cose: 1. abbiamo definito le nostre grondaie orizzontali per essere 0.5in
(queste diventeranno reattive-lo prometto!). 2. la nostra colonna di contenuti è passata da 8.5in
a 7.5in
, la somma è ancora 8.5in
e 3. identificatori start
e end
per nominare l’inizio e la fine della nostra colonna di contenuti.
Quando abbiamo aggiunto nuove colonne, avevamo bisogno di aggiornare anche article *
:
article * { grid-column: 3 / 4; }
Ma contare le colonne non è l’ideale. Invece-usiamo i nostri identificatori inventati:
article * { grid-column: start / end; }
Abbiamo aggiornato la nostra griglia senza interrompere il flusso di contenuti, a patto che continuiamo a utilizzare gli identificatori start
e end
che abbiamo creato. ◉ ◉ ◉ ◉
Ultimo—come promesso—abbiamo bisogno delle nostre grondaie per essere reattivi. minmax()
per un motivo o per un altro non funziona qui, quindi useremo le query multimediali:
@media (max-width: 8.5in) { article { grid-template-columns: 1fr 5% 90% 5% 1fr; }}
Ora a o meno di 8.5in
, article
userà %
invece di in
per dividere le nostre colonne, e le colonne di sinistra e di destra scompariranno perché—di nuovo—non c’è resto. Nonostante tutto questo, avremmo potuto impostare padding
a 0.5in 5%
per ottenere lo stesso effetto, quindi cosa dà? Continua a leggere!
Iterando la nostra griglia, di nuovo
Per capire la nostra griglia, usiamo le immagini per estendere le colonne, da 100%
a 8.5in
a 7.5in
sul desktop e da 100%
a 90%
sul cellulare. Tuttavia, per l’ultima immagine, quella a sinistra in basso, dobbiamo aggiungere anche poche altre colonne alla nostra griglia. AF) UBQWF*VBQPWIFB, ho ragione?
Non farti intimidire—la griglia CSS è fantastica. Aggiungiamo altre due colonne:
article { … grid-template-columns: 1fr 0.5in 1.25in 5in 1.25in 0.5in 1fr;}
@media (max-width: 8.5in) { article { grid-template-columns: 1fr 5% 15% 60% 15% 5% 1fr; }}
Abbiamo suddiviso la nostra colonna di contenuti in tre colonne: 1.25in 5in 1.25in
. Abbiamo anche aggiunto percentuali proporzionali per la nostra query multimediale: 15% 60% 15%
. Il piano prevede che il testo si estenda sulla nostra colonna contenuto originale 7.5in
e che le piccole immagini si estendano sulla nostra nuova colonna 5in
.
Per aggiungere immagini, usiamo l’elemento img
e il suo attributo src
—source:
… <article> <img class="size-4" src="images/cosmos.jpg"> <img class="size-3" src="images/cosmos.jpg"> <img class="size-2" src="images/cosmos.jpg"> <img class="size-1" src="images/cosmos.jpg"> </article> …
Questi sono locali, cioè sono sul nostro computer. Ed erano remoti, cioè su un server:
<img src="https://website.com/images/cosmos.jpg">
Si noti che ogni img
ha una delle quattro classi: size-*
. E poiché vorremo più delle immagini, come i video, per coprire la griglia del nostro sito web, è preferibile utilizzare le classi in modo da poter riutilizzare il CSS. Queste classi size-*
sono anche classi di utilità, quindi cambiare la dimensione che vogliamo è semplice.
Facciamo in modo che le nostre classi size-*
si estendano su diversi set di colonne:
.size-1 { grid-column: 4 / 5; }.size-2 { grid-column: 3 / 6; }.size-3 { grid-column: 2 / 7; }.size-4 { grid-column: 1 / 8; }
Ciò che manca è che i nostri img
non sono reattivi. Abbiamo bisogno:
img.size-1, img.size-2, img.size-3, img.size-4 { width: 100%; }
Poiché img
s esegue il rendering alla loro dimensione effettiva, ad esempio, un rendering di immagini 400 × 400 a 400px, avevamo bisogno di sovrascrivere quel comportamento con il nostro: width: 100%
. Pertanto, quando un’immagine viene attribuita con una classe size-*
, può ridimensionare a qualsiasi colonna sia estesa. Nota che non è necessario impostare height
.
Aggiunta di elementi di testo
Sito Web e contenuti link
Ora che stiamo facendo sul serio con il nostro article
, facciamo le cose formali:
… <article></article> …
Ora ogni articolo è collegabile. Collegabile? Bene-i siti web sono link:
https://website.com/index.html
E anche i contenuti del nostro sito web, ad esempio article
s, possono essere collegati:
https://website.com/index.html#article
Qui article
è il valore di un attributo id
, analogo al collegamento di un timestamp in un video di YouTube (ad esempio, questo). Meglio che suggerire “inizia a 4 minuti e 7 secondi “o” leggi dal secondo articolo”, possiamo collegare i contenuti nel nostro sito Web, come un timestamp in un video.
Per collegare un sito web o un contenuto, utilizziamo l’elemento a
e l’attributo href
:
… <article> <a href="#the-cosmos">The Cosmos</a> </article> …
Il testo “Il cosmo” ora collega l’inizio dell’articolo: #the-cosmos
.
Questa idea di collegamento (collegamento di siti web e contenuti in siti web) è uno dei punti di HTML. HyperCard padroneggiava questo, ma invece di collegare siti Web e contenuti, era interessato a idee e associazioni. A quel tempo, era il 1987 e HTML è stato proposto per la prima volta nel 1989. Guarda un paio di secondi dal video che ho postato in precedenza—qui ho collegato un timestamp:
elementi di Testo
andiamo ad aggiungere intestazioni, una pubblicazione-data, forte e sottolineato il testo e link:
<article>
<h1><a href="#the-cosmos">The Cosmos is all there is</a></h1> <h2>Or ever was, or ever will be</h2>
<time datetime="03-09-2014">MAR. 9, 2014</time> <p><em>A generation ago</em>, the astronomer <a href="https://en.wikipedia.org/wiki/carl_sagan">Carl Sagan</a> stood here and launched hundreds of millions of us on a great adventure the exploration of the universe revealed by science. It's time to get going again. We're about to begin a journey that will take us from the infinitesimal to the infinite, from the dawn of time to the distant future. We'll explore galaxies and suns and worlds, surf the gravity waves of space-time, encounter beings that live in fire and ice, explore the planets of stars that never die, discover atoms as massive as suns and universes smaller than atoms. </p>
<img class="size-4" src="images/cosmos.jpg">
<h3>COSMOS IS ALSO A STORY ABOUT US</h3> <p>It's the saga of how wandering bands of hunters and gatherers found their way to the stars, one adventure with many heroes. To make this journey, we'll need imagination. But imagination alone is not enough because the reality of nature is far more wondrous than anything we can imagine. This adventure is made possible by generations of searchers strictly adhering to a simple set of rules test ideas by experiment and observation, build on those ideas that pass the test, reject the ones that fail, follow the evidence wherever it leads and question everything. <strong>Accept these terms, and the cosmos is yours.</strong> </p>
</article>
Queste sono le prime righe del nostro personale, astrofisico dell’ — Neil deGrasse Tyson — 2014 Cosmos: A Spacetime Odyssey, una reinvenzione di Carl Sagan originale del 1980 Cosmos: A Personal Voyage. E ‘ fantascienza senza il-fi. E si sta rinnovando nel 2019!
Sopra abbiamo introdotto alcuni elementi: h1
, h2
, h3
, time
, strong
, e em
.
-
h1
–h6
gli elementi sono titoli. - L’elemento
time
timestamp del nostro articolo. Possiamo mettere quello che vogliamo per il valore dell’elemento, perché i computer leggono il valore dell’attributodatetime
, che dovrebbe essere leggibile dalla macchina. - L’elemento
strong
è per testo forte e l’elementoem
è per testo sottolineato. Inoltre, gli elementih*
sono forti.
Si noti che gli elementi h*
e p
si interrompono da una riga all’altra o bloccano, mentre gli elementi time
, strong
e em
non lo fanno. Questo perché i browser impostano gli elementi h*
e p
display
su block
e time
, strong
e em
elemento display
a inline
.
Rems e ems
Quando non è sufficiente bloccare elementi da una riga all’altra, usiamo interruzioni di riga in modo che sia più facile differenziare gli elementi l’uno dall’altro, non diversamente da padding o grondaie. Potremmo usare br
elementi qui, ma è preferibile utilizzare CSS estranei rispetto a HTML estranei.
Ecco come spingere il contenuto a due interruzioni di riga, seguendo gli elementi h2
e p
:
h2, p { margin-bottom: 2.4rem; }
2.4 rem?
Ricordate il nostro reset? Abbiamo impostato font
a 20px/1.2 sans-serif
. Non l’ho spiegato in quel momento—e vergogna su di me—ma 2.4
sono interruzioni di due righe a 1.2
altezza della linea, ad esempio, testo a spaziatura singola. Il testo più leggibile potrebbe essere 1.5
e il testo a spaziatura doppia potrebbe essere 2
.
*Ahem* Che cosa sono le rems?
* Ahem ahem* E cosa sono gli ems?
rem
è root em
ed entrambi sono moltiplicatori. 1rem
è 20px
e 1em
è il genitore font-size
. Se avessimo definito le nostre interruzioni di riga in ems
, non rems
, e impostato h2
e p
su diversi font-size
, le loro interruzioni di riga sarebbero diverse! Pertanto, le interruzioni di riga coerenti usano rem
s e quelle incoerenti usano em
s.
E questo è un potente CSS di scrittura di idee in modo tale che il design sia collegato. Data questa illuminazione, sento che è molto più saggio pensare ai CSS non nelle regole ma nelle relazioni. Quindi, se facciamo un cambiamento da qualche parte, possiamo fare un cambiamento ovunque.
make fai un cambiamento da qualche parte
everywhere fai un cambiamento ovunque…
Responsive responsive design
Cosa succede se scriviamo CSS in
rem
s eem
s e usiamo le query multimediali per cambiare:root
‘sfont-size
? Quindi tutto-e intendo tutto-si ridimensionerà proporzionalmente. Possiamo fare un ulteriore passo avanti e avere più query multimediali per più larghezze:@media (max-width: 8.5in) { :root { font-size: 18px; } }@media (max-width: 5.0in) { :root { font-size: 16px; } }
La cosa sorprendente di questo è che non stiamo solo sovrascrivendo una proprietà, stiamo sovrascrivendo la proprietà per
rem
s eem
s. Ora possiamo scrivere CSS che non è solo reattivo ma reattivo al nostro design reattivo. Questa è forse la frase più importante in questo intero post:Possiamo scrivere CSS che non è solo reattivo ma reattivo al nostro design reattivo.
Questo non è solo bello, è come dovremmo scrivere CSS. I siti Web tendono ad essere terribili, e penso che possa essere ridotto a questo: quando scriviamo CSS, dovremmo scrivere nei sistemi di progettazione e non nel codice silo. Quando usiamo
rem
s eem
s in tandem con le query multimediali, questo è un sistema di progettazione e il codice non viene silosato.Styling text
Per amore dello stile, aggiungiamone alcuni:
h1 { font: 700 2.0rem/1.2 …; color: hsl(000, 000%, 33%); }h2 { font: 400 1.5rem/1.2 …; color: hsl(000, 000%, 33%); }time { font: 700 1.0rem/1.2 …; color: hsl(250, 100%, 83%); }h3 { font: 700 1.0rem/1.2 …; color: hsl(250, 100%, 67%); }p { font: 400 1.0rem/1.5 …; color: hsl(000, 000%, 33%); }
Le proprietà possono avere stenografie come abbiamo visto prima;
padding: 0.5in
, equivalente apadding: 0.5in 0.5in
. E qui, usiamofont
per combinarefont-weight
,font-size
eline-height
. Dopofont
, abbiamocolor
conhsl
valori, comehsla
valori nel nostro debugger.Un problema non indirizzato è il nostro elemento
a
. Nel nostro reset, abbiamo unsetcolor
etext-decoration
rendendo i collegamenti indiscriminati dal testo. Abbiamo disattivato queste proprietà perchétext-decoration: underline
è troppo sottile. Quindi ecco come possiamo dare loro una forte sottolineatura:a { box-shadow: inset 0 -0.25em hsl(55, 100%, 75%); }
Invertiamo
box-shadow
per creare una sottolineatura che si trova all’interno dell’elemento. Se avessimo impostatoinset
senza un valore negativo, la nostra sottolineatura sarebbe una overline. Usiamo ancheem
quindi la sottolineatura scala con il suofont-size
. Questo è un esempio di quando vogliamo un ridimensionamento incoerente, come supposto per le nostre interruzioni di riga.C’è molto di più in
box-shadow
di questo: clicca per saperne di più.Ultimo passaggio: gradienti
Wohoo! Tutto ciò di cui abbiamo bisogno è uno spunto per i nostri lettori su dove inizia e finisce un
article
. Senza questo, le estremità di ogniarticle
si sentiranno come una continuazione infinita, che porta a una scarsa esperienza utente. Quindi dobbiamo dare ai nostri lettori un suggerimento… (◔◔)Quello che propongo è semplice: un gradiente che si estende dalla parte superiore di ogni elemento
article
alla parte inferiore del suo elementoh2
. E possiamo scrivere il nostro gradiente inem
s in modo che man mano che il nostro sito web si ridimensiona, anche il nostro gradiente:article { … background: linear-gradient(hsl(55, 100%, 96%), white 6.83em);}
Qui abbiamo definito un gradiente da colore a bianco e usato
6.83em
quindi il nostro gradiente non estende l’interoarticle
ma termina all’equivalente del fondo del nostro elementoh2
. Tuttavia, il valore esatto dipende.Puoi fare matematica per determinare la dimensione, ad esempio
6.83em
, ma un’altra tecnica è quella di impostare una dimensione sul colore superiore, ad esempiohsl(55, 100%, 96%) 6.83em
. Una volta che è uguale o maggiore della dimensione del colore di fondo, apparirà come una linea e non un gradiente, rendendolo intuitivo su cosa cambiarlo.Congratulazioni ?
Congratulazioni! ٩(˘.) ‘ve Hai fatto un passo in un mondo in disperato bisogno di migliori progettisti e ingegneri. E con CSS Grid, Flexbox, Responsive Design e debugger a livello di browser, lo sviluppo per il web non è mai stato più accessibile.
Non dimenticare che c’è un corso gratuito su Scrimba dove insegno come creare lo stesso sito web da *zero*. Clicca qui per iscriverti!