Web (HTML, CSS, сети) Flashcards
Разница между протоколами TCP и UDP?
TCP гарантирует доставку данных, но медленнее чем UDP. UDP может применяться, например, в потоковом аудио и видео.
Методы простой оптимизации загрузки сайтов и JS приложений (производительность)
- Использование
async
иdefer
. - Оптимизация изображений - использование svg, сжатие и сам размер изображений.
- Конкатенация и углификация файлов.
- Инлайн стили (например критический CSS)
Анализ производительности (какие есть метрики)
- Скоростные метрики:
TTFB - время до получения первого байта (вычисления на сервере + сеть)
FCP - время до того как на экране появится хоть что-нибудь
LCP - время до того, как на экране появится полезный контент
- Полный вес сайта
- Пользовательские метрики:
Показатель отказов - процент покинувших сайт со страницы входа или посмотревших не более 1 страницы.
Конверсия - полезное действие.
XSS - как провести атаку, как защититься
Атака:
Исполнение вредоносного JS-кода на сайте не предусмотренным способом. Например через ввод каких-то данных, которые отображаются на сайте: строка поиска, комментарий, параметры поиска в адресной строке. Получение таким способом конфиденциальных данных, например токены авторизации, авторизационные куки, логин-пароли.
Защита:
Экранирование полученный от пользователя данных, валидация ввода, httponly cookies.
GraphQL (знать, что это)
Язык запросов. Позволяет получать данные по конкретному запросу, как в SQL, а не целыми “пластами”, ограничиваясь только предоставленными нам эндпоинтами, как в REST.
Git Flow
Методика работы с гит. В ней создаётся отдельная ветка для разработки, а от неё создаются ветки для фич. После того как фича готова делается запрос на слияние. Код перед слиянием проходит ревью.
Что такое кросс-браузерность?
Какие инструменты используются для этого?
Одинаковая работа сайта (и его визуальная составляющая) во всех браузерах (в том числе мобильных).
Инструменты:
* префиксы
* обнуление или нормализация
* полифилы
Из чего состоит запрос HTTP?
- Стартовая строка: метод, URN и версия протокола.
- Заголовки: параметры запроса. Тут же указывается заголовок
Host
. - Тело запроса: состав сообщения, которое отправляется.
Какие методы есть в HTTP?
Основные: GET (получение), POST (отправка), PUT (замена, обновление), DELETE (удаление), PATCH (частичное обновление)
Чем HTTP отличается от HTTPS?
HTTPS - с шифрованием. В нём участвуют сертификаты, которые должны быть подтверждены центром сертификации и обмен ключами по принципу “рукопожатия” (handshake, TSL, SSL).
Что такое SSL и TLS? Зачем они используются в веб-разработке?
Это протоколы шифрования. Используются для:
- защита передаваемых данных от несанкционированного доступа
- аутентификация сервера сертификатом - позволяет предотвратить подмену сервера
- предотвращает подделку данных
Как работает DNS?
Есть дерево серверов, где каждый отвечает за свою зону. При поиске адреса через DNS сначала идёт обращение к корневому серверу, который переадресует запрос далее, например в ru регион, тот далее, например к серверу yandex.
В целом есть два типа серверов. Те кто перенаправляют тебя к тому кто знает ответ и те, кто сами получают ответ и затем возвращаются с ним.
Что такое REST?
Архитектурный подход для создания API
.
API
, полностью соответствующий правилам будет RESTful
.
- Клиент-сервер
- Отсутствие состояния
- Кэширование
- Единообразие интерфейса
- Основан на ресурсах
- Манипуляция над ресурсами через представления (клиент представляет как должно выглядеть, сервер решает)
- Само-документируемые сообщения (в ответах и запросах есть вся необходимая информация)
- Гипермедиа как средство изменения состояния приложения (в ответах есть URI ресурсов, которыми можно воспользоваться)
- Слои
- [опционально] Код по требованию
Структура URL?
URI - https://domain.com/some/url?q=foo&bar=baz
URL - https://domain.com
URN - some/url
URI = URL + URN
Что могут в себе содержать заголовки и Cookies?
Популярные заголовки:
* Host
* User-Agent
описание клиента - браузер, ос итд
* Accept
указывается формат в котором клиент принимает ответ, “любое” указывается как “/”
* Authorization
* Cookie
Cookie
хранятся в виде пар ключ-значение. Небольшие фрагменты данных, которые могут выступать в виде идентификатора пользователя или, например хранить в себе предпочтения пользователя.
Какие типы кодов ответов HTTP есть?
100 - информационные
200 - успешное выполнение запроса
300 - переадресация
400 - ошибка клиента
500 - ошибка сервера
Что такое прогрессивная отрисовка? Какие технологии используются?
Кусочки HTML генерируются на сервере и отсылаются браузеру в порядке приоритетности (например <header>
генерируется и отсылается в первую очередь).
В прогрессивной отрисовке используются техники ленивой загрузки и приоритизации контента (например не загружать изначально все CSS-стили в <head>
, а только важные, остальные загрузить в конце <body>
).
Для чего предназначены линтеры (code style linting tool)?
Для проверки кода на стилистические и программные ошибки.
Опишите весь процесс, начиная с ввода адреса сайта в адресную строку до окончания его загрузки на экране.
- Ввод адреса
- Поиск адреса в кеше DNS
- Если его нет, то запрос на сервер DNS
- Установка TCP соединения
- HTTP запрос от браузера
- Сервер получает запрос, готовит и отправляет ответ
- Браузер получает и отображает контент
Что такое History API в браузере?
Даёт доступ к управлению историей браузера в рамках текущей сессии. Новая сессия - новая вкладка или окно.
Можно двигаться по истории с помощью объекта window.history
, можно двигаться вперёд и управлять содержимым.
Объясните разницу между cookie
, sessionStorage
и localStorage
(web storage).
Механизмы хранения ключ-значения. Могут хранить только строки.
sessionStorage
- используется через JS, доступен только в рамках вкладки и до её закрытия
localStorage
- используется через JS, доступен в рамках всего сайта для всех вкладок и после закрытия вкладок
cookie
- может задаваться сервером или через JS, срок хранения настраивается, отправляется на сервер при каждом запросе
Ключевые отличия:
- данные из storage не отправляются на сервер при каждом обращении
- сервер не может изменять данные в storage, только на фронте через JS
Что такое безопасные cookies (Secure cookies)? Что такое HttpOnly cookies?
Безопасные cookies - только по HTTPS.
HttpOnly - нельзя работать через JS с cookies.
Что такое IndexedDB в браузере? Преимущества IndexedDB?
Это база данных в браузере. Позволяет хранить больше данных, чем localStorage и более сложная в работе с ней, но и больше контроля.
Механизм установки сеанса между клиентом и сервером?
Клиент отправляет запрос на сервер, сервер получает запрос, обрабатывает и создаёт уникальный ID сессии. В ответе отправляет в куках этот ID. Затем клиент будет делать новый запрос уже с полученным ID.
Что Такое API?
Aplication Programming Interface - программный интерфейс приложения.
Служит для возможности взаимодействия с программой на уровне языков программирования. Набор методов через которые интерфейс может взаимодействовать с базой данных. Обычно используются CRUD операции
Что такое CDN?
Content Delivery Network - сеть доставки контента.
Служит для ускорения передачи контента клиенту за счёт того что серверов много и выбирается ближайший с наивысшей скоростью.
Что такое IP-адрес?
Уникальный сетевой адрес.
Разница между host и domain?
Host - тот кто содержит на себе сервер или сайт.
Domain - доменное имя, уникальное имя адреса, которое сопоставляется с ip-адресом.
Почему очищать кэш важно? Как это можно сделать?
Когда сайт обновляется, если в кеше будут старые файлы, то возможна ситуация в которой приложение может сломаться из-за ссылки на более несуществующий объект (изменённое имя) или что-то подобное.
Делается это путём присваивания файлу другого имя.
Разница между идентификацией, аутентификацией, авторизацией?
Идентификация - процедура установления личности или сущности (кто это?).
Аутентификация - это подтверждение личности, например вводом логина и пароля (действительно ли это?).
Авторизация - предоставление прав (что может делать?)
Виды аутентификации?
Токен - предоставляется токен, последующие запросы происходят с ним.
Другие виды: авторизация через социальные сети, двухфакторная, биометрическая, с использованием сертификата, одноразовый пароль на телефон.
Какие меры безопасности следует принять при работе с cookie на стороне клиента?
Флаг Secure (только HTTPS)
Флаг HttpOnly (запрет на работу с cookie через JS)
Атрибут SameSite:strict
- полностью блокирует отправку кук на другие сайтыlax
- разрешает отправку при переходе с одного на другойnone
- разрешает отправку всегда, но обязательно должен быть Secure
Срок годности cookie
Что такое прогрессивный SSR?
Server Side Rendering - прогрессивный рендеринг на стороне сервера.
Страница разбивается на части, эти части управляются отдельными скриптами. Части передаются последовательно.
Представьте HTML5 как открытую веб-платформу. Из каких блоков состоит HTML5?
- Новые семантические элементы
- Мультимедиа - поддержка аудио и видео
- Графика - стало возможно делать игры и диаграммы
- API для веб-приложений - геолокация, хранение в браузере и другие.
- Поддержка устройств - совместимость независимо от самого устройства.
Можете ли вы описать некоторые методы SEO?
существует множество методов для улучшения поисковых метрик, вот несколько:
- повышение производительности и скорости ответа
- семантическая вёрстка с правильной структурой и микроразметкой, альт-атрибуты и метатеги
- настройка robots.txt (там можно указать какие страницы индексировать, какие нет, а так же указать карту сайта)
Как можно оптимизировать загрузку внешних ресурсов на странице?
Можно использовать кеширование, ленивую загрузку (lazy-loading), поддомены. Если используется HTTP/1.1, для HTTP/2 это неактуально.
Можно оптимизировать сборку JS-кода, минифицировать скрипты, использовать CDN, gzip-сжатие, css- и svg-спрайты, настроить кеширование.
Сколько ресурсов браузер может одновременно загружать с одного домена?
Для http/1.1 было ограничение в 6 соединений. На http/2 ограничений нет.
Почему лучше загружать ресурсы для сайта с нескольких доменов?
Актуально только для HTTP/1.1, так как в нём ограничение на количество соединений с одним доменом.
В чём различия между Long-Polling, Websockets и Server-Sent Events?
Long-Polling - клиент делает запрос, сервер отвечает как только есть новая информация, клиент тут же делает новый запрос.
Websokets - двухсторонняя постоянная связь по протоколу websoket
Server-Sent Events - тоже постоянная связь, но односторонняя в сторону клиента от сервера.
Что такое Веб-компоненты?
Технология, которая позволяет создавать самодостаточные компоненты без использования сторонних библиотек.
Что означает CORS и какую проблему решает?
В целях безопасности браузер ограничивает запросы на домен, отличный от того, с которого загружен сайт.
CORS (Cross-Origin Resource Sharing) - механизм, который позволяет браузеру загружать ресурсы с домена, отличного от того, что используется в данный момент. Работает посредством установки дополнительных HTTP заголовков со стороны сервера.
Сервер говорит браузеру откуда можно брать данные.
Что такое Content Security Policy (CSP)?
HTTP-хедер, который предназначен для настройки того, откуда и какой контент может запускаться в браузере.
Защищает от XSS.
Какие основные угрозы безопасности могут возникать на веб-страницах?
- Межсайтовый скриптинг (XSS) - внедрение кода на страницу (например комментарий), который выполняется на странице пользователя.
- Межсайтовая подделка запроса (CSRF) - атака при которой запросы отправляются от имени аутентифицированного пользователя без его ведома.
- Инъекции кода (Injections) - вредоносный код внедряется в sql запросы или операции ОС.
- Утечка информации - неправильная конфиругация прав и отсутствие наименьших привелегий.
- Неправильная конфигурация безопасности.
- Уязвимости браузера и его расширений - утаревшие версии браузеров и расширений могут содержать неисправленные уязвимости.
Что такое принцип наименьших привилегий (POLP)?
Принцип по которому каждая роль должна иметь только минимально необходимый набор прав. Такой подход сокращает количество возможных случайных ошибок и проблем.
Назовите критические этапы рендеринга?
Последовательность шагов которые выполняет браузер, когда HTML, CSS и JS преобразуются в пиксели, которые видны на экране.
- Document Object Model - трансформирование HTML в DOM-дерево.
- CSS Object Model - если HTML документ содержит стили, то при парсинге они запрашиваются и участвуют в построении CSS OM.
- JavaScript - если HTML документ содержит тег
<script>
, то происходит либо исполнение этого скрипта, либо запрос и исполнение сторонних подключенных скриптов. - Accessibility Tree - при парсинге HTML анализируются атрибуты role и ARIA. В результате чего происходит построение дерева доступности.
- Render Tree - на данном этапе происходит объединение DOM и CSS OM. Для построения дерева рендера браузер проверяет каждый узел дом, начиная от корневого и определяет какие CSS правила нужно присоединить к этому узлу.
- Layout/Reflow - после того как дерево рендера построено, определяется где и как на странице будут спозиционированы элементы. На основании размеров элемента определяется его положение.
- Painting/Repaint - когда дерево рендера создано, компоновка произошла происходит покраска веб-страницы, согласно заданным стилям.
- Compositing - отрисовка слоёв в правильном порядке (правильное наложение и т.д.). Элементы выстраиваются друг относительно друга по уровням или потокам.
Объясните разницу между раскладкой (layout), painting и композитингом (compositing).
- Layout: расчёт места для объекта на основе правил.
- Paint: рисовка пикселей для отображения визуальных элементов.
- Compositing: рисовка слоёв в правильном порядке (правильное наложение и т.д.).
Что такое HTML и для чего он используется?
HyperText Markup Language - язык гипертекстовой разметки. Нужен для размещения на странице элементов: текст, картинки, таблицы, видео. Браузер умеет его интерпретировать.
Что такое атрибуты в HTML? Как они используются в элементах?
Атрибут - это модификатор HTML элемента. Изменяет существующий функционал или предоставляет новый. Меняет или уточняет статус.
Какие глобальные атрибуты есть в HTML?
Глобальные атрибуты - те, которые можно применить почти к любому элементу.
Например
- class
- hidden
- data-
- contenteditable
- tabindex
Опишите базовую структуру HTML-страницы?
<!doctype html> // обязательное указание типа документа <html> // корневая обёртка страницы <head> // подключение шрифтов, стилей, seo итд <meta charset=”UTF-8”> <title>Document</title> </head> <body> // основная разметка <h1>Hello world</h1> </body> </html>
Что такое валидация? И какие типы проверок HTML документа вы знаете?
Валидация - проверка документа программой-валидатором на соответствие спецификациям.
Валидатор проверяет:
- dtd - document type definition. Документ должен содердать доктайп и в соответствии с типом документа будет применяться соответствующие правила.
- проверка синтаксиса
- проверка вложенности
- проверка на наличие посторонних элементов
Какой тэг использовать для того, что бы сверстать кнопку?
Просто кнопка - <button>...
Подтверждение формы - <button type="submit">...
или <input type="submit" value="button">
Ссылка - <a href="#">...
Что такое инлайновый стиль? Можно ли его переопределить?
Инлайновый стиль - стиль, указанный в HTML через атрибут style
. Переопределить можно только с помощью important
в CSS.
Объясните, как браузер определяет, на какие элементы накладывать CSS стили?
Браузер отсеивает элементы по селекторам, но ключевая разница в том что он это делает справа налево.
Объясните, что такое блочный контекст форматирования и как он работает.
Это часть механизма отображения веб страницы в CSS. Регион в котором блоки размещаются в привычном для себя порядке.
Те, кто могут его создать:
- корневой элемент
<html>
-
float
≠none
-
position: absolute
илиfixed
- части таблиц
- и другие
Что такое FOUC (Flash Of Unstyled Content)? Как его избежать?
FOUC (Flash Of Unstyled Content) - это появление неоформленного контента при загрузке.
Вставить в <head>
критичный CSS (минимальный набор стилей для первого экрана) или скрыть контент, пока он не загрузится.
Что такое ARIA атрибуты? Для чего они.
ARIA атрибуты - это группа дополнительных атрибутов, которые нужны для указания семантики тегов и их состояний. Основные типы это
role
- можно задать роль тега, например роль navigation
сделает из тега <nav>
aria-свойство
- состояние или свойство, которое начинается с aria-
, указывает на текущее состояние элемента, например состояние aria-hidden
Что такое микроразметка и для чего она нужна?
Это семантическая разметка для ботов и поисковых систем.
Одна из самых популярных - schema.org.
Реализуется через добавление дополнительных атрибутов для HTML тегов.
Объясните разницу между<script>
<script async>
<script defer>
script
- отрисовка HTML блокируется, скрипт выполняется немедленно, после этого возобновляется отрисовка
async
- скрипт будет получен и выполнен параллельно с отрисовкой HTML (подходит для скриптов аналитики или рекламы)
defer
- скрипт будет получен параллельно с отрисовкой HTML, но выполнен после того как загрузится вся страница
Чем отличаются размеры px, em, rem, vw, vh?
px
- базовая, абсолютная
em
- относительно шрифта
%
- относительно размеров родителя
rem
- относительно шрифта <html>
vw
- 1% ширины окна браузера.
vh
- 1% высоты окна браузера.
vmin
- 1% меньшего размера окна браузера по высоте или ширине.
vmax
- 1% большего размера окна браузера по высоте или ширине.
Объясните, что такое z-index
и как формируется контекст наложения.
Он нужен для позиционирования элементов по условной оси Z (глубина).
Не действует на position: static
.
Самый базовый контекст наложения это тег <html>
. Так же есть ряд условий при которых формируется новый контекст внутри предыдущего. Вот самые важные из них:
- position: absolute
и relative
с значением z-index !== auto
- флекс-элемент с значением z-index !== auto
- элемент с opacity
меньше 1
- элемент с transform
не none
Какими способами можно визуально скрыть элемент (оставив его доступным только для скринридера)?
visibility: hidden
(в отличии от display: none
оставляет доступность для читалки и поисковых роботов)
height
и width: 0px
opacity: 0
Как можно скрыть элемент не используя CSS и JS?
Возможно использовать атрибут hidden
- использовать его не рекомендуется. По сути это равно display: none
.
Что делает {box-sizing: border-box;}
? В чем его преимущества?
По умолчанию box-sizing: content-box
и при таком значении размеры элемента определяются контентом без учёта отступов и толщины рамки. Если border-box
, то размеры учитывают отступ и рамку, что сильно удобнее.
Чем border отличается от outline?
Различие в том, что outline не является частью элемента и не взаимодействует с блоками.
Что означает свойство display
и можете ли вы привести несколько примеров его использования?
Определяет то, как элемент должен быть показан в документе.
none
, block
, inline-block
, flex
, grid
, table
Объясните что такое блочная модель.
Правила по которым браузер определяет размеры элемента. Ширина, высота, отступы (внутренние и внешние) и рамка.
Все виды позиционирования и их различия (position
).
static
- значение по умолчанию
fixed
- убирается из потока, позиционируется относительно окна браузера
absolute
- убирается из потока. Позиционируется относительно элементов с не стандартной позицией. Если такого нет, то относительно окна браузера.
relative
- тень не убирается из потока, позиционирование относительно своего текущего положения
sticky
- в доступной зоне родителя ведёт себя как fixed
, но за границу родителя не выходит
В чем разница между блочным (block, блок), строчным (inline, инлайн) и блочно-строчным элементом (inline-block, инлайн-блок)?
inline
- не занимает всю строчку (подстраивается под размер контента), находится в строке, нельзя изменять высоту и ширину
block
- занимает всю строчку, можно изменять ширину и высоту
inline-block
- располагается в строке (не занимает всё строчку), но при этом можно изменять ширину и высоту
Как можно скрыть контент через overflow
?
visible
- стандартное значение
hidden
- скрывает
scroll
- показывает скрол-бар
auto
- скрол-бар появится при переполнении
Объясните, что такое плавающие элементы (floats) и как они работают.
Нужны для “обтекания” текстом. Элемент сдвигается влево или вправо до границы родителя и другого плавающего элемента. Если по горизонту не хватает места, то двигается вниз, пока не поместится.
Какие вы знаете методы запрета обтекания (clearing) и в каких случаях они применяются?
С помощью clear
можно указать игнорировать плавающий элемент и двигаться дальше вниз. Значения могут быть none
(отмена clear
), left
, right
, both
и inherit
.
Так же пригодится для поправки выпадающих элементов при обтекании (псевдоэлемент + clear: both
)
Пользовались ли вы Flexbox или Grid?
Использую flex постоянно. Grid, когда нужна большая адаптивная сетка товаров.
Для чего нужен doctype
?
Это декларация типа документа. Так браузер узнает, на каком языке и с какими технологиями он был создан. Если не указать - страница может отобразиться не корректно. Актуальный doctype - просто html. Без него браузер переключится в режим совместимости со старым кодом.
Где определяется кодировка страницы?
В теге <meta charset='utf-8'>
в <head>
.
Как открыть ссылку <a>
в новом окне?
Для ссылки <a>
добавить атрибут target="_blank"
.
Какие виды <input>
есть?
text
- ввод букв и цифр
password
- для паролей (звёздочки)
email
- ввод email
number
- только числа
button
и submit
- подтверждение формы
checkbox
и radio
- галочка и точка
date
, month
, daytime
, local
- дата
Для чего используется элемент <datalist>
?
Выпадающий список с возможностью автозаполнения, можно выбрать предложенный вариант или ввести свой.
Keyframes для чего нужен и как использовать.
Через @keyframes название-анимации
описываются ключевые кадры для применения CSS анимации.
Могут определяться как начальная и конечная точка (from
, to
), так и процентно (0%
, 100%
)
Например:
@keyframes circle-to-square { from { border-radius: 50%; background-color: red; } to { border-radius: 0; background-color: blue; } }
Саму анимацию затем можно будет применить через её имя
animation-name: название-анимации; animation-duration: 1s;
В каком случае вы предпочтёте использовать translate()
вместо абсолютного позиционирования и наоборот? И почему?
Для анимации - translate из-за большой частоты кадров. Для обычного позиционирования - position.
Как вы реализуете макет, который использует нестандартные шрифты?
Подключить эти шрифты через @font-face
для каждого font-weight
.
Что такое селектор? Какие селекторы существуют?
Часть CSS правила. Сообщает какому элементу будет применено правило.
Простые:
.class {}
// класс
#id {}
// id
p {}
// тег
a[href="test"] {}
// атрибут
Составные:
h1, h2, span {}
// через запятую, перечисление
div p {}
// через пробел, селектор потомка
li > a {}
// дочерний элемент (потомок)
a:hover {}
// псевдокласс состояние
li:nth-last-child(2n)
// псевдокласс условие
div::before
// псевдоэлемент
Что такое селектор атрибутов?
В квадратных скобках можно указать нужное значение атрибута, например input[type=password]
или button[disabled]
Что такое специфичность CSS-селекторов и как она работает?
Если на элемент применяется несколько стилей, то применится тот, у которого выше специфичность.
Приоритет специфичности:
1. инлайновые стили
2. идентификаторы (#)
3. классы + псевдоклассы + селекторы атрибутов (.class
, :hover
, input[cheked]
)
4. селекторы по тегу + псевдоэлементы (div
, ::after
)
Как выбрать элемент, следующий за каким-то?
Надо использовать +
, например input + span
выберет только <span>
после <input>
.
Разница между классом и идентификатором в CSS?
id - может быть только 1 (уникальный)
у id больше вес селектора
Как отцентрировать элемент?
Текст внутри дива или инлайн - text-aling: center;
Блок внутри другого блока - margin: auto;
Вертикально текст через высоту строки - line-height: высота-блока;
Через флекс.
Для чего нужны атрибуты, начинающиеся с data-
?
Для добавления к HTML-элементам своих собственных атрибутов. Использование без data-
не рекомендуется из-за того что используемое название например может появиться в новых версиях HTML. К таким атрибутам есть доступ из JS и из CSS (можно выбрать элементы содержащие нужный атрибут или его конкретное значение).
В CSS доступ получается через селектор атрибута:
[data-age="46"] { color: red; }
В JS доступ получается через метод getAttribute()
или используя объект dataset
const article = document.getElementById('electriccars'); article.dataset.columns // "3" article.dataset.indexNumber // "12314"
На что необходимо обратить внимание при разработке мультиязычных сайтов?
- использование атрибута
lang
- перенаправление на нужную версию сайта
- удобное переключение языка
- разный размер слов на разных языках
- текст на картинках
- разный порядок слов и направление чтения
В чем разница между «сбросом» и «нормализацией» CSS? Что бы вы выбрали и почему?
Сброс это обнуление стилей в “никакое” значение. Нормализация - приведение стилей к одинаковому отображению во всех браузерах. Мне комфортнее работать с обнулением, так как получаю более полный контроль.
Как вы решаете стилевые проблемы, связанные с особенностями браузеров?
Normalize и reset, а так же autoprefixer.
Как вы обеспечиваете отображение страниц в браузерах с ограниченными возможностями? Какие приёмы и процессы вы при этом используете?
Использование @supports
.
Использование Autoprefixer
.
Использование сайта caniuse.com
Graceful Degradation
(разработка с самыми новыми технологиями, затем упрощение для конкретных браузеров) и Progressive Enhancement
(разработка самыми простыми вещами, которые будут работать везде, затем добавление новых технологий)
Приходилось ли вам использовать или реализовывать медиазапросы или вёрстку под мобильные устройства?
Да, приходилось. Определялись брекпоинты для перехода к мобильному интерфейсу (или переходу к десктопному, если это mobile-first) и писались медиазапросы. Брекпоинты обычно удобно записать в переменные.
В зависимости от того что первое - обычно используется медиа минимальная ширина (для мобильный первый) или максимальная ширина (для десктоп первый).
Можете ли вы привести пример свойства @media
, отличного от screen
?
Например @media print
- для вывода документа на печать.
На что нужно обратить внимание при написании эффективного CSS?
На использование какой-нибудь систематизации, например БЭМ.
Что такое CSS препроцессор?
Программа, которая генерирует CSS из собственного кода, который пишется в отличном от CSS стиле.
Какие преимущества и недостатки в использовании CSS препроцессоров? Опишите, что вам нравится и не нравится в CSS препроцессорах, которыми вы пользовались.
Вложенность, переменные и переиспользование. Недостатков нет (разве что переборщить с кодом).
Объясните, что такое псевдоэлементы и для чего они нужны.
Это ключевое слово, добавляемое к селектору.
* позволяет стилизовать определённую часть выбранного элемента (::first-line
, ::first-letter
)
* добавления элемента к разметке без изменения HTML (::before
, ::after
, обязательно с content
)
Вы имеете опыт работы с ретиновой графикой? Если да, то какие методы вы использовали?
Использовать векторную графику и srcset для картинок.
Вы знакомы со стилизацией SVG?
Fill вместо background-color, stroke вместо border.
БЭМ
Блок, элемент, модификатор. Блок - самостоятельный. Элемент - только часть блока. Модификатор - изменение внешнего вида.
Как реализовать кастомный чекбокс?
- скрыть настоящий чекбокс через
apperance: none;
- добавить картинку в
span
(должно быть 6ыть минимум 6 картинок для разных состояний) - подогнать отступы
- с помощью псведоклассов
checked
иdisabled
задаём соответствующие картинки
Из чего состоит свойство background
?
Цвет, изображение, повторение, позиция и закрепление фона (во время скролла).
Из чего состоит тень box-shadow
?
[inset]
— внутренняя5px
— смещение по x (+ -)10px
— смещение по y (+ -)[2px]
— размытие (только +)[3px]
— масштабирование (+ и -)[red]
— цвет
Как сделать градиент linear-gradient
?
background-image: linear-gradient(цвет, цвет...);
Направление задать можно через ключевое слово (to top
, to left
…) или градус (deg
).
Цвету можно указать колорстоп в %. Место, где цвет начнёт меняться. (yellow 25%, green 75%
)
Повторяющийся - repeating-linear-gradient
.
Как вписать изображение?
Если для background-size задать значение contain (вписать) или cover (покрыть).
Как убрать/поменять булеты у списка?
list-style: none;
Как изменить буквы на заглавные через CSS?
text-transfom: uppercase;
- сделает все буквы заглавнымиtext-transfom: capitalize;
- сделает только первые буквы такими
Что такое поток документа?
Принцип организации элементов при отсутствии стилей.
Разница между адаптивным (adaptive), отзывчивым (responsive) и mobile-first дизайном.
- адаптивный - страница адаптируется и изменяется под устройство (несколько дизайнов).
- отзывчивый - страница резиновая и не имеет разный дизайн для разных размеров.
- mobile-first - как адаптивный, но стартовый дизайн мобильный.
Что такое семантика и семантическая разметка?
Использование тегов, которые описывают содержимое внутри себя. Например nav, article, header, footer, h1, main итд. Полезна для доступности, поисковой оптимизации и удобства поддержки кода.
Как семантически правильно сверстать картинку с подписью?
<figure> <img src="picture1.jpg" alt="картинка"> <img src="picture2.jpg" alt="ещё одна (может быть)"> <figcaption>Поясняющий текст</figcaption> </figure>
Типы списков в HTML?
Маркированный - ul
, внутри li
Нумерованный - ol
, внутри li
Список определений - dl
, внутри dt
(элемент списка), у которого может быть dd
(описание элемента списка)
Какая разница между тегами strong
, em
и b
, i
?
strong
(жирный) и em
(наклонный) - предназначены в том числе для семантики, скринридеры сделают акцент
b
и i
- сделают только визуальное изменение
Что такое мета-тэги?
Это тег <meta>
, который располагается в <head>
и описывает содержимое страницы. В основном предназначены для SEO и роботов.
Например <meta name="description" content="Test page">
Что описывается в тэге <head>?
title
- заголовок страницы, будет на вкладке
meta
- кодировка, описание и ключевые слова, указать вспомогательные механизмы для браузеров и устройств
link
- ссылка на таблицу стилей и/или шрифтов
script
- скрипты, либо прям там, либо файлом
Почему хорошей практикой считается располагать <link>
для подключения CSS между <head></head>
, а <script>
для подключения JS ставить перед </body>
?
CSS располагается в <head>
для оптимизации загрузки - при первой загрузке HTML и CSS анализируется одновременно и создаются DOM и CSSOM.
Скрипт располагается перед окончанием <body>
для того что бы загрузка скрипта не блокировала отрисовку HTML.
Для чего используются тэги <tr>
, <th>
, <td>
?
Это теги, которые используются внутри table
.
tr
- строка таблицы
th
- заголовочная ячейка
td
- обычная ячейка
Расскажите о теге <meta>
с атрибутом name="viewport"
?
Говорит браузеру, как масштабировать и отображать страницу на разных устройствах, особенно на смартфонах и планшетах.
В атрибуте content
описывается как страница должна себя вести на устройствах с разным разрешением.
<meta name="viewport" content="width=device-width, initial-scale=1" />
Что такое элемент <canvas>
? И для чего он используется?
Холст - низкоуровневый api для отрисовки графики.
Разница между <canvas>
и <svg>
? В каких случаях лучше использовать <canvas>
, а в каких <svg>
?
DOM - canvas одиночный элемент, svg набор элементов
Язык - canvas скриптовый язык, svg язык разметки
Графика - canvas растровая, svg векторная
Формат - canvas не имеет своего, svg можно сохранить в файл
События - canvas имеет события, svg нет
Сжатие - canvas нет, svg да
Canvas - редактирование изображений, обрезка, изменение размеров, фильтры (яркость, контрастов), графики функций, фракталы, анализ изображений, игровая графика
Плюсы canvas: производительность в 2д, png и jpg, работа с растровой графикой
Минусы canvas: отрисовка на пикселях, нет api для анимации, слабые возможности работы с текстом, плохо с доступностью
SVG - пользовательский интерфейс (независящий от разрешения экрана), высоко интерактивные анимированные пользовательские интерфейсы, графики и диаграммы, редактирование векторных изображений
Плюсы SVG: не зависим от разрешения, поддержка анимации, контроль над каждым элементом, хранение в xml
Минусы SVG: низкая скорость рендера при увеличении сложности (DOM), не подходит для игр.
Для чего нужен атрибут autocomplete
?
Для возможности использования автозаполнения. Может принимать разные типы значений, для заполнения в зависимости от типа данных, например name
, email
, tel
итд.
Что такое свойство valueAsNumber
?
Применяется для полей формы. Позволяет получить значение сразу в виде числа, а не строки. На практике применяется для инпутов типа number
, date
и range
.
Что такое атрибут target
? Какие значения он принимает?
Определяет, где откроется ссылка <a>
: в том же окне, в новой вкладке или в новом окне браузера.
_self
- по умолчанию, в том же окне.
_blank
- в новой вкладке (или в новом окне - зависит от настроек браузера)
Для чего используется элемент <picture>
?
Для использования разных изображений под разные устройства (с разной шириной экрана).
Внутри <picture>
указываются теги <source>
, с атрибутами media
(медиа-запрос) и srcset
(ссылка на нужный вариант картинки).
<picture> <source media="(min-width: 1024px)" srcset="a1024.jpg"> <source media="(min-width: 768px)" srcset="a768.jpg"> <img src="a.jpg"> </picture>
<img>
будет использован, если ничего не подошло.
Для чего используется атрибут srcset
в теге изображения <img>
? Опишите процесс, который использует браузер при оценке содержимого этого атрибута.
Используется для предоставления изображений разного размера. С помощью дескрипторов можно указать плотность пикселей, ширину или высоту экрана.
<img src="cat.jpg" alt="Котик." width="360" height="240" srcset="cat-360px.jpg 1x, cat-720px.jpg 2x, cat-1080px.jpg 3x" >
На основе ширины экрана пользователя и ширины картинки рассчитывается плотность пикселей у картинок, затем на основе плотности экрана выбирается соответствующая картинка.
Как семантически верно сверстать навигационное меню?
<nav> <ul> <li><a>Главная</a></li> <li><a>О нас</a></li> <li><a>Контакты</a></li> </ul> </nav>
Что такое <iframe>
?
Инлайн-фрейм. Позволяет вставить любой HTML документ из другого источника. Например карта, видео или пост из соцсети.
Для чего используются тэги <sub>
и <sup>
?
sup
- superscript, для степени
sub
- subscript, для нижнего индекса
Как можно сгруппировать опции внутри тэга select
?
select
- это выпадающий список
Сгруппировать варианты (option
) можно тегом optgroup
. Название группы можно задать через атрибут label
.
<select> <optgroup label="HTML"> <option>Pug</option> <option>Handlebars</option> </optgroup> <optgroup label="CSS"> <option>SASS</option> <option>PostCSS</option> </optgroup> </select>
Чем отличается <article>
от <section>
?
Оба тега служат для семантики. Тег <article>
используется если контент внутри него автономен. Тег <section>
служит как часть какой-то информации, как контейнер, их можно вкладывать друг в друга.
Для чего используется атрибут enterkeyhint
?
Стилизация кнопки действия для виртуальной клавиатуры. Будет ли там “галочка” или кнопка “Поиск”.
Для чего используют атрибут novalidate
?
Для отключения встроенной валидации формы.
Для чего используют атрибут inputmode
?
Определяет какую клавиатуру показать на мобильных устройствах. Цифровую, буквенную или для ввода email.
Для чего используется атрибут pattern
?
Можно указать регулярное выражение для инпута.
Что такое CSS? И для чего он используется?
Cascading Style Sheets - каскадные таблицы стилей.
Предназначены для добавления стилей на страницу.
Варианты добавления CSS стилей на страницу.
- Инлайн стили.
- Глобальные стили - прямо в
<head>
, в<style>
описание стилей. - Внешний файл - через
<link>
- Импорты внутри файлов стилей
Что такое CSS-правило?
селектор { затем блок объявления }
С помощью селектора выбираются элементы, в блоке указываются свойства и их значения. Указанные свойства будут применены к выбранным элементам.
Что такое CSS спрайт? И для чего он используется?
CSS-спрайт это картинка, которая объединяет в себе много других, например иконок.
Сокращает количество обращений к серверу.
Что такое вендорные префиксы? И для чего они используются?
Приставка перед CSS-свойствами, используются для поддержки этого свойства браузерами. Проверить совместимость можно на can i use.
Что такое схлопывание границ (margin collapsing)?
Когда два элемента упираются вертикальным margin в друг друга. Будет действовать тот, который больше.
Как с помощью CSS определить, поддерживается ли свойство в браузере?
Активно используется в progressive enhancement
Через @supports (свойство: значение)
происходит проверка. Если результат положительный, то применится дальнейшее правило.
@supports (display: grid) { .main { display: grid; } }
Глобальные ключевые слова в CSS?
initial
- значение по умолчанию
inherit
- наследование
unset
- с наследуемыми как inherit
, с не наследуемыми как initial
revert
- сбрасывает на стиль браузера
Что такое CSS-атрибут (attr
)?
CSS-функция с помощью которой можно получить значение любого атрибута элемента для использования его в стилях.
Например attr(class)
в примере равен “element”
.
<div class="element" title="На самом деле внутри нет никакого текста"></div> div::before { content: "Элемент с классом " attr(class); } div::after { content: "Подсказка: " attr(title); }
Можно использовать где угодно, но полная поддержка только в content
.
Для чего используется ключевое слово currentColor
в CSS?
Как переменная. Наследует значение color
родителя.
Какие фильтры есть в CSS?
Тона серого, сепия, прозрачность, яркость, контрастность, блюр.
Для чего используется псевдокласс :invalid
?
Псведокласс для стилизации невалидной формы, если используется нативная валидация. Есть так же :valid
.
Расскажите о свойстве text-rendering
?
Позволяет указать браузеру - какие оптимизации нужно производить с текстом во время рендера.
-
auto
- по умолчанию. Браузер самостоятельно пытается угадать, что важнее. -
optimazeSpeed
- скорость отрисовки. Лигатура и кёрнинг будут отключены. -
optimazeLegibility
- удобочитаемость текста, активное использование лигатуры и кёрнинга. -
geometricPrecision
- геометрическая точность.
Лигатура: перетикание или сливание одной буквы с другой
Кёрнинг: уменьшение межбуквенного растояния для тех букв, которые это поддерживают, например AV.
Расскажите о свойстве text-decoration-skip-ink
?
Настраивает как будет работать подчёркивание text-decoration
.
none
- сквозь глифы
auto
- по умолчанию, может не касаться глифов
all
- будет не касаться глифов
Расскажите о свойстве pointer-events
?
Свойство контролирует может ли курсор (или прикосновение) взаимодействовать с элементом.
auto
- по умолчанию
none
- предотвращает события клика с элементом
Остальные значения применимы для SVG.
Расскажите о свойстве outline?
это как border, который не влияет на размер элемента
Почему не стоит использовать краткую форму записи свойств в CSS?
При использовании короткой записи можно задать какое-то значение не желая этого делать. Например при background: red
в том числе задастся начальное значение позиций в 0 0
.
Назовите псевдоэлементы для подсветки текста?
Псевдоэлементы выделения. Один из них:
selection
- тот текст, что выделил пользователь
Способы задания цвета в CSS?
- слова:
red
,green
,blue
, в том числеtransparent
(прозрачный) -
rgb(255, 0, 0)
или hex#ff0000
-
rgba(255, 255, 255, 0.5)
// с прозрачностью (альфа-канал) -
hsl(120, 100%, 25%)
иhsla(120, 100%, 25%, 0.1)
- тон, насыщенность и яркость (может быть с альфа-каналом) -
currentColor
- наследование от родителя
Какое CSS-свойство используется для изменения порядка отображения элементов на веб-странице без изменения их физического расположения в HTML-коде?
родителю display: flex;
, а дочерние элементы расставлять через order: 1
и flex-direction;
Разница между псевдоклассами и псевдоэлементами?
::псевдоэлементы селекторы, которые служат для вставки содержимого
::before
, ::after
, ::placeholder
, ::first-letter
:псевдоклассы служат просто селекторами
Как в CSS сделать скругление углов?
border-radius: 1 2 3 4
1 - левый верхний
2 - правый верхний
3 - правый нижний
4 - левый нижний
Либо указать сразу все скругления
border-radius: x