Хабр, привет.

Многие люди с интересом относятся к истории. Читают книги, рассматривают архитектуру городов, смотрят фильмы времени наших родителей. Мне кажется, веб достиг периода, когда мы можем с интересом поговорить о прошлом HTML и CSS.

Сегодня я пришел к вам, чтобы оглянуться немного назад и вспомнить фичи, которые когда-то были частью веба. Возможно, некоторые из них вы когда-то даже использовали.

Давайте посмотрим, что я вам подготовил.

Элемент marquee

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

А я помню элемент marquee. Он создавал бегущую строку на сайтах. В школе я его использовал для своего сайта о футбольном клубе «Локомотив» (Москва). Помню, как вставил текст «Локомотив — чемпион России 2004».

<body>
  <marquee height="200">Локомотив чемпион России 2004</marquee>
</body>

На самом деле элемент marquee прикольный. У него есть достаточно много возможностей. Например, мы можем менять направление анимации на вертикальное, указав значение down для атрибута direction.

<body>
  <marquee scrolldelay="50" direction="down" height="200">Локомотив чемпион России 2004</marquee>
</body>

Можно задавать скорость анимации с помощью атрибута scrollamount. Например, я укажу 50 миллисекунд.

<body>
  <marquee scrolldelay="50" direction="down" height="200">Локомотив чемпион России 2004</marquee>
</body>

Даже можно включить обратную анимацию, указав значение alternate для атрибута behavior. В этом случае текст будет доходить до границ элемента и возвращаться обратно.

<body>
  <marquee behavior="alternate" scrolldelay="50" direction="down" height="200">Локомотив чемпион России 2004</marquee>
</body>

Вот такие бегущие строки можно было реализовывать с помощью элемента marquee. Хотя есть ещё один плюс.

В своих примерах я не стилизовал текст, но в реальных проектах, конечно, он был ещё более ярким. Особенно мне запомнились красные буквы на чёрном фоне.

Элемент applet

Двадцать лет назад возможности JavaScript были ограничены. Их фактически было мало, да ещё кроссбраузерная поддержка хромала. По этой причине интерактивность интерфейса была элементарной.

Правда, программисты хотели как-то разнообразить пользовательский опыт. Даже думали заменить сам JavaScript. Хорошо же, что не стали. Правда?

Хотя был ещё один способ добавить интерактивность в интерфейс пользователя. Вы помните элемент applet? Именно он какое-то время позволял вставить на страницу разнообразные интерактивные элементы. Текущее время, анимация и, конечно же, калькуляторы!

Это было возможно, если разработчик написал мини-программу на языке Java и подключил её на странице с помощью элемента applet, указав в атрибуте code имя Java-класса с логикой. Например, я это сделаю, чтобы отобразить текущее время.

<body>
  <applet code="Clock.class" width="400" height="500">
    К сожалению, не получилось отобразить текущее время.
  </applet>
</body>

Если же у разработчика была более сложная логика, он мог подключать целые JAR-архивы, содержащие вспомогательные ресурсы мини-программы. Для этого использовался атрибут archive.

<body>
  <applet code="Clock.class" archive="resources.jar" width="400" height="500">
    К сожалению, не получилось отобразить текущее время.
  </applet>
</body>

По умолчанию подключаемый класс должен был находиться рядом с HTML-файлом. Это было не всегда удобно, поэтому также была возможность указать другой путь с помощью атрибута codebase.

<body>
  <applet code="Clock.class" codebase="/applets/" archive="resources.jar" width="400" height="500">
    К сожалению, не получилось отобразить текущее время.
  </applet>
</body>

Вот таким был один из способов создания интерактивности интерфейсов раньше. Не сказать, что пользователи получали большие возможности от элемента applet, но всё же он оставил свой след в истории веба.

Элемент center

Как вы будете центрировать текст? Большинство читателей недоумённо подумают о свойстве text-align со значением center. Коллеги, просто вы не так давно знакомы с вёрсткой, как я. Раньше был совсем другой способ.

Центрирование контента — задача очень древняя. Вообще-то таким способом многие разработчики выделяли свои сайты. Это была изюминка! Правда, в те времена ещё не было свойства text-align, а был элемент center.

Как вы догадались из названия, он центрировал контент. Например, я размечу элементом свою фотографию и текст.

Моя фотография и текст находятся строго по центру! Всё так, как было, когда я делал свою первую веб-страничку в школе. Кстати, я до сих пор помню, как меня бесило писать HTML в обычном блокноте. Прошло двадцать лет.

Свойства float и clear

Сегодня задача по расположению элементов в строку не является проблемой. Есть флексбоксы и CSS-гриды. А я застал время, когда их не было. Мне приходилось использовать свойство float.

Давайте попробуем расположить два элемента в строку, задав значение left.

<body>
  <div class="awesome-container">
    <div class="awesome-block">Первый</div>
    <div class="awesome-block">Второй</div>
  </div>
</body>
.awesome-block {
  width: 250px;
  height: 250px;
  float: left;
}

У нас получилось! Элементы расположены в строку. Казалось бы, всё отлично. Но разработчики моего поколения горьким опытом научились не торопиться с выводами.

Давайте добавим свойство border к родительскому элементу.

.awesome-container {
	border: 2px solid;
}

.awesome-block {
	width: 250px;
	height: 250px;
	float: left;
}

Мы видим, что рамка схлопнута. Как будто родительский элемент пустой.

Да, это негативное последствие свойства float. Оно «вытаскивает» элементы из своего окружения, и поэтому они становятся «невидимыми» для родительского и соседних элементов.

Для решения этой задачи мы использовали костыль. Создавали пустой элемент div. Ему добавляли класс clearfix, а также для него объявляли свойство clear со значением both.

<body>
  <div class="awesome-container">
    <div class="awesome-block">Первый</div>
    <div class="awesome-block">Второй</div>
    <div class="clearfix"></div>
  </div>
</body>
.awesome-container {
  border: 2px solid;
}

.awesome-block {
  width: 250px;
  height: 250px;
  float: left;
}

.clearfix {
  clear: both;
}

Мы очистили действие свойства float. Браузеры отобразили родительский элемент с корректной высотой. Только теперь уже можно спокойно выдохнуть.

Свойство zoom

Многие коллеги всегда удивлялись тому, что масштабирование элемента с помощью трансформации является не единственным способом. Спасибо нужно сказать браузеру Internet Explorer, в котором было свойство zoom.

Данное свойство также масштабирует элемент, как делает это свойство scale или функция scale(). Только они работают совершенно по-разному.

<body>
  <div class="awesome-block">
    <img src="https://assets.codepen.io/151389/internal/avatars/users/default.png?fit=crop&format=auto&height=512&version=1505459000&width=512" width="128" alt="">
    <p>Этот пример с scale</p>
  </div>
  <div class="awesome-block">
    <img src="https://assets.codepen.io/3893640/internal/avatars/users/default.png?fit=crop&format=auto&height=512&version=1764711425&width=512" width="128" alt="">
    <p>Этот пример с zoom</p>
  </div>
</body>
.awesome-block:nth-child(1) img {
  scale: 1.5;
}

.awesome-block:nth-child(2) img {
  zoom: 1.5;
}

Пожалуйста, обратите внимание на текст под изображением. В примере со свойством scale изображение перекрывает его, поэтому его не видно. Свойство zoom же не скрывает текст. Он просто сместился ниже и всё так же видим.

Так получается, потому что браузеры рассчитывают геометрию элементов, которых касается элемент с объявленным свойством zoom. При трансформации этого не происходит. Браузеры переносят элемент на другой слой и масштабируют.

А теперь самое интересное. До появления свойства transform в вебе не было масштабирования. Свойство zoom не использовалось по назначению, потому что оно существовало только в браузере Internet Explorer.

Эта особенность помогала разработчикам бороться с багами браузера. Возможно, вы когда-то видели код, где свойство zoom объявлено со значением 1.

.clearfix {
  *zoom: 1;
}

Данный код помогал браузеру корректно отображать элементы в разных ситуациях, связанных с позиционированием элемента. Например, свойство zoom помогало корректно отображать свойство float в браузере Internet Explorer версий 6 и 7.

И это не единственный случай. Свойство zoom добавляли в самые разные места. Для демонстрации я посмотрел первую версию библиотеки Twitter Bootstrap. Там свойство zoom использовалось в классе .container.

.container {
  width: 940px;
  margin: 0 auto;
  zoom: 1;
}

Для читателей, которые никогда не использовали библиотеку Twitter Bootstrap, сделаю ремарку. Класс .container использовался в качестве основного элемента страницы, который задавал ширину и центрировал всё содержимое.

Вот представьте, как весело было нам, что свойство zoom добавлялось даже при центрировании контента.

Думаете, это всё? Нет, свойство zoom даже использовалось для корректного отображения элементов audio, canvas и video в библиотеке normalize.css, когда они только появились в браузерах.

/*
 * Corrects inline-block display not defined in IE6/7/8/9 & FF3
 */

audio,
canvas,
video {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

Заключение

Вот такие возможности мы перестали использовать со временем. Это то, что я запомнил. Конечно, это не всё, и поэтому хочется узнать ещё.

У меня есть просьба к вам. Поделитесь в комментариях своими возможностями HTML и CSS, которые ушли в прошлое. Это могут быть атрибуты, элементы, свойства. Спасибо.

На этом всё. Спасибо за чтение!

P. S. Помогаю больше узнать про CSS и дружелюбные интерфейсы в своих ТГ‑каналах CSS isn't magic и UX + Dev = a11y. Присоединяйтесь. Как вступить, написано в профиле.

© 2026 ООО «МТ ФИНАНС»

Комментарии (24)


  1. eandr_67
    06.10.2026 14:01

    Из того, что ушло из HTML, мне первыми вспоминаются фреймы, от всех возможностей которых в HTML 5 остался только тег iframe. Да, появились фреймы позже, чем center, но сайты, сделанные на сетке фреймов - это ведь тоже немалый период истории web.


    1. melnik909 Автор
      06.10.2026 14:01

      Скажите, пожалуйста, про какие фреймы вы говорите? Я вроде знаю только iframe


      1. AnSt
        06.10.2026 14:01

        Про фреймы из <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> (подробнее - https://ru.wikipedia.org/wiki/Фрейм_(HTML))

        При помощи фреймов можно было сделать несколько заготовок html-страничек для заголовков и футеров, например. И везде их вставлять во фремы. А потом, при необходимости, поправил - и везде одно и тоже. Также фреймы позволяли сделать разметку, не используя таблицы для этого, как сейчас гридами делают.


        1. artptr86
          06.10.2026 14:01

          Вот классический пример навигации фреймами: https://docs.oracle.com/javase/8/docs/api/


        1. melnik909 Автор
          06.10.2026 14:01

          Точно! А я забыл совсем про них. Посмотрел пример и вспомнил, что такое раньше видел. Спасибо!


    1. IZh
      06.10.2026 14:01

      Если речь о тэге frame, то он, хоть и deprecated, но ещё не ушёл.


  1. andreygaag
    06.10.2026 14:01

    <center></center>


  1. ion_nsk_region
    06.10.2026 14:01

    Кстати, я до сих пор помню, как меня бесило писать HTML в обычном блокноте. Прошло двадцать лет.

    Прошло 20 лет, а вы по-прежнему пишете HTML в блокноте? Или воспоминания настолько яркие, что о блокноте и думать не хочется?

    По теме: по-моему, уходят вендорные префиксы -o-, -ms-, -moz-, и т.п. Вероятно, из-за того что большинство браузеров теперь на одном и том же движке.


    1. melnik909 Автор
      06.10.2026 14:01

      Я код пишу только для статей И делаю это в Codepen.


    1. Zisa
      06.10.2026 14:01

      Был популярен в самом начале Счетчик визитов на страничку. Уж и не припомню, как тэг назывался. Я уж на пенсии давно)). Мда… было времечко

      С 1994г. верстал странички на HTML , потом на XML под заказ лет 30 назад. Для удобства создавал библиотеки dymanic sheats, поскольку код везде повторялся.


  1. PaulZi
    06.10.2026 14:01

    А почему float ушел? Если задача вставить фото в полотне текста с обтеканием вокруг - вполне рабочее решение в определенных ситуациях.


  1. maker27
    06.10.2026 14:01

    Надеялся увидеть что-нибудь из древних технологий, которые не застал... Почувствовал себя старым


    1. JBFW
      06.10.2026 14:01

      Держите:

      Когда-то не было таких вещей как border и border-radius.
      Вместо этого рисовались картинки-gif, из которых строилась оболочка для элемента: картинка верхнего левого угла, картинка горизонтальной полосы, картинка верхнего правого угла, картинка левой вертикальной полосы - и вот там уже где-то начинался элемент "в рамке".

      Нужно было подобрать картинки так, чтобы рамка не разваливалась на разных разрешениях экрана.

      А еще были ActiveX-элементы на странице: специальное Windows-приложение .osx, которое работало разумеется только в IE под Windows.
      Потом его заменили на SilverLight - но это уже как-то совсем мимо прошло...


  1. IZh
    06.10.2026 14:01

    Одним из первых ушёл тэг blink.


    1. melnik909 Автор
      06.10.2026 14:01

      Точно. Я же хотел его вставить в статью. Спасибо!


  1. CitizenOfDreams
    06.10.2026 14:01

    Я не верстальщик, так что из статьи понял только то, что старые костыли постепенно заменялись новыми инвалидными креслами.


  1. AnSt
    06.10.2026 14:01

    А карта изображений (https://ru.wikipedia.org/wiki/Карта_изображений) сейчас используется? Не встречал её давно. Через неё было удобно делать навигационное меню Меню это могло быть одним изображением и нужные участки размечались для перехода по ссылкам.

    Вроде бы, помимо апплетов, были ещё сервлеты...

    Да много чего было, всего и не упомнишь уже.


    1. andreymal
      06.10.2026 14:01

      Где-то натыкался на капчу, где нужно было ткнуть в картинку, которая работала без js через такую карту


    1. JBFW
      06.10.2026 14:01

      Знаю примерно одно хорошее применение imagemap - это когда у вас, например, план коттеджного поселка, и он не параллельно-перпендикулярный, и можно тыкнуть в нужный участок...

      В остальных случаях вроде и незачем...


  1. vanxant
    06.10.2026 14:01

    Карточки товаров, статей, фоток и т.п. верстали через <ins> и <del>, которые работали как display: inline-block в старых ie, который это свойство не поддерживал.

    Вёрстка таблицами.

    Вёрстка картинок таблицами, когда скажем 30 маленьких изображений в таблице 6х5 весили сильно меньше, чем одно исходное большое. Были специальные утилиты, умевшие оптимально нарезать картинки.


    1. Vindicar
      06.10.2026 14:01

      Вёрстка картинок таблицами, когда скажем 30 маленьких изображений в таблице 6х5 весили сильно меньше, чем одно исходное большое. Были специальные утилиты, умевшие оптимально нарезать картинки.

      Да ладно? Я бы наоборот ожидал оверхед от заголовков изображений.


      1. vanxant
        06.10.2026 14:01

        Так картинки были не фотками, а обычно слайдами, журнальными иллюстрациями или если хотите комиксами. Для такой "бизнес-графики" пачка gif на 2-4 цвета в каждом с огромными однотонными областями рвёт полноцветный jpeg как тузик грелку

        Для совсем однотонных ячеек использовался пресловутый pixel.gif (прозрачная распорка 1х1) с указанием width, height атрибутов и у колонки bgcolor


  1. balamutang
    06.10.2026 14:01

    А как же вставка миди-мелодии в страничку? :)


  1. vdudouyt
    06.10.2026 14:01

    Float и ныне живее всех живых. Даже на той странице, на которой Вы сейчас читаете этот комментарий.