<center> etiketi HTML'de neden kullanımdan kaldırıldı?


202

Sadece <center>HTML'deki etiketin neden kullanımdan kaldırıldığını merak ediyorum .

<center>Hızla merkeze-hizalayarak bir kabı enkapsüle metnin bloklarını ve görüntüleri basit bir yol oldu <center>etiketi ve gerçekten şimdi nasıl yapılacağına ilişkin herhangi basit bir yol bulamıyorum.

Herkes "şeyler" ( margin-left:auto; margin-right:auto;ve genişlik şey değil), nasıl bir şey ortalamak için basit bir yolu biliyor <center>mu? Ayrıca neden kullanımdan kaldırıldı?

Yanıtlar:


232

<center>Tanımladığı çünkü eleman kullanımdan kaldırıldı sunum içeriğinin - onun içeriğini tanımlamaz.

Merkezleme yöntemlerinden biri , öğenin margin-leftve margin-rightözelliklerini olarak autove sonra üst öğenin text-alignözelliğini olarak ayarlamaktır center. Bu, öğenin tüm modern tarayıcılarda ortalanmasını garanti eder.


7
Evet, CSS tamamen sunum ve verileri ayırmakla ilgilidir.
Ivan Nevostruev

3
Ivan, CSS tamamen sunumla ilgili; bu bölünme ile ilgili değildir - bazı cevaplardaki satır içi stil niteliklerinin gösterdiği gibi! Elbette satır içi CSS'yi değil, makul sınıfları kullanmak çok iyi bir fikirdir, ancak bu, sunum için CSS'yi kullanmak için ayrı bir kavramdır.
Peter Boughton

15
Hem ayar nerede (Ben atm hatırlamıyorum) bazı durumlarda yaşadım marginve text-alignIE benim elemanı ortalamak yoktu, ama bunu sarma <center>yaptığım iş ... Ben bir örnek bulmak çalışacağım.
Mottie

12
otomatik kenar boşluğu hilesi yalnızca blok düzeyi öğeler için çalışır. display: block;satır içi öğede kullanın .
Steve Graham

88
Ben tipik WP veya Drupal şablona sunum ayrıntıları ayırmayı gerçekten yardım emin onyedi iç içe div'leri değilim: (<! - Bak, semantik etiketi) P </ trol>
detly

17

W3Schools.com'a göre ,

Orta öğe HTML 4.01'de kullanımdan kaldırıldı ve XHTML 1.0 Katı DTD'de desteklenmiyor.

HTML 4.01 Spec etiketini kullanımdan kaldırıyor bu neden verir:

CENTER öğesi, DIV öğesinin hizalama özniteliği "center" olarak ayarlanmış olarak tam olarak eşdeğerdir.


14
Ben bu yüzden bu aslında doğru olsaydı.
badp

61
Bu aslında doğrudur, ancak
DIV'nin

22
W3schools'un W3C olmadığını unutmayın .
showdev

4
Msgstr "CENTER öğesi, DIV öğesinin hizalama özniteliği" orta "olarak ayarlanmış olarak tam olarak eşdeğerdir." ancak ortalanmış etikete bakarak açıktır. Bu geçerli bir nedense, <strong>, <b>, tüm <h> ve diğer etiketleri gösterebilir ve bazı css ile <span> ile aynı şeyi yaptığını söyleyebiliriz. ayrıca, XHTML tuval gibi HTML5 etiketlerini bile tanımıyor. Sadece bir yeri olduğu için tamamen dini olan çadırlara, merkezlere, masalara, çerçeveye karşı savaş nedeniyle reddedildi.
Dmitry

2
@Dmitry <strong> ve <h> 'in görsel stilin ötesinde anlamsal bir anlamı vardır. <center> hala etrafta olsaydı, bunu CSS ile şekillendirebilirdiniz, örneğin içeriğini haklı bırakmak için.
Nick Rice

16

Yaptığım şey, merkezleme veya yüzen gibi ortak görevleri yerine getirmek ve onlardan CSS sınıfları yapmak. Bunu yaptığımda bunları tüm sayfalarda kullanabilirim. Aynı elemanda istediğim kadarını da arayabilirim.

.text_center {text-align: center;}
.center {margin: auto 0px;}
.float_left {float: left;}

Şimdi basit görevleri yerine getirmek için bunları HTML kodumda kullanabilirim.

<p class="text_center">Some Text</p>

12

Hala bazen <center> etiketini kullanıyorum çünkü CSS'deki hiçbir şey de çalışmıyor. Bir <div> hilesi kullanmaya çalışma ve başarısız olma örnekleri:

<div style="text-align: center;">This div is centered, but it's a simple example.</div>
<br />
<div style="text-align: center;"><table border="1"><tr><td>&lt;div style="text-align: center;"&gt; didn't center correctly.</td></tr></table></div>
<br />
<div style="text-align: center;margin-left:auto;margin-right:auto"><table border="1"><tr><td>&lt;div style="text-align: center;margin-left:auto;margin-right:auto"&gt; still didn't center either</td></tr></table></div>
<br />
<center><table border="1"><tr><td>Actually Centered with &lt;center&gt; tag</td></tr></table></center>

<center> sonuç alır. Bunun yerine CSS'yi kullanmak için bazen CSS'yi çeşitli yerlere koymanız ve ortalamak için onunla karıştırmanız gerekir. Sorunuzu cevaplamak için CSS, <center> <b> <i> <u> 'u küfür, kutsal olmayan ve kendi iş güvenliği uğruna çok basit olarak savunan inananlar ve takipçilerle bir din haline geldi. Ve eğer <table> öğenizi sizden almaya çalışırlarsa, onlara colspan veya rowspan özelliğinin CSS eşdeğerinin ne olduğunu sorun.

Soyut ya da kitaplık gerçek değil, önemli olan gerçek gerçektir.
- Zen


Ayrıca kullanabilirsinizdisplay:flex; justify-content:center; text-align:center
Justin Liu

11

İsterseniz XHTML 1.0 Geçiş ve HTML 4.01 Geçiş ile bunu kullanabilirsiniz. Diğer tek yol (bence en iyi yol) marjlarla:

<div style="width:200px;margin:auto;">
  <p>Hello World</p>
</div>

HTML'niz, sunumunu değil, öğeyi tanımlamalıdır.


8

İşaretlemenin, yani HTML etiketlerinin, görünümü değil anlamı ve yapıyı temsil etmesi amaçlanmıştır. HTML'nin ilk sürümlerinde kötü bir şekilde karıştırıldı, ancak insanların bunu şimdi temizlemeye çalıştığı standartlar.

Etiketlerin görünümü kontrol etmesine izin vermenin bir sorunu, sayfalarınızın ekran okuyucular gibi özürlüler için cihazlarla iyi oynamamasıdır. Ayrıca, metninizde anlamın açıklığa kavuşmasına yardımcı olmayan, ancak farklı bir düzeydeki bilgilerle dağınık hale gelen çok sayıda etikete sahip olur.

Bu nedenle CSS'nin biçimlendirmeyi / görüntüyü metinden ayrı ve bu şekilde kolayca tutulabilen farklı bir dile taşıdığı düşünülüyordu. Diğer şeylerin yanı sıra, bu, stil sayfalarının değiştirilmesinin, diğer işaretlemeye dokunmadan bir Web sayfasının görünümünü değiştirmesine izin verir. Ve bunu tek bir şişlik içinde birçok sayfa için yapabilmek için.

CSS'in bunu yapması için sağladığı araçlar her zaman zarif değildir, ben sizin tarafınızdayım. Örneğin, etkili dikey merkezleme yapmanın bir yolu yoktur. Ve yatay merkezleme, sadece metin için uygun text-aligndeğilse, daha iyi değildir.

Kolay, etkili ve karışık veya temiz, zarif ve hantal yapma seçeneğine sahipsiniz. Web geliştiricilerinin neden bu karmaşaya katlandıklarını anlamıyorum, ancak sanırım işlerini yapma şansı en az.


4
+1: Web geliştiricisi bile olmayan biri olarak, CSS kullanarak belirli sunum niteliklerini belirtmenin ne kadar hantal olabileceğini biliyorum. CSS kullanmanın yapısal işaretlemeyi karıştırmaktan daha iyi olduğunu düşünüyorum, ama ... WTF? Bazı uzak ormanda buldukları rastgele maymunlar olan CSS spesifikasyonunu tanımlamaktan kim sorumlu? Ciddi anlamda.
Dan Moulding

2
Lütfen, uzak ormanlarda rastgele maymunlara hakaret etmeyin!
DaveWalley

7

HTML, düzeni kontrol etmek için değil, verileri yapılandırmak için tasarlanmıştır. CSS, düzeni kontrol etmek için tasarlanmıştır. Aynı zamanda birçok tasarımcının <table>mizanpaj için kaşlarını çattığını göreceksiniz .



3

CSS'nin bir text-align: centerözelliği vardır ve bu semantik değil, tamamen görsel bir şey olduğu için HTML'ye değil CSS'ye devredilmelidir.


1
Bir alternatifin yanı sıra neden kullanımdan kaldırıldığını açıklayan +1.
moribvndvs

8
ancak text-alignkabın içeriğini değil, kabın içeriğini hizalar
Andreas Grech

Ah, evet, eğer blok seviyesinde bir elementse, "otomatik" dolgu bunu yapar. Satır içi bir öğeyse text-align: center, üst öğesinde kullanın .
keithjgrant

(ayy, otomatik marj demekti, dolgu değil)
keithjgrant

@AndreasGrech - <center>her ikisini de yapar . Can sıkıcı bir şekilde geniş.
Quentin

3

Düşünce için yiyecek: Bir metin-konuşma sentezleyicisinin ne yapması gerekir <center>?


1
Muhtemelen "orta" veya "ortalanmış" diyoruz.
DaveWalley

Css 'text-align: center; ile aynıdır. Sanırım.
MSpreij

0

Bunu css'nize ekleyebilir ve kullanabilirsiniz <div class="center"></div>

.center{
  text-align: center;
  margin: auto;
  justify-content: center;
  display: flex;
}

ya da <center></center>onun kaldırılması durumunda hazırlıklı olmak istiyorsanız , bunu css'nize ekleyin

center{
  text-align: center;
  margin: auto;
  justify-content: center;
  display: flex;
}

0

En Az Popüler Cevap

  1. Kullanımdan kaldırılmış bir etiket mutlaka kötü bir etiket değildir;
  2. Orada olan sunum mantığı ile anlaşma etiketleri, centerbunlardan biri;
  3. Bir centeretiket, ile bir div ile aynı değildir text-align:center;
  4. Bir şeyi yapmanın başka bir yoluna sahip olmanız onu geçersiz kılmaz.

Açıklayayım, çünkü burada eski okul HTML4'ünü veya başka bir şeyi savunduğumu düşünecek kötü şöhretli iniş çıkışlar var. Hayır değilim. Ancak etraftaki tartışma centersadece bir trend savaşıdır, geçerli bir amaca hizmet eden bir etiketi atmak için gerçek bir neden yoktur.

Öyleyse buna karşı başlıca argümanları görelim.

  • "Anlambilimi değil sunumu açıklar!"
    Hayır Bu mantıklı bir düzenleme tarif eder - ve evet varsayılan bir görünüme sahiptir, tıpkı diğer etiketler gibi gibi<p>veya<ul>yapmak. Ancak mesele, ekteki kısmın çevresiyle olan ilişkisidir. Center "görsel olarak farklı konumlandırma ile ayırdığımız bir şey" diyor.

  • "Geçerli değil"
    Evet, geçerli . Daha sonra kaldırılabileceği için kullanımdan kaldırıldı . 15+ yıldır. Ve görünüşe göre hiçbir yere gitmiyor. Çok okunabilir ve noktaya geldiğinden bu etiketi kullanan büyük siteler var.

  • "HTML5'te desteklenmiyor"
    Aslında en çok desteklenen etiketlerdenbiri.

  • "Oldschool"
    Ayakkabı bağcığı da oldschool. Yeni yöntemler eskisini geçersiz kılmaz. İlerleyici ve modern hissetmek istiyorsunuz: iyi. Ama bunu yasa yapma.

  • "Bu aptal / garip / topal / senin hakkında bir hikaye anlatıyor"
    Bunların hiçbiri. Bir çekiç gibi: belirli bir iş için bir araç. Aynı iş için başka araçlar ve aynı araç için başka işler vardır; ancak belirli bir sorunu çözmek için oluşturuldu ve bu sorun hala devam ediyor, bu yüzden sadece özel bir çözüm kullanabiliriz.

  • "Bunu yapmamalısınız, çünkü, CSS"
    Merkezleme kesinlikle CSS ile elde edilebilir, ancak tek uygun olanıdeğil, sadece tek yol değil, tek yol budur. Desteklenen, çalışan ve okunabilir olan her şeyinkullanımı uygun olmalıdır.

TL; DR:

Kullanmamanın tek nedeni <center>, insanların senden nefret etmesi .

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.