Раньше веб был более странным местом


В прошлом году я поставила перед собой цель вернуть дух старого веба, креативность и шарм конца 90-х и начала 2000-х. В те времена не было правил, ты ставил на веб-страницу что угодно, потому что это было твоё пространство, в котором можно делать всё, что пожелаешь.

И для целого поколения Интернет-пользователей наличие собственного веб-сайта было признаком крутости. Именно так обстояли дела тогда, в эпоху до появления социальных сетей и web 2.0, о старых добрых статических личных страничках.

Сайты наподобие Geocities, Angelfire, Tripod и Expage предлагали для всех услуги бесплатного статического хостинга, поэтому произошёл бум количества личных веб-сайтов. У некоторых хостов даже были конструкторы веб-сайтов в стиле drag-and-drop, так что вам даже не нужно было изучать HTML.

Сегодня мы можем посмеяться над этими веб-сайтами, по сравнению с современными изящными и минималистическими сайтами они выглядят карикатурно. Но я считаю, что мы слишком далеко ушли в другом направлении, и сегодня многие веб-сайты выглядят одинаково. Те старые личные веб-сайты были отражением вашей личности.

Некоторые из них создавались семьями, где они делились фотографиями и новостями…

Страница гордых дедушки Тома и бабушки Шерри (The Proud Grandparents Page)

… а на других была куча графики, которой можно было обмениваться и использовать её на своём сайте…

Графика Лизы (Lisa's Graphics)

… а некоторые были фан-сайтами. Посмотрите на эти фреймы! Я сделала этот скриншот посередине прокрутки <marquee>.

Страница фаната Final Fantasy (Mognet Central)

Пару лет назад я играла в игру под названием Hypnospace Outlaw — совершенно безумный проект, в котором игрок является модератором разновидности веба 90-х, доступ к которому получаешь во сне. Источником вдохновения для домашних страниц в этой игре послужили веб-сайты Geocities (об игре есть очень хороший эпизод Noclip), и они вызвали у меня сильную ностальгию. Если вы в неё ещё не играли, крайне рекомендую! Она по-настоящему передаёт дух времени — индивидуальность и чудаковатость, делавшие эти сайты такими особенными.

Hypnospace Outlaw

Вернём себе эту чудаковатость


Мне бы хотелось, чтобы этот дух, эта экспериментальная и забавная сторона веба вернулись. Моя задача — показать вам, как мы можем быть столь же креативными, но пользуясь современными способами, обеспечивающими доступность пользования. Потому что какими бы интересными ни были старые веб-сайты, с точки зрения удобства они были кошмаром. Мы не пользовались семантическим HTML, применяли таблицы для создания структуры (вместо табличных данных), всё постоянно мерцало и двигалось. К счастью для нас, современный веб позволяет нам быть такими же творческими, в то же время учитывая удобство пользователя на другой стороне браузера.

Поэтому, естественно, я создала веб-сайт в стиле 90-х, использующий некоторые из моих любимых веб-тропов. Я по максимуму использовала современный HTML, CSS и JS. Давайте изучим некоторые из особенностей и посмотрим, как можно их воссоздать!

Домашняя страничка Софи (Sophie's Homepage)

Анимированные GIF


Сайты GeoCities были полностью замусорены гифками. Горящее пламя, строительные рабочие, разделители, даже анимированные маркеры списков. Анимации были очень забавными, и способность уместить так много в такой маленький размер файла была своего рода искусством.

Это скриншот cameronsworld.net, прекрасного архива гифок GeoCities, который сам по себе является произведением искусства.

Сегодня размещать анимации на сайтах проще простого, будь то скромные GIF (Интернет сегодня стал намного быстрее), более современные форматы наподобие webm и gifv, или даже SVG-анимации, реализованные при помощи CSS или библиотек типа GreenSock. Однако мы можем сделать нечто большее.

Стандартный код добавления изображения с тех времён не особо изменился:

<IMG SRC="flames.gif">


Разумеется, в те времена мы писали весь HTML заглавными, потому что на то была какая-то причина. Возможно, XHTML? Как бы то ни было, в конечном итоге все посетители видели GIF, хотели они того, или нет. Для людей с эпилепсией, вестибулярными нарушениями и другими заболеваниями, при которых движение вызывает тошноту, автоматическое воспроизведение GIF — это большая проблема. К счастью, сегодня мы можем это исправить при помощи того, чего в старые времена у нас не было!

▍ Медиа-запрос prefers-reduced-motion


Благодаря этому медиа-запросу мы можем воспроизводить GIF, если у пользователя на компьютере не включено снижение подвижности (reduced motion), чтобы нашим трэшовым веб-сайтом мог насладиться любой, вне зависимости от его состояния здоровья.

▍ Обуздываем медиа-запросы при помощи элемента picture


Элемент HTML5 picture позволяет нам указать изображение и потенциальные альтернативные источники для него.

<picture>
    <source srcset="underconstruction.gif" 
    media="(prefers-reduced-motion: no-preference)">
     <img src="underconstruction.png" 
    alt="Under construction" />
</picture>

В приведённом выше фрагменте кода, как и раньше, есть тэг img, но на этот раз он демонстрирует неподвижную версию GIF, которую я создала, открыв GIF в режиме предварительного просмотра, вытащив первый кадр и сохранив его как PNG. Тэг source содержит URL файла GIF, он срабатывает, только когда удовлетворено требование его атрибута media. Поэтому если у вас не включено reduced motion, то источник изображения будет заменён анимированной версией GIF. Магия!


Эффекты текста


Помните <marquee>? Этот тэг заставлял текст скроллиться по экрану подобно бегущей строке.

А те, кто пользовался Netscape, должны помнить печально известный тэг <blink>, заставлявший текст мерцать…

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

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

В наши дни можно воссоздать эту магию при помощи CSS вместо изображения! И здорово то, что поскольку это обычный текст, всю обработку которого выполняет CSS, он остаётся доступным для людей с ограниченными возможностями.

Источником вдохновения для моего следующего трюка стала классика 90-х: Microsoft WordArt.


▍ WordArt, но на CSS


Хотя WordArt пришёл к нам не конкретно из веба 90-х, он возвращает меня к эстетике максимализма 90-х и определённо эстетически подходит к тому, что я пытаюсь создать.

Я покажу вам, как воссоздать два классических стиля WordArt при помощи современного CSS.


▍ Заливка градиента текстом при помощи background-clip


Мы не можем раскрашивать текст при помощи градиента в CSS (пока), но можем придать элементу градиентную заливку фона. При помощи свойства background-clip мы можем управлять тем, где отображается фон. В частности, мы можем указать background-clip: text, чтобы фон отображался только там, где в элементе есть текст.

Тогда если мы сделаем сам текст прозрачным, то через него будет виден градиентный фон.

background: linear-gradient(183deg, #6000CA 10%, #CA00CD 70%);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
font-family: 'Impact';

Красота!

Теперь давайте добавим свойство transform, чтобы текст ещё больше походил на реальный WordArt.

transform: skewY(-8deg) scaleY(1.3) scaleX(0.8);


▍ Добавляем тень


Теперь нам нужно добавить светло-фиолетовую отбрасываемую тень. Но если мы попробуем использовать свойство text-shadow, она отобразится поверх текста!


Так происходит потому, что на самом деле мы видим фон, а реальный текст прозрачен и расположен выше. Если я изменю цвет текста на цвет body, то вы увидите, что я имею в виду:


Чтобы решить эту проблему, нам нужен элемент-обёртка, содержащий тень, чтобы он отображался за градиентным фоном, имеющим форму текста.

<span class="purple-wordart-wrapper">
	<span class="purple-wordart">WordArt</span>
</span>

Мы добавим элементу-обёртке фильтр drop-shadow. Он добавляет drop-shadow той же формы, что у дочернего элемента, а поскольку фон обрезан до текста в дочернем span, drop-shadow тоже будет повторять эту форму!

.wordart-wrapper {
	filter: drop-shadow(2px 2px 0px rgba(130, 140, 251, 0.8));
}

Результат:


Невероятно!

Для воссоздания второго эффекта WordArt я использую своего фаворита из детства — радужный эффект. Помню, как использовала его на всех страницах своей домашней работы в младшей школе.


Здесь используется ещё одна градиентная заливка, поэтому мы снова воспользуемся background-clip: text, чтобы получить тот же эффект, а затем применим transform, чтобы получить нужную форму.

background: linear-gradient(
  90deg,
  #9c00ff,
  #ff0000,
  #ff8800,
  #ffff00,
  #02be02,
  #0000ff,
  #4f00ff,
  #9c00ff
);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
font-family: 'Arial Black', sans-serif;
font-weight: bold;
transform: scaleY(1.5) scaleX(0.6);
transform-origin: left;


Ещё раз применим элемент-обёртку, но на этот раз немного иначе. Эта графика имеет больше 3D-эффекта, тень становится более плоской и уходит влево, как будто мы смотрим на стоящий WordArt.

CSS способен это сделать!

▍ Создаём перспективу


.wrapper {
  font-family: 'Arial Black', sans-serif;
  font-weight: bold;
  display: inline-block;
  position: relative;
  perspective: 150px;
  perspective-origin: bottom center;
}

Можно использовать свойство perspective, чтобы перейти в своего рода «3D-режим». Он приказывает браузеру: «действуй так, как будто я нахожусь вот на таком расстоянии от элемента». В нашем случае это 150px.

Затем мы задаём свойство perspective-origin, чтобы определить позицию, с которой мы смотрим на элемент. Я хочу, чтобы казалось, что мы перед ним, снизу.

Таким образом мы изменяем то, как к элементу применяются преобразования с учётом перспективы, для манипулирования ею не только по осям X и Y, но и по Z.

Для создания тени я воспользуюсь псевдоэлементом wrapper::before, и присвою его содержанию значение «WordArt», чтобы отзеркалить текст. Благодаря этому «теневой» текст будет отображаться за радужным градиентом. Затем я применю преобразования, чтобы наклонить «тень»; свойство perspective в элементе wrapper будет изменять то, как он поворачивается и наклоняется.

.wrapper::before {
  position: absolute;
  content: 'WordArt';
  color: #000;
  opacity: 0.2;
  bottom: -2rem;
  left:35%;
  transform: rotateX(60deg) skewX(65deg) 
  scaleY(2.8) scaleX(0.9);
  transform-origin: bottom right;
}

Пока в CSS жёстко прописано, что тень имеет текст «WordArt». Если я захочу использовать этот стиль текста для других вещей, то мне как-то придётся динамически задавать содержимое текста тени. И это возможно при помощи функции CSS attr()!

attr() получает содержимое указанного атрибута элемента. Я назвала свой data-content. Поэтому в нашем правиле wrapper::before значение content: 'WordArt' превращается в content: attr(data-content):

.wrapper::before {
  position: absolute;
  content: attr(data-content);
  color: #000;
  opacity: 0.2;
  bottom: -1rem;
  transform: rotateX(60deg) skewX(60deg) 
  scaleY(2.8) scaleX(0.8);
  transform-origin: bottom right;
}

Далее мы рендерим HTML с атрибутом:

<span class="rainbow-wrapper" data-content="Rainbow">
  <span class="rainbow">Rainbow</span>
</span>

И теперь мы можем писать разные слова!


Код на Codepen

Неидеально, но мне кажется, выглядит вполне неплохо для заголовка ретро-сайта!

Музыка


В 2001 году у меня был магазин NeoPets. Сразу после загрузки его посетителя встречали нежные звуки песни Teenage Dirtbag в формате MIDI.

<EMBED SRC="mysong.mid" HIDDEN="true"
    loop="yes" volume="10" autostart="true">

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

Современные браузеры по вполне логичным причинам блокируют аудио с автовоспроизвединием. Оно чрезвычайно раздражает. К счастью, элемент HTML5 audio даёт нам чуть больше контроля.

  <audio aria-label="Play music" controls 
  src="/soundtrack.webm"></audio>

Вы всё равно можете встраивать звук в свой веб-сайт! Просто сделать его выбираемым. Если это часть впечатления, которое вы хотите создать, то это вполне нормально, если пользователя устраивает музыка.

Также стоит добавить метку, внешнюю или aria-label, чтобы сообщить пользователю, что делает этот элемент.

Элементы управления в браузере отображаются по умолчанию — то, что вы видите выше, будет выглядеть по-разному в Chrome, Firefox и так далее. Но можно использовать Web Audio API для настройки элементов управления, чтобы рендерить красивые кнопки и использовать JavaScript для управления воспроизведением этими кнопками.

Следы от курсора


▍ Раньше: Dynamic HTML


В старые времена след от курсора был очень крутой фишкой. Он говорил: «посмотри, что я могу делать при помощи JavaScript!». (А в моём случае, что мог делать с JavaScript сайт dynamicdrive.com.)

Это называлось Dynamic HTML: не технология сама по себе, а коллекция технологий (немного похоже на то, как мы сегодня используем термин JAMstack). HTML, CSS и JavaScript, только очень старая версия JavaScript. В то время всё выполнялось на стороне клиента, потому что ещё не существовало AJAX/клиентских HTTP-запросов. И реализации для двух главных браузеров того времени (Internet Explorer и Netscape) существенно различались. (Этот период называли «браузерными войнами», на сайте History Of The Web есть его хорошее описание.)

Это привело к появлению вещей наподобие анимированного следа курсора Dancing Stars. Этот курсор добавляет след из семи жёлтых «звёздочек» (крошечных квадратов) шириной в 3px, которые как будто следуют за курсором. Я не могу показать превью, потому что скрипт больше не работает.

Сначала нужно было проверить, работает ли скрипт в IE или Netscape, потому что реализация должна быть совершенно разной. В IE мы проверяли наличие document.all — функции, возвращавшей все элементы в DOM.

Если она присутствовала, мы вызывали document.write (функцию, которую тоже нельзя больше использовать), вставляющую в DOM множество мелких квадратиков <div> по 3px.

if (document.all) {
  document.write('<div id="starsDiv" 
  style="position:absolute;top:0px;left:0px">')
  for (xy = 0; xy < 7; xy++)
    document.write('<div style="position:relative;
    width:3px;height:3px;background:#FFFF00;
    font-size:2px;visibility:visible"></div>')
    document.write('</div>')
}

В Netscape не было div, зато существовали LAYER. По сути, это то же самое, но под другим названием, потому что разработчики браузеров в то время любили причинять боль.

(Примечание: именно поэтому некоторые люди называли элементы div «div layers» — это название включает в себя оба элемента.)

<LAYER NAME="a0" 
  LEFT=10 TOP=10 
  VISIBILITY=SHOW 
  BGCOLOR="#FFFF00" 
  CLIP="0,0,3,3">
</LAYER>
}

Если document.layers что-то возвращал, то мы знали, что находимся в Netscape, и можем делать то, что позволяет Netscape. В данном случае следующее:

if (document.layers) {
  window.captureEvents(Event.MOUSEMOVE);
}

Полный скрипт выложен на DynamicDrive.com.

▍ Сейчас: Canvas и requestAnimationFrame


Здесь основной труд за нас проделал Тим Холман, воссоздавший эффекты курсоров в стиле 90-х на современном JavaScript и HTML.

Курсоры Тима используют canvas, и это гораздо производительнее, чем рендеринг отдельных элементов в DOM. Также вы получаете гораздо более точный контроль над расположением элементов. Можете представить, как бы в старом скрипте мы пытались отрисовать такое количество звёздочек в DOM? При помощи canvas API и requestAnimationFrame (функции, позволяющей группировать анимации и эффективно обновлять их до следующей перерисовки браузера) мы можем рендерить множество мелких звёздочек, и чтобы при этом они красиво разгорались или затухали.

▍ Медиа-запросы работают и в JavaScript!


Разумеется, следы курсора — это анимации, но не все хотят их видеть. Хорошо то, что мы можем использовать медиа-запросы в JS, как мы это делали в тэгах <source> CSS и HTML.

const prefersReducedMotionQuery = 
	window.matchMedia('prefers-reduced-motion')
					
if (!prefersReducedMotionQuery.matches) {
	cursor.init()
}

Вызывая window.matchMedia с именем запроса, который нам нужен (prefers-reduced-motion), мы можем проверить указанное пользователем значение параметров подвижности, и инициализировать курсор, только если reduced motion не включено.

Мы даже можем добавить к медиа-запросу event listener, чтобы при изменении его значения можно было динамически инициализировать или уничтожать курсор.

prefersReducedMotionQuery.addEventListener('change', () => {
	if (prefersReducedMotionQuery.matches) {
		cursor.destroy()
	} else {
		cursor.init()
	}
}) 

Веб-кольца


Как можно было находить похожие сайты, когда поисковые движки ещё не обладали особыми возможностями? Разумеется, при помощи веб-колец (webring). Веб-кольцо — это сборник веб-сайтов, объединённых общим интересом или темой. Веб-кольца создавали ощущение причастности к сообществу, позволяли поместить на свой веб-сайт особую плашку.


Каждый сайт в веб-кольце имел подобную плашку, чтобы пользователь мог перемещаться по кольцу, и где-то находился бэкенд (вероятно, написанный на Perl), выполнявший всю работу по вычислению, где какой сайт должен быть в кольце.

Я создала собственное веб-кольцо для посетителей конференции State of the Browser 2022 с бэкендом в Google Sheets (для экономии времени и живой демонстрации) и Cloudflare Worker поверх них, чтобы выяснять, на какой сайт направлять пользователей. Он проверяет значение request.referrer, чтобы узнать, откуда пришёл вызов, ищет этот URL в списке сайтов и возвращает, соответственно, следующий или предыдущий.

async function handleRequest(request) {
  const { pathname } = new URL(request.url)
  const data = await fetchAndParseCsv()
  const referrer = request.referrer
[...]

Чтобы реализовать что-то более надёжное/профессиональное, рекомендую изучить комплект для создания веб-колец Макса Бёка.

Гостевые книги


И последнее по списку, но не по важности — это скромные гостевые книги! В те времена, когда ещё не существовало соцсетей, именно с помощью них мы выказывали свою признательность веб-мастерам. Я подумала, что для общения стоит создать не просто гостевую книгу, а что-то немного иное. Да, это гостевая книга, но в её основе лежит Twitter!

Посмотреть гостевую книгу

Я использовала технологию под названием webmentions: протокол, уведомляющий веб-сайт, когда кто-то ссылается на него на своём собственном веб-сайте или в Twitter. Webmentions (упоминания в вебе) собираются как фид (немного напоминающий RSS) и ассоциируются с доменным именем или хостом. Я поместила метатэги в head своего сайта, чтобы указать, что отслеживаю webmentions.

Для сбора webmentions я использую webmention.io, хотя для этого вполне можно настроить и собственный сервер. На моём веб-сайте (localghost) я собираю webmentions во время сборки и публикую их под страницами, но для демо веб-сайта своего доклада я написала клиентский скрипт, получающий уведомления, потому что хотела показывать их в демо в прямом эфире.

Я использую brid.gy для сбора упоминаний из Twitter и отправляю их webmention.io, а затем мой сайт опрашивает webmention.io, чтобы получить фид упоминаний.

Вперёд, создавайте свои странные штуки!


Веб — потрясающая платформа с огромными возможностями для творчества и экспериментов. Мне бы хотелось увидеть, что вы будете создавать — если вы упомянете страницу этого поста на своём сайте или в Twitter, то ниже отобразятся webmentions.

Играй в нашу новую игру прямо в Telegram!

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


  1. A1EF
    05.01.2023 16:09
    +23

    Да, 1999 год был интересный :)


    1. Alexandroppolus
      05.01.2023 19:43
      +10

      Это у них в таком виде вылезла "проблема 2000 года"?


      1. kochev
        08.01.2023 02:51
        +1

        Почти, особенность JS. Годы до 2000 выводились в две цифры - 98, 99; после - в 4: 2000, 2001.


  1. jobless
    05.01.2023 16:32
    +7

    http://aralsk-6.narod.ru/

    Некоторые и сейчас живее всех живых. Людей прошедших через "Чайку", "Берёзку", "Урал" всё меньше и меньше, а сайт про "Чайку" жив. В современном стиле не могу его представить.


  1. sergey-gornostaev
    05.01.2023 16:44
    +20

    Гостевую книгу надо написать в виде cgi-скрипта на Perl, раз уж мы создаём веб-сайт, как будто сейчас 1999 год


    1. mSnus
      05.01.2023 18:12
      +15

      В 99-м я писал CGI-скрипт на... Delphi!


      1. PuerteMuerte
        05.01.2023 21:30
        +3

        А я вообще был извращенцем в те годы. Мой первый сайт в 2000-м вообще был написан целиком на Delphi, и CMS, и генератор контента на фронте. К тому же не правоверный CGI, а б-гомерзкий ISAPI.


        1. mSnus
          05.01.2023 23:54
          +5

          Сайт я делал во Flash-е, там была музыка, анимация, красивые размытые снежинки и подгрузка данных из текстовых файлов - считай, NoSQL! ))))


          1. ya_penek
            06.01.2023 16:01
            +1

            А я юзал БД Paradox, которая постоянно сыпалась. Потом какое-то время пользовался Firebird. Все это крутилось на Personal Web Server под Windows 95 и даже иногда выставлялось в интернет, когда у меня были деньги на диалап.


        1. u007
          06.01.2023 13:11

          А сейчас на чём пишете?)


          1. PuerteMuerte
            06.01.2023 15:24
            +3

            C# + JS/TS, и, вы будете смеяться, но участвую ещё в одном крупном и активно развивающемся проекте на... Visual Basic.


            1. ya_penek
              06.01.2023 16:44

              Веб-проект на Бейсике? Писал и я такое по приколу, еще на старом досовом Turbo Basic. Он не дружил с stdout, и приходилось заворачивать экзешники в батники.

              Исходник
              5 open "out.txt" for output as #1
              10 print# 1,"Content-Type: text/html"
              20 print# 1,""
              30 print# 1,"Hello World!"
              40 qs$ = environ$("QUERY_STRING")
              50 vn$ = "name"
              60 gosub 1000
              70 if vv$<>"" goto 100
              80 print# 1,"<h1>Please, enter your name</h1>"
              90 goto 200
              100 print# 1,"<h1>Fuck you, "+vv$+"!</h1>"
              
              200 close# 1
              
              1000 rem Parsim peremennyu QUERY_STRING
              1001 rem vn$ - imya peremennoi, vv$ - znachenie.
              1010 vt$ = vn$ + "="
              1020 vv$ = ""
              1030 vp = 0
              1040 for i=1 to len(qs$)-len(vt$)+1
              1050 if mid$(qs$,i,len(vt$))=vt$ then vp=i+len(vt$) else goto 1070
              1060 goto 1080
              1070 next i
              1080 if vp=0 goto 1200
              1090 ls = 0
              1100 for i=vp to len(qs$)
              1110 if mid$(qs$,i,1)<>"&" then ls=ls+1 else goto 1130
              1120 next i
              1130 vv$ = mid$(qs$,vp,ls)
              1200 return

              Результат (сорри за тупой студенческий юмор)


              1. PuerteMuerte
                06.01.2023 17:17

                Веб-проект на Бейсике?

                Не веб, десктопное приложение.

                Результат (сорри за тупой студенческий юмор)

                Мой первый хеллоуворлд я написал в восемь лет, он был куда лаконичней по коду, но результат выдавал примерно такой же (вместо Васи жертвой унижения был Саша), ну и конечно не в браузер, а на крохотный экранчик телевизора Электроника 409


            1. firehacker
              07.01.2023 10:40

              Не буду смеяться, а пожму руку.


    1. F0iL
      05.01.2023 22:02
      +13

      и обязательно добавить антимат-фильтр, который будет триггериться на слова "корабля" и "Сергей".


      1. StjarnornasFred
        06.01.2023 00:38
        +9

        Пример хыхыру показывает, что Сергеев и в 2k22 недолюбливают :)


      1. Squoworode
        06.01.2023 13:31
        +17

        Олеговна, застрахуй команду корабля со скипидаром


    1. artemisia_borealis
      05.01.2023 23:16
      +1

      В 98 или 99 я написал cgi интернет магазин на C++. (RedHat, Sybase) И он неплохо работал. И при этом довольно шустро. Проработал несколько лет.


  1. NickDoom
    05.01.2023 16:53
    +20

    Чем больше я оглядываюсь на «тот Веб», тем сильнее чувство, что пора заново переизобретать формат статичной странички — тот самый изначальный HTML, изначально заложив в него выполнение современного «джентльменского минимума» вроде перепрыгивающих вверх-вбок-за предел скролла элементов управления, в зависимости от размера экрана, ну и подобного.

    Заодно сразу можно будет понять, какой сайт ориентирован тебе чего-то дать, а какой — тырить данные для рекламной бигдаты.


    1. twid
      05.01.2023 17:15

      Старый веб не берет данных и человек верит что с него не берут данные - не одно и то же.
      А так да, формат статичной страницы уместен и сегодня.


    1. Ogra
      05.01.2023 17:30

      Есть такой проект, называется Gemini


      1. XXXXPro
        05.01.2023 19:12
        +2

        На Gemini нет аналога форм, насколько я знаю. Поэтому даже гостевую книгу сделать не получится — там перестарались в плане упрощения, на мой взгляд. На мой взгляд, возвращаться к простоте нужно другим способом: использовать обычный HTTP, но при создании сайтов ориентироваться на такие броузеры, как dillo, netsurf и links.


        1. NickDoom
          05.01.2023 19:43

          Это только меньшее из того, чего там нет. Тут какой-то целый «векторный гипертекст» ®©™ надо изобретать, чтобы это всё более-менее работало в концепции «своя библиотека шрифтов в пределах сайта», не раскидываясь на офигиллион сторонних апи со шрифтами, скриптами, скриптами для шрифтов и прочим кошмаром, и при этом оставалось пригодным для полноценной статической странички, рендер которой стандартизирован (хотя бы рамочно, чтобы работали пиксельно нестрогие рендереры), и плюс предсказуемым и универсальным образом перевёрстывается по потребностям.

          Plain HTML, в котором даже нельзя (было, сейчас не знаю) без скриптов задать iframe, меняющий размер в зависимости от того, какой именно длины там подгрузился контент — это не более чем маленькая кочка в этом болоте, от которой можно оттолкнуться. Да и вообще, честно говоря, гипертекст потерял актуальность — 95% контента давно бинарные, даже сам текст уже Юникод, а про вектора глифов шрифтов я лучше поплачу молча в подушку. То есть в итоге надо морально готовиться к тому, что в момент достижения цели там от формата «изначального HTML» даже косточки угадываться не будут, в отличие от современного веба как такового — а идеологически, наоборот, он будет ближе к нему на порядки, по сравнению с современным вебом.

          Лайтовые браузеры не спасут — они тянут ту же легаси буквального «старого HTML», а не идеологического, а она несовместима с эффективным форматом.

          Как-то так, увы :(


          1. StjarnornasFred
            06.01.2023 00:41

            гипертекст потерял актуальность — 95% контента давно бинарные

            Можно уточнить терминологию? Современные сайты - разве не гипертекст (согласно его определению из Википедии)? И что понимается под бинарным контентом?


            1. NickDoom
              06.01.2023 07:43
              +5

              Ладно, попробую напрячься и максимально подробно вывалить все свои сиюсекундные соображения.

              Возьмём один веб-документ в формате статичной странички. Статичной, не кастрированной до плейнтекста, а просто статичной. Законченный, самодостаточный, читаемый. Отображающий содержимое без подключения к серверу.

              Гипертекст? Несомненно. Но в каком объёме? Десятки килобайт, включая текстовое наполнение, тексты URLов других страничек, тексты подсказок и так далее.

              А что же занимает остальные десять мегабайт? А картинки, описания цветов кнопочек, формы всех глифов использующихся шрифтов, формы и размеры всех линий, рамочек, иконочек и прочая вёрстка. Часть её задана всё-таки текстом (CSS), но по сути даже они — бинарка, только в текстовой форме, а про остальное и говорить нечего. Причём все эти картинки, скрины, схемы — необходимый контент, а не баловство, и тоже, по сути, важная часть документа.

              И формат, основанный изначально на плейнтексте с небольшими добавками форматирования, обросший мешком ссылок на всю эту бинарку и так далее — это в чистом виде легаси. Да, гипертекст — краеугольный камень, но под этим зданием он уже потерялся. И то, что этот камень был выбран круглым, потому что булыжники были стандартом в 17-м веке, не упрощает прилепливание к нему бетонных блоков и проведение сквозь него оптоволокна.

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

              Поэтому я вижу себе «переизобретённый HTML» как приспособленный для определённого круга устоявшихся за эти десятилетия задач формат вёрстки, причём крайне удобный для рендеринга и перерендеринга в те моменты, когда адаптивная вёрстка изменилась (статичная страничка ≠ статичное отображение, контент, при своей неизменности, имеет право скрываться-вылезать-перегруппировываться). Продуманный, проработанный формат, не «модный-стильный-молодёжный», не «а давайте возьмём самый модный сейчас тренд и…», а сделанный с нуля и сделанный с осознанием дела. Что-то иерархическое, из полей с возможностью задания взаимосвязей и расположений гибче, чем в HTML — и при этом без написания скриптов. С инклюдами (такими же бинарными), когда все странички сайта, использующие общий набор глифов шрифта, таблицы квантования превьюшек и словарь зипа, ссылаются на общий файл (как CSS, ага. Но тоже переработанный).

              А гипертекст-то да, внутри где-то, естественно, хорошо позипованный, как и всё остальное.

              Чтобы вся эта страничка вместо десяти метров весила полметра, рендерилась не медленнее, чем открывается жпег равного разрешения, но при этом выглядела не хуже, чем современные скриптованно-аяксовые, и при сжатии окошка из альбомного в книжное все контролы переползали и перепрыгивали, куда надо (а кто-то и в черепицу собирался). Если это с чем-то и можно сравнить — то с каким-то ооочень хитрым аналогом PDF, и то оооочень отдалённо. Но не с HTML.

              Пожалуй, надо пояснить ещё, что в моём контексте «статичный» — «изначально сформированный, не генерирующийся на ходу». Заранее известно всё содержимое, все гиперссылки, всё текстовое наполнение. Ничего не докачивается и не генерируется функциями, даже координаты. Функций нет, поскольку нет скриптов. Есть какое-то дерево, задающее, как что относительно чего двигать и до каких размеров что раздвигать, когда внутри какого-то аналога iframe откроется другой статичный документ, размеров которого мы пока не знаем (тут мы подошли на опасное расстояние к подгрузке части контента — но нет, это просто гиперссылка с не менее статичным адресом). И да, для сервера при изменении контента это всё может быть не таким уж и статичным, а генерирующимся из БД в кэш страниц, но речь не о серверном ПО, а о том, что видит клиент.

              А, и ещё надо пояснить на примере, что такое «для определённого круга устоявшихся за эти десятилетия задач». Но только на примере. Когда был в тренде флэш, некоторые товарищи делали на нём сайт целиком, «просто потому, что могли». А ещё кто-то крутил сайт целиком на JVM. Жесть. И это всё не умерло, потому что оказалось полезно для своих задач. А «для определённого круга устоявшихся задач» намного лучше подходил HTML с приблудами, который их решал быстрее и проще. Так и тут — «нео-HTML» претендует максимум на страницы типа той, на которой мы сейчас находимся :-) А современный веб никуда не денется, потому что решает более широкий круг задач — но с большим геморроем. И для «обычных» страниц стал не менее громоздок, чем те самые сайты на флэше.

              Но это всё акробатическая имхонавтика вокруг шеста, конечно. Сырые, не проработанные соображения в формате потока сознания. До более-менее рабочего варианта эти мечты надо пропустить через добрый десяток лучших умов, причём по принципу «супермаркету требуется продавец строго без опыта работы в советской торговле», как гласил анекдот 90-х. Чтобы «рука была не сбита». Причём в итоге я, вероятно, свои исходные сумбурные соображения там даже вскоре уже узнавать перестану.

              Но «вектор пожеланий» я вроде описать смог, надеюсь.


              1. XXXXPro
                06.01.2023 15:54

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

                Удивительно, насколько по-разному можно воспринимать одну и ту же задачу. Я её воспринимал так: «давайте изобретём протокол, где откажемся от всего лишнего, и который будет позволять только то, что было в начале 2000-х: текст, картинки и чуточку скриптов». А вы всё это лишнее хотите сохранить, просто перевести в бинарный вид.
                Кстати, если почитать все ваши пожелания, то получается, что ближе всего к этому формат PDF. В нём есть многое из перечисленногое, и он уже бинарный и достаточно компактный. По сути, нужно только добавить возможность отправлять формы на сервер.
                Ну и второе, на мой взгляд, говоря о Webе, нужно чётко разделять контентные сайты и Web-приложения. И для того и другого нужны совершенно разные решения.


                1. NickDoom
                  06.01.2023 16:12

                  Да-да, второе примечание именно про это разделение получилось. Это всё про чисто контентный сайт, где вес трафика максимально приближен к весу контента. Пусть даже красивого контента.

                  Надо пропихнуть полметра текста с картинками и шрифтами — вот пусть итог и весит полметра, а не 10, включая все «постучалки» на миллион фонт.апи.корпорация.ком и прочее.

                  А вы всё это лишнее хотите сохранить, просто перевести в бинарный вид.

                  При использовании более аскетичного дизайна всё может и в 64 К схлопнуться, и концепция к этому в целом поощряет, но не обязывает. А скрипты, кстати, я там как раз вычеркнул. Всё, что не покрывается иерархической адаптивной вёрсткой из дерева взаимно-ориентированных заполненных контентом примитивов — идёт в классический нынешний Веб, который условно считаем не контент-вебом, а веб-приложениями.


        1. morijndael
          06.01.2023 06:48

          Всё там можно, если немножко включить изобреталку :D

          Код ответа 1х: запросить у пользователя ввод и повторить запрос, приложив введённый текст в URL query

          Вот например, форма фидбека из двух полей. Конкретно эта просто отсылает сообщение мне в телегу, но никто не запрещает дописывать в .gmi файлик рядом

          gemini://mo.rijndael.cc/cgi/feedback


    1. garwall
      05.01.2023 18:27
      +2

      Посмотрите на Hugo и Jekyll. Генераторы статичных сайтов, поддерживающие темы со всякими новомодными плюшками


  1. UMenyaNeudobnieVoprosiki
    05.01.2023 17:07
    +15

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


    1. ArkadiyShuvaev
      06.01.2023 00:46
      +3

      почту через theBee

      TheBat это был :)


      1. Tippy-Tip
        06.01.2023 01:30
        +10

        TheBat крякать надо было, а The Bee – бесплатная, портабельная, кроме почты умела в ICQ и RSS. Да и весила значительно меньше чем тот же крякнутый портабельный TheBat.


  1. XXXXPro
    05.01.2023 18:42
    +2

    В прошлом году я поставила перед собой цель вернуть дух старого веба, креативность и шарм конца 90-х и начала 2000-х.

    Очень рад, что есть люди, которые понимают это!

    Но я считаю, что мы слишком далеко ушли в другом направлении, и сегодня многие веб-сайты выглядят одинаково. Те старые личные веб-сайты были отражением вашей личности.

    Полностью согласен! Я у себя на личном сайте так это сформулировал: «Создавая страницу в соцсети, ты выбираешь жизнь в коммуналке. Создавая личный сайт, ты строишь свой дом.»
    Кстати, дух старого Интернета до сих пор сохраняется в сетях типа yggdrasil или i2p.


    1. Nasreddin_Hodja
      05.01.2023 21:06
      +8

      Создавая личный сайт, ты строишь свой дом.

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

      А так да, на своём сайте, в отличие от сторонних площадок, ты ничем не ограничен в оформлении контента, возможностей соцсетей не всем хватает.


      1. PuerteMuerte
        05.01.2023 21:35
        +3

        В который скорей всего почти никто не придёт

        Но если вы не блоггер - то кто вам вообще нужен на вашем сайте, кроме тех друзей и родственников, которых вы сами туда позвали, как и в социальной сети?

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


        1. Nasreddin_Hodja
          05.01.2023 22:22

          Но если вы не блоггер - то кто вам вообще нужен на вашем сайте, кроме тех друзей и родственников, которых вы сами туда позвали, как и в социальной сети?

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

          Как раз контентмейкерам (блоги или другой формат подачи, не суть) и желателен свой сайт, хотя бы как резерв, т.к. на сторонних площадках контент могут удалить, площадка может исчезнуть и т.д. А вот когда нужно только поделиться фоточками с отпуска среди друзей и родственников, соцсети для этого как раз больше подходят.


          1. PuerteMuerte
            05.01.2023 22:39
            +1

            А если блоггер - то они и на своих сайтах вполне себе успешно раскручивались. Некоторые "не-соцсетевые" блоггеры тех времён вон до сих пор живы: https://exler.ru/


            1. NivER
              05.01.2023 23:25

              Ну, раскрутился он, положим, ещё в Фидо. Но да, в соцсетях активен намного меньше, чем на своём сайте.


            1. Nasreddin_Hodja
              06.01.2023 00:42

              тех времён

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


              1. PuerteMuerte
                06.01.2023 02:27

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


    1. StjarnornasFred
      06.01.2023 00:49
      +3

      дух старого Интернета до сих пор сохраняется в сетях типа yggdrasil или i2p

      Полностью согласен! Причём не только и не столько в плане веб-дизайна, сколько в таких факторах как:

      • расхристанная квазисвобода, неблокируемость, всяческие органы тебе до органа

      • техническая грамотность или по крайней мере заинтересованность большинства посетителей, интернет без обывателей

      • невысокая скорость соединения

      • высокий порог входа исходя из пунктов выше...

      В общем, нынешний даркнет - это и есть тот самый старый-добрый интернет.


      1. F0iL
        06.01.2023 13:12
        +5

        Старый-добрый интернет все-таки был ценен публикой и интересным контентом.

        В даркете же из-за всех перечисленных вами факторов, делать особо нечего - там практически все ресурсы это или всякие мутные делишки (вещества, поддельные документы, порно, биткоин-миксеры), или форумы/имиджборды где сидят два с половиной анонимуса и в итоге там либо скучно, либо мерзко.


      1. XXXXPro
        06.01.2023 15:46

        техническая грамотность или по крайней мере заинтересованность большинства посетителей, интернет без обывателей

        Собственно говоря, именно это и делало Старый Добрый Интернет тем прекрасным явлением, каким он был.

        невысокая скорость соединения

        Для yggdrasil это не особо актуально, при просмотре сайтов разница с обычным Интернетом почти не чувствуется. Вот в i2p — да, со скоростью плоховато…


  1. Nid
    05.01.2023 19:42
    +2

    Можно тоже похвастаться 1999-2000))) Сделал интернет-магазин видео(лицензия) и DVD с амазон+ мини-диски с переводом. IIS + c++ + SQL. Проработали полгода. Дело не пошло, но работу получил без проблем. Резюме было очень скромное с 3 ссылками на проекты. Внизу ссылка Интернет-магазин 777

    Новости: Лидеры российского виртуального шоппинга - Эксперт - Новости экономики и политики. Новости сегодня. (24 апреля 2000) | Expert.ru


  1. stalinets
    05.01.2023 21:37
    +2

    Дело даже не столько в дизайне, сколько в легковесности, универсальности и функционале. Считаю, что сайты надо делать так, чтобы они бодро работали на втором-третьем пне с 256 Мб оперативы и при скорости интернета в пределах сотен килобит в секунду (конечно, исключая случаи, когда там встроены HD-видео и фотки по 15 Мб, это отдельно). А дизайн лично мне вполне нравится угловатый, но чтоб был функциональный и удобный. Можно хоть какой сделать, но чтоб страница блин не требовала под себя минимум новейший браузер, 4 гига оперативы, быстрый интернет и быстрый процессор. И чтоб работало в любом браузере от первых Firefox и Оперы на Престо, (ну, старые IE не берём по причине крайней кривизны), и до новинок (если не пихать на сайт кучу фреймворков и мусора, так сделать можно).


    1. A1EF
      05.01.2023 23:27
      +5

      Я вот ещё менее популярное мнение озвучу, но по-моему идеальный веб-сайт выглядит как-то так :)


      1. Levitanus
        06.01.2023 15:03
        +2

        Всё-таки, картиночки, шрифты и т.п. нужны: https://thebestmotherfucking.website/


      1. Sliip
        07.01.2023 11:06

        Слишком минималистично! Мне кажется вот <a href="https://i2life.ru/chaj-iz-sosnovyh-shishek/">так</a> - идеально


    1. NivER
      05.01.2023 23:49
      +3

      Согласен абсолютно. Развитие веба явно свернуло не туда, потому что необходимость апгрейдить компьютер только ради того, чтобы не тормозили сайты в браузере (на весь остальной софт ресурсов хватает с головой) - это что-то за гранью. Функция сайта в том, чтобы быть информативным, а не набитым до упора свистоперделками на скриптах.

      Насчёт джаваскрипта хорошо сказал Столяров в недавнем интервью. Когда в порядке вещей ситуация, в которой из сети может приехать что угодно и запуститься на твоей машине, да ещё и отожрать при этом всю свободную память - это совершенно нездоровая фигня. ППКС, как говорится.


    1. firehacker
      07.01.2023 11:03

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


      1. chelovek-jpeg
        08.01.2023 13:05

        их проще делать и продавать) Оно и в софте так, на телефоне какой-нить простой файловый менеджер вполе 200мб может весить и грузиться секунды две


  1. F0iL
    05.01.2023 22:04

    В invisible internet (I2P) сайты до сих пор в таком стиле: никаких скриптов, мало графики, и прочий минимализм. Во-первых, учитывая специфику проекта, для защиты приватности (многие пользователи отключают JS в браузерах), во-вторых пропускная способность сети невысокая и сильно не разгуляешься.


    1. NeoCode
      05.01.2023 23:09
      +1

      Ну скрипты были и в 90-х. Правда, применялись они в основном для б-гомерзких баннеров, а также для падающих снежинок в Новый Год. Уже тогда я интуитивно для себя осознал, что веб развивается куда-то не туда: мне было бы интереснее, чтобы каждый сайт был базой данных, а не приложением. А браузер - системой синхронизации баз данных и поиска по ним, а не универсальным интерпретатором скриптов.


  1. Exchan-ge
    06.01.2023 00:11
    +10

    Создаём веб-сайт, как будто сейчас 1999 год


    Пять минут назад:
    image


    1. Javian
      06.01.2023 08:25
      +1

      Часто встречаются радиолюбительские сайты, которые ведутся с 1990-х.
      Например мой любимый сайт :D www.cold-war-sputnik-soviet-space-dog-laika.com


    1. ymir
      07.01.2023 11:06
      +1

      Идеальный дизайн. Сайт посвящен текстам, и кроме текстов в нем ничего нет. Как и задумано )


  1. johnfound
    06.01.2023 17:26
    +2

    Не знаю почему, но статья у меня вызывает какая-то неприязнь. Как будто издеваются над людей делающих веб в 90-х. (Я из них и да, воспринимаю все это немножко лично.)


    Не надо имитировать 90-х на современных технологиях. Лучше попробуйте на тех технологиях сделать сайт в современном стиле. Именно так покажете уважение и оцените ту работу, которая была сделана с тех пор. Но это конечно намного труднее. Проще гифками побаловаться и заявить – "как в 1999году". Ну нет, не так.


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


  1. aceofspades88
    06.01.2023 19:20
    +2


  1. zweroboy1
    07.01.2023 11:07
    +1

    Так шарм инета 90х был не в дизайне и функционале сайтов (которые были убоги), а в людях. Тогда ведь в интернете тусовались либо айтишники, либо любопытствующая и бодрая молодежь. Серые скучные обыватели тогда в интернете появлялись редко.


  1. websitedev
    07.01.2023 11:07
    +1

    Ещё помню, что аудиозаписи с автовоспроизвединием были более актуальны в новогоднее время. Помимо этого, админы во время новогодних праздников в шапку сайта добавляли колокольчики, а по сайту падали большие снежинки. На некоторых сайтах курсор превратился в ёлочку или в что-то похожее. Такие сайты были распространены в 2000-х.

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


  1. AlexanderS
    07.01.2023 15:43
    +2

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

    Очень спорное утверждение с моей точки зрения. Вы сравните размер и время загрузки страничек тогда и сейчас. Когда из 2022-го открываешь какой-нибудь чудом уцелевший старый сайт 2000-го года, то офигеваешь от того как моментально всё работает. Естественно — там нет тучи подгружаемых библиотек, кучи скриптов и модулей сбора статистики. «Изящным и минималистическим» сайты ебея или алиэкспресса я бы точно не назвал.


    1. chelovek-jpeg
      08.01.2023 12:54

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


  1. Daddy_Cool
    08.01.2023 01:01
    +4

    Когда ищу какой-нибудь файл, то радуюсь когда попадаю на такой сайт. Скорее всего это там обязательно есть - лежит и всё, а не является ссылкой которая померла десять лет назад, ничего не удалено по требованию кого-то там, и т.п...


    1. chelovek-jpeg
      08.01.2023 12:35

      несколько раз так скачивал файл умершего сайта с его копии на вебархиве)