├── .gitignore
├── LICENSE
├── README.md
├── module-01
└── webinar
│ ├── assets
│ ├── mockup.jpg
│ ├── todo.txt
│ └── Введение.pdf
│ ├── img
│ ├── pexels-photo-clouds.jpeg
│ ├── pexels-photo-sheep.jpeg
│ └── pexels-photo-train.jpeg
│ └── index.html
├── module-02
└── webinar
│ ├── css
│ └── styles.css
│ ├── images
│ ├── git-branching.svg
│ ├── git-flow.svg
│ ├── git-proj-parts.svg
│ ├── git-pull.svg
│ ├── git-push.svg
│ ├── git.png
│ └── status-log.svg
│ └── index.html
├── module-03
├── practise
│ ├── .editorconfig
│ ├── .stylelintrc
│ ├── css
│ │ ├── normalize.css
│ │ └── styles.css
│ ├── img
│ │ ├── icon-facebook.png
│ │ ├── icon-linkedin.png
│ │ ├── icon-twitter.png
│ │ ├── logo.png
│ │ ├── team-1.jpg
│ │ ├── team-2.jpg
│ │ ├── team-3.jpg
│ │ └── team-4.jpg
│ └── index.html
└── webinar
│ ├── .editorconfig
│ ├── .stylelintrc
│ ├── css
│ ├── normalize.css
│ └── styles.css
│ ├── img
│ ├── logo.png
│ ├── team-1.jpg
│ ├── team-2.jpg
│ ├── team-3.jpg
│ └── team-4.jpg
│ ├── index.html
│ ├── mockup
│ └── ActiveBox.psd
│ └── plan.txt
├── module-04
├── practise
│ ├── .editorconfig
│ ├── .stylelintrc
│ ├── css
│ │ ├── normalize.css
│ │ └── styles.css
│ ├── img
│ │ ├── banner.jpeg
│ │ ├── icons
│ │ │ ├── features
│ │ │ │ ├── icon-atom.png
│ │ │ │ ├── icon-bulb.png
│ │ │ │ ├── icon-case.png
│ │ │ │ ├── icon-computer.png
│ │ │ │ ├── icon-download.png
│ │ │ │ └── icon-tools.png
│ │ │ └── social
│ │ │ │ ├── icon-facebook.png
│ │ │ │ ├── icon-linkedin.png
│ │ │ │ └── icon-twitter.png
│ │ ├── logo.png
│ │ ├── team-1.jpg
│ │ ├── team-2.jpg
│ │ ├── team-3.jpg
│ │ └── team-4.jpg
│ └── index.html
└── webinar
│ ├── css
│ └── styles.css
│ ├── img
│ ├── icons
│ │ ├── icon-login.png
│ │ └── icon-logout.png
│ └── image.jpeg
│ ├── index.html
│ └── plan.txt
├── module-05
├── practise
│ ├── css
│ │ ├── modal.css
│ │ ├── normalize.css
│ │ ├── slider.css
│ │ └── styles.css
│ ├── img
│ │ ├── pexels-photo-631950.jpeg
│ │ └── team-member.jpg
│ ├── index.html
│ ├── modal.html
│ └── slider.html
└── webinar
│ ├── css
│ ├── normlize.css
│ └── styles.css
│ ├── img
│ ├── heart-hover.svg
│ ├── heart.svg
│ └── team-1.jpg
│ ├── index.html
│ └── plan.txt
├── module-06
├── practise
│ ├── .editorconfig
│ ├── .stylelintrc
│ ├── css
│ │ ├── normalize.css
│ │ └── styles.css
│ ├── img
│ │ ├── banner.jpeg
│ │ ├── icons
│ │ │ ├── features
│ │ │ │ ├── icon-atom.png
│ │ │ │ ├── icon-bulb.png
│ │ │ │ ├── icon-case.png
│ │ │ │ ├── icon-computer.png
│ │ │ │ ├── icon-download.png
│ │ │ │ └── icon-tools.png
│ │ │ └── social
│ │ │ │ ├── icon-facebook.png
│ │ │ │ ├── icon-linkedin.png
│ │ │ │ └── icon-twitter.png
│ │ ├── logo.png
│ │ ├── team-1.jpg
│ │ ├── team-2.jpg
│ │ ├── team-3.jpg
│ │ └── team-4.jpg
│ ├── index.html
│ └── materials.txt
└── webinar
│ ├── css
│ ├── normlize.css
│ └── styles.css
│ ├── index.html
│ └── plan.txt
├── module-07
├── practise
│ ├── .editorconfig
│ ├── .stylelintrc
│ ├── css
│ │ ├── normalize.css
│ │ ├── price-filter.css
│ │ ├── size-filter.css
│ │ └── styles.css
│ ├── img
│ │ ├── icon-check.svg
│ │ └── icon-square.svg
│ ├── index.html
│ └── mockup
│ │ └── Products Details Page_3_Grid.psd
└── webinar
│ ├── css
│ ├── normlize.css
│ └── styles.css
│ ├── index.html
│ └── plan.txt
├── module-08
├── practise
│ ├── .editorconfig
│ ├── .stylelintrc
│ ├── css
│ │ ├── media.css
│ │ ├── normalize.css
│ │ └── styles.css
│ ├── img
│ │ ├── banner.jpeg
│ │ ├── icons
│ │ │ ├── features
│ │ │ │ ├── icon-atom.png
│ │ │ │ ├── icon-bulb.png
│ │ │ │ ├── icon-case.png
│ │ │ │ ├── icon-computer.png
│ │ │ │ ├── icon-download.png
│ │ │ │ └── icon-tools.png
│ │ │ └── social
│ │ │ │ ├── icon-facebook.png
│ │ │ │ ├── icon-linkedin.png
│ │ │ │ └── icon-twitter.png
│ │ ├── logo.png
│ │ ├── team-1.jpg
│ │ ├── team-2.jpg
│ │ ├── team-3.jpg
│ │ └── team-4.jpg
│ └── index.html
└── webinar
│ ├── css
│ ├── normlize.css
│ └── styles.css
│ ├── img
│ ├── image-1.jpg
│ ├── image-2.jpg
│ ├── image-3.jpg
│ └── image-4.jpg
│ ├── index.html
│ └── todo.txt
├── module-10
├── practise
│ ├── .editorconfig
│ ├── .stylelintrc
│ ├── css
│ │ ├── normalize.css
│ │ └── styles.css
│ ├── img
│ │ ├── banner.jpeg
│ │ ├── icons
│ │ │ ├── features
│ │ │ │ ├── icon-atom.png
│ │ │ │ ├── icon-atom@2x.png
│ │ │ │ ├── icon-bulb.png
│ │ │ │ ├── icon-bulb@2x.png
│ │ │ │ ├── icon-case.png
│ │ │ │ ├── icon-case@2x.png
│ │ │ │ ├── icon-computer.png
│ │ │ │ ├── icon-computer@2x.png
│ │ │ │ ├── icon-download.png
│ │ │ │ ├── icon-download@2x.png
│ │ │ │ ├── icon-tools.png
│ │ │ │ └── icon-tools@2x.png
│ │ │ └── social
│ │ │ │ └── sprite.svg
│ │ ├── logo.png
│ │ ├── logo@2x.png
│ │ ├── team-1.jpg
│ │ ├── team-1@2x.jpg
│ │ ├── team-2.jpg
│ │ ├── team-2@2x.jpg
│ │ ├── team-3.jpg
│ │ ├── team-3@2x.jpg
│ │ ├── team-4.jpg
│ │ └── team-4@2x.jpg
│ └── index.html
└── webinar
│ ├── css
│ ├── normlize.css
│ └── styles.css
│ ├── hw-10-svg-icons.zip
│ ├── img
│ ├── icon-clock.svg
│ ├── icon-graph.svg
│ ├── icon-home.svg
│ ├── icon.png
│ ├── icon@2x.png
│ ├── photo.jpg
│ ├── photo@2x.jpg
│ └── symbol-defs.svg
│ ├── index.html
│ ├── materials.md
│ └── Адаптивная графика. Retina..pdf
└── module-11
├── practise
├── .editorconfig
├── .gitignore
├── .stylelintrc
├── LICENSE
├── build
│ ├── css
│ │ ├── styles.css
│ │ └── styles.min.css
│ ├── img
│ │ ├── banner.jpeg
│ │ ├── icons
│ │ │ └── features
│ │ │ │ ├── icon-atom.png
│ │ │ │ ├── icon-atom@2x.png
│ │ │ │ ├── icon-bulb.png
│ │ │ │ ├── icon-bulb@2x.png
│ │ │ │ ├── icon-case.png
│ │ │ │ ├── icon-case@2x.png
│ │ │ │ ├── icon-computer.png
│ │ │ │ ├── icon-computer@2x.png
│ │ │ │ ├── icon-download.png
│ │ │ │ ├── icon-download@2x.png
│ │ │ │ ├── icon-tools.png
│ │ │ │ └── icon-tools@2x.png
│ │ ├── logo.png
│ │ ├── logo@2x.png
│ │ ├── sprite.svg
│ │ ├── team-1.jpg
│ │ ├── team-1@2x.jpg
│ │ ├── team-2.jpg
│ │ ├── team-2@2x.jpg
│ │ ├── team-3.jpg
│ │ ├── team-3@2x.jpg
│ │ ├── team-4.jpg
│ │ └── team-4@2x.jpg
│ └── index.html
├── gulpfile.js
├── package-lock.json
├── package.json
└── src
│ ├── html
│ ├── banner.html
│ ├── features.html
│ ├── footer.html
│ ├── header.html
│ └── team.html
│ ├── img
│ ├── banner.jpeg
│ ├── icons
│ │ └── features
│ │ │ ├── icon-atom.png
│ │ │ ├── icon-atom@2x.png
│ │ │ ├── icon-bulb.png
│ │ │ ├── icon-bulb@2x.png
│ │ │ ├── icon-case.png
│ │ │ ├── icon-case@2x.png
│ │ │ ├── icon-computer.png
│ │ │ ├── icon-computer@2x.png
│ │ │ ├── icon-download.png
│ │ │ ├── icon-download@2x.png
│ │ │ ├── icon-tools.png
│ │ │ └── icon-tools@2x.png
│ ├── logo.png
│ ├── logo@2x.png
│ ├── sprite
│ │ ├── icon-facebook.svg
│ │ ├── icon-linkedin.svg
│ │ └── icon-twitter.svg
│ ├── team-1.jpg
│ ├── team-1@2x.jpg
│ ├── team-2.jpg
│ ├── team-2@2x.jpg
│ ├── team-3.jpg
│ ├── team-3@2x.jpg
│ ├── team-4.jpg
│ └── team-4@2x.jpg
│ ├── index.html
│ └── sass
│ ├── base.scss
│ ├── components
│ ├── banner.scss
│ ├── button.scss
│ ├── container.scss
│ ├── features.scss
│ ├── page-footer.scss
│ ├── page-header.scss
│ ├── page-nav.scss
│ ├── section.scss
│ ├── site-logo.scss
│ ├── site-navigation.scss
│ ├── slider.scss
│ ├── socials.scss
│ └── team.scss
│ ├── helpers
│ ├── extras.scss
│ ├── mixins.scss
│ ├── placeholders.scss
│ └── variables.scss
│ ├── normalize.scss
│ └── styles.scss
└── webinar
├── gulp-project
├── .editorconfig
├── .gitignore
├── .stylelintrc
├── LICENSE
├── build
│ ├── css
│ │ ├── styles.css
│ │ └── styles.min.css
│ ├── img
│ │ ├── sprite.svg
│ │ ├── team-1.jpg
│ │ └── team-2.jpg
│ └── index.html
├── gulpfile.js
├── package-lock.json
├── package.json
└── src
│ ├── img
│ ├── sprite
│ │ ├── icon-facebook.svg
│ │ ├── icon-instagram.svg
│ │ ├── icon-pinterest.svg
│ │ └── icon-twitter.svg
│ ├── team-1.jpg
│ └── team-2.jpg
│ ├── index.html
│ └── sass
│ ├── helpers
│ └── variables.scss
│ ├── normalize.scss
│ └── styles.scss
└── simple-sass
├── links.txt
├── package-lock.json
├── package.json
├── plant.txt
└── src
├── css
└── styles.css
├── index.html
└── scss
├── base.scss
├── button.scss
├── container.scss
├── helpers
├── mixins.scss
├── placeholders.scss
└── variables.scss
├── note.scss
└── styles.scss
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Alexander Repeta
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # html-css-source-code
--------------------------------------------------------------------------------
/module-01/webinar/assets/mockup.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-01/webinar/assets/mockup.jpg
--------------------------------------------------------------------------------
/module-01/webinar/assets/todo.txt:
--------------------------------------------------------------------------------
1 | - Язык разметки HTML.
2 | - Понятие тега и атрибута.
3 | - Структура HTML-документа.
4 | - Инструменты веб-разработчика: Chrome DevTools, вкладка elements.
5 | - Разница между тегом и элементом.
6 | - Основные теги: заголовки, абзацы, списки, изображения, ссылки и т. д.
7 | - Абсолютные и относительные пути
8 | - Поток документа.
9 | - Строчные и блочные элементы.
10 | - Валидация.
11 | - Стиль HTML-кода.
12 |
13 | //=========================================================================
14 |
15 | Потоковые: flow
16 | - header
17 | - footer
18 | - main
19 | - ul/ol
20 | - p
21 |
22 |
23 | //=========================================================================
24 |
25 | Фразовые:
26 | - img
27 | - a
28 | - button
29 | - br
30 | - span
31 |
32 | //=========================================================================
33 |
34 | Группировка контента по смыслу, обертки.
35 |
36 | Крупные смысловые разделы:
37 | - article
38 | - section
39 | - nav
40 | - div
41 |
42 | 1. Можем дать имя разделу и вынести этот раздел на другой сайт? - article
43 | 2. Можем дать имя разделу, но вынести на другой сайт не можете? - section
44 | 3. Не можете дать имя? Вменяемое имя, а не «левая колонка» - div
45 |
46 | //=========================================================================
47 |
48 | Разметка это когда все содержательные элементы документа представленными
49 | подходящими по смыслу тегами.
50 |
51 | Страница как документ
52 | - Задача — восстановить из макета первоначальную логическую структуру документа.
53 | - Можно добавлять то, чего не видно на макете.
54 | - В разметку попадает не всё, что есть на макете.
55 |
56 | Алгоритм разметки
57 | 1. Выделяем повторяющиеся на каждой странице блоки (шапка и подвал) и основное
58 | содержание.
59 | 2. В этих блоках размечаем крупные смысловые разделы.
60 | 3. В документе, и в каждом смысловом разделе выделяем заголовки (если их нет в макете, то
61 | позже прячем с помощью стилей).
62 | 4. Размечаем оставшиеся мелкие элементы в каждом смысловом разделе методом исключения:
63 | - Если получилось найти самый подходящий тег – используем его (article, section, nav).
64 | - Нужно разметить потоковый контейнер –
.
65 | - Нужно сгруппировать мелкие фразовые элементы –
.
66 | - Нужно выделить сам мелкий фразовый элемент (слово или фразу) – .
67 |
68 | При разметке добавляем всем тегам понятные имена классов. Теги без классов допустимы, если
69 | из контекста понятно их назначение.
70 |
71 | При дальнейшей вёрстке разметка может меняться, если это необходимо для стилизации.
72 | Чаще всего добавляются обёртки с помощью .
73 |
74 | Как называть классы?
75 | - Имя класса должно отражать назначение элемента, а не рассказывать о его внешнем виде.
76 | - Воздержитесь от транслита.
77 |
78 | хорошо: cart main-menu list list-item
79 |
80 | плохо: razdel krasniy-kvadrat spisok item112
81 |
82 | Словарь! - https://github.com/yoksel/common-words
83 |
84 | //=========================================================================
85 |
86 | Пространства имён классов
87 |
88 | Упрощают именование классов.
89 | - Разбивают код на относительно независимые блоки.
90 | - Предотвращают нежелательное перемешивание стилей.
91 | - Ускоряют разработку и упрощают поддержку.
92 |
93 | //=========================================================================
94 |
95 | Признаки хорошей разметки
96 |
97 | - Использовано минимально необходимое количество тегов.
98 | - Имена классов рассказывают о назначении элементов.
99 | - Есть чёткие границы смысловых блоков, легко понять к какому блоку принадлежит тег.
100 | - Соблюдение стиля кода
101 | - Отсутствие лишних элементов
102 |
--------------------------------------------------------------------------------
/module-01/webinar/assets/Введение.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-01/webinar/assets/Введение.pdf
--------------------------------------------------------------------------------
/module-01/webinar/img/pexels-photo-clouds.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-01/webinar/img/pexels-photo-clouds.jpeg
--------------------------------------------------------------------------------
/module-01/webinar/img/pexels-photo-sheep.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-01/webinar/img/pexels-photo-sheep.jpeg
--------------------------------------------------------------------------------
/module-01/webinar/img/pexels-photo-train.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-01/webinar/img/pexels-photo-train.jpeg
--------------------------------------------------------------------------------
/module-01/webinar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Webinar 20-02
8 |
9 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 | home
20 |
21 |
22 | about
23 |
24 |
25 | work
26 |
27 |
28 | team
29 |
30 |
31 | services
32 |
33 |
34 | features
35 |
36 |
37 | contact
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | meet the team
46 |
47 |
48 |
49 | Some sheep
50 | CEO and Founder
51 |
52 |
53 |
54 | Some clouds
55 | CEO and Founder
56 |
57 |
58 |
59 | Train
60 | CEO and Founder
61 |
62 |
63 |
64 | Some sheep
65 | CEO and Founder
66 |
67 |
68 |
69 |
70 |
71 |
72 | legal info
73 |
74 |
75 | facebook
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------
/module-02/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: Roboto, 'Open Sans', Arial, sans-serif;
3 | font-size: 16px;
4 | line-height: 1.5;
5 | color: #424242;
6 | }
7 |
8 | .section {
9 | width: 70%;
10 | margin: auto;
11 | margin-bottom: 1rem;
12 | padding-bottom: 2rem;
13 | border-bottom: 2px solid #424242;
14 | }
15 |
16 | .section h2 {
17 | text-align: center;
18 | font-size: 3rem;
19 | }
20 |
21 | .section h3 {
22 | display: inline-block;
23 | padding: 0 0.5rem;
24 | font-size: 2rem;
25 | background-color: #424242;
26 | color: #fff;
27 | }
28 |
29 | .section > div {
30 | width: 100%;
31 | }
32 |
33 | .section img {
34 | display: block;
35 | width: 80%;
36 | height: auto;
37 | margin-left: auto;
38 | margin-right: auto;
39 | margin-bottom: 2rem;
40 | }
41 |
42 | .small-img {
43 | width: 50% !important;
44 | }
45 |
46 | .section ul {
47 | display: inline-block;
48 | margin: auto;
49 | padding: 0;
50 | font-size: 1.75rem;
51 | }
52 |
53 | .section p {
54 | font-size: 1.75rem;
55 | }
56 |
57 | .section li {
58 | margin-bottom: 0.5rem;
59 | }
60 |
61 | code {
62 | font-family: monospace;
63 | font-weight: 700;
64 | color: #212112;
65 | }
66 |
--------------------------------------------------------------------------------
/module-02/webinar/images/git.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-02/webinar/images/git.png
--------------------------------------------------------------------------------
/module-03/practise/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/module-03/practise/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-03/practise/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: "Raleway", "Arial", sans-serif;
13 | color: #6c7279;
14 | font-size: 14px;
15 | line-height: 21px;
16 | }
17 |
18 | img {
19 | display: block;
20 | max-width: 100%;
21 | height: auto;
22 | }
23 |
24 | .container {
25 | width: 1170px;
26 | margin: 0 auto;
27 | }
28 |
29 | .page-header {
30 | margin-bottom: 120px;
31 | background-color: #3a3e64;
32 | }
33 |
34 | .page-nav {
35 | padding: 38px 0;
36 | }
37 |
38 | .site-logo {
39 | display: inline-block;
40 | vertical-align: middle;
41 | }
42 |
43 | /* site navigation */
44 | .site-navigation {
45 | display: inline-block;
46 | vertical-align: middle;
47 | width: 977px;
48 | margin: 0;
49 | padding: 0;
50 | font-size: 13px;
51 | list-style: none;
52 | text-align: right;
53 | }
54 |
55 | .site-navigation li {
56 | display: inline-block;
57 | }
58 |
59 | .site-navigation li:not(:last-child) {
60 | margin-right: 60px;
61 | }
62 |
63 | .site-navigation a {
64 | display: block;
65 | color: #ffffff;
66 | font-weight: 700;
67 | text-transform: uppercase;
68 | text-decoration: none;
69 | line-height: 16px;
70 | }
71 |
72 | .site-navigation a:hover,
73 | .site-navigation a:focus {
74 | color: #e84545;
75 | }
76 |
77 | /* FEATURES SECTION */
78 | .features {
79 | margin-bottom: 120px;
80 | }
81 |
82 | .features-list {
83 | list-style: none;
84 | margin: 0;
85 | padding: 0;
86 | font-size: 0;
87 | }
88 |
89 | .features-list-item {
90 | display: inline-block;
91 | width: 370px;
92 | margin-right: 30px;
93 | margin-bottom: 72px;
94 | padding: 0 38px;
95 | text-align: center;
96 | }
97 |
98 | /* .features-list-item:not(:nth-child(3n)) {
99 | margin-right: 30px;
100 | } */
101 |
102 | .features-list-item:nth-child(3n) {
103 | margin-right: 0;
104 | }
105 |
106 | .features-list-item:nth-last-child(-n + 3) {
107 | margin-bottom: 0;
108 | }
109 |
110 | .features-list-item h3 {
111 | margin-bottom: 24px;
112 | margin-top: 0;
113 | color: #2d3033;
114 | line-height: 17px;
115 | font-size: 14px;
116 | }
117 |
118 | .features-list-item p {
119 | margin: 0;
120 | font-size: 14px;
121 | }
122 |
123 | /* TEAM SECTION */
124 | .team {
125 | margin-bottom: 120px;
126 | }
127 |
128 | .team-list {
129 | list-style: none;
130 | padding: 0;
131 | margin: 0;
132 | font-size: 0;
133 | }
134 |
135 | .team-list-item {
136 | display: inline-block;
137 | width: 270px;
138 | margin-right: 30px;
139 | }
140 |
141 | .team-list-item:last-child {
142 | margin-right: 0;
143 | }
144 |
145 | .team-list-name {
146 | margin-top: 26px;
147 | margin-bottom: 10px;
148 | font-size: 22px;
149 | line-height: 26px;
150 | color: #2d3033;
151 | }
152 |
153 | .team-list-occupation {
154 | margin-top: 0;
155 | margin-bottom: 26px;
156 | font-size: 13px;
157 | line-height: 16px;
158 | color: #e84545;
159 | }
160 |
161 | .team-list-about {
162 | margin-bottom: 26px;
163 | margin-top: 0;
164 | font-size: 14px;
165 | }
166 |
167 | .team-list-socials {
168 | margin: 0;
169 | padding: 0;
170 | list-style: none;
171 | font-size: 0;
172 | }
173 |
174 | .team-list-socials li {
175 | display: inline-block;
176 | margin-right: 4px;
177 | }
178 |
179 | .team-list-socials li:last-child {
180 | margin-right: 0;
181 | }
182 |
183 | .team-list-socials a {
184 | display: block;
185 | width: 40px;
186 | height: 40px;
187 | border: 1px solid rgb(232, 236, 238);
188 |
189 | background-repeat: no-repeat;
190 | background-position: center;
191 | }
192 |
193 | .team-list-socials a:hover,
194 | .team-list-socials a:focus {
195 | background-color: #e84545;
196 | }
197 |
198 | .icon-facebook {
199 | background-image: url("../img/icon-facebook.png");
200 | }
201 |
202 | .icon-twitter {
203 | background-image: url("../img/icon-twitter.png");
204 | }
205 |
206 | .icon-linkedin {
207 | background-image: url("../img/icon-linkedin.png");
208 | }
209 |
210 | .page-footer {
211 | background-color: #3a3e64;
212 | }
213 |
214 | .download-button {
215 | border: none;
216 | margin: 0;
217 | padding: 14px 82px;
218 | background-color: #e84545;
219 | font-size: 13px;
220 | line-height: 21px;
221 | font-weight: 600;
222 | color: #ffffff;
223 | text-transform: uppercase;
224 | cursor: pointer;
225 | }
226 |
227 | /* visually-hidden helper */
228 | .visually-hidden:not(:focus):not(:active),
229 | input[type="checkbox"].visually-hidden,
230 | input[type="radio"].visually-hidden {
231 | position: absolute;
232 |
233 | width: 1px;
234 | height: 1px;
235 | margin: -1px;
236 | border: 0;
237 | padding: 0;
238 |
239 | white-space: nowrap;
240 |
241 | clip-path: inset(100%);
242 | clip: rect(0 0 0 0);
243 | overflow: hidden;
244 | }
245 |
--------------------------------------------------------------------------------
/module-03/practise/img/icon-facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/icon-facebook.png
--------------------------------------------------------------------------------
/module-03/practise/img/icon-linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/icon-linkedin.png
--------------------------------------------------------------------------------
/module-03/practise/img/icon-twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/icon-twitter.png
--------------------------------------------------------------------------------
/module-03/practise/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/logo.png
--------------------------------------------------------------------------------
/module-03/practise/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/team-1.jpg
--------------------------------------------------------------------------------
/module-03/practise/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/team-2.jpg
--------------------------------------------------------------------------------
/module-03/practise/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/team-3.jpg
--------------------------------------------------------------------------------
/module-03/practise/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/practise/img/team-4.jpg
--------------------------------------------------------------------------------
/module-03/webinar/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/module-03/webinar/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-03/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: "Raleway", "Arial", sans-serif;
3 | color: #6c7279;
4 | font-size: 14px;
5 | line-height: 21px;
6 | }
7 |
8 | .page-header {
9 | background-color: #3a3e64;
10 | }
11 |
12 | .site-navigation {
13 | font-size: 13px;
14 | list-style: none;
15 | }
16 |
17 | .site-navigation a {
18 | color: #ffffff;
19 | font-weight: 700;
20 | text-transform: uppercase;
21 | text-decoration: none;
22 | line-height: 16px;
23 | }
24 |
25 | .site-navigation a:hover {
26 | color: #e84545;
27 | }
28 |
29 | .features-list {
30 | list-style: none;
31 | }
32 |
33 | .features-list-item h3 {
34 | color: #2d3033;
35 | line-height: 17px;
36 | }
37 |
38 | .team-list {
39 | list-style: none;
40 | }
41 |
42 | .team-list-name {
43 | font-size: 22px;
44 | line-height: 26px;
45 | color: #2d3033;
46 | }
47 |
48 | .team-list-occupation {
49 | font-size: 13px;
50 | line-height: 16px;
51 | color: #e84545;
52 | }
53 |
54 | .page-footer {
55 | background-color: #3a3e64;
56 | }
57 |
58 | .visually-hidden:not(:focus):not(:active),
59 | input[type="checkbox"].visually-hidden,
60 | input[type="radio"].visually-hidden {
61 | position: absolute;
62 |
63 | width: 1px;
64 | height: 1px;
65 | margin: -1px;
66 | border: 0;
67 | padding: 0;
68 |
69 | white-space: nowrap;
70 |
71 | clip-path: inset(100%);
72 | clip: rect(0 0 0 0);
73 | overflow: hidden;
74 | }
75 |
76 | /* .text {
77 | font-size: 34px;
78 | font-weight: 700;
79 | text-indent: 20px;
80 | font-style: italic;
81 | line-height: 40px;
82 | font-family: "Roboto", "Arial", "Times New Roman", sans-serif;
83 | } */
84 |
85 | /* 300 - light
86 | 400 - regular
87 | 600 - semibold */
88 | /* 700 - bold */
89 |
90 | /* body {
91 | min-height: 100vh;
92 | background-image: url('https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqysJKfLpvNg4Is0Geg3rnQr02vUdTyj4Qs5C-w5RemXzd4lCp');
93 | background-repeat: no-repeat;
94 | background-size: cover;
95 | background-position: center;
96 | } */
97 |
--------------------------------------------------------------------------------
/module-03/webinar/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/webinar/img/logo.png
--------------------------------------------------------------------------------
/module-03/webinar/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/webinar/img/team-1.jpg
--------------------------------------------------------------------------------
/module-03/webinar/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/webinar/img/team-2.jpg
--------------------------------------------------------------------------------
/module-03/webinar/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/webinar/img/team-3.jpg
--------------------------------------------------------------------------------
/module-03/webinar/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/webinar/img/team-4.jpg
--------------------------------------------------------------------------------
/module-03/webinar/mockup/ActiveBox.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-03/webinar/mockup/ActiveBox.psd
--------------------------------------------------------------------------------
/module-03/webinar/plan.txt:
--------------------------------------------------------------------------------
1 | Занятие #1:
2 | - Добавляем CSS используя внешнюю таблицу стилей.
3 |
4 | - Синтаксис CSS. Понятие CSS-правила, селектора, свойства и значения.
5 |
6 | Классификация свойств
7 | - Позиционирование
8 | - Блочная модель (размеры и отступы) и поток
9 | - Оформление текста
10 | - Декоративные эффекты (фоны, тени и так далее)
11 | - Анимация и динамические эффекты
12 | - Другие
13 |
14 | Типы значений
15 | - Абсолютные
16 | - Относительные
17 | - Ключевые слова
18 | - Цвета
19 | - Функции
20 | - Произвольные строки
21 |
22 | - DevTools для CSS.
23 |
24 | - CSS-селекторы: тега, класса, id, потомка, атрибута и т. д.
25 |
26 |
27 | - Каскад.
28 | - К одному и тому же элементу может примениться
29 | несколько CSS-правил.
30 | В этом случае свойства правил комбинируются.
31 |
32 | - Свойства элемента можно комбинировать и явно с помощью множественных классов.
33 |
34 | - Когда в разных CSS-правилах есть одинаковые
35 | свойства с разными значениями, то они конфликтуют
36 |
37 | Специфичность. Приоритетность.
38 | - Специфичность определяется по селектору.
39 | - Если она одинаковая, то побеждает то правило, которое
40 | расположено ниже в коде.
41 | - Чем проще селекторы, тем меньше проблем с расчётом
42 | специфичности.
43 |
44 | Наследование.
45 |
46 | - Сброс стилей по умолчанию от user agent. Нормализация.
47 |
48 | - Работа с цветом: rgb, hex. Прозрачность, rgba.
49 |
50 | - Абсолютные и относительные единицы CSS.
51 | Единицы измерения в CSS. px % em rem vw vh.
52 | Знакомлю со всеми очень кратко и говорю что дальше будет в курсе,
53 | использую пока только px и vh.
54 |
55 | - Работа с текстом, основные CSS-свойства и их значения.
56 | - Подключение внешних шрифтов через Google Fonts. Свойство font-family.
57 |
58 | - Фон. Работа с фоновыми изображениями, масштабируемый полностраничный фон.
59 | - Контентные (img) vs оформительные (background-img) изображения.
60 |
61 | - Псевдоклассы: hover, focus, active.
62 |
63 |
64 |
65 |
66 | Занятие #2:
67 |
68 | - Поток документа.
69 | - Блочная модель документа
70 | - Типы боксов: блочные, строчные, блочно-строчные
71 |
72 | - Свойства блочной модели и составляющие элемента: width, height, content, border, margin, padding.
73 | - Модель визуального форматирования: box-sizing.
74 |
75 | - Блочная верстка, свойство display: block|inline|inline-block.
76 |
77 | - Горизонтальное и вертикальное выравнивание: margin, text-align, line-height, vertical-align.
78 |
79 | - Класс container (wrapper): назначение, использование.
80 |
81 | - Псевдоклассы: f/l-сhild, nth-child, nth-last-child, not.
82 |
83 | - Верстка горизонтального меню и галлереи карточек. (это абсолютно не обязательно,
84 | я запишу им видео в продолжение моего вебинара как делать сеточную верстку строчно-блочными)
85 |
86 |
87 |
--------------------------------------------------------------------------------
/module-04/practise/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/module-04/practise/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-04/practise/img/banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/banner.jpeg
--------------------------------------------------------------------------------
/module-04/practise/img/icons/features/icon-atom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/features/icon-atom.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/features/icon-bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/features/icon-bulb.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/features/icon-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/features/icon-case.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/features/icon-computer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/features/icon-computer.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/features/icon-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/features/icon-download.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/features/icon-tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/features/icon-tools.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/social/icon-facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/social/icon-facebook.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/social/icon-linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/social/icon-linkedin.png
--------------------------------------------------------------------------------
/module-04/practise/img/icons/social/icon-twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/icons/social/icon-twitter.png
--------------------------------------------------------------------------------
/module-04/practise/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/logo.png
--------------------------------------------------------------------------------
/module-04/practise/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/team-1.jpg
--------------------------------------------------------------------------------
/module-04/practise/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/team-2.jpg
--------------------------------------------------------------------------------
/module-04/practise/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/team-3.jpg
--------------------------------------------------------------------------------
/module-04/practise/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/practise/img/team-4.jpg
--------------------------------------------------------------------------------
/module-04/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: "PT Sans", sans-serif;
13 | font-size: 16px;
14 | line-height: 1.5;
15 | }
16 |
17 | .page-header {
18 | padding: 20px 0;
19 | outline: 2px solid brown;
20 | }
21 |
22 | .logo {
23 | outline: 2px solid orange;
24 | float: left;
25 | }
26 |
27 | .catalog {
28 | width: 1000px;
29 | margin: 0 auto;
30 | }
31 |
32 | .menu {
33 | float: right;
34 | width: 300px;
35 | outline: 2px solid blue;
36 | list-style: none;
37 | padding: 0;
38 | margin: 0;
39 | }
40 |
41 | .menu li {
42 | float: left;
43 | background-color: #424242;
44 | }
45 |
46 | .catalog-list {
47 | padding: 0;
48 | margin: 0;
49 | list-style: none;
50 | }
51 |
52 | .catalog-item {
53 | float: left;
54 | width: 300px;
55 | outline: 2px solid #424242;
56 | }
57 |
58 | .catalog-item:not(:nth-child(3n)) {
59 | margin-right: 50px;
60 | }
61 |
62 | .catalog-item:not(:nth-last-child(-n + 3)) {
63 | margin-bottom: 50px;
64 | }
65 |
66 | /* PSEUDOELEMENTS */
67 |
68 | /* .link {
69 | display: inline-block;
70 | text-decoration: none;
71 | border: 2px solid #424242;
72 | padding: 10px 20px;
73 | }
74 |
75 | .login::before,
76 | .logout::after {
77 | display: inline-block;
78 | width: 20px;
79 | height: 20px;
80 | content: "";
81 | vertical-align: middle;
82 |
83 | background-size: contain;
84 | background-position: center;
85 | }
86 |
87 | .login::before {
88 | background-image: url("../img/icons/icon-login.png");
89 | }
90 |
91 | .logout::after {
92 | background-image: url("../img/icons/icon-logout.png");
93 | }
94 |
95 | p::selection {
96 | color: #fff;
97 | background-color: #424242;
98 | }
99 |
100 | p::before {
101 | content: "\21A0";
102 | color: red;
103 | }
104 |
105 | p::after {
106 | content: "\21A9";
107 | color: green;
108 | }
109 |
110 | h2 {
111 | text-align: center;
112 | }
113 |
114 | h2::before {
115 | display: block;
116 | width: 60px;
117 | height: 2px;
118 | background-color: red;
119 | content: '';
120 | margin: 0 auto;
121 | } */
122 |
123 | .container {
124 | padding: 20px;
125 | background-color: #424242;
126 | }
127 |
128 | .clearfix::after {
129 | display: table;
130 | content: "";
131 | clear: both;
132 | }
133 |
134 | .red {
135 | float: right;
136 | width: 250px;
137 | height: 150px;
138 | background-color: #ff5252;
139 | }
140 |
141 | .green {
142 | float: right;
143 | width: 300px;
144 | height: 175px;
145 | background-color: #4caf50;
146 | }
147 |
148 | .blue {
149 | float: right;
150 | width: 350px;
151 | height: 200px;
152 | background-color: #2196f3;
153 | }
154 |
155 | /* POST */
156 | .post {
157 | width: 960px;
158 | outline: 2px solid #424242;
159 | }
160 |
161 | .post p {
162 | }
163 |
164 | .post img {
165 | margin-right: 15px;
166 | margin-bottom: 15px;
167 | float: left;
168 | }
169 |
--------------------------------------------------------------------------------
/module-04/webinar/img/icons/icon-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/webinar/img/icons/icon-login.png
--------------------------------------------------------------------------------
/module-04/webinar/img/icons/icon-logout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/webinar/img/icons/icon-logout.png
--------------------------------------------------------------------------------
/module-04/webinar/img/image.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-04/webinar/img/image.jpeg
--------------------------------------------------------------------------------
/module-04/webinar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Webinar 06-03
7 |
9 |
10 |
11 |
12 |
13 |
30 |
31 |
32 | Catalog
33 |
34 |
35 | Catalog item
36 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam earum voluptates
37 | veniam eum dolorum quo velit, illum aut molestias itaque est in quam qui
38 | nostrum et libero delectus debitis natus?
39 |
40 |
41 | Catalog item
42 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam earum voluptates
43 | veniam eum dolorum quo velit, illum aut molestias itaque est in quam qui
44 | nostrum et libero delectus debitis natus?
45 |
46 |
47 | Catalog item
48 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam earum voluptates
49 | veniam eum dolorum quo velit, illum aut molestias itaque est in quam qui
50 | nostrum et libero delectus debitis natus?
51 |
52 |
53 | Catalog item
54 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam earum voluptates
55 | veniam eum dolorum quo velit, illum aut molestias itaque est in quam qui
56 | nostrum et libero delectus debitis natus?
57 |
58 |
59 | Catalog item
60 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam earum voluptates
61 | veniam eum dolorum quo velit, illum aut molestias itaque est in quam qui
62 | nostrum et libero delectus debitis natus?
63 |
64 |
65 | Catalog item
66 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam earum voluptates
67 | veniam eum dolorum quo velit, illum aut molestias itaque est in quam qui
68 | nostrum et libero delectus debitis natus?
69 |
70 |
71 |
72 |
73 |
74 |
75 |
92 |
93 |
98 |
99 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/module-04/webinar/plan.txt:
--------------------------------------------------------------------------------
1 | Занятие #1:
2 | - Псевдоэлементы: before, after, selected.
3 | - Контентные (img) vs оформительные (background-img) изображения.
4 |
5 | - Float. Очистка обтекания.
6 | - Float как инструмент обтекания картинки текстом.
7 | - Сетка в семантической верстке. Фиксированная сетка на float.
8 |
9 | Занятие #2:
10 | - CSS-градиенты.
11 | - CSS-фильтры.
12 | - CSS-счетчики.
13 | - CSS-тени: text-shadow и box-shadow
--------------------------------------------------------------------------------
/module-05/practise/css/modal.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | min-height: 100vh;
13 | font-family: 'PT Sans', sans-serif;
14 | font-size: 16px;
15 | line-height: 1.5;
16 | }
17 |
18 | p {
19 | margin: 0;
20 | }
21 |
22 | .modal-backdrop {
23 | position: fixed;
24 | top: 0;
25 | left: 0;
26 | height: 100%;
27 | width: 100%;
28 | background-color: rgba(0, 0, 0, 0.3);
29 | }
30 |
31 | .modal {
32 | position: absolute;
33 | top: 50%;
34 | left: 50%;
35 | transform: translate(-50%, -50%);
36 | height: 300px;
37 | width: 300px;
38 | padding: 20px;
39 | background-color: #fff;
40 | }
41 |
--------------------------------------------------------------------------------
/module-05/practise/css/slider.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: 'PT Sans', sans-serif;
13 | font-size: 16px;
14 | line-height: 1.5;
15 | }
16 |
17 | img {
18 | display: block;
19 | max-width: 100%;
20 | height: auto;
21 | }
22 |
23 | .slider {
24 | position: relative;
25 | width: 800px;
26 | height: 400px;
27 | margin: auto;
28 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.3);
29 | }
30 |
31 | .slider-ctrl {
32 | position: absolute;
33 | top: 50%;
34 | transform: translateY(-50%);
35 | border: none;
36 | display: inline-block;
37 | width: 50px;
38 | height: 57px;
39 | background-color: #26b9e1;
40 | font-weight: 700;
41 | cursor: pointer;
42 | z-index: 1;
43 | }
44 |
45 | .slider-ctrl-prev {
46 | left: 0;
47 | }
48 |
49 | .slider-ctrl-next {
50 | right: 0;
51 | }
52 |
53 | .slides {
54 | margin: 0;
55 | padding: 0;
56 | list-style: none;
57 | }
58 |
59 | .slides-item {
60 | position: relative;
61 | }
62 |
63 | .slides-image {
64 | height: 400px;
65 | width: 100%;
66 | object-fit: cover;
67 | }
68 |
69 | .slides-descr {
70 | position: absolute;
71 | bottom: 10px;
72 | right: 10px;
73 | width: 350px;
74 | padding: 10px;
75 | margin: 0;
76 | background-color: #fff;
77 | }
78 |
79 | .slider-pagination {
80 | position: absolute;
81 | bottom: -40px;
82 | left: 50%;
83 | transform: translateX(-50%);
84 | }
85 |
86 | .slider-pagination-item {
87 | display: inline-block;
88 | width: 60px;
89 | height: 5px;
90 | background-color: #b0b8b9;
91 | cursor: pointer;
92 | }
93 |
94 | .slider-pagination-active {
95 | background-color: #20a8da;
96 | }
97 |
--------------------------------------------------------------------------------
/module-05/practise/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | padding: 20px;
13 | font-family: 'PT Sans', sans-serif;
14 | font-size: 16px;
15 | line-height: 1.5;
16 | }
17 |
18 | .card {
19 | position: relative;
20 | width: 224px;
21 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.3);
22 | }
23 |
24 | .overlay {
25 | position: absolute;
26 | width: 100%;
27 | height: 249px;
28 | background-color: rgb(76, 118, 255);
29 | opacity: 0;
30 | }
31 |
32 | .overlay-icon {
33 | position: absolute;
34 | bottom: 0;
35 | right: 0;
36 |
37 | display: inline-block;
38 | width: 30px;
39 | height: 30px;
40 | background-color: red;
41 | }
42 |
43 | .card:hover .overlay {
44 | opacity: 0.949;
45 | }
46 |
47 | .article {
48 | position: relative;
49 | width: 300px;
50 | padding-left: 70px;
51 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.3);
52 | }
53 |
54 | .article::before {
55 | position: absolute;
56 | left: 5px;
57 | top: 15px;
58 | display: inline-block;
59 | content: '';
60 | width: 50px;
61 | height: 50px;
62 | background-color: red;
63 | }
64 |
65 |
66 |
--------------------------------------------------------------------------------
/module-05/practise/img/pexels-photo-631950.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-05/practise/img/pexels-photo-631950.jpeg
--------------------------------------------------------------------------------
/module-05/practise/img/team-member.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-05/practise/img/team-member.jpg
--------------------------------------------------------------------------------
/module-05/practise/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Module 5 practise
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Lorem ipsum, dolor sit amet consectetur adipisicing elit. Modi, officia?
19 |
20 |
21 |
22 |
Chystine Hineu
23 |
Lead Designer
24 |
25 |
26 |
27 | Article title
28 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum doloribus hic
29 | excepturi amet accusamus et aspernatur numquam animi nisi repudiandae?
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/module-05/practise/modal.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Module 5 practise
9 |
11 |
12 |
13 |
14 |
15 |
16 |
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Suscipit iusto totam
17 | nihil ut obcaecati eos placeat hic laboriosam sapiente molestias, qui, libero
18 | quibusdam similique sunt vero, facilis impedit amet labore!
19 |
20 |
21 |
Вы действительно хотите удалить свой аккаунт?
22 |
Да
23 |
Нет
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/module-05/practise/slider.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Module 5 practise
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
PREV
18 |
NEXT
19 |
20 |
28 |
29 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/module-05/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: 'PT Sans', sans-serif;
13 | font-size: 16px;
14 | line-height: 1.5;
15 | }
16 |
17 | img {
18 | display: block;
19 | max-width: 100%;
20 | height: auto;
21 | }
22 |
23 | .card {
24 | width: 270px;
25 | padding: 10px;
26 | border: 2px solid #424242;
27 | text-align: center;
28 | }
29 |
30 | .card-content {
31 | position: relative;
32 | }
33 |
34 | .card-button {
35 | position: absolute;
36 | top: 0;
37 | right: 0;
38 | display: inline-block;
39 | border: none;
40 | padding: 0;
41 | margin: 0;
42 | width: 60px;
43 | height: 60px;
44 | background-color: transparent;
45 | cursor: pointer;
46 | background-image: url('../img/heart.svg');
47 | }
48 |
49 | .card-button:hover {
50 | background-image: url('../img/heart-hover.svg');
51 | }
52 |
53 | .card:hover .social-icons {
54 | opacity: 1;
55 | }
56 |
57 | .social-icons {
58 | opacity: 0;
59 | position: absolute;
60 | bottom: 0;
61 | left: 50%;
62 | transform: translateX(-50%);
63 | width: 100%;
64 | list-style: none;
65 | padding: 0;
66 | margin: 0;
67 | }
68 |
69 | .social-icons li {
70 | float: left;
71 | }
72 |
73 | .social-icons a {
74 | display: block;
75 | height: 50px;
76 | width: 50px;
77 | background-color: teal;
78 | }
79 |
80 | .social-icons a:hover {
81 | background-color: palevioletred;
82 | }
83 |
84 | .box {
85 | height: 150px;
86 | width: 150px;
87 | text-align: center;
88 | line-height: 150px;
89 | font-size: 60px;
90 | font-weight: 700;
91 | }
92 |
93 | /*
94 | Значение relative для свойства position позволяет
95 | элементам отображаться в пределах обычного потока документа,
96 | оставляя пространство для элемента по учмолчанию и
97 | не позволяя другим элементам его обтекать; однако оно
98 | позволяет изменять положение отображения элемента с
99 | помощью свойств смещения left|right|top|bottom.
100 | */
101 |
102 | /*
103 | Значение absolute для свойства position отличается
104 | от relative тем, что элемент с абсолютным значением
105 | position не будет отображаться в нормальном потоке
106 | документа, а исходное пространство и позиция, абсолютно
107 | позиционированного элемента, не будут сохранены.
108 |
109 | Кроме того, абсолютно позиционированные элементы
110 | перемещаются относительно их ближайшего родительского
111 | элемента с position отличным от static. Если такой
112 | родительский элемент не существует, абсолютно
113 | позиционированный элемент будет располагаться относительно
114 | элемента body.
115 | */
116 |
117 | body {
118 | padding: 20px;
119 | }
120 |
121 | .parent {
122 | position: relative;
123 | height: 500px;
124 | width: 500px;
125 | }
126 |
127 | /* .box {
128 | position: absolute;
129 | top: 50%;
130 | left: 50%;
131 | transform: translate(-50%, -50%);
132 |
133 | width: 20%;
134 | height: 20%;
135 |
136 | margin-top: -75px;
137 | margin-left: -75px;
138 | } */
139 |
140 | /*
141 | position fixed позиционирует элемент относительно
142 | окна браузера! Элемент как будто прибит к определенному
143 | месту на viewport.
144 | */
145 |
146 | /* .fixed {
147 | position: fixed;
148 | width: 150px;
149 | height: 150px;
150 | right: 150px;
151 | top: 100px;
152 | } */
153 |
154 | /* z-index */
155 |
156 | .box {
157 | position: absolute;
158 | }
159 |
160 | .box:nth-child(1) {
161 | top: 25px;
162 | left: 25px;
163 | z-index: 5;
164 | }
165 |
166 | .box:nth-child(2) {
167 | top: 50px;
168 | left: 50px;
169 | z-index: 4;
170 | }
171 |
172 | .box:nth-child(3) {
173 | top: 75px;
174 | left: 75px;
175 | z-index: 3;
176 | }
177 |
178 | /* Utils */
179 | .dodger {
180 | background-color: #1789fc;
181 | }
182 |
183 | .topaz {
184 | background-color: #ffd07b;
185 | }
186 |
187 | .gunmetal {
188 | background-color: #2b2d42;
189 | }
190 |
191 | .pantone {
192 | background-color: #ef233c;
193 | }
194 |
195 | .teal {
196 | background-color: teal;
197 | }
198 |
199 | .palered {
200 | background-color: palevioletred;
201 | }
202 |
203 | /* visually-hidden helper */
204 | .visually-hidden:not(:focus):not(:active),
205 | input[type='checkbox'].visually-hidden,
206 | input[type='radio'].visually-hidden {
207 | position: absolute;
208 | width: 1px;
209 | height: 1px;
210 | margin: -1px;
211 | border: 0;
212 | padding: 0;
213 | white-space: nowrap;
214 | clip-path: inset(100%);
215 | clip: rect(0 0 0 0);
216 | overflow: hidden;
217 | }
218 |
--------------------------------------------------------------------------------
/module-05/webinar/img/heart-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/module-05/webinar/img/heart.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/module-05/webinar/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-05/webinar/img/team-1.jpg
--------------------------------------------------------------------------------
/module-05/webinar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Webinar 13-03
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | Like
20 |
21 |
22 |
27 |
28 |
Maya Helswing
29 |
Lorem ipsum dolor sit amet consectetur adipisicing elit. Eaque tempora eius placeat
30 | dicta culpa similique nobis voluptatem, necessitatibus praesentium nostrum.
31 |
32 |
39 |
40 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/module-05/webinar/plan.txt:
--------------------------------------------------------------------------------
1 | https://codepen.io/Zerk/pen/YrwyXd
2 |
3 | Позиционирование
4 | - Гибкий механизм расположения элементов.
5 | - Не используется для создания сеток.
6 | - Используется для создания:
7 | - декоративных элементов (мелкие иконки)
8 | - многослойных элементов (всплывающие окна, «висящие сверху» управляющие элементы).
9 |
10 | Свойства позиционирования
11 | position /* режим позиционирования */
12 |
13 | /* координаты, по-разному работают в разных режимах позиционирования */
14 | top
15 | right
16 | bottom
17 | left
18 |
19 | z-index /* управление порядком слоёв */
20 |
21 | Режимы позиционирования
22 | position: static; /* по умолчанию */
23 | position: relative; /* относительное */
24 | position: absolute; /* абсолютное */
25 | position: fixed; /* фиксированное */
26 | position: sticky; /* закреплённое */
27 |
28 | Относительное позиционирование
29 | position: relative;
30 |
31 | Смещение элемента относительно своего положения.
32 | - Управление точкой отсчёта абсолютных элементов.
33 | - Участвует в «наслаивании».
34 |
35 | Смещение элемента
36 | /* смещение вправо-влево */
37 | right
38 | left
39 |
40 | /* смещение вверх-вниз */
41 | top
42 | bottom
43 |
44 | Абсолютное позиционирование
45 | position: absolute;
46 |
47 | Элемент выпадает из потока.
48 | - Сжимается под содержимое.
49 | - Гибкая модель позиционирования.
50 | - Свойства задания координат ведут себя по-другому.
51 | - Участвует в «наслаивании».
52 |
53 | Положение по умолчанию
54 | - Если абсолютному элементу не задавать никаких координат,
55 | то он привязывается левым верхним углом к той точке,
56 | где был бы, если бы был нормальным.
57 | - Если эта точка смещается — он смещается вместе с ней.
58 | - Из этой точки его можно смещать внешними отступами.
59 |
60 | Координаты абсолютного элемента
61 | - Привязка к верхнему левому углу
62 | - Привязка к правому нижнему углу
63 |
64 |
65 |
66 | Изменение точки привязки
67 | - Если среди родителей абсолютного элемента есть тег с относительным
68 | позиционированием, то абсолютный привязывается к нему.
69 | - Если относительных родителей несколько, то выбирается ближайший.
70 | - А если родителей с относительным позиционирвоанием нет,
71 | то блок позиционируется отнсоительно body
72 |
73 | Относительные координаты %
74 | - относитльно окна
75 | - относительно родителя
76 |
77 | Центровка
78 | - Если знаем ширину и высоту то отрицательный маржин
79 | - Если нет то transform
80 |
81 | Относительные размеры
82 | - Привязка происходит не только для точки отсчёта координат,
83 | но и для относительных размеров.
84 | /* ширина и высота абсолютного равны половине ширины и высоты родителя */
85 | position: absolute;
86 | width: 50%;
87 | height: 50%;
88 |
89 |
90 | Фиксированное позиционирование
91 | position: fixed;
92 |
93 | - Похоже на абсолютное позиционирование.
94 | - Отсчёт координат всегда привязан к окну браузера.
95 | - Элемент «прибивается» к точке экрана и не смещается даже при прокрутке.
96 | - Участвует в «наслаивании».
97 |
98 |
99 | Управление порядком слоёв
100 | z-index: 10;
101 |
102 | У кого больше индекс, тот и выше.
103 | - Выше тот, кто дальше в коде, если индекса нет или он одинаковый.
104 | - Индекс работает только для относительных, абсолютных и фиксированных.
105 |
106 |
107 | - Верстка выпадающего меню. (Геннадий)
108 | - Верстка модального окна. (Я)
109 | - Верстка слайдера. (Я)
110 | - Галлерея картинок 3x3 с нумерацией в углу над картинкой (css счетчик),
111 | и текстом по центру картинки (может быть)
112 |
--------------------------------------------------------------------------------
/module-06/practise/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/module-06/practise/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-06/practise/img/banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/banner.jpeg
--------------------------------------------------------------------------------
/module-06/practise/img/icons/features/icon-atom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/features/icon-atom.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/features/icon-bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/features/icon-bulb.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/features/icon-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/features/icon-case.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/features/icon-computer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/features/icon-computer.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/features/icon-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/features/icon-download.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/features/icon-tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/features/icon-tools.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/social/icon-facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/social/icon-facebook.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/social/icon-linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/social/icon-linkedin.png
--------------------------------------------------------------------------------
/module-06/practise/img/icons/social/icon-twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/icons/social/icon-twitter.png
--------------------------------------------------------------------------------
/module-06/practise/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/logo.png
--------------------------------------------------------------------------------
/module-06/practise/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/team-1.jpg
--------------------------------------------------------------------------------
/module-06/practise/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/team-2.jpg
--------------------------------------------------------------------------------
/module-06/practise/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/team-3.jpg
--------------------------------------------------------------------------------
/module-06/practise/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-06/practise/img/team-4.jpg
--------------------------------------------------------------------------------
/module-06/practise/materials.txt:
--------------------------------------------------------------------------------
1 | https://stories.jotform.com/how-to-use-css-animations-like-a-pro-dfacc1e97338
2 |
3 | https://css-tricks.com/using-multi-step-animations-transitions/
4 |
--------------------------------------------------------------------------------
/module-06/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: 'PT Sans', sans-serif;
13 | font-size: 16px;
14 | line-height: 1.5;
15 | }
16 |
17 | img {
18 | display: block;
19 | max-width: 100%;
20 | height: auto;
21 | }
22 |
23 | .about {
24 | width: 960px;
25 | margin: 0 auto;
26 | }
27 |
28 | .about-list {
29 | display: flex;
30 | flex-wrap: wrap;
31 | padding: 0;
32 | margin: 0;
33 | list-style: none;
34 | }
35 |
36 | .masthead {
37 | min-height: 100px;
38 | padding: 0 20px;
39 | display: flex;
40 | justify-content: space-between;
41 | align-items: center;
42 | }
43 |
44 | .logo {
45 | background-color: palegoldenrod;
46 | }
47 |
48 | .masthead ul {
49 | display: flex;
50 | flex-wrap: wrap;
51 | width: 320px;
52 | padding: 0;
53 | margin: 0;
54 | list-style: none;
55 | }
56 |
57 | .masthead li {
58 | padding: 10px 20px;
59 | background-color: palevioletred;
60 | }
61 |
62 | .masthead li:hover {
63 | background-color: #212121;
64 | color: #fff;
65 | }
66 |
67 | .about-item {
68 | flex-basis: 300px;
69 | padding: 10px;
70 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.3);
71 | }
72 |
73 | .about-item:not(:nth-child(3n)) {
74 | margin-right: 30px;
75 | }
76 |
77 | .about-item:not(:nth-last-child(-n + 3)) {
78 | margin-bottom: 30px;
79 | }
80 |
81 | .wrapper-1 {
82 | min-height: 100vh;
83 | display: flex;
84 | }
85 |
86 | .sidebar {
87 | background-color: teal;
88 | flex-basis: 250px;
89 | }
90 |
91 | .content {
92 | background-color: orange;
93 | flex-grow: 1;
94 | }
95 |
96 | .box {
97 | display: flex;
98 | height: 500px;
99 | width: 500px;
100 | background-color: #212121;
101 | }
102 |
103 | .inner {
104 | margin: auto;
105 | height: 150px;
106 | width: 150px;
107 | background-color: palegoldenrod;
108 | }
109 |
110 | .wrapper {
111 | min-height: 100vh;
112 | display: flex;
113 | flex-direction: column;
114 | }
115 |
116 | header {
117 | background-color: teal;
118 | }
119 |
120 | main {
121 | flex-grow: 1;
122 | background-color: aqua;
123 | }
124 |
125 | footer {
126 | background-color: palevioletred;
127 | }
128 |
129 | .flex-container {
130 | width: 1000px;
131 | margin: auto;
132 | display: flex;
133 | padding: 10px;
134 | background-color: #212121;
135 | }
136 |
137 | /* - Свойства flex-элемента:
138 | width vs flex-basis,
139 | align-self,
140 | flex-grow,
141 | flex-shrink, order.
142 | */
143 |
144 | .flex-child {
145 | /* flex-basis: 200px;
146 | flex-grow: 1;
147 | flex-shrink: 0; */
148 | /* flex: 1 0 200px; */
149 | flex-basis: 100px;
150 |
151 | height: 100px;
152 | font-size: 40px;
153 | color: #fff;
154 | text-align: center;
155 | line-height: 100px;
156 | background-color: teal;
157 | }
158 |
159 | .flex-child:nth-child(1) {
160 | background-color: #214e34;
161 | }
162 |
163 | .flex-child:nth-child(2) {
164 | background-color: #ffb140;
165 | }
166 |
167 | .flex-child:nth-child(3) {
168 | background-color: #d1462f;
169 | }
170 |
171 | .flex-child:nth-child(4) {
172 | background-color: #197bbd;
173 | }
174 |
--------------------------------------------------------------------------------
/module-06/webinar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Webinar 20-03
9 |
10 |
12 |
13 |
14 |
15 |
16 |
17 |
37 |
38 |
39 | About Us
40 |
41 |
42 |
43 | Random title
44 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
45 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
46 |
47 |
48 | Random title
49 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
50 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
51 |
52 |
53 | Random title
54 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
55 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
56 |
57 |
58 | Random title
59 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
60 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
61 |
62 |
63 | Random title
64 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
65 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
66 |
67 |
68 | Random title
69 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
70 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
71 |
72 |
73 | Random title
74 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
75 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
76 |
77 |
78 | Random title
79 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
80 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
81 |
82 |
83 | Random title
84 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dolor dolores distinctio
85 | libero debitis impedit dolorum. Error accusantium eveniet amet fugit?
86 |
87 |
88 |
89 |
90 |
94 |
95 |
100 |
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/module-06/webinar/plan.txt:
--------------------------------------------------------------------------------
1 | http://css-live.ru/wp-content/uploads/2014/10/flexboxsheet-small__5.png
2 |
3 | - Знакомство с Flexbox
4 | - display: flex
5 | - Понятие flex-контейнера и flex-элемента.
6 | - Flex-оси и flex-direction.
7 | - Выравнивание flex-элементов на оси, justify-content, align-items.
8 | - Многострочные flex-контейнеры и align-content.
9 | - Свойства flex-элемента: width vs flex-basis, align-self, flex-grow, flex-shrink, order.
10 |
11 | use cases:
12 | - sticky footer
13 | - grid
14 | - center stuff
15 | - equal height columns
16 | - fixed sidebar + rest content
17 | - infinity
18 |
--------------------------------------------------------------------------------
/module-07/practise/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/module-07/practise/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-07/practise/css/price-filter.css:
--------------------------------------------------------------------------------
1 | .price-filter {
2 | width: 240px;
3 | margin: 50px auto;
4 | }
5 |
6 | .range-controls {
7 | position: relative;
8 | display: flex;
9 | align-items: center;
10 | height: 80px;
11 | margin-bottom: 15px;
12 | padding: 0 20px;
13 | background-color: #f1f1f1;
14 | border-radius: 5px;
15 | overflow: hidden;
16 | }
17 |
18 | .range-controls .scale {
19 | flex: 0 0 100%;
20 | height: 3px;
21 | background-color: #ccc;
22 | }
23 |
24 | .range-controls .bar {
25 | height: 3px;
26 | background-color: palevioletred;
27 | }
28 |
29 | .range-toggle {
30 | display: inline-block;
31 | position: absolute;
32 | top: 50%;
33 | transform: translatey(-50%);
34 | width: 22px;
35 | height: 22px;
36 | border: 8px solid #ffffff;
37 | background-color: #ababab;
38 | border-radius: 50%;
39 | cursor: pointer;
40 | box-shadow: 0 2px 1px 0 #cfcfcf;
41 | }
42 |
43 | .range-toggle-min {
44 | left: 20px;
45 | }
46 |
47 | .range-toggle-max {
48 | left: 150px;
49 | }
50 |
51 | .price-controls {
52 | display: flex;
53 | justify-content: space-between;
54 | }
55 |
56 | .price-controls input {
57 | display: inline-block;
58 | width: 80px;
59 | padding: 8px 10px;
60 | margin-left: 10px;
61 | border: none;
62 | background-color: #f1f1f1;
63 |
64 | font-size: 16px;
65 | font-family: Roboto, sans-serif;
66 | font-weight: 400;
67 | font-style: normal;
68 | text-align: center;
69 | color: #212121;
70 | border-radius: 5px;
71 | }
72 |
73 | .price-controls label {
74 | display: inline-block;
75 | vertical-align: top;
76 | cursor: pointer;
77 | }
78 |
--------------------------------------------------------------------------------
/module-07/practise/css/size-filter.css:
--------------------------------------------------------------------------------
1 | .filter-form {
2 | width: 294px;
3 | padding: 0 16px;
4 | }
5 |
6 | .size-filter-title {
7 | color: #2a2a2a;
8 | font-size: 16px;
9 | font-weight: 600;
10 | line-height: 38px;
11 | text-transform: uppercase;
12 | border-bottom: 1px solid #2a2a2a;
13 | }
14 |
15 | .size-filter-list {
16 | list-style: none;
17 | padding: 0;
18 | margin: 0;
19 | }
20 |
21 | .size-filter-label {
22 | display: flex;
23 | align-items: center;
24 | cursor: pointer;
25 | }
26 |
27 | .size-filter-label::before {
28 | display: inline-block;
29 | content: '';
30 | width: 14px;
31 | height: 14px;
32 | margin-right: 12px;
33 | background-image: url('../img/icon-square.svg');
34 | background-repeat: no-repeat;
35 | background-size: contain;
36 | background-position: center;
37 | }
38 |
39 | .size-filter-item-size {
40 | font-size: 13px;
41 | font-weight: 400;
42 | line-height: 34px;
43 | color: #2a2a2a;
44 | text-transform: uppercase;
45 | }
46 |
47 | .size-filter-item-count {
48 | display: inline-block;
49 | width: 23px;
50 | height: 23px;
51 | margin-left: auto;
52 | background-color: #2a2a2a;
53 | border-radius: 50%;
54 | color: #ffffff;
55 | font-size: 13px;
56 | font-weight: 500;
57 | text-align: center;
58 | line-height: 23px;
59 | }
60 |
61 | .size-filter-check:checked + .size-filter-label {
62 | padding-left: 12px;
63 | }
64 |
65 | .size-filter-check:checked + .size-filter-label::before {
66 | background-image: url('../img/icon-check.svg');
67 | }
68 |
69 | .size-filter-check:checked + .size-filter-label .size-filter-item-size {
70 | color: #d58e32;
71 | }
72 |
73 | .size-filter-check:checked + .size-filter-label .size-filter-item-count {
74 | background-color: #d58e32;
75 | }
76 |
--------------------------------------------------------------------------------
/module-07/practise/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: 'Raleway', 'Arial', sans-serif;
13 | color: #6c7279;
14 | font-size: 14px;
15 | line-height: 21px;
16 | }
17 |
18 | img {
19 | display: block;
20 | max-width: 100%;
21 | height: auto;
22 | }
23 |
24 | /* visually-hidden helper */
25 | .visually-hidden:not(:focus):not(:active),
26 | input[type='checkbox'].visually-hidden,
27 | input[type='radio'].visually-hidden {
28 | position: absolute;
29 | width: 1px;
30 | height: 1px;
31 | margin: -1px;
32 | border: 0;
33 | padding: 0;
34 | white-space: nowrap;
35 | clip-path: inset(100%);
36 | clip: rect(0 0 0 0);
37 | overflow: hidden;
38 | }
39 |
--------------------------------------------------------------------------------
/module-07/practise/img/icon-check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/module-07/practise/img/icon-square.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/module-07/practise/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Practise
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
64 |
65 |
66 |
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------
/module-07/practise/mockup/Products Details Page_3_Grid.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-07/practise/mockup/Products Details Page_3_Grid.psd
--------------------------------------------------------------------------------
/module-07/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: 'PT Sans', sans-serif;
13 | font-size: 16px;
14 | line-height: 1.5;
15 | }
16 |
17 | img {
18 | display: block;
19 | max-width: 100%;
20 | height: auto;
21 | }
22 |
23 | .profile-form {
24 | display: flex;
25 | flex-direction: column;
26 | width: 600px;
27 | margin: 100px auto;
28 | box-shadow: 0 0 3px 3px rgba(0, 0, 0, 0.3);
29 | padding: 20px;
30 | }
31 |
32 | .profile-form ul {
33 | list-style: none;
34 | }
35 |
36 | .profile-form input {
37 | border: 0;
38 | border-bottom: 2px solid #212121;
39 | margin-bottom: 15px;
40 | }
41 |
42 | .profile-form input::placeholder {
43 | color: #424242;
44 | }
45 |
46 | .profile-form input:focus {
47 | outline: 0;
48 | padding-bottom: 5px;
49 | }
50 |
51 | .screen-size-list input:checked + label {
52 | background-color: red;
53 | }
54 |
55 | .profile-form input[type='email']:valid,
56 | .profile-form input[type='password']:valid {
57 | border-color: green;
58 | }
59 |
60 | .profile-form input[type='email']:invalid,
61 | .profile-form input[type='password']:invalid {
62 | border-color: red;
63 | }
64 |
65 | .profile-form button {
66 | border: none;
67 | padding: 0;
68 | cursor: pointer;
69 | margin-bottom: 10px;
70 | background-color: #212121;
71 | color: #fff;
72 | padding: 5px 10px;
73 | }
74 |
75 | textarea {
76 | resize: none;
77 | }
78 |
79 | /* CUSTOM CHECKBOXES */
80 | .custom-list label {
81 | display: flex;
82 | align-items: center;
83 | cursor: pointer;
84 | }
85 |
86 | .custom-list label::before {
87 | display: inline-block;
88 | content: '';
89 | width: 15px;
90 | height: 15px;
91 | border: 2px solid #212121;
92 | margin-right: 10px;
93 | }
94 |
95 | .custom-list input[type='checkbox']:checked + label::before {
96 | /* background-color: orange; */
97 | background-image: url('https://image.flaticon.com/icons/svg/128/128384.svg');
98 | background-repeat: no-repeat;
99 | background-size: contain;
100 | background-position: center;
101 | }
102 |
103 | /* visually-hidden helper */
104 | .visually-hidden:not(:focus):not(:active),
105 | input[type='checkbox'].visually-hidden,
106 | input[type='radio'].visually-hidden {
107 | position: absolute;
108 | width: 1px;
109 | height: 1px;
110 | margin: -1px;
111 | border: 0;
112 | padding: 0;
113 | white-space: nowrap;
114 | clip-path: inset(100%);
115 | clip: rect(0 0 0 0);
116 | overflow: hidden;
117 | }
118 |
--------------------------------------------------------------------------------
/module-07/webinar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Webinar 27-03
9 |
10 |
12 |
13 |
14 |
15 |
16 |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/module-07/webinar/plan.txt:
--------------------------------------------------------------------------------
1 | Занятие #1:
2 | - Формы, валидная и семантичная верстка форм.
3 | - input всевозможных типов, от text до range.
4 | - label
5 | - placeholder и его стилизация.
6 | - Важность атрибута name.
7 | - autofocus
8 | - required
9 | - checkbox и radio
10 | - fieldset и legend
11 | - button:submit и button:reset
12 | - select, optgroup, datalist
13 |
14 | https://www.artlebedev.ru/technogrette/etc/forms/
15 | https://developers.google.com/web/fundamentals/design-and-ux/input/forms/
16 | https://code.tutsplus.com/ru/tutorials/the-30-css-selectors-you-must-memorize--net-16048
17 |
18 | Занятие #2:
19 | - Подключение и работа с локальными шрифтами.
20 | - Использование одного локального шрифта с разным начертанием или жирностью.
21 | - Абсолютные и относительные единицы CSS.
22 |
--------------------------------------------------------------------------------
/module-08/practise/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/module-08/practise/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-08/practise/css/media.css:
--------------------------------------------------------------------------------
1 | @media (max-width: 599px) {
2 | .page-header {
3 | margin-bottom: 70px;
4 | }
5 |
6 | .page-nav {
7 | padding: 20px 0;
8 | }
9 |
10 | .site-logo {
11 | margin-bottom: 20px;
12 | }
13 |
14 | .site-logo img {
15 | margin: 0 auto;
16 | }
17 |
18 | .site-navigation a {
19 | padding: 5px 0;
20 | font-size: 24px;
21 | line-height: 1;
22 | text-align: center;
23 | }
24 |
25 | .banner {
26 | display: none;
27 | }
28 |
29 | .features-list-item:not(:last-child) {
30 | margin-bottom: 40px;
31 | }
32 |
33 | .team-list-item {
34 | margin-left: auto;
35 | margin-right: auto;
36 | }
37 |
38 | .team-list-item:not(:last-child) {
39 | margin-bottom: 40px;
40 | }
41 | }
42 |
43 | @media (min-width: 600px) {
44 | .container {
45 | width: 600px;
46 | }
47 |
48 | .page-nav {
49 | display: flex;
50 | flex-direction: column;
51 | justify-content: center;
52 | align-items: center;
53 | }
54 |
55 | .site-navigation {
56 | display: flex;
57 | justify-content: space-between;
58 | }
59 |
60 | .banner {
61 | display: flex;
62 | justify-content: center;
63 | align-items: center;
64 | min-height: 200px;
65 | margin-bottom: 120px;
66 |
67 | background-image: linear-gradient(
68 | to right,
69 | rgba(239, 59, 54, 0.3),
70 | rgba(255, 255, 255, 0.3)
71 | ),
72 | linear-gradient(to top, rgba(0, 210, 255, 0.3), rgba(145, 140, 170, 0.3)),
73 | url('../img/banner.jpeg');
74 | background-repeat: no-repeat;
75 | background-size: cover;
76 | background-position: center;
77 | }
78 |
79 | .slider {
80 | height: 150px;
81 | background-color: #fff;
82 | }
83 |
84 | .features-list {
85 | display: flex;
86 | flex-wrap: wrap;
87 | justify-content: space-between;
88 | }
89 |
90 | .features-list-item {
91 | flex: 0 0 270px;
92 | }
93 |
94 | .team-list {
95 | display: flex;
96 | justify-content: space-between;
97 | flex-wrap: wrap;
98 | }
99 |
100 | .team-list-item {
101 | flex: 0 0 270px;
102 | }
103 | }
104 |
105 | @media (min-width: 600px) and (max-width: 1169px) {
106 | .site-logo {
107 | margin-bottom: 30px;
108 | }
109 |
110 | .site-navigation {
111 | width: 100%;
112 | }
113 |
114 | .features-list-item:not(:nth-last-child(-n + 2)),
115 | .team-list-item:not(:nth-last-child(-n + 2)) {
116 | margin-bottom: 40px;
117 | }
118 | }
119 |
120 | @media (min-width: 1170px) {
121 | .container {
122 | width: 1170px;
123 | }
124 |
125 | .page-nav {
126 | flex-direction: row;
127 | justify-content: space-between;
128 | }
129 |
130 | .site-navigation {
131 | flex: 0 0 600px;
132 | }
133 |
134 | .banner {
135 | min-height: 400px;
136 | }
137 |
138 | .features-list-item {
139 | flex: 0 0 370px;
140 | margin-bottom: 72px;
141 | padding: 0 38px;
142 | }
143 |
144 | .features-list-item:nth-last-child(-n + 3) {
145 | margin-bottom: 0;
146 | }
147 | }
148 |
--------------------------------------------------------------------------------
/module-08/practise/img/banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/banner.jpeg
--------------------------------------------------------------------------------
/module-08/practise/img/icons/features/icon-atom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/features/icon-atom.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/features/icon-bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/features/icon-bulb.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/features/icon-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/features/icon-case.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/features/icon-computer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/features/icon-computer.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/features/icon-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/features/icon-download.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/features/icon-tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/features/icon-tools.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/social/icon-facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/social/icon-facebook.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/social/icon-linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/social/icon-linkedin.png
--------------------------------------------------------------------------------
/module-08/practise/img/icons/social/icon-twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/icons/social/icon-twitter.png
--------------------------------------------------------------------------------
/module-08/practise/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/logo.png
--------------------------------------------------------------------------------
/module-08/practise/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/team-1.jpg
--------------------------------------------------------------------------------
/module-08/practise/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/team-2.jpg
--------------------------------------------------------------------------------
/module-08/practise/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/team-3.jpg
--------------------------------------------------------------------------------
/module-08/practise/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/practise/img/team-4.jpg
--------------------------------------------------------------------------------
/module-08/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: 'PT Sans', sans-serif;
13 | font-size: 16px;
14 | line-height: 1.5;
15 | }
16 |
17 | img {
18 | display: block;
19 | max-width: 100%;
20 | height: auto;
21 | }
22 |
23 | .container {
24 | width: 320px;
25 | padding: 0 10px;
26 | margin: auto;
27 | }
28 |
29 | .list {
30 | /* margin: -10px; */
31 | padding: 0;
32 | list-style: none;
33 | }
34 |
35 | .list-item {
36 | /* margin: 10px; */
37 | width: 300px;
38 | padding: 5px;
39 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.3);
40 | color: #212121;
41 | }
42 |
43 | .section .title {
44 | font-size: 40px;
45 | color: #212121;
46 | }
47 |
48 | /* MEDIA */
49 |
50 | @media (max-width: 767px) {
51 | .list-item:not(:last-child) {
52 | margin-bottom: 20px;
53 | }
54 | }
55 |
56 | @media screen and (min-width: 768px) {
57 | .container {
58 | width: 680px;
59 | }
60 |
61 | .list {
62 | display: flex;
63 | flex-wrap: wrap;
64 | justify-content: space-between;
65 | }
66 |
67 | .list-item {
68 | width: 320px;
69 | }
70 | }
71 |
72 | @media (min-width: 768px) and (max-width: 1199px) {
73 | .list-item:not(:nth-last-child(-n + 2)) {
74 | margin-bottom: 20px;
75 | }
76 | }
77 |
78 | @media screen and (min-width: 1200px) {
79 | .container {
80 | width: 1200px;
81 | }
82 |
83 | .list-item {
84 | width: 280px;
85 | }
86 |
87 | .list-item:not(:nth-last-child(-n + 4)) {
88 | margin-bottom: 20px;
89 | }
90 | }
91 |
92 | /* visually-hidden helper */
93 | .visually-hidden:not(:focus):not(:active),
94 | input[type='checkbox'].visually-hidden,
95 | input[type='radio'].visually-hidden {
96 | position: absolute;
97 | width: 1px;
98 | height: 1px;
99 | margin: -1px;
100 | border: 0;
101 | padding: 0;
102 | white-space: nowrap;
103 | clip-path: inset(100%);
104 | clip: rect(0 0 0 0);
105 | overflow: hidden;
106 | }
107 |
--------------------------------------------------------------------------------
/module-08/webinar/img/image-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/webinar/img/image-1.jpg
--------------------------------------------------------------------------------
/module-08/webinar/img/image-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/webinar/img/image-2.jpg
--------------------------------------------------------------------------------
/module-08/webinar/img/image-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/webinar/img/image-3.jpg
--------------------------------------------------------------------------------
/module-08/webinar/img/image-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-08/webinar/img/image-4.jpg
--------------------------------------------------------------------------------
/module-08/webinar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
11 |
12 |
Webinar 03-04
13 |
14 |
15 |
16 |
17 | Cute animals
18 |
19 |
20 |
21 |
22 | Article 1
23 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. Animi similique,
24 | quia ipsum distinctio quod cumque unde odio illum! In ipsa sint facilis
25 | veritatis fugiat fugit deleniti consequuntur natus optio mollitia.
26 |
27 |
28 |
29 | Article 2
30 | Aut ad laboriosam repellendus assumenda repudiandae. Velit ut ab esse quisquam
31 | ipsa necessitatibus fugiat doloribus corrupti laboriosam, sed autem culpa
32 | repellendus omnis et, nihil dignissimos laborum sit quos iste dolores!
33 |
34 |
35 |
36 | Article 2
37 | Aut ad laboriosam repellendus assumenda repudiandae. Velit ut ab esse quisquam
38 | ipsa necessitatibus fugiat doloribus corrupti laboriosam, sed autem culpa
39 | repellendus omnis et, nihil dignissimos laborum sit quos iste dolores!
40 |
41 |
42 |
43 | Article 2
44 | Aut ad laboriosam repellendus assumenda repudiandae. Velit ut ab esse quisquam
45 | ipsa necessitatibus fugiat doloribus corrupti laboriosam, sed autem culpa
46 | repellendus omnis et, nihil dignissimos laborum sit quos iste dolores!
47 |
48 |
49 |
50 | Article 2
51 | Aut ad laboriosam repellendus assumenda repudiandae. Velit ut ab esse quisquam
52 | ipsa necessitatibus fugiat doloribus corrupti laboriosam, sed autem culpa
53 | repellendus omnis et, nihil dignissimos laborum sit quos iste dolores!
54 |
55 |
56 |
57 | Article 2
58 | Aut ad laboriosam repellendus assumenda repudiandae. Velit ut ab esse quisquam
59 | ipsa necessitatibus fugiat doloribus corrupti laboriosam, sed autem culpa
60 | repellendus omnis et, nihil dignissimos laborum sit quos iste dolores!
61 |
62 |
63 |
64 | Article 3
65 | Quibusdam nisi obcaecati natus corporis deserunt voluptas dolorem maxime
66 | sunt sed corrupti. Ratione iste corporis laborum tempora nostrum, repellendus
67 | quo, et nemo molestiae hic enim eaque ipsam consequuntur. Eos, tenetur?
68 |
69 |
70 |
71 | Article 4
72 | Molestiae ducimus eaque perspiciatis in explicabo et ab alias ea iusto doloremque?
73 | Perspiciatis est ipsa, vel nobis illum tenetur! Repellendus doloremque
74 | velit excepturi. Inventore labore in cumque quisquam iste nisi.
75 |
76 |
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/module-08/webinar/todo.txt:
--------------------------------------------------------------------------------
1 | - Chrome DevTools для работы с мобильной версткой.
2 |
3 | - viewport meta tag.
4 | https://itchief.ru/lessons/html-and-css/meta-viewport-how-it-works
5 | https://developer.mozilla.org/ru/docs/Mozilla/Mobile/Viewport_meta_tag
6 |
7 | - сеточный вьюпорт и визуальный вьюпорт
8 | https://monosnap.com/file/Gdqfeei7GIbuZ2uAmR6kjCP64cNJAf
9 | медиа работают на сеточный, нам надо на визуальный,
10 | для этого
11 | viewport width(сеточный)=device-width(визуальный)
12 | initial-scale=1 тоже самое что выше... для других браузеров
13 |
14 | https://www.w3.org/TR/css-device-adapt-1/#at-ruledef-viewport
15 | @viewport {
16 | width: device-width;
17 | zoom: 1.0
18 | }
19 |
20 | - Медиаправила
21 | https://css-tricks.com/logic-in-media-queries/
22 | https://developer.mozilla.org/en-US/docs/Web/CSS/@media
23 |
24 | - Философия отзывчивой и адаптивной верстки.
25 | https://codepen.io/Zerk/pen/Ovoyoo?editors=0110
26 | https://codepen.io/Zerk/pen/xYYjdz
27 |
28 | - mobile-first CSS
29 | тесты на реальных девайсах
30 | оптимизация веса, загрузка, производительность
31 | верстка
32 | прячем контент
33 | разное оформление(на мобильном все больше)
34 | разное положение элементов интерфейса
35 |
36 | - Адаптивная сетка
37 |
38 |
--------------------------------------------------------------------------------
/module-10/practise/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/module-10/practise/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-10/practise/img/banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/banner.jpeg
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-atom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-atom.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-atom@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-atom@2x.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-bulb.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-bulb@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-bulb@2x.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-case.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-case@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-case@2x.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-computer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-computer.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-computer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-computer@2x.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-download.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-download@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-download@2x.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-tools.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/features/icon-tools@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/icons/features/icon-tools@2x.png
--------------------------------------------------------------------------------
/module-10/practise/img/icons/social/sprite.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icon-facebook
5 |
6 |
7 |
8 |
9 | icon-linkedin
10 |
11 |
12 |
13 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/module-10/practise/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/logo.png
--------------------------------------------------------------------------------
/module-10/practise/img/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/logo@2x.png
--------------------------------------------------------------------------------
/module-10/practise/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-1.jpg
--------------------------------------------------------------------------------
/module-10/practise/img/team-1@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-1@2x.jpg
--------------------------------------------------------------------------------
/module-10/practise/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-2.jpg
--------------------------------------------------------------------------------
/module-10/practise/img/team-2@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-2@2x.jpg
--------------------------------------------------------------------------------
/module-10/practise/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-3.jpg
--------------------------------------------------------------------------------
/module-10/practise/img/team-3@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-3@2x.jpg
--------------------------------------------------------------------------------
/module-10/practise/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-4.jpg
--------------------------------------------------------------------------------
/module-10/practise/img/team-4@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/practise/img/team-4@2x.jpg
--------------------------------------------------------------------------------
/module-10/webinar/css/styles.css:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: 'PT Sans', sans-serif;
13 | }
14 |
15 | img {
16 | display: block;
17 | max-width: 100%;
18 | height: auto;
19 | }
20 |
21 | .visually-hidden:not(:focus):not(:active),
22 | input[type='checkbox'].visually-hidden,
23 | input[type='radio'].visually-hidden {
24 | position: absolute;
25 | width: 1px;
26 | height: 1px;
27 | margin: -1px;
28 | border: 0;
29 | padding: 0;
30 | white-space: nowrap;
31 | clip-path: inset(100%);
32 | clip: rect(0 0 0 0);
33 | overflow: hidden;
34 | }
35 |
36 | /* .icon {
37 | display: inline-block;
38 | width: 79px;
39 | height: 60px;
40 | margin: 20px;
41 | background-image: url('../img/icon.png');
42 | background-size: cover;
43 | background-position: center;
44 | }
45 |
46 | @media (min-resolution: 192dpi), (min-resolution: 2dppx) {
47 | .icon {
48 | background-image: url('../img/icon@2x.png');
49 | }
50 | } */
51 |
52 | /* .icon-clock {
53 | display: inline-block;
54 | width: 100px;
55 | height: 100px;
56 | background-image: url('../img/icon-clock.svg');
57 | background-size: cover;
58 | background-position: center;
59 | }
60 |
61 | .svg-clock {
62 | fill: palevioletred;
63 | stroke: black;
64 | }
65 |
66 | .svg-clock:hover {
67 | fill: teal;
68 | stroke: orange;
69 | } */
70 |
71 | .icon {
72 | display: inline-block;
73 | fill: teal;
74 | }
75 |
76 | .icon:hover {
77 | fill: palevioletred;
78 | }
79 |
--------------------------------------------------------------------------------
/module-10/webinar/hw-10-svg-icons.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/webinar/hw-10-svg-icons.zip
--------------------------------------------------------------------------------
/module-10/webinar/img/icon-clock.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/module-10/webinar/img/icon-graph.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/module-10/webinar/img/icon-home.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/module-10/webinar/img/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/webinar/img/icon.png
--------------------------------------------------------------------------------
/module-10/webinar/img/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/webinar/img/icon@2x.png
--------------------------------------------------------------------------------
/module-10/webinar/img/photo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/webinar/img/photo.jpg
--------------------------------------------------------------------------------
/module-10/webinar/img/photo@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/webinar/img/photo@2x.jpg
--------------------------------------------------------------------------------
/module-10/webinar/img/symbol-defs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/module-10/webinar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Webinar 17-04
9 |
10 |
11 |
12 |
13 |
14 |
15 |
29 |
33 |
34 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/module-10/webinar/materials.md:
--------------------------------------------------------------------------------
1 | # Допмат
2 |
3 | * https://www.sarasoueidan.com/blog/svg-coordinate-systems/
4 |
--------------------------------------------------------------------------------
/module-10/webinar/Адаптивная графика. Retina..pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-10/webinar/Адаптивная графика. Retina..pdf
--------------------------------------------------------------------------------
/module-11/practise/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | # General settings for whole project
4 | [*]
5 |
6 | indent_style = space
7 | indent_size = 2
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 |
16 |
--------------------------------------------------------------------------------
/module-11/practise/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
--------------------------------------------------------------------------------
/module-11/practise/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-11/practise/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Alexander Repeta
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/module-11/practise/build/img/banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/banner.jpeg
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-atom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-atom.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-atom@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-atom@2x.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-bulb.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-bulb@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-bulb@2x.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-case.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-case@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-case@2x.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-computer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-computer.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-computer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-computer@2x.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-download.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-download@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-download@2x.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-tools.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/icons/features/icon-tools@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/icons/features/icon-tools@2x.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/logo.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/logo@2x.png
--------------------------------------------------------------------------------
/module-11/practise/build/img/sprite.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-1.jpg
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-1@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-1@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-2.jpg
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-2@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-2@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-3.jpg
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-3@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-3@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-4.jpg
--------------------------------------------------------------------------------
/module-11/practise/build/img/team-4@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/build/img/team-4@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/gulpfile.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const gulp = require('gulp');
4 | const sass = require('gulp-sass');
5 | const postcss = require('gulp-postcss');
6 | const autoprefixer = require('autoprefixer');
7 | const cssnano = require('gulp-cssnano');
8 | const gcmq = require('gulp-group-css-media-queries');
9 | const del = require('del');
10 | const htmlmin = require('gulp-htmlmin');
11 | const imagemin = require('gulp-imagemin');
12 | const svgstore = require('gulp-svgstore');
13 | const plumber = require('gulp-plumber');
14 | const rigger = require('gulp-rigger');
15 | const stylelint = require('gulp-stylelint');
16 | const babel = require('gulp-babel');
17 | const uglify = require('gulp-uglify');
18 | const concat = require('gulp-concat');
19 | const rename = require('gulp-rename');
20 | const browserSync = require('browser-sync').create();
21 | const sequence = require('run-sequence');
22 |
23 | gulp.task('html', () =>
24 | gulp
25 | .src('./src/*.html')
26 | .pipe(rigger())
27 | .pipe(
28 | htmlmin({
29 | collapseWhitespace: true,
30 | }),
31 | )
32 | .pipe(gulp.dest('./build')),
33 | );
34 |
35 | gulp.task('styles', () =>
36 | gulp
37 | .src('./src/sass/styles.scss')
38 | .pipe(plumber())
39 | .pipe(
40 | stylelint({
41 | reporters: [{ formatter: 'string', console: true }],
42 | }),
43 | )
44 | .pipe(sass())
45 | .pipe(postcss([autoprefixer()]))
46 | .pipe(gcmq())
47 | .pipe(gulp.dest('./build/css'))
48 | .pipe(cssnano())
49 | .pipe(rename('styles.min.css'))
50 | .pipe(gulp.dest('./build/css'))
51 | .pipe(browserSync.stream()),
52 | );
53 |
54 | gulp.task('scripts', () =>
55 | gulp
56 | .src('./src/js/**/*.js')
57 | .pipe(plumber())
58 | .pipe(
59 | babel({
60 | presets: ['env'],
61 | }),
62 | )
63 | .pipe(concat('scripts.js'))
64 | .pipe(gulp.dest('./build/js'))
65 | .pipe(uglify())
66 | .pipe(rename('scripts.min.js'))
67 | .pipe(gulp.dest('./build/js')),
68 | );
69 |
70 | gulp.task('svg-sprite', () =>
71 | gulp
72 | .src('./src/img/sprite/**/*.svg')
73 | .pipe(
74 | svgstore({
75 | inlineSvg: true,
76 | }),
77 | )
78 | .pipe(rename('sprite.svg'))
79 | .pipe(gulp.dest('./build/img')),
80 | );
81 |
82 | gulp.task('images', () =>
83 | gulp
84 | .src(['./src/img/**/*.{png,jpg,jpeg,svg}', '!./src/img/sprite/**/*.*'])
85 | .pipe(
86 | imagemin([
87 | imagemin.jpegtran({ progressive: true }),
88 | imagemin.optipng({ optimizationLevel: 3 }),
89 | imagemin.svgo({
90 | plugins: [{ removeViewBox: false }, { cleanupIDs: false }],
91 | }),
92 | ]),
93 | )
94 | .pipe(gulp.dest('./build/img')),
95 | );
96 |
97 | gulp.task('fonts', () =>
98 | gulp.src('./src/fonts/**/*.{woff,woff2}').pipe(gulp.dest('./build/fonts')),
99 | );
100 |
101 | gulp.task('watch', () => {
102 | gulp.watch('src/**/*.html', ['html']).on('change', browserSync.reload);
103 | gulp.watch('src/sass/**/*.scss', ['styles']);
104 | gulp.watch('src/js/**/*.js', ['scripts']);
105 | });
106 |
107 | gulp.task('serve', ['styles'], () =>
108 | browserSync.init({
109 | server: './build',
110 | notify: false,
111 | open: true,
112 | cors: true,
113 | ui: false,
114 | logPrefix: 'DevServer',
115 | host: 'localhost',
116 | port: 3000,
117 | }),
118 | );
119 |
120 | gulp.task('del:build', () => del('./build'));
121 |
122 | gulp.task('prepare', () => del(['**/.gitkeep', 'README.md', 'banner.png']));
123 |
124 | gulp.task('build', cb =>
125 | sequence(
126 | 'del:build',
127 | 'svg-sprite',
128 | 'images',
129 | 'fonts',
130 | 'styles',
131 | 'html',
132 | 'scripts',
133 | cb,
134 | ),
135 | );
136 |
137 | gulp.task('start', cb => sequence('build', 'serve', 'watch'));
138 |
--------------------------------------------------------------------------------
/module-11/practise/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-starter-kit",
3 | "version": "1.1.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "prepare": "gulp prepare",
8 | "start": "gulp start",
9 | "build": "gulp build",
10 | "svg-sprite": "gulp svg-sprite",
11 | "images": "gulp images"
12 | },
13 | "repository": {
14 | "type": "git",
15 | "url": "git+https://github.com/axZerk/gulp-starter-kit.git"
16 | },
17 | "author": "Alexander Repeta
",
18 | "license": "MIT",
19 | "bugs": {
20 | "url": "https://github.com/axZerk/gulp-starter-kit/issues"
21 | },
22 | "homepage": "https://github.com/axZerk/gulp-starter-kit#readme",
23 | "devDependencies": {
24 | "autoprefixer": "^8.0.0",
25 | "babel-core": "^6.26.0",
26 | "babel-preset-env": "^1.6.1",
27 | "browser-sync": "^2.23.6",
28 | "del": "^3.0.0",
29 | "gulp": "^3.9.1",
30 | "gulp-babel": "^7.0.1",
31 | "gulp-concat": "^2.6.1",
32 | "gulp-cssnano": "^2.1.2",
33 | "gulp-group-css-media-queries": "^1.2.2",
34 | "gulp-htmlmin": "^4.0.0",
35 | "gulp-imagemin": "^4.1.0",
36 | "gulp-plumber": "^1.2.0",
37 | "gulp-postcss": "^7.0.1",
38 | "gulp-rename": "^1.2.2",
39 | "gulp-rigger": "^0.5.8",
40 | "gulp-sass": "^3.1.0",
41 | "gulp-stylelint": "^6.0.0",
42 | "gulp-svgstore": "^6.1.1",
43 | "gulp-uglify": "^3.0.0",
44 | "run-sequence": "^2.2.1",
45 | "stylelint": "^9.1.1"
46 | },
47 | "dependencies": {}
48 | }
49 |
--------------------------------------------------------------------------------
/module-11/practise/src/html/banner.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/module-11/practise/src/html/features.html:
--------------------------------------------------------------------------------
1 |
2 | Our Features
3 |
4 |
5 |
6 | Easily Customised
7 | Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam quis risus
8 | eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor
9 | fringilla.
10 |
11 |
12 | Responsive Ready
13 | Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam quis risus
14 | eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor
15 | fringilla.
16 |
17 |
18 | Modern Design
19 | Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam quis risus
20 | eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor
21 | fringilla.
22 |
23 |
24 | Clean Code
25 | Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam quis risus
26 | eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor
27 | fringilla.
28 |
29 |
30 | Ready to Ship
31 | Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam quis risus
32 | eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor
33 | fringilla.
34 |
35 |
36 | Download for Free
37 | Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam quis risus
38 | eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor
39 | fringilla.
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/module-11/practise/src/html/footer.html:
--------------------------------------------------------------------------------
1 |
42 |
--------------------------------------------------------------------------------
/module-11/practise/src/html/header.html:
--------------------------------------------------------------------------------
1 |
27 |
--------------------------------------------------------------------------------
/module-11/practise/src/img/banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/banner.jpeg
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-atom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-atom.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-atom@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-atom@2x.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-bulb.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-bulb@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-bulb@2x.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-case.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-case@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-case@2x.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-computer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-computer.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-computer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-computer@2x.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-download.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-download@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-download@2x.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-tools.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/icons/features/icon-tools@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/icons/features/icon-tools@2x.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/logo.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/logo@2x.png
--------------------------------------------------------------------------------
/module-11/practise/src/img/sprite/icon-facebook.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/module-11/practise/src/img/sprite/icon-linkedin.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/module-11/practise/src/img/sprite/icon-twitter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-1.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-1@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-1@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-2.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-2@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-2@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-3.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-3@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-3@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-4.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/img/team-4@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/practise/src/img/team-4@2x.jpg
--------------------------------------------------------------------------------
/module-11/practise/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ActiveBox
7 |
8 |
9 |
10 |
11 |
12 | //= html/header.html
13 | //= html/banner.html
14 |
15 |
16 | Activebox main page
17 |
18 |
19 | //= html/features.html
20 |
21 |
22 | //= html/team.html
23 |
24 |
25 | //= html/footer.html
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/base.scss:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | body {
12 | font-family: $main-font-stack;
13 | color: $secondary-dark-color;
14 | font-size: $main-text-size;
15 | line-height: $main-text-height;
16 | }
17 |
18 | img {
19 | display: block;
20 | max-width: 100%;
21 | height: auto;
22 | }
23 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/banner.scss:
--------------------------------------------------------------------------------
1 | .banner {
2 | @include center-flex('all');
3 | min-height: 600px;
4 | margin-bottom: 120px;
5 |
6 | background-image: linear-gradient(
7 | to right,
8 | rgba(239, 59, 54, 0.3),
9 | rgba(255, 255, 255, 0.3)
10 | ),
11 | linear-gradient(to top, rgba(0, 210, 255, 0.3), rgba(145, 140, 170, 0.3)),
12 | url('../img/banner.jpeg');
13 | background-repeat: no-repeat;
14 | background-size: cover;
15 | background-position: center;
16 | }
17 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/button.scss:
--------------------------------------------------------------------------------
1 | .button {
2 | @extend %button;
3 | }
4 |
5 | .download__button {
6 | padding: 14px 82px;
7 | background-color: $primary-accent-color;
8 | font-size: 13px;
9 | line-height: 21px;
10 | font-weight: 600;
11 | color: $primary-white-color;
12 | text-transform: uppercase;
13 | }
14 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/container.scss:
--------------------------------------------------------------------------------
1 | .container {
2 | width: 1170px;
3 | margin: 0 auto;
4 | }
5 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/features.scss:
--------------------------------------------------------------------------------
1 | .features__item {
2 | flex: 0 0 370px;
3 | margin-bottom: 72px;
4 | padding: 0 38px;
5 | text-align: center;
6 |
7 | &:nth-last-child(-n + 3) {
8 | margin-bottom: 0;
9 | }
10 | }
11 |
12 | .features__icon {
13 | &::before {
14 | @include pseudo($display: block);
15 | height: 60px;
16 | margin-bottom: 34px;
17 | background-repeat: no-repeat;
18 | background-position: center;
19 | background-size: contain;
20 | }
21 | }
22 |
23 | $icons: tools, computer, bulb, atom, case, download;
24 |
25 | @include generate-pseudo-icons(
26 | 'features__icon--',
27 | $icons,
28 | '../img/icons/features/icon-',
29 | 'png'
30 | );
31 |
32 | .features__item-title {
33 | margin-bottom: 24px;
34 | margin-top: 0;
35 | color: $primary-dark-color;
36 | line-height: 17px;
37 | font-size: $main-text-size;
38 | }
39 |
40 | .features__item-text {
41 | margin: 0;
42 | }
43 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/page-footer.scss:
--------------------------------------------------------------------------------
1 | .page-footer {
2 | color: $primary-white-color;
3 | background-color: $secondary-bg-color;
4 | }
5 |
6 | .page-footer__container {
7 | @include center-flex('ver');
8 | justify-content: space-between;
9 | min-height: 246px;
10 | }
11 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/page-header.scss:
--------------------------------------------------------------------------------
1 | .page-header {
2 | background-color: $secondary-bg-color;
3 | box-shadow: 0 5px 4px rgba(0, 0, 0, 0.25);
4 | }
5 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/page-nav.scss:
--------------------------------------------------------------------------------
1 | .page-nav {
2 | display: flex;
3 | justify-content: space-between;
4 | align-items: center;
5 | min-height: 100px;
6 | }
7 |
8 | .page-nav__site-navigation {
9 | width: 600px;
10 | }
11 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/section.scss:
--------------------------------------------------------------------------------
1 | .section {
2 | margin-bottom: 120px;
3 | }
4 |
5 | .section__list {
6 | @extend %list;
7 | display: flex;
8 | flex-wrap: wrap;
9 | justify-content: space-between;
10 | }
11 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/site-logo.scss:
--------------------------------------------------------------------------------
1 | .site-logo {
2 | @extend %link;
3 | animation: logo-appear 1s linear;
4 | }
5 |
6 | @keyframes logo-appear {
7 | 0% {
8 | transform: translateY(-200px);
9 | opacity: 0;
10 | }
11 |
12 | 50% {
13 | transform: translateY(0);
14 | opacity: 1;
15 | transform: rotate(0);
16 | }
17 |
18 | 100% {
19 | transform: rotate(360deg);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/site-navigation.scss:
--------------------------------------------------------------------------------
1 | .site-navigation {
2 | @extend %list;
3 | display: flex;
4 | justify-content: space-between;
5 | font-size: 13px;
6 | }
7 |
8 | .site-navigation__link {
9 | @extend %link;
10 | color: $primary-white-color;
11 | font-weight: 700;
12 | text-transform: uppercase;
13 | line-height: 16px;
14 | transition: color 0.2s linear;
15 |
16 | &:hover,
17 | &:focus {
18 | color: $primary-accent-color;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/slider.scss:
--------------------------------------------------------------------------------
1 | .slider {
2 | height: 150px;
3 | background-color: $primary-white-color;
4 | }
5 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/socials.scss:
--------------------------------------------------------------------------------
1 | .socials {
2 | @extend %list;
3 | display: flex;
4 | }
5 |
6 | .socials__item {
7 | margin-right: 4px;
8 |
9 | &:last-child {
10 | margin-right: 0;
11 | }
12 | }
13 |
14 | .socials__link {
15 | @include center-flex('all');
16 | width: 40px;
17 | height: 40px;
18 | border: 1px solid rgb(232, 236, 238);
19 |
20 | &:hover .socials__icon {
21 | fill: $primary-accent-color;
22 | }
23 | }
24 |
25 | .socials__icon {
26 | display: inline-block;
27 | width: 20px;
28 | height: 20px;
29 | fill: $border-color;
30 | transition: fill 0.2s linear;
31 | }
32 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/components/team.scss:
--------------------------------------------------------------------------------
1 | .team__item {
2 | flex: 0 0 270px;
3 | padding: 5px;
4 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
5 | transition: transform 0.2s ease-in, box-shadow 0.3s linear;
6 |
7 | &:hover .team__item-img {
8 | filter: grayscale(0.3);
9 | }
10 | }
11 |
12 | .team__item-img {
13 | filter: grayscale(1);
14 | transition: filter 0.2s ease-out;
15 | }
16 |
17 | .team__item-name {
18 | margin-top: 26px;
19 | margin-bottom: 10px;
20 | font-size: 22px;
21 | line-height: 26px;
22 | color: $primary-dark-color;
23 | }
24 |
25 | .team__item-occupation {
26 | margin-top: 0;
27 | margin-bottom: 26px;
28 | font-size: 13px;
29 | line-height: 16px;
30 | color: $primary-accent-color;
31 | text-transform: uppercase;
32 | }
33 |
34 | .team__item-about {
35 | margin-bottom: 26px;
36 | margin-top: 0;
37 | }
38 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/helpers/extras.scss:
--------------------------------------------------------------------------------
1 | /* visually-hidden helper */
2 | .visually-hidden:not(:focus):not(:active),
3 | input[type='checkbox'].visually-hidden,
4 | input[type='radio'].visually-hidden {
5 | position: absolute;
6 | width: 1px;
7 | height: 1px;
8 | margin: -1px;
9 | border: 0;
10 | padding: 0;
11 | white-space: nowrap;
12 | clip-path: inset(100%);
13 | clip: rect(0 0 0 0);
14 | overflow: hidden;
15 | }
16 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/helpers/mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin font-settings($size, $height) {
2 | font-size: $size;
3 | line-height: $height;
4 | }
5 |
6 | @mixin pseudo($display: inline-block, $content: '') {
7 | display: $display;
8 | content: $content;
9 | }
10 |
11 | @mixin bg-image($path: '', $size: cover, $repeat: no-repeat, $pos: center) {
12 | background-image: url($path);
13 | background-size: $size;
14 | background-repeat: $repeat;
15 | background-position: $pos;
16 | }
17 |
18 | @mixin center-flex($type: 'all') {
19 | display: flex;
20 |
21 | @if $type== 'all' {
22 | justify-content: center;
23 | align-items: center;
24 | } @else if $type== 'hor' {
25 | justify-content: center;
26 | } @else if $type== 'ver' {
27 | align-items: center;
28 | }
29 | }
30 |
31 | @mixin generate-pseudo-icons($baseclass, $list, $path, $ext) {
32 | @each $icon in $list {
33 | .#{$baseclass}#{$icon}::before {
34 | background-image: url(#{$path}#{$icon}.#{$ext});
35 |
36 | @media (min-resolution: 192dpi), (min-resolution: 2dppx) {
37 | background-image: url(#{$path}#{$icon}@2px.#{$ext});
38 | }
39 | }
40 | }
41 | }
42 |
43 |
44 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/helpers/placeholders.scss:
--------------------------------------------------------------------------------
1 | %link {
2 | display: inline-block;
3 | text-decoration: none;
4 | }
5 |
6 | %list {
7 | margin: 0;
8 | padding: 0;
9 | list-style: none;
10 | }
11 |
12 | %button {
13 | border: none;
14 | margin: 0;
15 | padding: 0;
16 | cursor: pointer;
17 | }
18 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/helpers/variables.scss:
--------------------------------------------------------------------------------
1 | $main-font-stack: 'Raleway', 'Arial', sans-serif;
2 |
3 | $primary-white-color: #ffffff;
4 |
5 | $primary-dark-color: #2d3033;
6 | $secondary-dark-color: #6c7279;
7 |
8 | $secondary-bg-color: #3a3e64;
9 |
10 | $primary-accent-color: #e84545;
11 |
12 | $border-color: #c6cacc;
13 |
14 | $main-text-size: 14px;
15 | $main-text-height: 21px;
16 |
--------------------------------------------------------------------------------
/module-11/practise/src/sass/styles.scss:
--------------------------------------------------------------------------------
1 | /*
2 | Import partials below
3 | */
4 | @import 'helpers/variables';
5 | @import 'helpers/placeholders';
6 | @import 'helpers/mixins';
7 | @import 'helpers/extras';
8 | @import 'normalize';
9 | @import 'base';
10 |
11 | /* Components */
12 | @import 'components/button';
13 | @import 'components/container';
14 | @import 'components/page-header';
15 | @import 'components/page-nav';
16 | @import 'components/site-logo';
17 | @import 'components/site-navigation';
18 | @import 'components/banner';
19 | @import 'components/slider';
20 | @import 'components/section';
21 | @import 'components/features';
22 | @import 'components/team';
23 | @import 'components/socials';
24 | @import 'components/page-footer';
25 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | # General settings for whole project
4 | [*]
5 |
6 | indent_style = space
7 | indent_size = 2
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 |
16 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "block-no-empty": null,
4 | "color-no-invalid-hex": true,
5 | "comment-empty-line-before": [ "always", {
6 | "ignore": ["stylelint-commands", "after-comment"]
7 | }],
8 | "declaration-colon-space-after": "always",
9 | "declaration-no-important": true,
10 | "indentation": [2, {
11 | "ignore": ["inside-parens"]
12 | }],
13 | "max-empty-lines": 2,
14 | "rule-empty-line-before": [ "always", {
15 | "except": ["first-nested"],
16 | "ignore": ["after-comment"]
17 | }],
18 | "unit-whitelist": ["em", "rem", "%", "px", "vh", "vw", "dpi", "dppx", "pt", "deg", "s", "ms"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Alexander Repeta
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/build/css/styles.min.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}body{background-color:teal}
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/build/img/sprite.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/build/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/webinar/gulp-project/build/img/team-1.jpg
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/build/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/webinar/gulp-project/build/img/team-2.jpg
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/build/index.html:
--------------------------------------------------------------------------------
1 | Placeholder title
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/gulpfile.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const gulp = require('gulp');
4 | const sass = require('gulp-sass');
5 | const postcss = require('gulp-postcss');
6 | const autoprefixer = require('autoprefixer');
7 | const cssnano = require('gulp-cssnano');
8 | const gcmq = require('gulp-group-css-media-queries');
9 | const del = require('del');
10 | const htmlmin = require('gulp-htmlmin');
11 | const imagemin = require('gulp-imagemin');
12 | const svgstore = require('gulp-svgstore');
13 | const plumber = require('gulp-plumber');
14 | const rigger = require('gulp-rigger');
15 | const stylelint = require('gulp-stylelint');
16 | const babel = require('gulp-babel');
17 | const uglify = require('gulp-uglify');
18 | const concat = require('gulp-concat');
19 | const rename = require('gulp-rename');
20 | const browserSync = require('browser-sync').create();
21 | const sequence = require('run-sequence');
22 |
23 | gulp.task('html', () =>
24 | gulp
25 | .src('./src/*.html')
26 | .pipe(rigger())
27 | .pipe(
28 | htmlmin({
29 | collapseWhitespace: true,
30 | }),
31 | )
32 | .pipe(gulp.dest('./build')),
33 | );
34 |
35 | gulp.task('styles', () =>
36 | gulp
37 | .src('./src/sass/styles.scss')
38 | .pipe(plumber())
39 | .pipe(
40 | stylelint({
41 | reporters: [{ formatter: 'string', console: true }],
42 | }),
43 | )
44 | .pipe(sass())
45 | .pipe(postcss([autoprefixer()]))
46 | .pipe(gcmq())
47 | .pipe(gulp.dest('./build/css'))
48 | .pipe(cssnano())
49 | .pipe(rename('styles.min.css'))
50 | .pipe(gulp.dest('./build/css'))
51 | .pipe(browserSync.stream()),
52 | );
53 |
54 | gulp.task('scripts', () =>
55 | gulp
56 | .src('./src/js/**/*.js')
57 | .pipe(plumber())
58 | .pipe(
59 | babel({
60 | presets: ['env'],
61 | }),
62 | )
63 | .pipe(concat('scripts.js'))
64 | .pipe(gulp.dest('./build/js'))
65 | .pipe(uglify())
66 | .pipe(rename('scripts.min.js'))
67 | .pipe(gulp.dest('./build/js')),
68 | );
69 |
70 | gulp.task('svg-sprite', () =>
71 | gulp
72 | .src('./src/img/sprite/**/*.svg')
73 | .pipe(
74 | svgstore({
75 | inlineSvg: true,
76 | }),
77 | )
78 | .pipe(rename('sprite.svg'))
79 | .pipe(gulp.dest('./build/img')),
80 | );
81 |
82 | gulp.task('images', () =>
83 | gulp
84 | .src(['./src/img/**/*.{png,jpg,jpeg,svg}', '!./src/img/sprite/**/*.*'])
85 | .pipe(
86 | imagemin([
87 | imagemin.jpegtran({ progressive: true }),
88 | imagemin.optipng({ optimizationLevel: 3 }),
89 | imagemin.svgo({
90 | plugins: [{ removeViewBox: false }, { cleanupIDs: false }],
91 | }),
92 | ]),
93 | )
94 | .pipe(gulp.dest('./build/img')),
95 | );
96 |
97 | gulp.task('fonts', () =>
98 | gulp.src('./src/fonts/**/*.{woff,woff2}').pipe(gulp.dest('./build/fonts')),
99 | );
100 |
101 | gulp.task('watch', () => {
102 | gulp.watch('src/*.html', ['html']).on('change', browserSync.reload);
103 | gulp.watch('src/sass/**/*.scss', ['styles']);
104 | gulp.watch('src/js/**/*.js', ['scripts']);
105 | });
106 |
107 | gulp.task('serve', ['styles'], () =>
108 | browserSync.init({
109 | server: './build',
110 | notify: false,
111 | open: true,
112 | cors: true,
113 | ui: false,
114 | logPrefix: 'DevServer',
115 | host: 'localhost',
116 | port: 3000,
117 | }),
118 | );
119 |
120 | gulp.task('del:build', () => del('./build'));
121 |
122 | gulp.task('prepare', () => del(['**/.gitkeep', 'README.md', 'banner.png']));
123 |
124 | gulp.task('build', cb =>
125 | sequence(
126 | 'del:build',
127 | 'svg-sprite',
128 | 'images',
129 | 'fonts',
130 | 'styles',
131 | 'html',
132 | 'scripts',
133 | cb,
134 | ),
135 | );
136 |
137 | gulp.task('start', cb => sequence('build', 'serve', 'watch'));
138 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-starter-kit",
3 | "version": "1.1.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "prepare": "gulp prepare",
8 | "start": "gulp start",
9 | "build": "gulp build",
10 | "svg-sprite": "gulp svg-sprite",
11 | "images": "gulp images"
12 | },
13 | "repository": {
14 | "type": "git",
15 | "url": "git+https://github.com/axZerk/gulp-starter-kit.git"
16 | },
17 | "author": "Alexander Repeta ",
18 | "license": "MIT",
19 | "bugs": {
20 | "url": "https://github.com/axZerk/gulp-starter-kit/issues"
21 | },
22 | "homepage": "https://github.com/axZerk/gulp-starter-kit#readme",
23 | "devDependencies": {
24 | "autoprefixer": "^8.0.0",
25 | "babel-core": "^6.26.0",
26 | "babel-preset-env": "^1.6.1",
27 | "browser-sync": "^2.23.6",
28 | "del": "^3.0.0",
29 | "gulp": "^3.9.1",
30 | "gulp-babel": "^7.0.1",
31 | "gulp-concat": "^2.6.1",
32 | "gulp-cssnano": "^2.1.2",
33 | "gulp-group-css-media-queries": "^1.2.2",
34 | "gulp-htmlmin": "^4.0.0",
35 | "gulp-imagemin": "^4.1.0",
36 | "gulp-plumber": "^1.2.0",
37 | "gulp-postcss": "^7.0.1",
38 | "gulp-rename": "^1.2.2",
39 | "gulp-rigger": "^0.5.8",
40 | "gulp-sass": "^3.1.0",
41 | "gulp-stylelint": "^6.0.0",
42 | "gulp-svgstore": "^6.1.1",
43 | "gulp-uglify": "^3.0.0",
44 | "run-sequence": "^2.2.1",
45 | "stylelint": "^9.1.1"
46 | },
47 | "dependencies": {}
48 | }
49 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/img/sprite/icon-facebook.svg:
--------------------------------------------------------------------------------
1 |
5 |
7 |
8 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/img/sprite/icon-instagram.svg:
--------------------------------------------------------------------------------
1 |
5 |
7 |
8 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/img/sprite/icon-pinterest.svg:
--------------------------------------------------------------------------------
1 |
5 |
7 |
8 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/img/sprite/icon-twitter.svg:
--------------------------------------------------------------------------------
1 |
5 |
7 |
8 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/img/team-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/webinar/gulp-project/src/img/team-1.jpg
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/img/team-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luxplanjay/html-css-source-code/2f9cdbbef411b4908457f317a4d3a64c25195195/module-11/webinar/gulp-project/src/img/team-2.jpg
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Placeholder title
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/sass/helpers/variables.scss:
--------------------------------------------------------------------------------
1 | $color: blue;
2 |
--------------------------------------------------------------------------------
/module-11/webinar/gulp-project/src/sass/styles.scss:
--------------------------------------------------------------------------------
1 | /*
2 | Import partials below
3 | */
4 | @import 'normalize';
5 | @import 'helpers/variables';
6 |
7 | body {
8 | background-color: teal;
9 | }
10 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/links.txt:
--------------------------------------------------------------------------------
1 | https://webdesign.tutsplus.com/tutorials/watch-and-compile-sass-in-five-quick-steps--cms-28275
2 |
3 | https://tutorialzine.com/2016/01/learn-sass-in-15-minutes
4 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "webinar-24-04",
3 | "version": "1.0.0",
4 | "description": "npm basics",
5 | "main": "index.js",
6 | "scripts": {
7 | "scss:build": "node-sass src/scss/styles.scss -o src/css",
8 | "scss:watch": "node-sass --watch src/scss/styles.scss -o src/css",
9 | "build": "npm run scss:build && npm run scss:watch"
10 | },
11 | "author": "Alexander Repeta ",
12 | "license": "MIT",
13 | "dependencies": {
14 | "node-sass": "^4.8.3"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/plant.txt:
--------------------------------------------------------------------------------
1 |
2 | // Storing Values in Maps
3 |
4 | // Color map
5 | $colors: (
6 | primary-dark: #212121,
7 | secondary-dark: #424242,
8 | suplement-dark: #616161,
9 | primary-light: #ffffff,
10 | code-highlight: #f7f7f7,
11 | note-accent: #fff8e1,
12 | note-border: #f9a825,
13 | warn-accent: #ffebee,
14 | warn-border: #d32f2f
15 | );
16 |
17 | // color picker function
18 | @function color($key) {
19 | @if map-has-key($colors, $key) {
20 | @return map-get($colors, $key);
21 | }
22 |
23 | @return null;
24 | }
25 |
26 |
27 | .text {
28 | color: color(warn-border);
29 | background-color: color(note-border);
30 | }
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/css/styles.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | .button-primary, .button-secondary {
3 | display: inline-block;
4 | text-decoration: none;
5 | border: none;
6 | outline: 0;
7 | background-color: red; }
8 |
9 | .note-error, .note-success {
10 | display: inline-block;
11 | position: absolute;
12 | padding: 10px 20px; }
13 |
14 | html {
15 | box-sizing: border-box; }
16 |
17 | *,
18 | *::before,
19 | *::after {
20 | box-sizing: inherit; }
21 |
22 | img {
23 | display: block;
24 | max-width: 100%;
25 | height: auto; }
26 |
27 | body {
28 | background-color: rgba(216, 112, 147, 0.3);
29 | font-family: "PT Sans", "Roboto", "Arial", sans-serif;
30 | color: #212121; }
31 |
32 | .container {
33 | width: 320px; }
34 | @media (min-width: 768px) {
35 | .container {
36 | width: 720px; } }
37 | .container::before {
38 | display: inline-block;
39 | content: ""; }
40 | @media (min-width: 768px) {
41 | .container::before {
42 | background-color: red; } }
43 | @media (min-width: 940px) {
44 | .container {
45 | width: 900px; } }
46 |
47 | .button-primary {
48 | background-color: #2196f3; }
49 | .button-primary::before {
50 | display: inline-block;
51 | content: '\2192'; }
52 | .button-primary:hover, .button-primary:focus {
53 | color: #d87093; }
54 |
55 | .button-text {
56 | color: #212121; }
57 |
58 | .note-error {
59 | background-color: red; }
60 |
61 | .note-success {
62 | background-color: green; }
63 |
64 | .text {
65 | font-size: 24px;
66 | line-height: 1.3; }
67 | .text::after {
68 | display: inline-block;
69 | content: "ℇ"; }
70 |
71 | .icon--facebook {
72 | display: inline-block;
73 | width: 50px;
74 | height: 50px;
75 | background-image: url("../img/facebook.svg");
76 | background-size: cover;
77 | background-repeat: no-repeat;
78 | background-position: center; }
79 |
80 | .icon--linkedin {
81 | display: inline-block;
82 | width: 50px;
83 | height: 50px;
84 | background-image: url("../img/linkedin.svg");
85 | background-size: contain;
86 | background-repeat: repeat-x;
87 | background-position: 20% 30%; }
88 |
89 | .section {
90 | padding-top: 50px;
91 | padding-bottom: 50px; }
92 | @media (min-width: 768px) {
93 | .section {
94 | margin-bottom: 50px; } }
95 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Webinar 24-04
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | Home
17 |
18 |
19 |
20 | Home
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/base.scss:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | box-sizing: inherit;
9 | }
10 |
11 | img {
12 | display: block;
13 | max-width: 100%;
14 | height: auto;
15 | }
16 |
17 | body {
18 | background-color: rgba($primary-accent-color, 0.3);
19 | font-family: $primary-font-stack;
20 | color: $primary-dark-color;
21 | }
22 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/button.scss:
--------------------------------------------------------------------------------
1 | .button-primary {
2 | @extend %button;
3 | background-color: #2196f3;
4 |
5 | &::before {
6 | display: inline-block;
7 | content: '\2192';
8 | }
9 |
10 | &:hover,
11 | &:focus {
12 | color: $primary-accent-color;
13 | }
14 | }
15 |
16 | .button-text {
17 | color: $primary-dark-color;
18 | }
19 |
20 | .button-secondary {
21 | @extend %button;
22 | }
23 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/container.scss:
--------------------------------------------------------------------------------
1 | .container {
2 | width: 320px;
3 |
4 | @media (min-width: 768px) {
5 | width: 720px;
6 | }
7 |
8 | &::before {
9 | @include pseudo();
10 |
11 | @media (min-width: 768px) {
12 | background-color: red;
13 | }
14 | }
15 |
16 | @media (min-width: 940px) {
17 | width: 900px;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/helpers/mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin font-settings($size, $height) {
2 | font-size: $size;
3 | line-height: $height;
4 | }
5 |
6 | @mixin pseudo($display: inline-block, $content: '') {
7 | display: $display;
8 | content: $content;
9 | }
10 |
11 | @mixin bg-image($path: '', $size: cover, $repeat: no-repeat, $pos: center) {
12 | background-image: url($path);
13 | background-size: $size;
14 | background-repeat: $repeat;
15 | background-position: $pos;
16 | }
17 |
18 | @mixin center-flex($type: 'all') {
19 | display: flex;
20 |
21 | @if $type== 'all' {
22 | justify-content: center;
23 | align-items: center;
24 | } @else if $type== 'hor' {
25 | justify-content: center;
26 | } @else if $type== 'ver' {
27 | align-items: center;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/helpers/placeholders.scss:
--------------------------------------------------------------------------------
1 | %button {
2 | display: inline-block;
3 | text-decoration: none;
4 | border: none;
5 | outline: 0;
6 | background-color: red;
7 | }
8 |
9 | %note {
10 | display: inline-block;
11 | position: absolute;
12 | padding: 10px 20px;
13 | }
14 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/helpers/variables.scss:
--------------------------------------------------------------------------------
1 | $primary-font-stack: 'PT Sans', 'Roboto', 'Arial', sans-serif;
2 | $primary-dark-color: #212121;
3 | $primary-accent-color: #d87093;
4 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/note.scss:
--------------------------------------------------------------------------------
1 | .note-error {
2 | @extend %note;
3 | background-color: red;
4 | }
5 |
6 | .note-success {
7 | @extend %note;
8 | background-color: green;
9 | }
10 |
--------------------------------------------------------------------------------
/module-11/webinar/simple-sass/src/scss/styles.scss:
--------------------------------------------------------------------------------
1 | @import 'helpers/variables';
2 | @import 'helpers/placeholders';
3 | @import 'helpers/mixins';
4 |
5 | // Components
6 | @import 'base';
7 | @import 'container';
8 | @import 'button';
9 | @import 'note';
10 |
11 | .text {
12 | @include font-settings(24px, 1.3);
13 |
14 | &::after {
15 | @include pseudo(inline-block, '\2107');
16 | }
17 | }
18 |
19 | .icon--facebook {
20 | display: inline-block;
21 | width: 50px;
22 | height: 50px;
23 | @include bg-image($path: '../img/facebook.svg');
24 | }
25 |
26 | .icon--linkedin {
27 | display: inline-block;
28 | width: 50px;
29 | height: 50px;
30 | @include bg-image('../img/linkedin.svg', contain, repeat-x, 20% 30%);
31 | }
32 |
33 | .section {
34 | padding-top: 50px;
35 | padding-bottom: 50px;
36 |
37 | @media (min-width: 768px) {
38 | margin-bottom: 50px;
39 | }
40 | }
41 |
42 |
43 |
44 |
45 | // $icons: facebook, linkedin, twitter, telegram, pinterest;
46 |
47 | // %icon {
48 | // display: inline-block;
49 | // width: 4rem;
50 | // height: 4rem;
51 | // }
52 |
53 |
54 | // @mixin generate-icons($baseclass, $list, $path, $ext) {
55 | // @each $icon in $list {
56 | // .#{$baseclass}#{$icon} {
57 | // @extend %icon;
58 | // background-image: url(#{$path}#{$icon}.#{$ext});
59 | // }
60 | // }
61 | // }
62 |
63 | // @include generate-icons('icon-', $icons, '../img/social-icons/', 'png');
64 |
--------------------------------------------------------------------------------