Qual è la differenza tra <b> e <strong>, <i> e <em>?


Risposte:


1044

Hanno lo stesso effetto sui normali motori di rendering dei browser Web , ma c'è una differenza fondamentale tra loro.

Come scrive l'autore in un post dell'elenco di discussione :

Pensa a tre diverse situazioni:

  • browser web
  • gente cieca
  • cellulari

"Grassetto" è uno stile - quando dici "grassetto una parola" , le persone in pratica sanno che significa aggiungere altro, diciamo "inchiostro", attorno alle lettere fino a quando non si distinguono più tra il resto delle lettere.

Ciò, sfortunatamente, non significa nulla per un cieco. Sui telefoni cellulari e altri PDA, il testo è già in grassetto perché la risoluzione dello schermo è molto piccola. Non puoi mettere in grassetto un grassetto senza rovinare qualcosa.

<b>è uno stile : sappiamo come dovrebbe apparire "grassetto".

<strong>tuttavia è un'indicazione di come qualcosa dovrebbe essere compreso . "Forte" potrebbe (e spesso significa) "grassetto" in un browser, ma potrebbe anche significare un tono più basso per un programma parlante come Jaws (per i non vedenti) o essere rappresentato da una sottolineatura (dato che non puoi in grassetto un grassetto) su un Palm Pilot.

L'HTML non è mai stato pensato per gli stili. Fai delle ricerche per "Tim Berners-Lee" e "la rete semantica". <strong>è semantico — descrive il testo che circonda (ad es. "questo testo dovrebbe essere più forte del resto del testo che hai visualizzato" ) invece di descrivere come dovrebbe essere visualizzato il testo che circonda (ad es. "questo testo dovrebbe essere grassetto " ).


160
Si noti che <b> e <i> non sono stati deprecati in HTML5. Il loro nuovo uso è quello di rappresentare semanticamente gli stili (o la presentazione prevista), mentre <strong> e <em> rappresentano la struttura . Devi leggere stellify.net/…
Natan Yellin il

12
Ottima risposta, ma direi che "non puoi grassetto un grassetto" è sbagliato perché stai assumendo che sia un concetto booleano, quando il peso del carattere: adotta un approccio più variabile. Ora che esistono schermi ad alta fedeltà, ci sono livelli di audacia.
TravisO,

4
@TravisO Credo che stesse parlando alle specifiche restrizioni tecniche del Palm Pilot.
Brian Ortiz,

4
Non credo che un gruppo di lettere abbia un significato intrinseco, <b> può avere esattamente lo stesso significato semantico di <strong> se lo decidiamo. Cosa hanno deciso i produttori di lettori, li trattano in modo diverso o esattamente allo stesso modo?
Aprile

21
@deathApril Ma lo fanno! Hanno un significato! L'HTML non è definito da ciò in cui credi o da ciò che decidi.
Mr Lister,

231

<b>e <i>sono espliciti: specificano rispettivamente grassetto e corsivo.

<strong>e <em>sono semantici: specificano che il testo racchiuso deve essere "forte" o "enfatizzato" in qualche modo, di solito in grassetto e corsivo, ma consente di controllare lo stile reale tramite CSS. Quindi questi sono preferiti nelle pagine Web moderne.


15
Buona spiegazione D'altra parte, con HTML 5, <i> e <b> sono semantici piuttosto che espliciti. Sospiro.
OregonGhost,

1
Sono loro? Sono dietro i tempi ...!
Tony Andrews,

5
Sì, la migliore spiegazione che ho letto è stellify.net/…
Natan Yellin il

25
HTML5 ha nuovi significati semantici per be i. Sono tag che dovresti usare quando devi attirare l'attenzione su una parte della prosa o compensare la prosa normale, senza trasmettere enfasi ( em), importanza (per strong) o pertinenza (per mark). bè per parole chiave, nomi di prodotti, parole utilizzabili, ecc., mentre iè per termini tecnici, pensieri, frasi, ecc. Onestamente IMO, ci deve essere una maggiore distinzione tra i due.
Chharvey,

2
Peccato che il testo (e il titolo) di stellify.net sia completamente illeggibile sulla maggior parte dei monitor e delle configurazioni per ufficio economici ^^ (la mancanza di contrasto è semplicemente sorprendente)
Oskar Duveborn

24

<strong>e <em>aggiungi ulteriore significato semantico al tuo documento. Accade così che danno anche uno stile audace e corsivo al tuo testo.

Ovviamente potresti sovrascrivere il loro stile con i CSS.

<b>e <i>d'altra parte applicare solo lo stile del carattere e non dovrebbero più essere utilizzati. (Perché dovresti formattare con CSS, e se il testo fosse effettivamente importante, probabilmente lo renderesti "forte" o "enfatizzato" comunque!)

Spero che abbia un senso.


2
se dici che <b> e <i> non dovrebbero più essere usati, che dire del vecchio browser che non supporta <em> e <strong>?
Nirman,

4
@Nirman Se qualcuno utilizza un vecchio browser per navigare sul Web, ha già molti problemi, dal punto di vista visivo e della sicurezza. Per questo motivo, credo che programmatori e designer non debbano più supportare i vecchi browser.
yeyo,

4
Nota: se diciamo vecchi browser, intendiamo Netscape 3 e IE2 qui (IE3 e NS4 già supportano <strong> e <em>). Se hai davvero bisogno di continuare a supportare quei browser del 20 ° secolo, hai davvero grossi problemi.
Lister,

<b> and <i> on the other hand only apply font styling and should no longer be used.I documenti HTML5 ufficiali dicono diversamente. Citazione necessaria?

1
Questa risposta è stata pubblicata ~ 6 anni prima della pubblicazione di HTML5!
James,

8

Ecco un riepilogo delle definizioni insieme all'utilizzo suggerito:

<b>... un arco di testo a cui si sta attirando l'attenzione per scopi utilitaristici senza trasmettere alcuna importanza in più e senza implicazioni di una voce o un umore alternativi, come parole chiave in un estratto del documento, nomi di prodotti in una recensione, parole utilizzabili in software interattivo basato su testo o articolo lede .

<strong> ... ora rappresenta l'importanza piuttosto che una forte enfasi.

<i>... un arco di testo in una voce o un umore alternativi, o altrimenti compensato dalla prosa normale in un modo che indica una diversa qualità del testo, come una designazione tassonomica , un termine tecnico , una frase idiomatica di un'altra lingua , un pensiero o il nome di una nave nei testi occidentali.

<em> ... indica l'enfasi.

(Queste sono tutte citazioni dirette da fonti W3C, con la mia enfasi aggiunta. Vedi: https://rawgithub.com/whatwg/html-differences/master/Overview.html#changed-elements e http://www.w3.org /TR/html401/struct/text.html#h-9.2.1 per gli originali)


7

<b>e <i>sono entrambi legati allo stile, mentre <em>e <strong>sono semantici. In HTML 4, i primi sono classificati come elementi di stile del carattere e il secondo come elementi di frase .

Come hai indicato correttamente, <i>e <em>spesso sono considerati simili, perché i browser visualizzano spesso entrambi in corsivo. Ma secondo le specifiche, <em> indica l'enfasi e <strong> indica un'enfasi più forte , che è abbastanza chiara, ma spesso interpretata male. D'altra parte, la distinzione tra quando usare <i>o <b>è davvero una questione di stile.


1
strongnon indica "maggiore enfasi" ma piuttosto " importanza ". Per una maggiore enfasi , annidare un emelemento all'interno di un altro emelemento.
Chharvey,

@ TestSubject528491 se segui il link per gli elementi di frase che ho usato sopra, vedrai che ho appena citato le specifiche. Non penso che questo sia in conflitto con la semantica dell'importanza, né che un annidamento di due ems enfatizzi all'interno di un'enfasi, che capisco tu stia suggerendo.
Kariem,

3
Penso che le specifiche HTML5 stiano solo facendo più di una distinzione tra i due. Nella mia interpretazione, "enfasi" significa stress nel tono della voce. Ad esempio, "Vuoi da quei jeans?" contro "Vuoi comprare quei jeans?" hanno significati diversi a causa del posizionamento dell'enfasi. OTOH, "Importanza" non ha un effetto basato sul posizionamento. Ad esempio, " ATTENZIONE : attenzione al cane!" avrebbe lo stesso significato se l'importanza fosse rimossa.
Chharvey,

<b> and <i> are both related to styleehm. I documenti HTML5 ufficiali dicono diversamente. Citazione necessaria?

@vaxquis linkato sopra per HTML 4: <b>e <i>sono elementi di stile del carattere, mentre <em>e <strong>sono elementi di frase. Qualche suggerimento per migliorare questo? Per completezza, e anche perché il tuo commento non includeva una citazione, in HTML 5.2, tutti questi elementi sono descritti nel contenuto del fraseggio
Kariem

7

Mentre <strong>e <em>sono ovviamente più semanticamente corretti, sembrano esserci ragioni legittime per utilizzare i tag <b>e <i>per i contenuti scritti dai clienti.

In tali contenuti, parole o frasi possono essere in grassetto o in corsivo e generalmente non dipende da noi analizzare il ragionamento semantico per tale grassetto o corsivo.

Inoltre, tale contenuto può riferirsi a parole e frasi in grassetto e in corsivo per trasmettere un significato specifico.

Un esempio potrebbe essere una domanda di esame di inglese che istruisce uno studente a sostituire la parola in grassetto.


"più semanticamente corretto"? Che cosa vuoi dire con questo? Hai letto le specifiche HTML5 sui tag b / i?

4

<em>e <strong>consumano più larghezza di banda di <i>e <b>.

Richiedono anche una maggiore digitazione (se non generata automaticamente).

Inoltre ingombrano la schermata dell'editor con più testo. Mi sembra di ricordare che ai programmatori piacciono i file sorgente più piccoli se sono uguali. (Ed essere reali, sono gli stessi. Sì, ci sono differenze "tecniche" (<i> tosse </i>, ahem, mi scusi), ma è principalmente falso per cominciare.)

Con uno qualsiasi dei tag sopra, puoi usare i fogli di stile per personalizzare il modo in cui appaiono come desideri se hai bisogno che appaiano diversi dai loro rendering predefiniti.


1
Lol, questa dovrebbe essere la risposta accettata (HHOS). La tua è la risposta più realistica e corretta su tutta questa pagina, anche se è un po 'uno scherzo. Tutta questa faccenda della "semantica" è un gioco sciocco per cominciare. Sappiamo tutti che chiunque cerchi questa domanda lavora qui con i principali produttori di browser in mente, Chrome, Firefox, IE, ecc. Vogliamo solo sapere quali potrebbero essere le vere e reali differenze, non di cosa discutono le commissioni in la sua abbondanza di tempo libero.
PIL2

2

Come altri hanno detto <b> e <i> sono espliciti (cioè "rendere questo testo in grassetto"), mentre <strong> e <em> sono semantici (cioè "questo testo dovrebbe essere enfatizzato").

Nel contesto di un moderno browser web, è difficile vedere la differenza (entrambi sembrano produrre lo stesso risultato, giusto?), Ma pensa agli screen reader per i non vedenti. Se uno screen reader si imbattesse in un tag <i>, non saprebbe cosa fare. Ma se si imbatte in un tag <em>, sa che tutto ciò che è dentro dovrebbe essere enfatizzato dall'ascoltatore. E qui ottieni la differenza pratica.


<b> and <i> are explicit (i.e. "make this text bold"),ehm. I documenti HTML5 ufficiali dicono diversamente. Citazione necessaria?

2

<i>, <b>, <em>E <strong>tag sono tradizionalmente rappresentativo. Ma hanno ricevuto un nuovo significato semantico in HTML5 .

<i>ed è <b>stato utilizzato per lo stile del carattere in HTML4. <i>era usato in corsivo e <b>in grassetto. In HTML5 il <i>tag ha un nuovo significato semantico di " voce o umore alternativi " e il <b>tag ha il significato di offset stilistico .

Esempi di utilizzo del <i>tag sono: designazione tassonomica, termine tecnico, frase idiomatica di un'altra lingua, traslitterazione, pensiero, nomi di navi nei testi occidentali. Ad esempio -

<p><i>I hope this works</i>, he thought.</p>

Esempi di utilizzo del <b>tag sono le parole chiave in un estratto del documento, i nomi dei prodotti in una recensione, le parole utilizzabili in un software interattivo basato su testo, il piombo dell'articolo.

Il seguente paragrafo di esempio è stilisticamente compensato dai paragrafi che lo seguono.

<p><b class="lead">The event takes place this upcoming Saturday, and over 3,000 people have already registered.</b></p>

<em>e <strong>aveva il significato di enfasi e forte enfasi in HTML4. Ma in HTML5 <em>significa enfasi sottolineata e <strong>significa forte importanza .

Nel seguente esempio dovrebbe esserci un cambiamento linguistico durante la lettura della parola prima ...

<p>Make sure to sign up <em>before</em> the day of the event, September 16, 2016</p>

Nello stesso esempio possiamo usare il <strong>tag come segue ..

<p>Make sure to sign up <em>before</em> the day of the event, <strong>September 16, 2016</strong></p>

per dare importanza alla data dell'evento.

Rif. MDN:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong


1

Come hanno affermato gli altri, la differenza è che <b>e gli <i>stili di carattere hardcode, mentre <strong>e <em>dettano il significato semantico, con lo stile del carattere (o parlando intonazione del browser o che cosa hai) da determinare nel momento in cui il testo viene reso (o parlato).

Puoi pensarlo come una differenza tra uno stile di carattere "fisico" e uno stile "logico", se vuoi. Ad un certo momento, si potrebbe desiderare di cambiare il modo <strong>e la <em>visualizzazione del testo, per esempio, dalle proprietà che alterano in un foglio di stile per aggiungere colore e dimensione modifiche, o anche di utilizzare diversi caratteri anche del tutto. Se hai utilizzato il markup "logico" anziché il markup "fisico" hardcoded, puoi semplicemente modificare le proprietà di visualizzazione in un punto ciascuna nel foglio di stile, quindi tutte le pagine che fanno riferimento a quel foglio di stile vengono modificate automaticamente , senza doverli mai modificare.

Abbastanza lucido, eh?

Questa è anche la logica alla base della definizione di sottostili (a cui si fa riferimento utilizzando la style=proprietà nei tag di testo) per paragrafi, celle di tabella, testo di intestazione, didascalie, ecc. E utilizzo di <div>tag. È possibile definire la rappresentazione fisica per gli stili logici nel foglio di stile e le modifiche si riflettono automaticamente nelle pagine Web che fanno riferimento a quel foglio di stile. Vuoi una rappresentazione diversa per il codice sorgente? Ridefinisci il carattere, le dimensioni, il peso, la spaziatura, ecc. Per il tuo stile "codice".

Se usi XHTML, puoi persino definire i tuoi tag semantici e il tuo foglio di stile farebbe le conversioni in stili e layout di font fisici per te.


1
Puoi usare i fogli di stile per cambiare completamente il modo in cui <b>e <i>anche renderizzati. Abbastanza lucido, eh?
Thomas Eding,

be inon ho avuto codice. Proprio come qualsiasi tag HMTL, hanno uno stile CSS predefinito e proprio come con qualsiasi tag, puoi cambiarlo per apparire come desideri.
Mecki,

1

Uso entrambi <strong> e <b>, in realtà, esattamente per i motivi menzionati in questo thread di risposte. Ci sono momenti in cui un testo in grassetto appare semplicemente migliore, ma non è necessariamente semanticamente più importante del resto della frase. Ecco un esempio da una pagina su cui sto lavorando in questo momento:

"Recupera <strong> tutti </strong> libri su <b> lacrosse </b>."

In quella frase, la parola "tutto" è molto importante, e "lacrosse" meno - volevo semplicemente in grassetto perché rappresenta un termine di ricerca, quindi volevo un po 'di separazione visiva. Se stai visualizzando la pagina con uno screen reader, non penso proprio che debba fare di tutto per enfatizzare la parola "lacrosse".

Tenderei a immaginare che la maggior parte degli sviluppatori Web utilizzi l'uno dell'altro, ma entrambi vanno bene-- <b> sicuramente non è deprecato, come alcuni hanno affermato. Per me, è solo una linea sottile tra fascino visivo e significato.


1

Usali solo se l'uso delle classi di stile CSS è per qualsiasi motivo non convenzionale o impossibile (come i sistemi di blog, consenti solo alcuni tag da utilizzare nei post e infine negli stili incorporati). Un altro motivo è il supporto per browser molto vecchi (alcuni dispositivi mobili?) O motori di ricerca primitivi (che danno punti per <b>o<strong> tag, invece di analizzare gli stili CSS).

Se puoi definire gli stili CSS, usali.


1

Per il testo in grassetto usando il <b> tag

Per il testo importante utilizzando il <strong> tag

Per lo stile corsivo del testo usando il <i> tag

Per un testo enfatizzato usando il <em> tag


0

<b>e <i>dovrebbe essere evitato perché descrivono lo stile del testo. Invece, usa <strong>e <em>perché descrive la semantica (il significato) del testo.

Come tutte le cose in HTML, si dovrebbe pensare non a come si desidera guardare , ma quello che effettivamente media . Certo, potrebbe essere solo grassetto e corsivo per te, ma non per uno screen reader.


2
Completamente errato, <b> e <i> non dovrebbero essere evitati. Hanno significati semantici in HTML5.
user2867288

0

b o i significa che vuoi che il testo sia reso in grassetto o corsivo. forte o em significa che vuoi che il testo sia reso in un modo che l'utente capisce come "importante". L'impostazione predefinita è rendere grassetto e grassetto come corsivo, ma alcune altre culture potrebbero utilizzare una mappatura diversa.

Come stringhe in un programma, b e io sarei "hard coded", mentre forte e em sarebbe "localizzata".


0

"Hanno lo stesso effetto. Tuttavia, XHTML, una versione più recente e più pulita di HTML, raccomanda l'uso del <strong>tag. Forte è migliore perché è più facile da leggere - il suo significato è più chiaro. Inoltre, <strong>trasmette un significato - mostrando il testo fortemente - mentre <b>(per il grassetto) trasmette un metodo - in grassetto il testo. Con strong, il tuo codice ha ancora senso se usi i fogli di stile CSS per cambiare i metodi per rendere forte il testo.

Lo stesso vale per la differenza tra <i>e <em>".

Dixit di Google:

http://wiki.answers.com/Q/What_is_the_difference_between_HTML_tags_b_and_strong


0

Elementi di formattazione HTML:

HTML definisce anche elementi speciali per la definizione di testo con un significato speciale. HTML utilizza elementi come <b> e <i> per formattare l'output, come testo in grassetto o corsivo.

HTML grassetto e formattazione forte:

L'elemento HTML <b> definisce il testo in grassetto, senza alcuna importanza aggiuntiva.

<b>This text is bold</b>

L'elemento HTML <strong> definisce il testo forte, con un'importanza "forte" semantica aggiunta.

<strong>This text is strong</strong>

HTML corsivo e formattazione enfatizzata:

L'elemento HTML <i> definisce il testo in corsivo, senza alcuna importanza aggiuntiva.

<i>This text is italic</i>

L'elemento HTML <em> definisce il testo enfatizzato, con una maggiore importanza semantica.

<em>This text is emphasized</em>

The HTML <b> element defines bold text, without any extra importance. The HTML <i> element defines italic text, without any extra importance.ehm. I documenti HTML5 ufficiali dicono diversamente. Citazione necessaria?

0

Dovresti generalmente cercare di evitare <b>e <i>. Sono stati introdotti per il layout della pagina (cambiando il modo in cui appare) nelle prime versioni di HMTL prima della creazione di CSS, come nel frattempo rimossifont tag , e sono stati principalmente conservati per la compatibilità con le versioni precedenti e perché alcuni forum consentono HTML in linea e questo è facile modo per cambiare l'aspetto del testo (come utilizzando BBCode [i], è possibile utilizzare <i>e così via).

Dalla creazione del CSS, il layout non è più nulla da fare in HTML, per questo motivo il CSS è stato creato in primo luogo (HTML == Struttura, CSS == Layout). Questi tag potrebbero anche svanire in futuro, dopo tutto puoi semplicemente usare CSS e spantag per rendere il testo grassetto / corsivo se hai bisogno di una variazione di carattere "insignificante". HTML 5 li consente ancora, ma dichiara che la marcatura del testo in quel modo non ha significato .

<em>e <strong>d'altra parte dice solo che qualcosa è "enfatizzato" o "fortemente enfatizzato", lo lascia completamente aperto al browser su come renderlo. La maggior parte dei browser renderà emcorsivo e strongaudace come suggerisce lo standard di default, ma non sono obbligati a farlo (possono usare colori, dimensioni dei caratteri, caratteri diversi, qualunque cosa). È possibile utilizzare i CSS per modificare il comportamento nel modo desiderato. Puoi rendere emgrassetto se vuoi e stronggrassetto e rosso, per esempio.


7
<b> e <i> NON sono deprecati in HTML 4 e sono ancora pienamente supportati anche nel prossimo HTML 5. <em> e <strong> non sono sostituti per loro. Vedi anche w3.org/TR/html401/index/elements.html
thomasrutter

1
@thomasrutter Sono ancora in HMTL5 ma con un significato diverso e con una spiegazione molto dettagliata di come usarli o meglio, come non usarli. Nota che questi tag non hanno significato (grassetto e corsivo non sono significati , sono istruzioni di progettazione e HMTL riguarda il significato, CSS è a proposito del design) - HTML significa descrivere cosa è un testo e non come renderlo (che è stato separato dopo HMTL3 per una buona ragione) ,.
Mecki,

-2

<strong>e <em>sono astratti (che è ciò che le persone intendono quando dicono che è semantico). <b>e <i>sono modi specifici di rendere qualcosa di "forte" o "enfatizzato"

Analogia:

Entrambi <strong>sono <b>e <em>devono<i>

come

"veicolo" è "jeep"


1
Non vedo perché questa risposta sia stata sottoposta a downgrade. Molte altre risposte con contenuti simili sono state ben accolte.
aditya_m,

-4

Usiamo il <strong>tag per il testo che ha la massima priorità per scopi SEO come nome del prodotto, nome dell'azienda ecc., Mentre <b>semplice lo rende grassetto.

Allo stesso modo, usiamo <em>per il testo che ha la massima priorità per il SEO, mentre <i>per rendere il testo semplicemente corsivo.


4
Alcuni tag HTML hanno davvero un'applicazione SEO. Meta description, meta robot o link canonical per citarne alcuni. Per quanto ne sappiamo, strong / em non è uno di questi, né in teoria né in pratica.
Sheepy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.