HTML5'te hala eğik çizgiye ihtiyacımız var mı?


122

HTML5'te, XHTML'de olduğu gibi yine de eğik çizgiye ihtiyacımız var mı?

<img src="some_image.png" />

validator.w3.org onu düşürürsem şikayet etmedi, bir uyarı bile. Ancak bazı çevrimiçi belgeler, img, link, meta, br, vb. Gibi etiketler için bitiş çizgisinin hala gerekli olduğunu gösteriyor gibi görünüyor.


6
Hala mı? Herhangi bir HTML sürümü tüm etiketlerin kapatılmasını gerektirdi mi?
Gabe

9
@Gabe XHTML 1.0 Strict'in buna ihtiyacı var. Demek istediğim, web sayfaları genellikle iyi yüklenir, ancak geçersiz sayılır.
CaptSaltyJack

3
Evet, ama X sadece orada değil çünkü X harika, HTML ile XHTML arasında büyük bir boşluk var.

1
@Capt: Haklısınız, ancak bu yalnızca belge türünüz XHTML'yi gösteriyorsa sorun olmalıdır .
Gabe

Yanıtlar:


80

img etiketleri Void Öğelerdir, bu nedenle bir bitiş etiketine ihtiyaç duymazlar.

Boş öğeler alanı, taban, br, sütun, komut, yerleştirme, hr, img, giriş, keygen, bağlantı, meta, param, kaynak, parça, wbr

...

Void öğelerinin yalnızca bir başlangıç ​​etiketi vardır; void öğeler için bitiş etiketleri belirtilmemelidir.

W3C | WHATWG

Bununla birlikte, HTML5'te katı ayrıştırma olmadığı için büyük bir zarar vermeyeceği söyleniyor.


Merak ediyorum, çünkü editörüm (Komodo) '<img src = "x">' yazıp enter tuşuna basarsam girinti yapıyor. HTML5 modunda sondaki eğik çizgiyi bekliyor ve bunun doğru davranış olduğundan emin olmak istedim.
CaptSaltyJack

5
Bu HTML, XHTML değil, dolayısıyla gerekli değil. Neyse ki, ayrıştırıcılar XHTML tarzı bitiş çizgilerini hala gayet iyi anlıyorlar, bu yüzden onu orada bırakmanın bir zararı yok. Herhangi bir nedenle gerekirse, geriye doğru XHTML'ye dönüştürmek daha kolay demektir.
Nightfirecat

4
@FreeRadical: Bir void öğesi için sondaki eğik çizgi isteğe bağlıdır, ancak bir bitiş etiketi geçersiz olacaktır.
Ry-

26
Soru uç eğik çizgilerle ilgili olsa da (örneğin <br/), bu yanıt yalnızca bitiş etiketlerine atıfta bulunur (örneğin <br></br>).
Ücretsiz Radikal

12
@FreeRadical doğru. O karıştırır, çünkü bu cevap, teknik olarak yanlış an ending slasholan an end tag, ve böylece tırnak olduğunu Spec paragraflar yanlış anlamaktadır. Bu, @ YannisDran'ın kafa karışıklığına yol açar. @minitech neyin doğru olduğunu doğru bir şekilde belirtir.
ToolmakerSteve

94

HTML 5'te kapanış eğik çizgisi void öğelerinde isteğe bağlıdırimg (bunu ekliyorum çünkü şu anda kabul edilen yanıt sadece: "void öğeler için bitiş etiketleri belirtilmemelidir" diyor ve void öğelerindeki kapanış eğik çizgileri ele almıyor).

Http://www.w3.org/TR/html5/syntax.html#start-tags (6 numara) ' dan alıntı :

Daha sonra, eğer eleman boşluk elemanlarından biriyse veya eleman bir yabancı eleman ise, o zaman tek bir "/" (U + 002F) karakteri olabilir. Bu karakterin void öğeleri üzerinde bir etkisi yoktur, ancak yabancı öğelerde başlangıç ​​etiketini kendi kendine kapanma olarak işaretler.


Bu bir HTML5 meselesi değil. Aslında, önceki HTML Sürümlerinde <br/>veya <img ... />hatalar vardı.
jj

@jj HTML5 belgelerinden alıntı yapıyorum, bu yüzden neden HTML5 olmadığını düşünmüyorum anlamıyorum. Ve gerçekten de, diğer versiyonlarda bu tür eğik çizgiler hatalardı.
Ücretsiz Radikal

Elbette, " HTML5'te hala bitiş çizgilerine ihtiyacımız var mı " demek istemiştim , yanlış soru. Belki bir gün bazı tarihsel bağlantılarla tam bir cevap yazabilirim. IIRC, Ian Hickson (HTML editörü) için HTML5'te sondaki eğik çizgilere izin vermek zor bir karardı .
jj

2

Hayır! HTML5'ten önce bile HTML bunu gerektirmemiştir. XHTML'yi HTML özellikleriyle kullanmayı planlıyorsanız, evet, bu gereklidir.


1
XHTML, HTML5 ile aynı değil, değil mi? DOCTYPE'ım yalnızca "html" ise, sondaki eğik çizgilere ihtiyacım yok, değil mi?
CaptSaltyJack

@CaptSaltyJack: Doğru.
Ry-

1
@CaptSaltyJack - HTML5 hem sıradan HTML hem de XHTML'yi kapsar. XHTML, tüm öğelerin kapatılmasını gerektirir ancak tarayıcılar için belge türünün durum üzerinde hiçbir etkisi yoktur. Daha ayrıntılı bir açıklama için bkz. Stackoverflow.com/questions/2662508/…
Alohci


1

Boş elemanlar için eğik çizgi isteğe bağlıdır.

Her ikisi de geçerli HTML5:

<img src="some_image.png" />

ve

<img src="some_image.png">

Void Öğeler şunlardır:

  • area
  • base
  • br
  • col
  • embed
  • hr
  • img 👍
  • input
  • link
  • meta
  • param
  • source
  • track
  • wbr

İlginç olmasının yanı sıra:

Void öğeleri herhangi bir içeriğe sahip olamaz (bitiş etiketi olmadığından, başlangıç ​​etiketi ile bitiş etiketi arasına içerik yerleştirilemez).

Daha fazla ayrıntı: https://html.spec.whatwg.org/multipage/syntax.html#elements-2


Ayrıca burada SO sorusuna bakın:
HTML5'te kendi kendine kapanan etiketler (geçersiz öğeler)

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.