Приховані функції HTML


110

HTML, що є найбільш широко використовуваною мовою (принаймні, як мова розмітки), не отримав належного кредиту.
Зважаючи на те, що це існує вже стільки років, такі елементи, як елементи контролю FORM / INPUT, досі залишаються незмінними, без нових елементів керування.

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

Звичайно, це запитання випливає:

Приховані особливості JavaScript
приховані особливості CSS
приховані особливості C #
приховані особливості VB.NET
приховані особливості Java
приховані особливості класичного ASP
приховані особливості ASP.NET
приховані особливості Python
приховані особливості TextPad
приховані особливості Eclipse

Не згадуйте особливості HTML 5.0, оскільки він знаходиться в робочому проекті

Будь ласка , вкажіть одну особливість кожної відповіді .

Відповіді:


244

Використання абсолютного шляху, незалежного від протоколу:

<img src="//domain.com/img/logo.png"/>

Якщо браузер переглядає сторінку в SSL через HTTPS, він запитає цей ресурс за допомогою протоколу https, інакше він запитає його за допомогою HTTP.

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

Caveat: Якщо використовується на <link> або @import для таблиці стилів, IE7 та IE8 завантажують файл двічі . Однак, всі інші види використання є просто чудовими.


29
Це не функція HTML, а функція URL / URI.
Gumbo

44
@Gumbo: Правда, це URI-функція, але я вважав, що це досить добре, щоб згорнути правила і включити сюди. І я незабаром не очікую прихованих особливостей URI Spec. :)
Пол Ірланд

2
одна косою рисою є відносно доменної частини, а не частини протоколу
SztupY

2
IE така неймовірно ДУМА! Чому f *** чорт робить це файл DL двічі?

5
Є один головний недолік: коли файл зберігається на диску і доступ до нього за допомогою file:протоколу, браузер не зможе знайти ресурс (наприклад, CDN або якийсь інший зовнішній сервер).
Марсель Корпель

138

Тег мітки логічно пов'язує мітку з елементом форми, використовуючи атрибут "для". Більшість браузерів перетворюють це на посилання, яке активує відповідний елемент форми.

<label for="fiscalYear">Fiscal Year</label>
<input name="fiscalYear" type="text" id="fiscalYear"/>

24
так, дивно, як мало сайтів активно цим користуються. Я бачив сайти, які використовують js для цього ...
Борис Калленс

2
Виявив цього зовсім недавно.
Арніс Лапса

4
cagdas, в HTML немає дійсно прихованих функцій, це визначений стандарт.
безглазкість

54
Щоб розширити відповідь, можна також обернути вкладку міткою і пропустити атрибут for: <мітка> Фіскальний рік <вхідне ім'я = "фіскальний рік" type = "text" /> </label>
повіку

32
Використання прапорців та радіо кнопок без нього повинно бути злочином.
Корнель

136

ContentEditable властивість для (IE, Firefox і Safari)

<table>
    <tr>
      <td><div contenteditable="true">This text can be edited<div></td>
      <td><div contenteditable="true">This text can be edited<div></td>
    </tr>
</table>

Це зробить клітини редагованими! Вперед, спробуйте, якщо ви мені не повірите.


7
Питання закликає до функцій, які не введені HTML5
Quentin

15
Девід Дорворд, Не зовсім чесно сказати, що він представлений з HTML5, оскільки contentEditable був введений MS в IE 5.5, але так, він не був стандартизований до HTML5; Tyson & Steve, contentEditable був представлений Safari у версії 2.0, але багато важливих методів форматування не були додані до 3.x; Віктор Х Валле, залежить від вашого вчення. HTML 4 повинен розширити його до = "true" при згортанні.
безпліддя

2
посилання спробувати це не призводить до відповідного прикладу
Гордон Густафсон

4
@Binoj - Абсолютно ні. "Вміст атрибута - це перелічений атрибут, ключовими словами якого є порожній рядок, істина та помилка
Квентін,

2
А ще краще, додайте наступне як закладку, щоб дозволити редагувати будь-яку веб-сторінку, на якій ви перебуваєте: javascript: document.body.contentEditable = 'true'; document.designMode = 'on'; void (0);
Amro

102

Я думаю, що тег optgroup - одна з особливостей, яку люди використовують не дуже часто. Більшість людей, з якими я розмовляю, не схильні усвідомлювати, що вона існує.

Приклад:

<select>
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>

На жаль, реалізація ієрархії меню в браузері залишає бажати кращого. Я підозрюю, що optgroup не отримує особливої ​​користі, тому що випадки його використання є незначними та між ними.
безглазкість

1
Один рівень повинен підтримуватися у всіх браузерах. Веб-форум Я, крім інших, де використовує його на деяких екранах, щоб розділити список форумів на ті самі розділи, що і на головній сторінці.
staticsan

@staticsan. Я погоджуюся, що це корисно для невеликої категоризації кількох предметів.
RichardOD

5
@eyelidlessness: Я весь час бачу спадні елементи, які містять елементи відступу або використовують такий текст, як "заголовок" ---category---.
НезадоволенняGoat

4
Це акуратна особливість, про яку я не знав!
Крісб

100

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

Скажімо, ви знаходитесь за адресою:

www.anypage.com/folder/subfolder/

Далі наведено код та результати для посилань на цій сторінці.

Регулярний якір:

<a href="test.html">Click here</a>

Призводить до

www.anypage.com/folder/subfolder/test.html

Тепер, якщо ви додасте базовий тег

<base href="http://www.anypage.com/" />
<a href="test.html">Click here</a>

Тепер якір веде до:

www.anypage.com/test.html

48
Ви також можете просто /images/image.png використовувати з провідною косою рисою. :-)
molf

46
Базовий тег - це ядерна опція - це еквівалент #define: якщо ви не стежите за цим, зробіть це дійсно зрозумілим майбутнім розробникам та зробіть це дійсно низькою частиною архітектури сайту, це може призвести до фрустрації неочевидні помилки. Я ніколи цього не потребував , використовуйте обережно.
annakata

2
Так, я також бачив, як базовий тег заважає моєму JavaScript, коли намагаюся динамічно завантажувати файли CSS на сторінку. Крім того, помилка в IE6 вимагає явно закрити тег (</base>), який недійсний. У цьому можуть допомогти умовні коментарі.
avdgaag

4
Зауважте, що базова URL-адреса застосовується до кожної відносної URL-адреси, а не лише до відносних шляхів URL-адреси. Таким чином, посилання #topбуло б вирішено на "верх" у кореневому індексному документі та на "верх" у тому ж документі.
Gumbo

17
Я вважаю це надзвичайно зручним у ситуаціях, коли мені потрібно "переглянути джерело" та завантажити HTML-код сторінки, щоб працювати з нею. Після завантаження джерела ви можете додати елемент BASE з відповідним атрибутом href. Таким чином, ви можете працювати локально, завантажуючи лише вихідний HTML ... не потрібно завантажувати всі javascript, css та зображення.
Енді Форд

99
<img onerror="{javascript}" />

onerror це подія JavaScript, яка буде запущена перед тим, як з'явиться маленький червоний хрест (в IE).

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

З першого погляду це можна вважати абсолютно марним, бо хіба ви раніше не знали, якби зображення було доступне в першу чергу? Але, якщо врахувати, для цієї речі є ідеальні дійсні програми; Наприклад: припустимо, що ви подаєте зображення із стороннього ресурсу, яким ви не керуєте. Як і наш граватар тут, в SO ... він подається з http://www.gravatar.com/ , ресурсу, який команда stackoverflow взагалі не контролює - хоча це надійно. Якщо http://www.gravatar.com/ знижується, stackoverflow може вирішити це за допомогою onerror.


Ага ... якщо це те, що я думаю, це я повинен знати це раніше, коли мені це справді було потрібно. : /
Арніс Лапса

Щоб уточнити, onerror - це подія javascript (як і onclick), яка дозволяє вам щось робити, коли зображення не завантажується.
Єхія

1
Даніель Сільвейра, чи поясніть ви, що це насправді запускає код onerror у випадку зламаних (наприклад, 404) зображень? Незалежно, це сама особливість DOM, а не функція HTML сама по собі.
безпліддя

2
У мене це було порожнє використання, вказуючи на неіснуюче зображення, рекурсивного будь-кого ???
Pharabus

96

<kbd>Елемент для розмітки введення з клавіатури

Ctrl+ Alt+Del


Чи є щось особливе у <kbd> поруч із нею іншого формату шрифту? якщо ні, ось список інших тегів форматування? w3schools.com/tags/tag_phrase_elements.asp
Ваш друг Кен

Не особливо, просто невідоме, я не думаю
Russ Cam

3
Нічого за замовчуванням, але простіше позначити елемент CSS, як, наприклад, так.
Agent_9191

1
Не знав, що існує, це весело.
Kzqai

85
<blink>

Потрібно використовувати будь-що важливе на сайті. Більшість важливих сайтів замикають весь вміст.

<marquee>

Створює реалістичний ефект прокрутки, чудово підходить для електронних книг тощо.

Редагувати: Легкі друзі, це була лише спроба гумору


62
Можливо, питання повинно було вказати, що ви не повинні перераховувати функції, які ми хочемо залишати прихованими.
Бен Бланк

12
... Я використовував <blink>, як частину стилю psuedo-терміналу для діва, що відображає код (: до {content: "drthomas @ house: ~ $";}: after {content: "_"; text -decoration: blink;} ... це було приголомшливо. Я, мабуть, повинен звернутися за допомогою. =]
Девід каже відновити Моніку

2
<marquee> <blink> НАЙБІЛЬШЕ дратує HTML тегів коли-небудь !!! </blink> </marquee> Це не приховано, вони просто не використовуються з причини.
Твій друг Кен

2
Я загортаю всю свою сторінку в Marquee і блимати, тому що я просто такий класний
Sphvn

3
Будь ласка. Єдиним законним використанням для <blink> є: кішка Шродінгера <blink> не </blink> мертва. (Я думав, що це на xkcd, але наразі не можу його знайти.)
Крістофер Кройцгіг

84

Не дуже відомий, але ви можете вказати lowsrcдля зображень, які показуватимуть під lowsrcчас завантаження srcзображення:

<img lowsrc="monkey_preview.png" src="monkey.png" />

Це хороший варіант для тих, хто не любить переплетені зображення.

Трохи дрібниць: в один момент ця властивість була недостатньо прихованою, що її використовували для експлуатації Hotmail , близько 2000 року.


Цього я не знав. Чи можна його використовувати для "завантаження" анімації?
Борис Калленс

2
Я отримую попередження про шахрайство в Opera через те посилання "експлуатувати Hotmail". : o
jrista

2
Це безпековий веб-сайт, це безпечно.
Джої Роберт

27
Але це атрибут його власний. msdn.microsoft.com/library/ms534138(VS.85).aspx
Gumbo

17
Цей атрибут застарілий з HTML4 - ви не повинні використовувати його на виробничих веб-сайтах.
Бен Халл

67

DELі INSпозначити видалений та вставлений вміст:

HTML <del>sucks</del> <ins>rocks</ins>!

10
Однозначно недостатньо використовується.
безвічність

2
@eyelidlessness: просто не вистачає ситуацій, коли маркування видаленого / вставленого тексту є корисним.
НевдоволенийGoat

2
Я міг би посягнути, що StackOverflow використовував <ins>і <del>на сторінках Revision в якийсь момент назад, але зараз він використовує <span class="diff-add">і <span class="diff-delete">. :(
система ПАУЗА

1
@DisgruntledGoat Історія редагування вікі? чимало випадків використання для цього
HorusKol

3
@Horus: впевнений, що ти можеш знайти використання, але в грандіозній схемі речей все ще не так багато ситуацій.
НезадоволенняЗабезпечити

58

Кнопка тег новий input submitтег і багато людей все ще не знайомі з ним. Текст у кнопці, наприклад, можна стилізувати за допомогою тегу кнопок.

<button>
    <b>Click</b><br />
    Me!
</button>

Відобразить кнопку з двома рядками, перший говорить жирним шрифтом " Клацніть ", а другий - "Я!". Спробуйте тут .


15
Ганьба порушити його в IE <8. Можливо, вирішити проблеми, але це може бути боляче, а іноді ви потрапляєте на захист безпеки між веб-сервером та середовищем програмування на стороні сервера.
Квентін

6
Але IE <8 подасть вміст елемента, а не його значення. Я вважаю, що деякі версії завжди сприйматимуть це як успішний контроль (навіть якщо його не натискали).
Квентін

4
І якщо ви зробите це <button contenteditable>, ви також можете змінити текст кнопки! Вказує на кожного, хто міг би знайти для нього дійсне використання. :)
Гавін

4
Я ніколи не розумів, чому був "вхідний" тип подачі. Це нічого не вводити, просто надсилати те, що ви ввели в інших полях.
НезадоволенняGoat

3
@DisgruntledGoat: його пара / ім'я / значення фактично буде надіслано. Корисно, якщо у вас є декілька кнопок у формі (наприклад, редагування, видалення, переміщення тощо) і ви хочете розрізнити натиснуту кнопку. На жаль, те саме не працює buttonв IE <8, він дивовижно надсилає назви / значення пар ВСІХ buttonелементів.
BalusC

56

Вкажіть css для друку

<link type="text/css" rel="stylesheet" href="screen.css" media="screen" />
<link type="text/css" rel="stylesheet" href="print.css"  media="print" />

1
Виявив, що кілька тижнів тому
Даніель Моура

41
Не дуже прихований imo.
Дмитро Фарков

Це загальне використання.
UpTheCreek

Якщо ви раніше цим не займалися, я сподіваюся, що ви раніше не робили жодних виробничих веб-сайтів ...
Kzqai

як це можна вважати прихованим?
Марін

54

<dl> <dt>і <dd>деталі часто забувають , і вони виступають за список визначень, Визначення терміна і визначення.

Вони працюють аналогічно неупорядкованому списку ( <ul>), але замість одиничних записів це більше схоже на список ключів / значень.

<dl>
  <dt>What</dt><dd>An Example</dd>
  <dt>Why</dt><dd>Examples are good</dd>
</dl>

Крім того, семантика dl / dt / dd підходить для подібних списків (наприклад, структура була рекомендована для діалогів).
безглазкість

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

18
Найцікавіше, що часто забувають, це те, що формат є ключовим / значення / значення / значення / значення / ключ / значення
Квентін,

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

1
@D_N та @eyelidlessness - ознайомтеся з приміткою Брюса Лоусона про те, що семантично розміщувати розмову ... плюс журі все ще залишається у діалоговому елементі HTML5 ... brucelawson.co.uk/2006/…
Fenton

52

Не зовсім приховано, але (і в цьому винна IE) недостатньо людей знає про теад, теді, ноги на мої смаки. І скільки з вас знало, що tfoot повинен з’являтися над tbody у розмітці?


1
boris callens, Так, tbody мається на увазі, якщо немає ні теди, ні тіла, ні ніг.
безглаздість

2
Якби IE5 правильно реалізував TBODY, то більшість людей використали б його. Це було основною проблемою кілька років тому. Mozilla та Opera підтримували прокрутку TBODY, що було дуже класно; на жаль, IE5 цього не зробив.
staticsan

9
Вони корисні для друку , так як вона повинна поставити theadі tfootу верхній і нижній частині кожної сторінки. Прикро, що theadу браузера немає механізму повторення , коли у вас довгі довгі таблиці.
НезадоволенеЗакриття

1
Я знав, що ніг пішов вище туди, і я думаю, що це досить дурно. Я ставлю мою ногу нижче, де це мало сенс, помилився валідатором, перемістив tfoot над tbody (заплутаний, але завжди сумісний), і здогадуюсь що ?! Коли ви намагаєтеся виділити таблицю, браузер (як мінімум, FF) виділяє ногу перед тілом, навіть якщо він візуально нижче тіла! І потім!!! коли ви копіюєте його в текстовий редактор, це візуально тіло. Повністю довільне правило.
Ентоні

3
@Anthony: має сенс, якщо у вас повільний зв'язок, це означає, що ви можете бачити всі колонтитули, поки вміст таблиці все ще завантажується.
me_і

50

wbrАбо слово-брейк тег. Від Quirksmode:

(слово "перерва") означає: "Браузер може вставити тут перерву рядка, якщо він бажає." Оскільки браузер не вважає необхідним розрив рядка, нічого не відбувається.

<div class="name">getElements<wbr>ByTagName()</div>

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

На &shy;цій же сторінці є також сутність HTML. Це те саме, що, wbrале коли вставлено перерву, -для позначення перерви додається hypen ( ). Начебто як це робиться в друку.

Приклад:

TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText


2
Будьте обережні, тому що в цьому веб-переглядачі погана підтримка
Christophe Eblé

7
"IE8 як IE8" не підтримує його, і він є баггі в Safari 3.0 для Windows. Крім цієї підтримки, це досить добре. Зверніться до таблиці сумісності за посиланням.
aleemb

Хм-посилання на сайт-посилання позначало цей тег як застаріле і марне, хто прав? reference.sitepoint.com/html/wbr
Крістоф Ебле

Він може бути застарілим як частина специфікації HTML, але він все ще працює в браузерах. Коли ви сумніваєтесь, виконайте вирок QuirksMode (таблиці сумісності зараз спонсоруються Google).
aleemb

Здається, це було б дуже корисно включити до наступного стандарту css!
Джеймс

43

Значною мірою невикористаною особливістю є той факт, що майже кожен елемент, який забезпечує видимий вміст на сторінці, може мати атрибут "title".

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


Так, атрибут "title" є досить корисним - особливо для елементів, які призначені для натискання.
Стів Гаррісон

6
Підказка, що з’являється, залежить від браузера. Не у всіх браузерах відображатиметься атрибут заголовка однаковий. Але це приємна особливість, яку я неодмінно використовую.
Тревіс

8
Атрибут заголовка корисний, але лише при належному використанні. Більшість веб-переглядачів надають підказку лише за кілька секунд до її зникнення. Я ненавиджу, коли дизайнери відчувають необхідність заповнювати атрибут заголовка 3 або 4 рядками тексту, через що вам доведеться перевести курсор миші, а потім знову навести курсор, щоб прочитати решту.
священик

Використання цього у зв'язку з jQuery дорівнює приголомшливості.
Леві Моррісон

Леві - ви можете навести кілька прикладів?
belugabob

38

Застосування декількох класів html / css до одного тегу. Той же пост тут

<p class="Foo Bar BlackBg"> Foo, Bar and BlackBg are css classes</p>

22
Це класи HTML, а не CSS. У CSS немає класів (у ньому є селектори). Класи HTML корисні для речей, крім CSS.
Квентін

36
Оце Так! Я просто не можу подолати той факт, що люди вважають це "прихованою" особливістю. Хлопчик, чи я почуваюся дурним щодо публікації деяких "дійсно прихованих" функцій, тому що люди, які підтримали це, ймовірно, навіть не підійдуть до того, щоб зрозуміти, що означає розширення DTD.
aleemb

5
d03boy, p.foo, p.var - не те саме, що p.foo.bar. Перший вибирає будь-який абзац з класом "foo" або "var", останній вибирає абзац з обома класами.
безглазкість

5
Що стосується HTML-класів - це сприятливий момент, тому що він приводить мене до пункту - html не повинен усвідомлювати css .. ви «повинні» мати можливість створювати html та передавати його дизайнеру, який може реалізувати їх дизайн без потрібно змінити html (ще не зовсім справа;)) .. тому це зводиться до вашого іменування та способів використання класів .. не створюйте класи для націлювання властивостей css .. використовуйте класи, щоб визначити, що таке елемент ' '.
meandmycode

1
Технічно "Foo Bar BlackBg" - це єдиний клас, а p.foo - це просто синтаксичний цукор для p [class ~ = foo] (див. Специфікацію ). Легше подумати про це, як про наявність декількох класів.
Тгр

34

Ми всі знаємо про декларації типу DTD або Document (ті речі, які призводять до виходу з ладу сторінки з валідатором W3C). Однак DTD s можна розширити , оголосивши список атрибутів для користувацьких елементів.

Наприклад, валідатор W3C не працює для цієї сторінки через behavior="mouseover"додавання в <p>тег. Однак ви можете зробити це таким чином:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[
<!ATTLIST p behavior CDATA #IMPLIED>
]>

Детальніше про користувацькі DTD дивіться на QuirksMode .


10
Звичайно, це робить "Дійсно: ваша спеціальна мова розмітки", а не "XHTML 1.0 Перехідний"
Квентін

3
+1. Я не знаю, чому це було -1. У будь-якому випадку слід зазначити, що підтримка браузера в значній мірі нульова.
безпліддя

Досить впевнений, що Opera це підтримує.
Багатий Бредшоу

2
@eyelidlessness працює лише в XHTML. Не працює в переконливому XHTML, надісланому як текст / HTML.
Корнель

2
Так, не фанат цього. Для мене цінність HTML полягає в тому, що всі на планеті знають, що це означає (більш-менш), тому що всі ми використовуємо однакові теги та атрибути. Я не впевнений, чому classатрибут недостатньо розширюється.
Пол Д. Уейт

28

Ми можемо призначити кодований рядок базової 64 як атрибут image / href image, JavaScript, iframe, посилання

напр

<img alt="Embedded Image" width="297" height="246" 
  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA..." />

div.image {
  width:297px;
  height:246px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...);
}

<image>
  <title>An Image</title>
  <link>http://www.your.domain</link>
  <url>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...</url>
</image>

<link rel="stylesheet" type="text/css"
  href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />

<script type="text/javascript"
  href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>

Список літератури

Як я можу побудувати зображення за допомогою розмітки HTML?

Бінарний файл в кодері / перекладачі Base64


4
На жаль, IE <8 це не підтримує. Однак ви можете використовувати MHTML замість цих браузерів: phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under
Mathias Bynens

26

Нещодавно я дізнався про теги набору полів та міток. Як вище, не приховано, але корисно для форм.

<fieldset> пояснення

Приклад:

<form>
  <fieldset>
    <legend>Personalia:</legend>
    Name: <input type="text" size="30" /><br />
    Email: <input type="text" size="30" /><br />
    Date of birth: <input type="text" size="10" />
  </fieldset>
</form>

Укажіть, будь ласка, зразок.
Біной Антоній


Виявлений набір полів із зразка сторінки aspnet mvc. ^^
Арніс Лапса

2
Не знав про це. Ось специфікація W3c: w3.org/TR/html401/interact/forms.html#h-17.10
MitMaro

Польові набори та легенди чудові. По-справжньому приємний спосіб розмітити свої форми.
Ніл Ейткен

25

Ви можете використовувати objectтег замість а, iframeщоб включити ще один документ на сторінку:

<object data="data/test.html" type="text/html" width="300" height="200">
  alt : <a href="data/test.html">test.html</a>
</object>

57
Що в кінцевому підсумку працює майже так само, як iframe, за винятком того, що він менш добре підтримується та має менше функцій.
Квентін

iframe застарілий, сподіваємось, незабаром ми отримаємо кращу підтримку,
Гордон Густафсон

12
iframe не застаріло в HTML 5.
Зак

Чи запобігає це атакам XSS із вбудованої сторінки?
анонімний трус

1
Я вважаю, що він використовує SOP, як і у iframes.
Зак

25

<optgroup>це чудовий варіант, який люди часто пропускають, роблячи сегментовані <select>списки.

<select>
  <optgroup label="North America">
    <option value='us'>United States</option>
    <option value='ca'>Canada</option>
  </optgroup>
  <optgroup label="Europe">
    <option value='fr'>France</option>
    <option value='ir'>Ireland</option>
  </optgroup>
</select>

це те, що вам слід використовувати замість

<select>
  <option value=''>----North America----</option>
  <option value='us'>United States</option>
  <option value='ca'>Canada</option>
  <option value=''>----Europe----</option>
  <option value='fr'>France</option>
  <option value='ir'>Ireland</option>
</select>

25

Більшість також не знає про те, що ви можете розрізнити кнопку форми, натиснуту, просто давши їм пару імен / значення. Напр

<form action="process" method="post">
     ...
     <input type="submit" name="edit" value="Edit">
     <input type="submit" name="delete" value="Delete">
     <input type="submit" name="move_up" value="Move up">
     <input type="submit" name="move_up" value="Move down">
</form>

На стороні сервера фактичну натиснуту кнопку можна отримати, просто перевіривши наявність параметра запиту, пов'язаного з ім'ям кнопки. Якщо його немає null, тоді була натиснута кнопка.

Я бачив багато непотрібних JS-хак / рішень для цього, наприклад, змінити форму форми або змінити приховане вхідне значення заздалегідь, залежно від натиснутої кнопки. Це просто вражає.

Крім того, я бачив майже стільки ж JS-хак / обхідних шляхів, щоб зібрати галочки з декількох прапорців, як, наприклад, у рядках таблиць. Після кожного вибору / перевірки рядка таблиці JS додає індекс рядків до деякого значення, розділеного комою, у прихованому вхідному елементі, який потім буде розділений / проаналізований далі на стороні сервера. Це результат неусвідомлення того, що ви можете надати декільком елементам введення однакове ім'я, але інше значення, і що ви все ще можете отримати доступ до них як до масиву на стороні сервера. Напр

<tr><td><input type="checkbox" name="rowid" value="1"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="2"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="3"></td><td> ... </td></tr>
...

Неінформованість дасть кожному прапорець інше ім'я та опустить цілий атрибут значення. У деяких ситуаціях без JS-хак / без обходу я також бачив якусь зайву перевагу магії в коді сторони сервера, щоб розрізнити перевірені елементи.


1
Гей .. Це, очевидно, ще одна прихована особливість HTML: /;)
BalusC

1
Якщо у формі є кілька кнопок для надсилання, а користувач натискає на неї, певні версії Internet Explorer з радістю скажуть вашому серверу, що всі вони були натиснуті. Чудовий.
detly

1
@detly: лише якщо ви використовуєте <button type="submit">замість <input type="submit">:)
BalusC

1
... buuuuut не має IE6 також проблеми <input type="submit">? (Моя пам’ять про це питання туманна - я давно переконав роботодавців не турбуватися про сумісність IE для внутрішніх веб-додатків, тому це вже не моя проблема. Але я, мабуть, згадую певний бар'єр для вирішення цієї проблеми в IE6. )
детлі

2
Це не дуже зручно для i18n.
zneak

22

Тег Colgroup .

<table width="100%">
    <colgroup>
        <col style="width:40%;" />
        <col style="width:60%;" />
    </colgroup>
    <thead>
        <tr>
            <td>Column 1<!--This column will have 40% width--></td>
            <td>Column 2<!--This column ill have 60% width--></td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Cell 1</td>
            <td>Cell 2</td>
        </tr>
    </tbody>
</table>

15
На мій досвід, підтримка колективних груп в кращому випадку хитка.
безпліддя

разюче схожий на WPF Grid
Binoj Antony

18

Якщо forатрибут <label>тегу не вказаний, він неявно встановлюється як перша дочірка <input>, тобто

<label>Alias: <input name="alias" id="alias"></label>

еквівалентно

<label for="alias">Alias:</label> <input name="alias" id="alias">

4
Але це користується меншою підтримкою браузера, ніж атрибут for
Квентін,

4
@David - Чи є у вас документація, яка підтверджує це? Я не думаю, що я ніколи не бачив, щоб браузер не підтримував це використання. Я особисто перевіряв IE6 / 7, FF2 / 3, Safari 3 та Chrome 1/2. Я не перевіряв себе в Опері, але був би дуже здивований, якби це не спрацювало. Така поведінка є частиною оригінальної специфікації HTML 4.0, вперше опублікованої більше одинадцяти років тому: w3.org/TR/1998/REC-html40-19980424/interact/forms.html#adef-for
Бен Бланк

Крім того, невірно вводити введення всередині етикетки, і DOH ви не закривали тег вводу в жодному прикладі!
Ентоні

5
Ви помиляєтесь в обох підрахунках: це дійсна практика, і кінцевий тег заборонено вводити елементи.
пн

15

Кнопка як посилання, без JavaScript :

Ви можете розмістити будь-який файл у дії форми , і у вас є кнопка, яка виконує функцію посилання. Не потрібно використовувати події onclick тощо. Ви навіть можете відкрити файл у новому вікні, наклеївши "ціль" у формі. Я мало бачив цієї техніки в застосуванні.

Замініть це

<a href="myfile.pdf" target="_blank">Download file</a>

з цим:

<form method="get" action="myfile.pdf" target="_blank">
    <input type="submit" value="Download file">
</form>

27
Кнопка не матиме опцію "Зберегти файл як", яка може знадобитися користувачам, яким не подобається, що Adobe Acrobat переймає їх браузер.
Корнель

Він буде вести себе за поведінкою браузера за замовчуванням під час доступу до файлу PDF. Це може бути HTML-файл, текстовий файл, zip-файл чи будь-що інше.
Вадіх М.

У якій ситуації тег прив’язки вимагає події onclick? і чому б 3 рядки html були кращими за 1? Чи є ідея, що у вас МОЖЕ бути кнопка замість посилання, так це приємно і кнопка як? Незважаючи на те, що я з цього приводу звучу прискіпливо, у мене фактично є сторінка, яка використовує кнопки замість посилань, оскільки файл створюється динамічно, коли користувач цього вимагає, тому я не хотів посилання на: blah.php? Stuff = "userdata" Незважаючи на те, що я міг пройти цей маршрут, я не хотів ризикувати іменем файлу, маючи сценарій генерування файлів як ім'я, а не ім'я файлу, яке надає файлу сценарій.
Ентоні

1
Чому б просто не розмістити тег <a> як кнопку? Це здається великою кількістю сміття у вашій розмітці.
UpTheCreek

2
@UpTheCreek деякі веб-програми хочуть виглядати так само, як ОС. Наприклад, некрасива кнопка, коли користувач використовує Windows, і прекрасна кнопка, коли користувач використовує Mac OS X.

13

Найпростіший спосіб оновити сторінку за X секунд - META Refresh

<meta http-equiv="refresh" content="600">

Значення вмісту означає секунди, після яких потрібно оновити сторінку.
[Редагувати]

<meta http-equiv="refresh" content="0; url=foobar.com/index.html">

Зробити просту перенаправлення!
(Дякую @rlb)


13
Звичайно, розробка, які елементи потребують оновлення, а потім їх оновлення за допомогою AJAX призводить до набагато приємнішого користувальницького досвіду ...
Стів Харрісон

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

11
/ я ненавиджу сторінки, які так оновлюються ... повинні бути заборонені = /
Svish

3
Це також може бути корисно, якщо встановлено трохи менше часу очікування сеансу, щоб сповістити користувача про те, що його сеанс закінчився та його було видалено.
fforw

1
Короткий час очікування перемикає кнопку назад.
Корнель

12

<html>, <head>а <body>теги необов’язкові. Якщо ви їх опустите, парсер буде мовчки вставлений у відповідні місця. Це цілком справедливо для цього в HTML (як явно мається на увазі <tbody>).

HTML теоретично - додаток SGML. Це, мабуть, найкоротший дійсний документ HTML 4:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<title//<p/

Вищезазначене не працює ніде, крім W3C Validator. Однак найкоротший дійсний text/htmlдокумент HTML5 працює скрізь:

<!DOCTYPE html><title></title>

4
Ви повинні бути обережними, що рекламуєте. Вищевказаний код пройде перевірку з 4 попередженнями у валідаторі w3c, але DocType - це HTML 4.0. Досить акуратно, що HTML 4 є частиною SGML і тому підтримує цей стандарт вільної перевірки, але якщо змінити цей DTD на XHTML 1.0 STRICT, він отримує 15 помилок, що майже дорівнює кількості символів. XHTML був розроблений тому, що HTML був таким ледачим (і, таким чином, незахищеним), тому ми більше не хочемо цим скористатися.
Ентоні

3
Якщо ви зміните DOCTYPE документа HTML / SGML на XHTML / XML, ви отримаєте безглузду суміш. Це цілком очевидно, і я не впевнений, чому ви це вказуєте.
Корнель

3
Цей приклад технічно може бути дійсним HTML 4, але браузери не підтримують скорочений синтаксис SGML. Нижче наведено найкоротший дійсний документ HTML 5, який браузери фактично підтримують:<!DOCTYPE html><title></title>
Брайан Кемпбелл

Будь-яка ідея, наскільки сумісна вона, щоб не залишати head/ bodyне тільки з точки зору перевірки?
kibibu

@kibibu: У браузерів із цим немає проблем. Старі версії Opera <head>іноді опускалися в DOM, але вміст голови був у DOM і все одно працював. Найбільша проблема, яку я виявив, полягає в тому, що клієнтам OpenID потрібно <head>бути чітко присутніми.
Корнель

11

langАтрибут не дуже добре відомі , але дуже корисно. Атрибут використовується для ідентифікації мови вмісту або у всьому документі, або в одному елементі. Коди багажу наведені в 2-літерному мовному коді ISO (тобто 'en' для англійської мови, 'fr' для французької).

Це корисно для браузерів, які можуть налаштувати показ лапок тощо. Читачі екранів також користуються lang атрибутом, а також пошукові системи.

Sitepoint має деякі цікаві пояснення цього langатрибута.

Приклади

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

<html lang="en">

Укажіть мову в наступному абзаці - шведську.

<p lang="sv">Ät din morgongröt och bli stor och stark!</p>

10

"! DOCTYPE" декларація . Не думайте, що це прихована функція, але, здається, вона недостатньо відома, але дуже корисна.

напр

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">

10
І не кажучи вже про "обов'язкові для більшості сучасних мов розмітки і без неї неможливо надійно перевірити документ" ... validator.w3.org/docs/help.html#faq-doctype
Svish

Я вже не думаю, що це вже "мало відомо". За час між IE 6 та IE 7 використання доктрипу перейшло від ~ 1% до> 50%.
безвічність

@eyelidlessness Більшість IDE включає цей тег, тому його використання збільшилось. Я думаю, що ця мітка недостатньо відома.
Даніель Моура

6
А за допомогою суворого доктрипу виправляється 95% невідповідностей браузера.
НезадоволенеЗакриття

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