Чому тег <center> застарілий у HTML?


202

Мені просто цікаво, чому <center>тег у HTML був застарілим.

Це <center>був простий спосіб швидкого вирівнювання блоків тексту та зображень у центрі шляхом інкапсуляції контейнера в <center>тег, і я дійсно не можу знайти більш простий спосіб, як це зробити зараз.

Хто-небудь знає будь-який простий спосіб, як центрувати "речі" (а не margin-left:auto; margin-right:auto;ширину), що замінює <center>? А також, чому це було знято?

Відповіді:


232

<center>Елемент був застарілим , оскільки він визначає уявлення про його зміст - воно не описує його вміст.

Один з методів центрування - встановити значення margin-leftта margin-rightвластивості елемента auto, а потім встановити text-alignвластивість батьківського елемента center. Це гарантує, що елемент буде зосереджений у всіх сучасних браузерах.


7
Так, CSS - це все про розбиття презентацій та даних.
Іван Невоструєв

3
Іван, CSS - це все про презентацію; мова не йде про розщеплення - як це демонструє атрибути стилю встроєних в деяких відповідях тут! Звичайно, дуже гарна ідея використовувати розумні класи, а не вбудовані CSS, але це чітка концепція використання CSS для презентації.
Пітер Бауфтон

15
У мене були випадки (яких я не можу пригадати atm), коли встановлення обох елементів marginі text-alignне зосереджувало мій елемент в IE, але його обгортання <center>справді працювало ... Спробую знайти приклад.
Mottie

12
трюк автоматичного маргіналу працює лише для елементів рівня блоку. використання display: block;на вбудованому елементі.
Стів Грехем

88
Я впевнений, що сімнадцять вкладених дівок на типовому шаблоні WP або Drupal дійсно допомагають відокремити деталі презентації: P </troll> (<- дивись, семантичний тег!)
дет

17

За даними W3Schools.com ,

Центральний елемент був застарілий у HTML 4.01 і не підтримується в XHTML 1.0 Strict DTD.

Специфікація HTML 4.01 дає цю причину для знецінення тегу:

Елемент CENTER точно еквівалентний заданню елемента DIV з атрибутом align, встановленим "center".


14
Я так хочу, щоб це було насправді правдою.
badp

61
Це насправді так, але атрибут DIV у відповідність також застарів: D
Олег Припін,

22
Зауважте, що w3schools не є W3C.
showdev

4
"Елемент CENTER точно еквівалентний заданню елемента DIV з атрибутом align, встановленим" center "." за винятком того, що, дивлячись на тег, зрозуміло, що він по центру. Якщо це було поважною причиною, ми можемо видалити <strong>, <b>, всі <h> та інші теги і сказати, що вони роблять те саме, що і <span> з деяким css. крім того, XHTML навіть не розпізнає теги HTML5, наприклад, полотно. Вона застаріла лише через війну проти макетів, центрів, столів, рамки яких є суто релігійними, оскільки всі вони мають місце.
Дмитро

2
@Dmitry <strong> і <h> s мають семантичне значення, що виходить за межі візуального стилю. Я думаю, якщо <center> все ще знаходився навколо, ви можете стилізувати його з CSS, наприклад, щоб зробити його вміст виправданим.
Нік Райс

16

Що я роблю, це брати загальні завдання, такі як центрування або плаваючий, і робити з них класи CSS. Коли я це роблю, я можу використовувати їх на будь-якій сторінці. Я також можу зателефонувати стільки, скільки мені хочеться, на одному елементі.

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

Тепер я можу використовувати їх у своєму коді HTML для виконання простих завдань.

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

12

Я все ще іноді використовую тег <center>, оскільки нічого в CSS також не працює. Приклади спроб використання хитрості <div> та невдачі:

<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> отримує результати. Щоб використовувати CSS замість цього, вам іноді доводиться ставити CSS в декілька місць і возитися з ним, щоб довести його до центру. Щоб відповісти на ваше запитання, CSS перетворився на релігію з віруючими та послідовниками, які ухилялися <center> <b> <i> <u> як богохульство, нечесність і занадто просте, задля забезпечення власної роботи. І якщо вони спробують забрати ваш <table> від вас, запитайте їх, що таке еквівалент CSS атрибута colspan або rowspan.

Важливою є не абстрактна чи книжкова правда, а жива правда.
- Дзен


Ви також можете скористатисяdisplay:flex; justify-content:center; text-align:center
Джастін Лю

11

Ви все ще можете використовувати це з XHTML 1.0 Transitional та HTML 4.01 Transitional, якщо хочете. Єдиний інший спосіб (на мій погляд, найкращий спосіб) - це з маржами:

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

Ваш HTML повинен визначати елемент, а не керувати його поданням.


8

Мається на увазі, що розмітка, тобто теги HTML, представляють значення та структуру, а не зовнішній вигляд. Це було погано змішано в ранніх версіях HTML, але стандарти, які люди намагаються зараз очистити.

Одна з проблем дозволу тегів контролювати зовнішній вигляд полягає в тому, що ваші сторінки не грають добре з пристроями для інвалідів, наприклад, зчитувачами екранів. Це також призводить до того, що у вашому тексті є багато і багато тегів, які не допомагають з’ясувати значення, а скоріше захаращують його інформацією іншого рівня.

Таким чином, CSS придумали перенести форматування / відображення на іншу мову, яка є окремою від тексту і її можна легко зберегти таким чином. Крім усього іншого, це дозволяє перемикати таблиці стилів, щоб змінити зовнішній вигляд веб-сторінки, не торкаючись іншої розмітки. І щоб це можна було зробити для багатьох сторінок в одній набряклій стрічці.

Інструменти, які CSS дає вам зробити це, не завжди є елегантним, я на вашому боці. Наприклад, немає можливості зробити ефективне вертикальне центрування. А горизонтальне центрування, якщо це не лише текст, яким піддається text-align, не набагато краще.

У вас є вибір робити легку, ефективну і каламутну чи чисту, елегантну і громіздку. Я не розумію, чому веб-розробники мирилися з цим безладом, але, мабуть, вони щасливі, що мають хоча б шанс зробити свої речі.


4
+1: Як людина, яка навіть не є веб-розробником, я визнаю, наскільки громіздким може бути вказання певних презентаційних атрибутів за допомогою CSS. Я все ще вважаю, що краще використовувати CSS, ніж заплутати структурну розмітку, але ... WTF? Хто відповідає за визначення тієї специфікації CSS, випадкових мавп, яких вони знайшли у деяких віддалених джунглях? Серйозно.
Dan Molding

2
Будь ласка, не ображайте випадкових мавп у віддалених джунглях!
DaveWalley

7

HTML призначений для структурування даних, а не для контролю макета. CSS призначений для управління компонуванням. Ви також побачите, що багато дизайнерів нахмурилися використовувати <table>для макетів саме з цієї ж причини.



3

CSS має text-align: centerвластивість, і оскільки це суто візуальна річ, а не семантична, її слід перенести на CSS, а не на HTML.


1
+1, щоб пояснити, чому його було застосовано на додаток до альтернативи.
moribvndvs

8
але text-alignвирівняє вміст контейнера, а не сам контейнер
Андреас Греч

Ага, так, якщо це елемент на рівні блоку, це зробить "авто" прокладка. Якщо це вбудований елемент, використовуйте text-align: centerйого батьківський елемент.
keithjgrant

(ой, я мав на увазі автоматичну маржу, а не прокладку)
keithjgrant

@AndreasGrech - <center>робить і те, і інше . Це прикро широко.
Квентін

3

Їжа для роздумів: що би зробив синтезатор тексту в мовлення <center>?


1
Можливо, говорять "центр" або "по центру".
DaveWalley

Те саме, що було б із css 'text-align: center; Я вважаю.
MSpreij

0

Ви можете додати це у свій css та використовувати <div class="center"></div>

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

або якщо ви хочете зберегти <center></center>і бути готовим у випадку, якщо його коли-небудь видалять, додайте це до свого css

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

-1

Найменш популярний відповідь

  1. Застарений тег не обов'язково є поганим тегом;
  2. там є теги , які мають справу з логікою представлення,center є одним з них;
  3. centerТег не такий же , як DIV зtext-align:center ;
  4. Той факт, що у вас є інший спосіб зробити щось, не робить його недійсним.

Дозвольте мені пояснити, оскільки тут є горезвісні низовиди, які подумають, що я захищаю старий шкільний HTML4 чи щось таке. Ні. Але дискусія навколоcenter - це просто тенденційна війна, немає реальної причини виривати тег, який добре виконує дійсну мету.

Тож давайте подивимось основні аргументи проти цього.

  • "Це описує презентацію, а не семантику!"
    НіВін описує логічну компоновку - і так має вигляд за замовчуванням, так самоякінші тегияк<p>і<ul>робити. Але суть у відношенні доданої частини до її оточення. Центр каже, що "це те, що ми розділяємо через візуально інше позиціонування".

  • "Неправильно"
    Так. Так. Це просто застаріле, як і в, його можна буде видалити пізніше . Вже 15+ років. І нікуди не дінеться. Є основні сайти, які використовують цей тег, тому що він дуже читабельний і до речі.

  • "Це не підтримується в HTML5"
    Насправді це один з найбільш широко підтримуваних тегів.

  • "Це oldschool"
    Шнурки також є oldschool. Нові методи не скасовують старі. Ви хочете відчувати себе прогресивним і сучасним: прекрасно. Але не варто робити це законом.

  • "Дурно / незручно / кульгаво / розповідає історію про тебе"
    Нічого з цього. Це як молоток: один інструмент для конкретної роботи. Є інші інструменти для тієї ж роботи та інші завдання для того ж інструменту; але він був створений для вирішення певної проблеми, і ця проблема все ще існує, тому ми можемо просто використовувати спеціальне рішення.

  • "Ви не повинні цього робити, тому що CSS"
    Центрування можна абсолютно досягти за допомогою CSS, але це лише один спосіб, не єдиний, не кажучи вже про єдиний відповідний . Все, що підтримується, працює і читається, має бути нормальним для використання.

TL; DR:

Єдина причина не користуватися <center>тим, що люди будуть вас ненавидіти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.