Математика

История науки и техники

Универсальные энциклопедии

JS CSS HTML

WebTechnologies
FrontEnd

В помощь веб-мастеру

HTML

CSS

JavaScript

html logo

HTML,

css logo

CSS,

js logo

 JS

HTML

HTML

— стандартизированный язык разметки гипертекстовых документов. Синтаксически HTML представляет собой упрощенный вариант XHTML — расширения XML.
HTML определяет логическую структуру веб-страницы (structural layer)

Свободно интегрируется с SVG — другим подмножеством языка XML, предназначенным для отображения графики.

Литература

cover

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

<!--

Элизабет Робсон, Эрик Фримен
Изучаем HTML, XHTML и CSS
2-е издание, 2014




Кликните по картинке, чтобы скачать PDF с нашими комментариями!
HTML

Спойлер и выпадающее меню на чистом CSS

(скоро)

CSS

CSS

— язык визуального форматирования (описания визуальных свойств) документа; используется для определения порядка отображения документов в графических интерфейсах.
CSS определяет внешний вид веб-страницы (presentational layer)


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

Литература

cover #{}

Эрик Мейер, Эстелл Уэйл
CSS. Полный справочник
4-е издание, 2019




Архитектура CSS

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

[дополняется].
CSS

Увеличение по клику

(Скоро!)

Спойлер

(Скоро!)

Линейный градиент: вычисляемое значение

JavaScript

JavaScript

Универсальный мультипарадигменный однопоточный язык программирования.
Определяет поведение веб-страницы (behavioral layer)

'Особое значение JavaScript было очевидно не всегда, но теперь оно несомненно. Веб-приложения служат для того, чтобы предоставить пользователям функционально богатый и удобный интерфейс , но бeз JavaScript в Интернете можно лишь показывать фотографии кошек.'
— Джон Резиг.

Программа на JavaScript взаимодейтвует с HTML-разметкой документа и с пользовательским агентом (браузером) посредством интерфейсов DOM и BOM соответственно.

JavaScript-сценарий на Вашей странице может выполнять следующие основные функции:

  1. Обеспечивает взаимодействие страницы с пользователем, делая документ интерактивным;
  2. определяет поведение страницы во времени — позволяет осуществлять сложные анимации, трудновоспроизводимые на чистом CSS;
  3. упрощает Вам вёрстку страницы.
[материал дополняется!]

Литература

Обложка книги Eloquent JavaScript,2018

Marijn Haverbeke
Eloquent JavaScript
3rd edition, 2018

Обложка книги Выразительный JavaScript, 2019

/ Марейн Хавербеке
Выразительный JavaScript. Современное веб-программирование
3-е издание, 2019




JavaScript в браузере

Документ, написанный на чистом HTML и CSS по своей сути статичен: его взаимодействие с пользователем ограничено и односторонне. Единственными интерактивными тегами HTML являются теги форм, такие как input и т. д., тег ссылки (<a>) и спойлера (<details>); также каждый узел может быть сделан кликабельным посредством назначения его <label> для некоторого <input type='checkbox'> и определения псевдокласса checked. Кроме того, любой тег допускает создание псевдокласса hover. (См. выше).

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

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

Чтение

Значения всех атрибутов элементов доступны для чтения с помощью JS. Считывание значений value текстовых инпутов и textarea позволяет незамедлительно реагировать на действия пользователя, заполняющего форму. Поведение пользователя на странице и взаимодействие документа с браузером регистрируется с помощью асинхронных методов, предоставляемых обработчиками событий и интерфейсом объекта Observer.

У начинающих применять Javascript в браузере нередко складывается иллюзия, что стилевое свойство HTML-элемента — скажем, цвет — доступно для чтения как element.style.backgroundColor независимо от того, прописано ли оно inline, в <style> или внешнем файле. Это неверно: приведенный код открывает доступ именно к свойствам, определенным в атрибуте style. Для чтения прочих стилевых свойств существует метод .getComputedStyle() объекта window. Для этой цели можно также использовать библиотеку jQuery.

Изменение документа

Основными средствами изменения документа являются:
Добавление в DOM новых узлов (элементов)element_1.appendChild(element_2) — и удаление существующих — .remove(element); изменение порядка узлов — insertBefore(element_1, element_2) и замена одного узла другим — element_1.replaceChild(element_1, element_3).

Присвоение атрибута элементу, изменение значения атрибута элемента и удаление атрибута. Основными методами здесь являются

В первую очередь это относится к атрибуту style; как и другие он может быть удален, перезаписан (element.style=text; element.style.cssText=text), но кроме того, изменению подлежат и отдельные свойства объекта element.style, соответствующие стилевым свойствам элемента. Заметим, что element.cssText можно свободно оперировать как строковым значением (так, element.cssText+='property:value' добавит новое стилевое свойство или перезапишет существующее.). Один элемент может заимствовать стилевое оформление другого посредством element_1.style.cssText=element_2.style.cssText. Манипулируя такими свойствами как display, opacity, z-index, visibility (при определенном позиционировании элемента), размерами (при overflow:hidden) и положением (при overflow:hidden для родителя) возможно добиться того, чтобы элемент не отображался на странице — создать иллюзию его отсутствия, хотя он попрежнему включён в структуру документа.

Анатомия объекта style

Справа показан код, запуск которого позволяет просмотреть все свойства объекта style (в центре) для стилизованного HTML-элемента (слева).
Хорошо видно, что декларации вроде border-radius:50% представляют собой сокращённый способ задания сразу нескольких стилевых свойств.

CSS

JS

Особого внимания заслуживает изменение атрибута src тега <img>. [дополняется]

Операции с селекторами CSS: Добавление для элемента новых классов, исключение его из тех, к которым он относится, присвоение элементу id и удаление идентификатора (эти операции могут осуществляться посредством изменения атрибутов, но мы рассмотрим их отдельно). Цель этих манипуляций обычно состоит в том, что соответствующему элементу автоматически присваиваются (либо удаляются) стилевые свойства, заданные для селектора; но иногда создаются классы без каких-либо стилевых правил, и удаление либо добавление атрибута такого класса упрощает оперирование элементом, определяя принадлежность его некоторому массиву.

Наконец, HTML кодом элемента можно оперировать как строковым значением; содержимое элемента может быть изменено произвольным образом: полностью заменено (в т. ч. на пустое) или дополнено — с помощью команд element.innerHTML+=content, element.innerHTML=content+element.innerHTML или же метода insertAdjacentHTML.

Заметим, что процессы, запускаемые в браузере командами element. innerHTML+=content и element.insertAdjacentHTML ('beforeend', content) (соответственно element. innerHTML=content+element.innerHTML и element.insertAdjacentHTML ('afterbegin', content)), не тождественны: первый состоит в удалении всех конструкций, в т. ч. замещаемых элементов, определяемых прежним HTML, и реализации браузером нового кода 'с нуля', тогда как второй состоит в отображении браузером дополнительного содержимого с сохранением существующего.
Простой пример демонстрирует, какие недоразумения могут вознинуть, если не учитывать это обстоятельство.

Более того, узел может быть полностью заменен посредством присвоения атрибуту DOM-интерфейса элемента .outerHTML нового HTML-кода в виде строкового значения (в частности, при присвоении в качестве значения пустой строки: element.outerHTML='' — элемент будет удален.)
Ниже приведен простой код, позволяющий для заданного узла или документа в целом найти все дочерние элементы с заданным тегом и присвоить им другой тег с сохранением содержимого:

function substitute(parent, tag_1, tag_2) { const selected = Array.from(parent.getElementsByTagName(tag_1)); for (let el of selected) { el.outerHTML = '<' + tag_2 + '>' + el.innerHTML + '' } }; //substitute(document.body, 'p', 'h1')

Для глобальных изменений оформления страницы можно также отключать и подключать целые таблицы стилей [дополняется].

Объектная модель CSS.

Каждая отдельная таблица стилей CSS представлена объектом StyleSheet, имеющим ряд свойств, доступных (за исключением свойства disabled) только для чтения. Интерфейс StyleSheet не отражает внутренней структуры таблицы стилей.
Объект CSSStyleSheet наследует свойства от StyleSheet и при этом располагает рядом собственных свойств, которые и отображают структуру таблицы стилей. Интерфейс CSSStyleSheet предоставляет методы, позволяющие добавлять и удалять отдельные стилевые правила. Напомним, что таблица стилей представляет собой упорядоченный перечень правил, каждое из которых состоит из селектора и блока объявлений, распадающего в свою очередь на пары свойство — значение. Соответственно, свойство cssRules объекта CSSStyleSheet содержит живую коллекцию объектов, каждый из которых представляет отдельное CSS-правило, и имеет следующие свойства:

document.styleSheets представляет собой коллекцию (массивоподобный объект), состоящую из экземпляров CSSStyleSheet, моделирующих все стилевые таблицы, подключенные к документу (как встроенные, так и внешние).
Следующий код демонстрирует возможности перечисленных объектов и их методов на примере функции, принимающей три аргумента со строковыми значениями — CSS-селектор, имя свойства (затеметим, что здесь не требуется перевод в "верблюжью" нотацию!) и имя нового значения — и изменяющая для данного селектора значение свойства на заданное во всех стилевых таблицах, действующих на страницу:

function changeRule(selector, prop, newval) { for (let ss of document.styleSheets) { if (ss.type == "text/css") { for (let rule of ss.cssRules) { if (rule.type == CSSRule.STYLE_RULE && rule.selectorText == selector) { rule.style[prop] = newval } } } } }

Применение в верстке.

JavaScript может существенно упростить вёрстку документа. К примеру, JS предоставляет нам возможность определить высоту и ширину всякого блока, отображаемого на странице. На считанное значение можно ссылаться, позиционируя элементы.

Рассмотрим простой пример. Как отмечает Эрик Мейер,
К сожалению, в CSS отсутствует команда установки направления градиента так, чтобы он распространялся в точности из угла в угол неквадратного изображения. Следовательно точный расчет такого направления (угла наклона) представляет собой достаточно сложную операцию, требующую применения JavaScript или выполнения сложных вычислений при строго фиксированном размере изображения.; выше приведено найденное нами решение этой задачи на JavaScript.

JavaScript

Ссылки:

GitHub Beget Ultimatefreehost

Выбор хостинга

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

Площадки крупных CMS готовы предоставить Вам бесплатно дисковое пространство и домен третьего уровня; при этом Вам предложат выбрать готовый шаблон, который обязательно будет включать модули для сторонней рекламы, уродующие Ваш сайт. Однако мы крайне не рекомендуем Вам использовать CMS — на этапе обучения языкам программирования лучше всего писать сайт "с нуля".

Если Вы сосредоточились на фронтенде, и сайт работает на HTML+CSS+JS, то идеальным хостингом является GitHub. Для создания сайта на Гитхаб Вам понадобится:

  1. зарегистрироваться (если каким-то чудом Вы ещё не зарегистрированы). Подойдите ответственно к выбору никнейма — он станет Вашим доменным именем!
  2. создать репозиторий (папку) с именем "[ваш_никнейм].gihub.io"
  3. загрузить в папку все необходимые файлы.
Перейдя по адресу https://[ваш_юзернейм].github.io/, Вы попадёте на главную страницу своего нового сайта! (Именно, по этому адресу теперь всем доступен Ваш index.html).
Живой пример: мы на github.io.

Если же Ваш проект использует технологии PHP и MySQL, то Вы можете выбрать хостинг beget или (во вторую очередь) ultimatefreehost.
Мы должны предупредить Вас, что Beget на уровне бесплатного использования имеет некоторые ограничения; в частности, версия PHP, установленная на сервере, не поддерживает рассылку электронных писем.