Блокувати елементи та вбудовані елементи в HTML: чому розмежування?


15

Різниця між блоковими та вбудованими елементами мені завжди здавалася дивною. Вся відмінність полягає в тому, що блоковий елемент займає всю ширину, таким чином, примушуючи до розриву лінії до і після елемента, а вбудований елемент займає лише стільки, скільки вміст. Чому б просто не мати один тип елементів - вбудований елемент, де ви також можете застосувати власну висоту / ширину і використовувати це? Ви хочете розриви рядків? Вставте a <br />або, можливо, додайте спеціальний тег у CSS для такої поведінки. То, що зараз, я не бачу вирішення жодної проблеми, і натомість це змушує лише властивість, яку, на мою думку, повинен вирішити дизайнер.

То чому два типи?


Моя улюблена частина цього питання полягає в тому, як він використовує стиль вбудовування для тегу <br/>та <p>тег, щоб останню лінію відокремити від першого пункту. Можливо, вам слід почати дивитися на величезні відмінності у візуальному намірі, а не на відмінності в реалізації.
riwalk

1
Хоча я на 100% вважаю, що елементи блоку є корисними та не згодні з запропонованим вами рішенням, це все ще чудове питання.
Ніколь

Відповіді:


13

Ти кажеш:

Ви хочете розриви рядків? Вставте a <br />або, можливо, додайте спеціальний тег у CSS для такої поведінки. То, що зараз, я не бачу вирішення жодної проблеми, і натомість це змушує лише властивість, яку, на мою думку, повинен вирішити дизайнер.

Ви на правильному шляху - стиль повинен вирішити дизайнер.

Але, у вас проблема є навпаки. Вставлення <br/>тегу - це насправді варіант, який "примушує властивість, яку повинен вирішити дизайнер" - усередині документа розмітки, як тільки <br/>це є, воно є - і лише за допомогою деяких хитромудких / хитрих CSS ви можете зняти його ефект.

Вбудований / блок elements, з іншого боку, - це суто елементи, стилізовані зі зручним за замовчуванням для загального випадку використання. Саму візуальну властивість можна миттєво змінити дизайнером CSS за допомогою display:inlineабо display:block.

Візьмемо для прикладу загальний елемент навігації в ці дні - <li>. Це за замовчуванням blockелементи, але дизайнери змусять їх floatвиглядати вбудованим ( blockмає більше особливих властивостей, ніж просто зайняти всю лінійку, але це розмова на інший день).


3

Більшість елементів мають стандартне форматування ... Ваше питання може бути розширено, щоб сказати, що це форматування має бути вирішенням також дизайнера, і його слід видалити. Я завжди просто вважав, що це відправна точка, і при необхідності видаляв форматування (часто це не було). Але врешті-решт є деякі природні речі. Наприклад, якщо у вас є абзац, ви очікуєте, що він буде блоковим елементом, оскільки такий характер абзацу. Незалежно від того, чи мають елементи налаштування за замовчуванням, такі як блок або вбудований, я, безумовно, хотів би в будь-якому випадку хотіти можливість вказати цей параметр. Причиною я кажу, що це IMO-прибиральник, щоб таким чином ламати речі, а не кидати<br />в HTML. Чи робить це те саме? Так. Але з недавніми досягненнями HTML великі зусилля були зосереджені на тому, щоб зробити його більш семантичною мовою, де ви менше вкладаєте HTML, що стосується форматування, а більше - CSS. <br />Перерва засіб лінії , яка , як правило , зі посиланням на розрив рядка в абзаці або інша пропозиція , яка містить структуру. Зрештою, це для мене не має значення, але я особисто хочу, щоб можливість блокувати та вбудовувати різницю, тому я сподіваюся, що вони ніколи не знімуть це з боку CSS принаймні!


2

Це неначе сказати, що між абзацами та реченнями немає реальної різниці. Абзаци розмежовують групу ідей. Зазвичай речення є для однієї ідеї.

Розмітка стосується семантики, а не відображення. Дійсно, дизайнер вільний розглядати будь-який елемент, який за замовчуванням відповідає стилю блоку, як вбудований, так і навпаки.


2

У LaTeX є два режими (не включаючи математичний режим): горизонтальний і вертикальний. Елементи (символи) - це невеликі поля, які накопичуються "горизонтально" в абзаці. Потім ці великі ящики скупчуються вертикально. Це схоже на (X) HTML: inline та block.


0

Мені це здається проблемою зворотної сумісності. Елемент "вбудований" був, мабуть, пізнішим доповненням до стандарту HTML, і тому веб-сторінки, написані у 1992 році, можна переглянути ще у 2011 році, він все ще підтримується - начебто тут є багато 19-річних веб-сторінок ...


-1

Я думаю, що режими відображення настільки різняться між блоком та вбудованим, що розрізнення варто зробити на рівні розмітки.

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