Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/andriiyakymiv/goit-markup-hw-04

Learning GoIT homework on HTML+CSS - #4. Setting up backgrounds, gradients, and shadows. CSS property transition scripts. Using CSS animations. Embedded SVG and SVG sprites.
https://github.com/andriiyakymiv/goit-markup-hw-04

css3 figma git github gitignore html5 javascript prettier

Last synced: about 1 month ago
JSON representation

Learning GoIT homework on HTML+CSS - #4. Setting up backgrounds, gradients, and shadows. CSS property transition scripts. Using CSS animations. Embedded SVG and SVG sprites.

Awesome Lists containing this project

README

        

# Site WebStudio — GoIT — Homework No. 4

- Створи репозиторій `goit-markup-hw-04`.
- Склонуй створений репозиторій і скопіюй в нього файли попередньої роботи.
- Додай розмітку і оформлення іконок і декоративних ефектів для сторінок з
макета
[**домашнього завдання #4**]().
- Для генерації SVG-спрайту використовуй сервіс
[**Icomoon**](https://icomoon.io/).
- Для оптимізації створеного SVG-спрайту використовуй сервіс
[**svgomg**](https://jakearchibald.github.io/svgomg/).
- Налаштуй `GitHub Pages` і додай посилання на живу сторінку в шапку
GitHub-репозиторія.

### Проект

**`«A1»`** У корені проекту є папка `images` з зображеннями.

**`«A2»`** Усі векторні зображення (іконки) зібрані в SVG-спрайт `icons.svg`,
який лежить у папці `images`.

**`«A3»`** Усі векторні зображення оптимізовані.

**`«A4»`** У корені проекту є папка `css` з файлами стилів.

**`«A5»`** Всі стилі написані в одному файлі `styles.css`, який знаходиться в
папці `css`.

**`«A6»`** У назвах файлів відсутні великі літери, пробіли і трансліт, тільки
літери і слова англійської мови.

**`«A7»`** Вихідний код відформатований за допомогою `Prettier`.

**`«A8»`** Всі зображення та текстовий контент взяті з макета.

**`«A9»`** На всіх HTML-сторінках підключений нормалізатор стилів
[`modern-nomalize`](https://github.com/sindresorhus/modern-normalize).

**`«A10»`** Всі стилі написані в одному файлі `styles.css`, який знаходиться в
папці `css`.

**`«A11»`** Скрипт модального вікна підключений в HTML окремим файлом
`modal.js`.

**`«A12»`** Код написаний з дотриманням [**настанови**](https://codeguide.co/).

### Розмітка

**`«B1»`** Для всіх іконок використовується векторна графіка у форматі `svg`.

**`«B2»`** SVG-іконки експортовані правильно. При експорті обрана «група», а не
сам вектор.

**`«B3»`** Всі іконки з SVG-спрайту додані в HTML за допомогою тегів `` і
``

**`«B4»`** В секції `Переваг` додані іконки.

**`«B5»`** В секції `Команди` додані іконки соцмереж.

**`«B6»`** В секції `Клієнтів` додані іконки компаній.

**`«B7»`** У `футері` додані іконки соцмереж.

**`«B8»`** Виконана HTML-розмітка всіх елементів макету.

**`«B9»`** Теги використані відповідно до їх семантичного змісту.

### Оформлення

**`«C1»`** Велике зображення з ефектом затемнення (під хедером) виконано як фон.
Для затемнення використовується багатошаровий фон з градієнтом.

**`«C2»`** Фонове зображення в блоці під хедером не розтягується ширше свого
оригінального розміру `1440рх`.

**`«C3»`** У картках секції `Наша команда` є постійний ефект тіні.

**`«C4»`** У картках сторінки `Портфоліо` є ефект тіні при ховері в будь-якому
місці картки.

**`«C5»`** У фільтрі (список кнопок) сторінки `Портфоліо` є ефект тіні при
ховері або фокусі на кнопки.

**`«C6»`** При ховері або фокусі іконки повинні переходити в активний стан -
змінювати колір, якщо це зазначено в макеті.

**`«C7»`** Для всіх ефектів ховер і фокуса (колір, фон, тінь) зроблені переходи.
Час - `250ms`, функція розподілу часу - `cubic-bezier(0.4, 0, 0.2, 1)`.

**`«C8»`** У переходах та анімаціях явно зазначені анімовані властивості. Ніде
немає значення `all`.

**`«C9»`** В головній навігації, за допомогою псевдоелемента `::after`, зроблено
підкреслення посилання поточної сторінки (на якій зараз знаходиться користувач).

**`«C10»`** Оверлей з текстом на картках сторінки `Портфоліо` з'являється при
ховері та фокусі в будь-якому місці картки.

**`«C11»`** Синій оверлей в картках сторінки `Портфоліо` виїжджає знизу, як
показано на відео.

**`«C12»`** У псевдоелементів відсутній текстовий контент у властивості content.
Вони використані виключно для декоративного оформлення.

### Модальне вікно

**`«D1»`** Виконана розмітка і оформлення «бекдропа» (темного напівпрозорого
фону) модального вікна.

**`«D2»`** «Бекдроп» заповнює 100% висоти і ширини в'юпорту браузера і
фіксований в ньому.

**`«D3»`** Виконана розмітка і оформлення модального вікна.

**`«D4»`** Модальне вікно вертикально і горизонтально спозиційоване посередині
бекдропа.

**`«D5»`** Виконана розмітка і оформлення кнопки закриття модального вікна у
верхньому правому куті.

**`«D6»`** Спочатку модальне вікно і бекдроп приховані за допомогою класу
`is-hidden` на бекдропі, в селекторі якого використовуються властивості
`visibility`, `opacity` і `pointer-events`.

**`«D7»`** Якщо прибрати з бекдропа клас `is-hidden` - з'являється бекдроп і
модальне вікно.

**`«D8»`** Поява і приховування модального вікна анімовано за допомогою переходу
з довільним ефектом, наприклад `scale` або `translate`, і `opacity`.

### Відкриття/закриття модального вікна

Модальне вікно з формою заявки відкривається по натисканню на кнопку
`"Замовити послугу"`. Для того щоб скрипт спрацював, необхідно додати до
розмітки спеціальні атрибути, за якими скрипт шукає елементи:

- `data-modal-open` - на кнопку відкриття модального вікна.
- `data-modal-close` - на кнопку закриття модального вікна.
- `data-modal` - на бекдроп модального вікна.

Після чого, перед закриваючим тегом `body` додати тег `script` з посиланням на
файл скрипту для модально вікна. Можна подивитися
[відео-інструкцію](https://drive.google.com/file/d/1yasixN2K-9DdsYtKCJWVay9WbyTZai0t/view).

```html


```

Скрипт, який необхідно скопіювати і вставити у файл `modal.js`.

```js
(() => {
const refs = {
openModalBtn: document.querySelector("[data-modal-open]"),
closeModalBtn: document.querySelector("[data-modal-close]"),
modal: document.querySelector("[data-modal]"),
};

refs.openModalBtn.addEventListener("click", toggleModal);
refs.closeModalBtn.addEventListener("click", toggleModal);

function toggleModal() {
refs.modal.classList.toggle("is-hidden");
}
})();
```