<b> ve <i> etiketleri neden kullanımdan kaldırıldı?


98

Bu soru benim kolej sınıflarımdan birinde ortaya çıktı. Profesör sadece daha açıklayıcı oldu cevabı verdi ama o kadar olsa görünüyor <b>ve <i>anlamlarını oldukça açık ve yazmaktan daha kolaydır <strong>ve <em>.

Bu etiketlerin kullanımdan kaldırıldığına dair resmi argümanlar neydi?


38
Oldukça eminim <b>ve <i>onaylanmamıştım.
Doval


4
Bunun hakkında düşünmeye meyilliyim: Bir ekran okuyucunun bunu farklı okumasını istiyor muyum? Sadece (kör olmayan) bir okuyucunun kolayca bulabileceği kelimeleri seçmek istersem kullanabilirim b- kelimenin tam anlamıyla "bu kalın", "bu vurgulanır" anlamına gelir. Fakat asıl mesele şu ki, onlar anlam bakımından farklılar - itiraz yok, sadece eskiden yaptığınız bveya igenellikle kastettiğiniz strongveya değil em.
Luaan

1
@MichaelT LaTeX'i ilk kullanmaya başladığımda, boş bir belgeye başlarken (stil paketleri olmadan) metnin italikleştirilmesi ve kalınlaştırılması ile ilgili tüm farklı yollarla kafam karıştı.
Cole Johnson

@Luaan: Bile <i>ve <b>aslında kaldırılmış, değil <tt>ve <u>, ve soru olanlara tıpkı uygulanabilir olacaktır.
supercat

Yanıtlar:


135

Geçen yaz, tüm HTML5 özelliklerini ve önceki tüm HTML özelliklerini (hatta terk edilmiş olanları bile) ve bulabildiğim tüm CSS özelliklerini ve birçok XML özelliğini okudum. Anlamsal açıdan zengin köprü metni belgelerini sevdiğim için, HTML5'teki ilgili HTML anlambiliminin arkasındaki fikri size vermeme izin verin.

HTML5'ten önce

HTML5'ten önce ive bgerçekten modası geçmişlerdi. Nedeni esasen gibi çalıştı oldu emve strongsırasıyla ancak üzerinde odaklanarak, sunum ve üzerinde semantik (kötü olan).

Gerçekten de, imetnin italik olması gerektiği anlamına geliyordu (metnin ekranda nasıl gösterilmesi gerektiği hakkında bir şeyler söyledi). Öte yandan, emmetnin vurgulanması gerektiği anlamına geliyordu (metnin anlamıyla ilgili bir şey söyledi).

Burada önemli bir teorik fark var. Kullanırsanız em, kullanıcı aracısı (= tarayıcı) metnin vurgulanması gerektiğini bilir, böylece belge ekranda görüntülenirse (veya biçimlendirme mümkün değilse tümü büyük harfle, hatta kalınsa bile) kullanıcı tercih ederse), belge kullanıcıya konuşulursa farklı telaffuz edebilir.

Vurgulamanın gerçekten anlambilim ile ilgili olduğuna dikkat edin. Örneğin, ifadeler

  • Kedi benim. (= köpek değil!)
  • Kedi benimdir . (= sizin değil!)

aynı anlama sahip değiliz.

Aynı fark b(kalın yazı tipi) ve strong(güçlü vurgu) için de geçerlidir.

Genel olarak dijital yazmanın ve özellikle köprü metni yazmanın genel bir ilkesi, içeriği ve stili ayırmanız gerektiğidir. Köprü metni oluşturmada bu, içeriğin HTML dosyasında olması ve stilin bir CSS dosyasında (veya bir dizi CSS dosyasında olması gerektiği) anlamına gelir. Farklı ama ilgili bir ilke, belgenin anlambilim açısından zengin olması gerektiğidir (üstbilgileri, altbilgileri, listeleri, vurguları, adresleri, gezinme alanlarını vb. İşaretleme gibi). Bunun bir takım avantajları vardır:

  • Bilgisayar programlarının belgeyi yorumlaması çok daha kolaydır. Bu programlar tarayıcıları, metinden sese uygulamaları, arama motorlarını ve dijital asistanları içerir. (Örneğin, tarayıcı adresinizi adres defterinize kaydetmenize izin verebilir, yalnızca onu bulabilir ve yorumlayabilir. Ayrıca, başlıklarınızı doğru işaretlerseniz, Microsoft Word'ün sizin için bir TOC oluşturabileceğini ve otomatik olarak güncelleyebileceğini de biliyor olabilirsiniz. .)
  • Stili daha sonra değiştirmek çok daha kolaydır. (860 sayfalık belgenizdeki tüm üçüncü düzey başlıklarınızın rengini değiştirmek istiyorsanız, stil sayfasındaki tek bir satırı değiştirebilirsiniz. Karışık içeriğiniz ve sunumunuz varsa, tüm belgeyi el ile taramanız gerekir. Ve muhtemelen bir ya da iki başlığı özlüyorsunuz, bu da dokümanı profesyonel görünmüyor.
  • Koşullara bağlı olarak farklı stil sayfaları kullanabilirsiniz (belge ekranda mı görüntüleniyor veya kağıda mı yazdırılıyor?). Son kullanıcının stili seçmesine bile izin verebilirsin. (Web sitemde birçok alternatif stil sayfası var. IE ve FF'de, Görünüm menüsünü kullanarak bunları değiştirirsiniz.)

Yani, kısacası, ive bkullanımdan kaldırıldı çünkü sunumla ilgili HTML etiketleri vardı , bu tamamen yanlıştı.

HTML5'te

HTML5'te ive bartık kullanımdan kaldırıldı. Bunun yerine, onlara sematik anlam verilir . Yani şimdi aslında anlambilim hakkında, sunum hakkında değil.

Daha önce olduğu gibi, kullanmak emvurgu işaretlemek için: "kedi olduğunu . Mayın" Ancak iitalikleri basılı bir çalışmada kullanacağınız hemen hemen tüm diğer durumlarda kullanırsınız. Örneğin:

  • iTaksonomik tanımlamaları işaretlemek için kullanıyorsunuz : " R. norvegicus'u seviyorum ."
  • iÇevreleyen metne göre farklı bir dilde bir cümle işaretlemek için kullanılır : Alakart
  • Sen kullanmak i": kelimenin kendisi hakkında konuşurken bir kelime işaretlemek için içki bir isim ve bir fiil hem"

classKesin kullanımı (ayrıca Google "mikro biçim" ve "mikro veriler") belirtmek için bu özelliği kullanmak da iyi bir fikirdir . Ve tabii ki, ikinci durumda, langdoğru dili belirtmek için gerçekten niteliği kullanmalısınız . (Aksi takdirde, örneğin , bir metinden konuşmaya ajan bir metni metni yanlış yönlendirebilir.)

Bir yıl önce ya da öylesine, HTML5 şartnamesi ayrıca citekitap isimlerini, filmleri, operaları, resimleri vb. İşaretlemek için kullanılması gerektiğini söyledi.

  • Nymphomaniac hakkında ne düşünüyorsun ?

Son olarak, uzun zamandan beri dfn, bir metindeki bir cümlenin tanımlayıcı örneğini işaretlemek için kullanılır (matematiksel bir tanım veya bir terimin tanımı gibi):

  • Bir grup , tek bir ikili işlemle donatılmış bir set X'tir, öyle ki ...

Bu nedenle, basılı kitabınızdaki birçok farklı anlam ifade edebilen italik, dört farklı HTML5 etiketiyle temsil edilir, çünkü gerçekten harikadır, çünkü daha önce ikna etmeye çalıştığım anlambilim iyidir. (Örneğin, tarayıcınızdan metindeki tüm tanımların bir listesini yapmasını isteyebilirsiniz, böylece sınavdan önce hepsini bildiğinizden emin olabilirsiniz.)

Dönerek strongve bHTML5 belirtimi strong, metnin önemli bir bölümünü işaretlemek için kullanılması gerektiğini, bir uyarı ya da bir cümlede dikkat edilmesi gereken çok önemli bir kelime gibi kullanılması gerektiğini söylüyor . Öte yandan, banahtar kelimeler gibi, metinde bulmak kolay olması gereken şeyleri işaretlemek için kullanılmalıdır. Ayrıca bliste maddelerinde (LI'ler) başlık olarak da kullanıyorum .


1
Düzeltme: tanım etiketi <dfn>değil <def>. Aksi takdirde, tüm konuların kapsamlı bir özeti. <b>Liste öğelerinde başlık olarak kullanmanız öneriniz ilginç; anlamsal yaklaşım bir tanım listesi kullanmaktır , ancak şu anda hiçbir tarayıcı desteklemediğinden display:run-in, satır içi anahtar kelime işaretlemesini yapabileceğiniz <b>veya <span>kullanabileceğiniz en iyisidir.
AmeliaBR

@AmeliaBR. Yazım kuralını (def) incelediğiniz için teşekkür ederiz. Tanım listeleri hakkında: tanım listeleri isim-değer çiftleri için kullanılmalı ve bunları daima bunun için kullanıyorum ( mesela misafir defterime bak ). Ben de sevdim display:run-in, ancak desteği azaldığından , floatya da content:numarayı kullanmak zorundasınız , bkz rejbrand.se/rejbrand/news.asp?ItemIndex=169 . bListelerde 'başlıkları' işaretlemek için kullanmaktan bahsettiğimde , isim-değer çiftlerini kastetmiyorum, fakat her öğede bir 'başlık' kullanmak istediğim basit listeleri kast ediyorum.
Andreas Rejbrand

1
@SarahofGaia İfade edilen <b>metinleri garantileyen en az iki kusur vardır . 1) Ekran okuyucular, braille ekranlar ve daha kalın gliflerin anlamsız bir kavram olduğu metin tüketen diğer araçlar. 2) b { font-weight: normal }, yani ekran stili <b>ya sabit değil.
8bittree

1
Son olarak, her zaman tarayıcıyı güvenmiyorsan kendi CSS tedarik özgürdürler: b, strong { font-weight:bold; }. Bu şekilde, olabileceği kadar emin olabilirsin. CSS görsel formatı belirtmenin yoludur. HTML, görsel sunumuyla ilgili anlam (içerik) ve CSS ile ilgilidir.
Andreas Rejbrand

1
Bu cevap bana font etiketlerimi neden css olarak değiştirmem gerektiğini anlamamı sağladı. Her zaman cesurca yazı tipi etiketleri sevdim ve hepsini, şimdi neden kullanmamam gerektiğini anlıyorum. Teşekkür ederim
Andreas

58

Doval'ın dediği gibi onlar itiraz edilmiyor. Onlar hala var ama HTML5'e önce eskiden ne çok insan farklı kullanılmalıdır.

Bu 'semantik' html ile ilgili. Nasıl görünmesi yerine, ne olduğunu tanımlamalı. Tarayıcı veya teorik olarak başka herhangi bir ekran (kör için bir okuma uygulaması) tam olarak nasıl yorumlanması gerektiğine karar verebilmelidir.

Bu, "kırmızı" gibi CSS sınıfı adlarını kullanmamanıza ve burada farklı bir renk kullanmanın ardındaki işlevsel fikri tanımlayan daha açıklayıcı sınıflar kullanmamaya benzer. Daha sonra yeşilin daha iyi olduğuna karar verebilirsiniz (ve belki koyu renkli metin yerine kırmızı renkli kullanılarak "güçlü" bir şey gösterilmelidir). Veya renk körü kullanıcı, renklerin başka yöntemlerle değiştirildiği bazı özel tarayıcı ayarlarına sahip olabilir.


1
<strong> yerine <b> kullanmanın tercih edildiği durumlar var mı? Veya <strong> her zaman "daha semantik" bir etiket mi?
LanceLafontaine

4
Kabaca <b>, "vurgulanması" gereken, ancak "vurgulanmayan" bir metindeki anahtar kelimeler gibi kullanabileceğiniz şeyler için kullanabilirsiniz. Teknik belgelerde, kitap kodları kod örnekleri veya teknik terimler gibi, belirli özellikleri göstermek için kullanılan farklı metin stillerini bulabilirsiniz. Bu tür kullanımlar için teknik bir terim gibi <b> veya <i> kullanılabilir.
thorsten müller

3
@LanceLafontaine Resmi standarda bir göz atın .
Rufflewind

4
Bunu da kötü bir örnek olduğunu düşünüyorum thorstenmüller @ ... Bu yönetim yerine onlar tip yazar yazı kendi özelliklerini istediğiniz kalın ve kalın olmaması ama altı çizili sonra karar ders kitabı durumda olduğu kullanarak bu durumda <span class="keyword">...</span>ilk etapta sizi kurtarır içinde çok fazla sorun.
CompuChip

2
@LanceLafontaine <b>bir kenar durumdur, ama sağlam örnekler kullanmak için vardır <i>durumlar için <em>uygun değildir: (Eğer İngilizceye benimsenen türler veya latin kelimelerin bilimsel isimlerini verebilir bir dil niteliğine sahip bir yayılma kullanabilirsiniz, ancak bu diğer etkileri her türlü var - - bir ekran okuyucu, farklı bir dilin seslerini değiştirebilir). Anlamsal olarak doğru bir yaklaşım kullanmak olsa da, diğer eserlerin başlıklarını italikleştirmek için de kullanılabilir <cite>.
AmeliaBR

41

Gerçek bir hikaye olduğunu bve iilk obsoleted kullanımdan kaldırıldı, lanetli ve (genel olarak konuşuyorum) Çeşitli HTML5 taslaklar “sunumsal” olarak anatematized, ama daha sonra bu etiketleri yaygın olarak kullanılan ve aynı zamanda birçok yazma programlar tarafından üretildiğini fark edildi. Basitçe onlara izin vermek yerine, elementlere izin verebilmek için ama yine de “sunum” işaretlemesi konusunda katı gibi davranmaya çalıştıkları için yeni “anlamsal” tanımlamalar geliştirdiler. Yeni tanımlar bir taslaktan diğerine değişmiştir ve belirsizdir: onları aynı şekilde anlayan ve yorumlayan iki kişiyi zor bulabilirsiniz.

Üzgünüz, referans yok. Yukarıdaki açıklama, değişiklikleri takip etme ve taslakları ve tartışmaları, genellikle satırlar arasında okumanın bir sonucudur. Açıkça nedenini anlatmıyorlar. Hala gerçek hikaye olduğunu düşünüyorum.

Sonuç: Devam et. Burada işe yarar bir şey yok. bVe iher zamanki gibi unsurlar aynı şeyi yapın: her zamanki uyarılar ile, sırasıyla, yazı tipi kalın veya italik yapmak. Tarayıcılar, arama motorları veya diğer yazılımlar üzerinde etkisi olmayan “quasischolastic” semantiğini ”değil, dikkate almanız gereken gerçek budur.


3
Bununla birlikte, sıra dışı kozmik anlambilimciyi sadece <b>komik bir tür olarak <span>kabul ederek, varsayılan olarak kalın harflerle yazabilirsiniz . O zaman rahatsız olabilirseniz, kullanımlarınıza bir classözellik verin, böylece gerektiğinde ortak anlambilimine sahip olduklarından, bir kerede kullanılan birden çok şeyi sınırlandırabilirsiniz. Sunumla b.productname {font-weight: normal; font-style: italic; }ilgili fikrinizi değiştirdikten ve anlamsal biçimlendirme için akıllıca bir seçim yaptığınızdan sonra , insanların kafanızda yarı kalmaya başladığını düşünmesi quasischolasticdir ;-)
Steve Jessop

1
@SteveJessop: Dünyada hala dosya boyutunu önemseyen bizler için <b>this</b>çok az makul görünüyor , <span class="bold">this</b>(eskiden sekiz bayt havai yeterince sıkıcı; ikinci bayt havai delice görünüyor). HTML'in neden hiçbir zaman <@quack>this</@>eşdeğer bir kısa biçim gösterimi tanımlamadığını merak ediyorum <span class="quack">this</span>?
supercat,

4
@supercat: Bunun için transfer kodlaması: gzip bunun içindir. Ya da belki de XML + XSLT, tam olarak nerede ve nasıl "şarlatan" için daha özlü bir gösterim sunmak istediğinize bağlı olarak.
Steve Jessop,

7
@supercat class='bold'? Codeless Code'un Master Suku'su, bu gibi zayıf sınıf isimlerinin kullanımı hakkında sizinle konuşacaktı . Bunu son boldRedText'iniz olarak kabul edin .

2
14.4 modem günlerinde, CSS henüz bir kullanıcı aracısında henüz gerçekleşmemiş ya da uygulanmayan bir fikirdi . Bu HTML öğeleri sonsuza dek sıkışıp kalacağımız eski miras harikasıdır.
Michael Hampton

11

<b>Ve <i>etiketleri "cesur" ve "italik" kavramları ile başladı. Sorun, bunların bazı kullanıcı temsilcileri için tamamen anlamsız olabileceğidir. Örneğin, "italik" kör bir insan için ekran okuyucusunda nasıl bir ses çıkarır?

Bunlarla değiştirmek <strong>ve <em>tipografik kavramlara doğrudan bağlantıyı kaldırmak. Bunun yerine, kullanıcı aracısı bunları uygun görmesine rağmen yapabilir.


2
Açıkçası, kullanıcı aracısı oluşturabilir <b>ve <i>yine de uygun görür.
Jonathan Eunice

8

<b>Ve <i>kelimenin tam anlamıyla 'cesur' veya 'italik' metni gerektirdiğinde etiketler esastır.

Eğer 'bir italik HTML bir denklemi yazıyorsanız ben ' dan farklı bir anlamı vardır bir 'I' o ayrım yapabilmek önemlidir olmayan italik harflerle.

Onları, düşündüğüm <sup>veya <sub>etiketlerimle aynı şekilde düşünüyorum - böyle bir 'görünüm' etiketi kullanmadan denklemin anlamını doğru şekilde temsil edemezsiniz.

Saf yaklaşım, MathML veya TeX kullanmak olacaktır ancak tarayıcı desteği henüz mevcut değil.


14
"Semantik" işaretlemeye iten insanların bazı durumlarda eski etiketlerin alternatiflerden daha anlamsal olarak doğru olduklarını fark etmelerini diliyorum . Bir belgenin metni altı çizili kelimelere atıfta bulunursa, bu kelimelerin altını çizmek dışında herhangi bir şekilde gösterilmesi anlamsal olarak yanlış olacaktır. Biri, bir kısmını yerleştiren, in a monospaced typefaceancak neden olarak hiçbir ayrım <tt>yapmayan bir sistemden metin ithal ediyorsa, bunun için "değiştirmelerden" birinin kullanılması , hatalı bir şekilde, içe aktarmayı yapan kodun amaçtan daha fazlasını bildiği anlamına gelir.
supercat,

Ben uygunluğu ile kabul bve imatematiksel (ve fiziksel) bağlamlarda, ama bu tür bir kullanım olup değil HTML5 taslaklar bahsetti. Bu soruyu gündeme getirdiğimde, bunun yerine Unicode özel karakterlerinin (matematiksel kalın harfler ve matematiksel italik harfler) kullanılması ciddi şekilde yanıtlandı!
Jukka K. Korpela 4:14

1
@supercat: Genel iddia (itiraf ediyorum her zaman geçerli değildir), kullanıcı aracısının nakit paraya çeviremeyeceği çekler yazmamanız gerektiğidir. Özellikle birisinin ekran okuyucusunun monospaced bir fontta konuşacağını iddia eden bir sayfa yazmamalısınız (Bir robot sesinin uygun olacağını düşünüyorum: Asla bir ekran okuyucu kullanmadım). Elbette bu, çoğu insanın sayfalarının en azından ekran okuyucularda çalışmadığını ve bu yüzden umursamadıkları varsayımsal bir erişilebilirlik için herhangi bir bedel ödemelerinin bir anlamı olmadığını görmezden geliyor. Ancak W3C bu gerçeği kasıtlı olarak ihmal eder.
Steve Jessop

Kodun içe aktarılması durumunda, kanonik (eğer tatmin edici değilse) cevabın cevabı olduğunu varsayalım class="source-X-asserts-it-should-be-monospace", bu nedenle diğer bazı kaynakların monospace olması gerektiğini bildiği için anlamsal olarak farklı olan metinden ayırdığı anlamına gelir . Aslında bu, kötülüğü yalnızca HTML’ye çevirmek yerine, HTML’nin kötü gördüğü şeyleri denetlemektir.
Steve Jessop,

1
@SteveJessop: Başka bir deyişle, <TT>bir kaç dolaylı katmandan sonra, metnin belirli bir fontta görünmesi gerektiğini gösterecek olan işaretlemeyle, metnin kontrastlı bir monospace fontunda ayarlanması gerektiğini doğrudan geliştirmemiz gerekir. tek boşluklu ol. Bütün ekran okuyucuları ile yararlı bir şeyler yapmak istemem iken <tt>, ben onlar ile çok daha kolay olurdu beklenebilir <tt>daha <span class="styleNameThisImportUtilityPicked">.
supercat,

0

HTML etiketlerinin altında yatan tasarım ilkeleri "anlamsal" olmaları gerektiğidir, yani düşük seviyeli komut yerine anlam ve amaç belirtmeleri gerekir.

Klasik test "etiketler kör için bir tarayıcıda anlamlı bir şekilde kullanılabilir".

Ses tabanlı bir tarayıcı için, italik için "i", italik konuşma yapamadığınız için oldukça işe yaramaz. Bununla birlikte, "em" etiketi, bir ses cihazının bir ifadeyi birçok yönden vurgulayabilmesi nedeniyle anlamlıdır: perdeyi yükselterek, sesi artırarak veya aksanı değiştirerek. Braille oluşturucu, boşlukları değiştirerek, boyutu değiştirerek veya titreşim ekleyerek noktaları yükselterek vurgu yapabilir.


Söylediğiniz gibi italik bir konuşma yapamazsınız - ama italik olduğu gerçeğinin anlamsal bir anlamı olduğu yerde italik bir metniniz olabilir, örneğin denklemler ...
SAL

2
'Yani, ses tabanlı bir tarayıcı için, italik için "i", italik konuşma yapamadığınız için oldukça işe yaramaz.' ... Evet, ve öyle <img>çünkü bir görüntü konuşamıyorsunuz ve ses donanımı olmayan bir sistem bulunamıyor <audio>. Bazen sunum bir öğenin amacıdır ve evrensel olarak desteklenmesi gerekmez (ve potansiyel olarak desteklenmeyen diğer öğelerin aksine, <i>alt metne ihtiyaç duymaz , çünkü italik olduğu gerçeği kaybedilen tek bilgidir). Asıl sorun, insanlar ne izaman demek istediklerini söylemeleridir em.
nmclean

@SAL: Neden biri "italik konuşma" yapamıyor? Eğer normal konuşma 100'lük bir "perde" değeri ile konuşulursa, bir <i>etiketin içinde 120'lik bir adımın kullanılması ve bir <b>etiketin içindeki bir metinin kullanılması (80) ve bir metin içinde bir metnin <tt>bir sentezlenmiş daktilo ile konuşması senkronize edilmesi durumunda, dinleyiciye izin verilir. bu işaretleme biçimlerini kolayca ayırt etmek. İş eğer yerine kullanmanın daha zor olurdu <i>bir metin yerine kullanılan etiket <span class="whatever">metin parçaları "Acme SemiScript" yerine "Waldorf Sans" [bazı yazı tipi aileleri daha ... kullanılarak gösterilecek neden
SuperCat

... iyi bir italik yazı tipine sahip değilsiniz, ancak bazen başka bir yazı tipi ailesi kullanılarak yazılan metin içinde ayarlandığında sadece italik bir yazı tipi görünebilir].
supercat,

@supercat İtalik konuşmayı değil, vurgulu konuşmayı anlatıyorsunuz. Farklı bir ton istiyorsanız, nmclean'ın dediği gibi, bunları kullanmalısınız. Eğer italikleştirilmesini istiyorsanız, i kullanın. Bir ekran okuyucunun ne yapacağını bilmesi önemli değil, çünkü yapacak bir şeyi yok. Kitap başlıkları genellikle italikleştirilir, ancak bunları farklı bir şekilde telaffuz etmiyorsunuz.
DCShannon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.