Ci sono buone ragioni per evitare l'uso del markup HTML semantico?

2

Sfondo

Recentemente ho assunto un nuovo lavoro come sviluppatore in un'azienda in cui ho ereditato un CMS interno costruito circa 5 anni fa. Il CMS costruisce le pagine in XML che vengono quindi inviate alla pagina come HTML. Alcuni dei markup sono generati all'interno del PHP back-end, mentre altri sono esposti all'utente nel livello di amministrazione, per consentire la modifica. Finora ho osservato che nessuno dei markup è semantico: il 95% di esso è testo semplice racchiuso nei tag, in questo modo:

<div>
    This is a heading
</div>
<div>
    This is a subheading
</div>
<div>
    This is a paragraph.
    <div>
        <a href='#'>This is a button</a>
    </div>
</div>

(Il markup ha div annidato dove richiesto e utilizza le classi, ma quanto sopra è inteso come una dimostrazione che i tag semantici non sono in uso.)

Sono l'unico sviluppatore responsabile del lavoro front-end in questa azienda: il precedente sviluppatore front-end è uscito. Sono stato informato che il markup semantico non dovrebbe mai essere usato e che dovrei mantenere lo stile di markup in futuro. Non sono riuscito a ottenere spiegazioni tecniche per questa decisione strutturale, e anche gli altri dipendenti dell'azienda non lo sanno.

Per ora manterrò il sistema in modo coerente, ma nel frattempo sto indagando sul motivo per cui questa scelta strutturale potrebbe essere stata fatta. Originariamente la piattaforma avrebbe supportato IE8, ma al giorno d'oggi supportiamo IE9 e versioni successive. Esperimenti con il sistema di template dimostrano che CMS può gestire l'HTML semantico e il mio test dimostra che le pagine web generate funzionano come previsto. Non riesco a rilevare alcun problema causato dall'introduzione di elementi semantici HTML5 in qualsiasi browser moderno (sebbene non abbia ancora provato a eseguire il test in IE8).

Domanda

Quali sono le possibili ragioni tecniche per escludere deliberatamente l'uso del markup semantico da un progetto web?

NB. Alcune aziende hanno regole interne atipiche e lavorare in quelle aziende implica seguire le regole, indipendentemente dall'opinione. La mia domanda non è se dovrei mantenere lo status quo o modificarlo, ma quali motivi potrebbero aver influenzato le scelte di progettazione in primo luogo.

    
posta Candlejack 08.11.2016 - 11:57
fonte

2 risposte

3

L'uso della marcatura semantica ha una serie di vantaggi:

  • Otteniamo stili predefiniti sensibili per molte cose come enfasi, tabelle o link.
  • Otteniamo un numero di elementi dell'interfaccia utente con aspetto e comportamento precostruiti, come <form> , <a> , <input> , <select> o <details> .
  • Otteniamo un livello base di accessibilità poiché le tecnologie assistive possono interpretare i tag HTML.
  • Il markup semantico può aiutare i motori di ricerca e altri agenti utente a comprendere meglio i tuoi contenuti (ad esempio servizi come Pocket o Instapaper o la visualizzazione di leggibilità integrata di alcuni browser cercano di estrarre contenuti pertinenti per una migliore esperienza utente).

Ma potrebbero anche non essere necessari o potrebbero essere degli inconvenienti.

  • Gli stili predefiniti sono incoerenti tra i browser. È più o meno necessario ripristinarli prima di poterli creare con stili personalizzati.
  • Gli stili di default non sono di grande aiuto se non stai scrivendo del testo. In realtà, tendono a essere un ostacolo quando si esegue il layout. Ti ritroverai praticamente con <div class="component"> indipendentemente dalle tue intenzioni.
  • È difficile modellare alcuni elementi incorporati. Se stai cercando di creare un'esperienza utente coerente, potrebbe diventare interessante sviluppare i tuoi elementi dell'interfaccia utente. Per esempio. non puoi creare un editor di testo RTF da un <textarea> . Non è possibile impostare in modo coerente le barre di scorrimento.
  • Potresti non aver bisogno di accessibilità (improbabile in molti ambienti normativi), o potresti preferire implementare tu stesso le caratteristiche di accessibilità necessarie attraverso gli attributi CSS e aria-* .
  • Potrebbe non essere necessario essere ottimizzati per i motori di ricerca. Inoltre, ci sono alcune prove che Google è più interessato all'aspetto in stile della tua pagina che al sorgente della tua pagina.

Ma ciò presuppone che lo sviluppatore originale abbia preso in considerazione questi casi e abbia preso una decisione consapevole a favore o contro di loro. Questo potrebbe non essere stato il caso, e la vera causa potrebbe essere quella:

  • è stato considerato troppo difficile educare gli utenti dell'interfaccia di amministrazione ai tag disponibili e al loro corretto utilizzo (il mio abuso "preferito": <br><br> come separatore di paragrafi perché le persone non capiscono <p> ...).
  • c'era qualche FUD (paura, incertezza, disinformazione) sul supporto del browser per alcuni tag semantici, quindi è stato ritenuto più sicuro non usarne nessuno.
  • tag aggiuntivi avrebbero complicato troppo la trasformazione XML → HTML.

Come lo sviluppatore originale ha lasciato, non hanno voce in capitolo nello sviluppo futuro. Qualunque cosa fosse, non si conosce il loro ragionamento dietro la decisione di progettazione di utilizzare solo <div> s. Se nessuna delle idee di cui sopra ha senso nel contesto del tuo CMS, puoi supporre che non esista alcuna ragione reale. In tal caso, e se l'HTML semantico fornirebbe valore al progetto, sarebbe opportuno suggerire le modifiche appropriate.

    
risposta data 08.11.2016 - 12:35
fonte
1

L'elemento div è generico e può essere utilizzato per qualsiasi cosa. Con lo styling, si può produrre lo stesso output visivo di qualsiasi altro elemento. Tuttavia, i browser hanno il loro stile predefinito e duplicheresti questo sforzo se lo sostituisci con il tuo, ma è probabile che tu stia scrivendo il tuo stesso in una certa misura per creare uno stile visivo.

Essendo l'elemento div così generico, è più facile utilizzarlo invece di dover pensare alla semantica dell'elemento o di come si applica al profilo HTML. Quindi rende più semplice la scrittura del codice. Alcuni direbbero che è pigro ma alcuni dei nuovi elementi sono aperti a una varietà di interpretazioni e confusione.

In HTML5, la specifica è cambiata e ora si consiglia di utilizzare l'elemento div come ultima risorsa. Viene ora suggerito dalle specifiche , che dovresti usare gli elementi più recenti, come la sezione, l'articolo e così via, per dare un significato semantico migliore alla struttura HTML del documento.

Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable. Use of more appropriate elements instead of the div element leads to better accessibility for readers and easier maintainability for authors.

Pertanto, una migliore accessibilità e manutenibilità potrebbero essere considerate un motivo tecnico.

Per quanto riguarda la SEO, nessun motore di ricerca dà peso ai nuovi elementi semantici HTML5. Nessun motore di ricerca utilizza il profilo HTML specificato. Google ha dichiarato che non lo faranno prendi in considerazione gli elementi HTML5 fino a quando più persone li usano ma, andando avanti, questo potrebbe cambiare e probabilmente lo farà.

...I definitely wouldn't want to stand in the way of your implementing parts of your site with HTML5, but I also wouldn't expect to see special treatment of your content due to the HTML5 markup at the moment.

Si noti che la citazione di cui sopra ha sei anni ma non ho visto nulla da Google che dice in modo diverso.

    
risposta data 08.11.2016 - 12:20
fonte

Leggi altre domande sui tag