├── 01. Acme Web Design ├── about.html ├── css │ └── styles.css ├── img │ ├── logo_brush.png │ ├── logo_css.png │ ├── logo_html.png │ └── showcase.jpg ├── index.html └── services.html ├── 02. Elegant Blur Landing ├── css │ └── styles.css ├── img │ ├── logo.png │ └── showcase.jpeg └── index.html ├── 03. Responsive Product Landing (+jQuery) ├── css │ └── styles.css ├── favicon.ico ├── img │ ├── cards.png │ ├── logo.png │ ├── mockup1.png │ ├── mockup2.png │ ├── section-bg.jpg │ └── showcase.jpg ├── index.html └── js │ └── main.js ├── 04. Bootstrap Landing ├── .DS_Store ├── img │ ├── .DS_Store │ ├── b.png │ ├── background.jpg │ ├── bootstrap.png │ ├── bootstrap2.png │ ├── less.png │ ├── mountains.jpeg │ ├── sass.png │ └── w3newbie.png ├── index.html └── style.css ├── 05. Parallax Effect Website ├── css │ └── styles.css ├── img │ ├── photo1.jpeg │ ├── photo2.jpg │ └── photo3.jpeg └── index.html ├── 06. Coming Soon ├── css │ └── styles.css ├── img │ └── background.jpg ├── index.html └── js │ └── script.js ├── 07. Fade Out Effect ├── css │ └── styles.css ├── img │ ├── bg1.jpg │ ├── bg2.jpeg │ └── bg3.jpeg └── index.html ├── 08. Split Landing ├── css │ └── styles.css ├── img │ ├── bg1.png │ └── bg2.jpeg ├── index.html └── scripts │ └── main.js ├── 09. HTML5 Forms ├── css │ └── styles.css ├── img │ ├── checks.png │ ├── inputs.png │ ├── logo.png │ ├── select.png │ └── tick.png └── index.html ├── 10. CSS3 Pricing Tables ├── css │ └── styles.css └── index.html ├── 11. Fullscreen Video Background ├── code.mov ├── index.html └── styles.css ├── 12. Pluralsight Clone ├── css │ └── styles.css └── index.html ├── 13. Materialize CSS Travel Agency ├── css │ └── styles.css └── index.html ├── 14. OOP Booklist ├── css │ └── styles.css ├── index.html └── js │ └── script.js ├── 15. Natours Project ├── .gitignore ├── css │ ├── fonts │ │ ├── linea-basic-10.eot │ │ ├── linea-basic-10.svg │ │ ├── linea-basic-10.ttf │ │ └── linea-basic-10.woff │ ├── icon-font.css │ ├── style.comp.css │ ├── style.concat.css │ ├── style.css │ └── style.prefix.css ├── img │ ├── favicon.png │ ├── hero-small.jpg │ ├── hero.jpg │ ├── logo-green-1x.png │ ├── logo-green-2x.png │ ├── logo-green-small-1x.png │ ├── logo-green-small-2x.png │ ├── logo-white.png │ ├── nat-1-large.jpg │ ├── nat-1.jpg │ ├── nat-10.jpg │ ├── nat-2-large.jpg │ ├── nat-2.jpg │ ├── nat-3-large.jpg │ ├── nat-3.jpg │ ├── nat-4.jpg │ ├── nat-5.jpg │ ├── nat-6.jpg │ ├── nat-7.jpg │ ├── nat-8.jpg │ ├── nat-9.jpg │ ├── video.mp4 │ └── video.webm ├── index.html ├── package-lock.json ├── package.json └── sass │ ├── abstracts │ ├── _functions.scss │ ├── _mixins.scss │ └── _variables.scss │ ├── base │ ├── _animations.scss │ ├── _base.scss │ ├── _typography.scss │ └── _utilities.scss │ ├── components │ ├── _bg-video.scss │ ├── _button.scss │ ├── _card.scss │ ├── _composition.scss │ ├── _feature-box.scss │ ├── _form.scss │ ├── _popup.scss │ └── _story.scss │ ├── layout │ ├── _footer.scss │ ├── _grid.scss │ ├── _header.scss │ └── _navigation.scss │ ├── main.scss │ └── pages │ └── _home.scss ├── 16. Trillo ├── .gitignore ├── css │ └── style.css ├── img │ ├── SVG │ │ ├── aircraft.svg │ │ ├── bookmark.svg │ │ ├── chat.svg │ │ ├── chevron-thin-right.svg │ │ ├── home.svg │ │ ├── key.svg │ │ ├── location-pin.svg │ │ ├── magnifying-glass.svg │ │ ├── map.svg │ │ └── star.svg │ ├── chevron-thin-right.svg │ ├── favicon.png │ ├── hotel-1.jpg │ ├── hotel-2.jpg │ ├── hotel-3.jpg │ ├── logo.png │ ├── sprite.svg │ ├── text.txt │ ├── user-1.jpg │ ├── user-2.jpg │ ├── user-3.jpg │ ├── user-4.jpg │ ├── user-5.jpg │ ├── user-6.jpg │ └── user.jpg ├── index.html ├── package-lock.json ├── package.json └── sass │ ├── _base.scss │ ├── _components.scss │ ├── _layout.scss │ └── main.scss └── README.md /01. Acme Web Design/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | Acme Web Design | About 14 | 15 | 16 |
17 |
18 |
19 |

Acme Web Design

20 |
21 | 28 |
29 |
30 | 31 |
32 |
33 |

Subscribe To Our Newsletter

34 |
35 | 36 | 37 |
38 |
39 |
40 | 41 |
42 |
43 |
44 |

About Us

45 |

46 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Optio 47 | neque aut nam nisi animi ea sint, soluta quisquam. Ab tempora 48 | adipisci ut. Ad non earum dignissimos odit dolorem delectus 49 | voluptas. Explicabo dignissimos totam molestiae exercitationem 50 | possimus eveniet non dolorem voluptas quam nam cum modi expedita 51 | temporibus, omnis illo asperiores sunt! Laborum laudantium veniam 52 | quod similique quaerat alias deserunt ab dolor. Nobis suscipit 53 | consectetur ducimus voluptates mollitia facere illum aperiam. 54 | Maxime, rerum corporis cupiditate itaque asperiores similique natus 55 | iste saepe in repudiandae aut incidunt provident reprehenderit 56 | nostrum. Aliquid unde ducimus officia. Voluptatem, pariatur quidem? 57 |

58 |

59 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam dolorum 60 | officia perspiciatis reprehenderit debitis laudantium. Quos at 61 | consectetur voluptatibus, voluptates hic recusandae laudantium quas 62 | nam maxime cumque rem, exercitationem ab? Cum ipsa iure, non debitis 63 | magnam vitae iusto ut illum nisi, culpa esse explicabo! Atque, 64 | maxime deleniti minima cupiditate ipsam earum vero aspernatur! 65 | Consequuntur earum eligendi repellat assumenda. Rem, laborum! 66 | Blanditiis esse, expedita consequatur debitis corrupti optio 67 | inventore non labore, neque voluptatem vel, et fuga molestiae 68 | quibusdam enim cupiditate. Sagnam omnis, eius molestiae reiciendis 69 | dolore error iusto inventore. 70 |

71 |
72 | 73 | 86 |
87 |
88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /01. Acme Web Design/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | /* font-family: Arial, Helvetica, sans-serif; 3 | font-size: 15px; 4 | line-height: 1.5; */ 5 | font: 15px/1.5 Arial, Helvetica, sans-serif; 6 | padding: 0; 7 | margin: 0; 8 | background: #f4f4f4; 9 | } 10 | 11 | /* Global */ 12 | .container { 13 | width: 80%; 14 | margin: auto; 15 | overflow: hidden; 16 | } 17 | 18 | ul { 19 | margin: 0; 20 | padding: 0; 21 | } 22 | 23 | .btn_1 { 24 | height: 38px; 25 | background: #e8491d; 26 | border: none; 27 | padding-left: 20px; 28 | padding-right: 20px; 29 | color: #ffffff; 30 | } 31 | 32 | .dark { 33 | padding: 15px; 34 | background: #35424a; 35 | color: #ffffff; 36 | margin-top: 10px; 37 | margin-bottom: 10px; 38 | } 39 | 40 | /* Header */ 41 | header { 42 | background: #35424a; 43 | color: #ffffff; 44 | padding-top: 30px; 45 | min-height: 70px; 46 | border-bottom: #e8491d 3px solid; 47 | } 48 | 49 | header a { 50 | color: #ffffff; 51 | text-decoration: none; 52 | text-transform: uppercase; 53 | font-size: 14px; 54 | } 55 | 56 | header li { 57 | display: inline; 58 | padding: 0 20px 0 20px; 59 | } 60 | 61 | header #branding { 62 | float: left; 63 | } 64 | 65 | header #branding h2 { 66 | margin: 0; 67 | } 68 | 69 | header nav { 70 | float: right; 71 | margin-top: 10px; 72 | } 73 | 74 | header .highlight, 75 | header .current a { 76 | color: #e8491d; 77 | font-weight: bold; 78 | } 79 | 80 | header a:hover { 81 | color: #cccccc; 82 | } 83 | 84 | /* Showcase */ 85 | #showcase { 86 | min-height: 400px; 87 | background: url('../img/showcase.jpg') no-repeat -400px; 88 | text-align: center; 89 | color: #ffffff; 90 | } 91 | 92 | #showcase h1 { 93 | margin-top: 100px; 94 | font-size: 50px; 95 | margin-bottom: 10px; 96 | } 97 | 98 | #showcase p { 99 | font-size: 20px; 100 | } 101 | 102 | /* Newsletter */ 103 | #newsletter { 104 | padding: 15px; 105 | color: #ffffff; 106 | background: #35424a; 107 | } 108 | 109 | #newsletter h2 { 110 | float: left; 111 | } 112 | 113 | #newsletter form { 114 | float: right; 115 | margin-top: 15px; 116 | } 117 | 118 | #newsletter input[type='email'] { 119 | padding: 4px; 120 | height: 25px; 121 | width: 250px; 122 | } 123 | 124 | /* Boxes */ 125 | #boxes { 126 | margin-top: 20px; 127 | } 128 | 129 | #boxes .box { 130 | float: left; 131 | text-align: center; 132 | width: 30%; 133 | padding: 10px; 134 | } 135 | 136 | #boxes .box img { 137 | width: 90px; 138 | } 139 | 140 | /* Sidebar */ 141 | aside#sidebar { 142 | float: right; 143 | width: 30%; 144 | margin-top: 10px; 145 | } 146 | 147 | aside#sidebar .quote input, 148 | aside#sidebar .quote textarea { 149 | width: 90%; 150 | padding: 5px; 151 | } 152 | 153 | /* Main-col */ 154 | article#main-col { 155 | float: left; 156 | width: 65%; 157 | } 158 | 159 | /* Services */ 160 | ul#services li { 161 | list-style: none; 162 | padding: 20px; 163 | border: #cccccc solid 1px; 164 | margin-bottom: 5px; 165 | background: #e6e6e6; 166 | } 167 | 168 | footer { 169 | padding: 20px; 170 | margin-top: 20px; 171 | color: #ffffff; 172 | background: #35424a; 173 | text-align: center; 174 | } 175 | 176 | /* Media Queries*/ 177 | 178 | @media (max-width: 700px) { 179 | header #branding, 180 | header nav, 181 | header nav li, 182 | #newsletter h2, 183 | #newsletter form, 184 | #boxes .box, 185 | article#main-col, 186 | aside#sidebar { 187 | float: none; 188 | text-align: center; 189 | width: 100%; 190 | } 191 | 192 | header { 193 | padding: 20px; 194 | } 195 | 196 | #showcase h1 { 197 | margin-top: 40px; 198 | } 199 | 200 | #newsletter button, 201 | .quote button { 202 | display: block; 203 | width: 100%; 204 | } 205 | 206 | #newsletter form input[type='email'], 207 | .quote input, 208 | .quote textarea { 209 | width: 100%; 210 | margin-bottom: 5px; 211 | } 212 | } 213 | -------------------------------------------------------------------------------- /01. Acme Web Design/img/logo_brush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/01. Acme Web Design/img/logo_brush.png -------------------------------------------------------------------------------- /01. Acme Web Design/img/logo_css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/01. Acme Web Design/img/logo_css.png -------------------------------------------------------------------------------- /01. Acme Web Design/img/logo_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/01. Acme Web Design/img/logo_html.png -------------------------------------------------------------------------------- /01. Acme Web Design/img/showcase.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/01. Acme Web Design/img/showcase.jpg -------------------------------------------------------------------------------- /01. Acme Web Design/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | Acme Web Design | Welcome 14 | 15 | 16 |
17 |
18 |
19 |

Acme Web Design

20 |
21 | 28 |
29 |
30 | 31 |
32 |
33 |

Afordable Professional Web Design

34 |

35 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Suscipit enim 36 | officiis repellat voluptatibus veritatis cum distinctio debitis id 37 | cupiditate 38 |

39 |
40 |
41 | 42 |
43 |
44 |

Subscribe To Our Newsletter

45 |
46 | 47 | 48 |
49 |
50 |
51 | 52 |
53 |
54 |
55 | logo_html 56 |

HTML5 Markup

57 |

58 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Suscipit 59 | enim officiis repellat voluptatibus veritatis cum distinctio debitis 60 | id cupiditate 61 |

62 |
63 |
64 | logo_css 65 |

CSS3 Styling

66 |

67 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Suscipit 68 | enim officiis repellat voluptatibus veritatis cum distinctio debitis 69 | id cupiditate 70 |

71 |
72 |
73 | logo_brush 74 |

Graphic Design

75 |

76 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Suscipit 77 | enim officiis repellat voluptatibus veritatis cum distinctio debitis 78 | id cupiditate 79 |

80 |
81 |
82 |
83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /01. Acme Web Design/services.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | Acme Web Design | Services 14 | 15 | 16 |
17 |
18 |
19 |

Acme Web Design

20 |
21 | 28 |
29 |
30 | 31 |
32 |
33 |

Subscribe To Our Newsletter

34 |
35 | 36 | 37 |
38 |
39 |
40 | 41 |
42 |
43 |
44 |

Services

45 |
    46 |
  • 47 |

    Website Design

    48 |

    49 | Rem, laborum! Blanditiis esse, expedita consequatur debitis 50 | corrupti optio inventore non labore, neque voluptatem vel, et 51 | fuga molestiae quibusdam enim cupiditate! 52 |

    53 |

    Pricing: $1,000 - $3,000

    54 |
  • 55 |
  • 56 |

    Website Maintenance

    57 |

    58 | Rem, laborum! Blanditiis esse, expedita consequatur debitis 59 | corrupti optio inventore non labore, neque voluptatem vel, et 60 | fuga molestiae quibusdam enim cupiditate! 61 |

    62 |

    Pricing: $250 per month

    63 |
  • 64 |
  • 65 |

    Website Hosting

    66 |

    67 | Rem, laborum! Blanditiis esse, expedita consequatur debitis 68 | corrupti optio inventore non labore, neque voluptatem vel, et 69 | fuga molestiae quibusdam enim cupiditate! 70 |

    71 |

    Pricing: $25 per month

    72 |
  • 73 |
74 |
75 | 76 | 96 |
97 |
98 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /02. Elegant Blur Landing/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: rgba(0, 0, 0, 0.9); 3 | margin: 0; 4 | color: #ffffff; 5 | font-family: 'Segoe UI', Verdana, sans-serif; 6 | } 7 | 8 | .showcase::after { 9 | content: ''; 10 | height: 100vh; 11 | width: 100%; 12 | background-image: url('../img/showcase.jpeg'); 13 | background-size: cover; 14 | background-repeat: no-repeat; 15 | background-position: center; 16 | display: block; 17 | filter: blur(10px); 18 | transition: all 1000ms; 19 | } 20 | 21 | .showcase:hover::after { 22 | display: block; 23 | filter: blur(0px); 24 | } 25 | 26 | .showcase:hover .content { 27 | filter: blur(2px); 28 | } 29 | 30 | .content { 31 | position: absolute; 32 | z-index: 1; 33 | top: 10%; 34 | left: 50%; 35 | margin-top: 105px; 36 | margin-left: -145px; 37 | width: 300px; 38 | height: 350px; 39 | text-align: center; 40 | transition: all 1000ms; 41 | } 42 | 43 | .content .logo { 44 | height: 180px; 45 | width: 180px; 46 | } 47 | 48 | .content .title { 49 | font-size: 2.2rem; 50 | margin-top: 1rem; 51 | } 52 | 53 | .content .text { 54 | line-height: 1.7; 55 | margin-top: 1rem; 56 | } 57 | 58 | .container { 59 | max-width: 960px; 60 | margin: auto; 61 | overflow: hidden; 62 | padding: 4rem 1rem; 63 | } 64 | 65 | .grid-3 { 66 | display: grid; 67 | grid-gap: 20px; 68 | grid-template-columns: repeat(3, 1fr); 69 | } 70 | 71 | .grid-2 { 72 | display: grid; 73 | grid-gap: 20px; 74 | grid-template-columns: repeat(2, 1fr); 75 | } 76 | 77 | .center { 78 | text-align: center; 79 | margin: auto; 80 | } 81 | 82 | .bg-light { 83 | background: #f4f4f4; 84 | color: #333; 85 | } 86 | 87 | .bg-dark { 88 | background: #333; 89 | color: #f4f4f4; 90 | } 91 | 92 | footer { 93 | padding: 2.2rem; 94 | } 95 | 96 | footer p { 97 | margin: 0; 98 | } 99 | 100 | @media (max-width: 560px) { 101 | .showcase::after { 102 | height: 50vh; 103 | } 104 | .content { 105 | top: 5%; 106 | margin-top: 5px; 107 | } 108 | .content .logo { 109 | height: 140px; 110 | width: 140px; 111 | } 112 | 113 | .content .text { 114 | display: none; 115 | } 116 | 117 | .grid-3, 118 | .grid-2 { 119 | grid-template-columns: 1fr; 120 | } 121 | 122 | .services div { 123 | border-bottom: 1px dashed #333; 124 | padding: 1.2rem 1rem; 125 | } 126 | } 127 | 128 | @media (max-height: 500px) { 129 | .content .title, 130 | .content .text { 131 | display: none; 132 | } 133 | .content { 134 | top: 0; 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /02. Elegant Blur Landing/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/02. Elegant Blur Landing/img/logo.png -------------------------------------------------------------------------------- /02. Elegant Blur Landing/img/showcase.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/02. Elegant Blur Landing/img/showcase.jpeg -------------------------------------------------------------------------------- /02. Elegant Blur Landing/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | Landing Page 16 | 17 | 18 |
19 |
20 | 21 |
Welcome To Our Company
22 |
23 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo, iure. 24 |
25 |
26 |
27 |
28 |
29 |
30 | 31 |

YouTube

32 |

33 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum, 34 | maxime. 35 |

36 |
37 |
38 | 39 |

Services

40 |

41 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum, 42 | maxime. 43 |

44 |
45 |
46 | 47 |

Freelance

48 |

49 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum, 50 | maxime. 51 |

52 |
53 |
54 |
55 | 56 |
57 |
58 |
59 |
60 |
61 |
62 |

About Us

63 |

64 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati 65 | quos ab rem provident hic voluptates soluta aliquid veritatis 66 | dolorum itaque deserunt iste iusto, a cupiditate, voluptate 67 | voluptatum repudiandae at eligendi nisi magni porro! Ipsam a ducimus 68 | dolor modi eveniet aliquam. 69 |

70 |
71 |
72 |
73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/css/styles.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=PT+Sans'); 2 | 3 | /* CSS Variables */ 4 | 5 | :root { 6 | --primary-color: #b90415; 7 | --primary-color-hover: #d3071b; 8 | --secondary-color: #103063; 9 | --secondary-color-hover: #104f85; 10 | --light-color: #f4f4f4; 11 | } 12 | 13 | body { 14 | font-family: 'PT Sans', sans-serif; 15 | background-color: #252529; 16 | margin: 0; 17 | color: #fff; 18 | } 19 | 20 | img { 21 | width: 100%; 22 | } 23 | 24 | a { 25 | text-decoration: none; 26 | color: #ccc; 27 | } 28 | 29 | /* Section */ 30 | 31 | .section { 32 | padding: 2rem 0; 33 | } 34 | 35 | .section-head { 36 | font-size: 2.5rem; 37 | margin: 0; 38 | } 39 | 40 | .section h3 { 41 | font-size: 2rem; 42 | } 43 | 44 | section#entertainment { 45 | background: url('../img/section-bg.jpg') no-repeat bottom/cover; 46 | padding: 10rem 0; 47 | } 48 | 49 | .gift-cards { 50 | display: grid; 51 | grid-gap: 20px; 52 | grid-template-columns: 1fr 1fr; 53 | text-align: left; 54 | } 55 | 56 | /* Showcase */ 57 | 58 | #showcase { 59 | margin: 0; 60 | padding: 0; 61 | background: url('../img/showcase.jpg') no-repeat center/cover; 62 | width: 100%; 63 | height: 100vh; 64 | position: relative; 65 | overflow-y: hidden; 66 | } 67 | 68 | #showcase .container { 69 | margin-top: 25vh; 70 | } 71 | 72 | #showcase h1 { 73 | font-size: 4rem; 74 | margin-bottom: 0; 75 | } 76 | 77 | #showcase h2 { 78 | font-size: 2rem; 79 | } 80 | 81 | /* Footer */ 82 | 83 | footer .footer-cols { 84 | display: grid; 85 | grid-gap: 20px; 86 | grid-template-columns: repeat(4, 1fr); 87 | padding: 2rem; 88 | text-align: left; 89 | font-size: 14px; 90 | } 91 | 92 | footer .footer-cols ul { 93 | list-style: none; 94 | } 95 | 96 | footer .footer-cols ul li:first-child { 97 | font-size: 1.2rem; 98 | padding-bottom: 0.5rem; 99 | border-bottom: #444 solid 1px; 100 | margin-bottom: 1rem; 101 | } 102 | 103 | footer .footer-bottom { 104 | background: #333; 105 | padding: 1rem; 106 | } 107 | 108 | /* Utility Classes */ 109 | 110 | .container { 111 | max-width: 1180px; 112 | text-align: center; 113 | margin: 0 auto; 114 | padding: 0 3rem; 115 | } 116 | 117 | .lead { 118 | font-size: 1.3; 119 | } 120 | 121 | .text-center { 122 | text-align: center; 123 | } 124 | 125 | /* Buttons */ 126 | 127 | .btn { 128 | padding: 1rem; 129 | color: #fff; 130 | display: inline-block; 131 | } 132 | 133 | .btn-primary { 134 | background: var(--primary-color); 135 | } 136 | 137 | .btn-primary:hover { 138 | background: var(--primary-color-hover); 139 | } 140 | 141 | .btn-secondary { 142 | background: var(--secondary-color); 143 | } 144 | 145 | .btn-secondary:hover { 146 | background: var(--secondary-color-hover); 147 | } 148 | 149 | /* Text Colors */ 150 | 151 | .text-primary { 152 | color: var(--primary-color); 153 | } 154 | 155 | .text-secondary { 156 | color: var(--secondary-color); 157 | } 158 | 159 | .text-light { 160 | color: var(--light-color); 161 | } 162 | 163 | .light-bg { 164 | background: var(--light-color); 165 | color: #333; 166 | } 167 | 168 | .mb { 169 | margin-bottom: 1.3rem; 170 | } 171 | 172 | .mt { 173 | margin-top: 1rem; 174 | } 175 | 176 | /* Navigation */ 177 | 178 | nav { 179 | height: 40px; 180 | width: 100%; 181 | background-color: #333; 182 | color: #eee; 183 | position: fixed; 184 | } 185 | nav ul { 186 | padding: 0; 187 | margin: 0; 188 | } 189 | nav li { 190 | display: inline-block; 191 | } 192 | nav a { 193 | display: inline-block; 194 | width: 100px; 195 | text-align: center; 196 | text-decoration: none; 197 | padding: 10px 0; 198 | color: #eee; 199 | text-decoration: none; 200 | } 201 | nav li:hover { 202 | background-color: #444; 203 | } 204 | nav a#openup { 205 | display: none; 206 | } 207 | 208 | @media screen and (max-width: 580px) { 209 | .hide-on-small { 210 | display: none; 211 | } 212 | 213 | #showcase { 214 | height: 50vh; 215 | } 216 | 217 | #showcase .container { 218 | margin-top: 15vh; 219 | } 220 | 221 | #showcase h1 { 222 | font-size: 3rem; 223 | } 224 | 225 | #showcase h2 { 226 | font-size: 1.5rem; 227 | } 228 | 229 | nav { 230 | height: auto; 231 | border-bottom: 0; 232 | } 233 | nav ul { 234 | display: none; 235 | height: auto; 236 | } 237 | nav li { 238 | width: 100%; 239 | float: left; 240 | position: relative; 241 | } 242 | nav a { 243 | text-align: left; 244 | width: 100%; 245 | text-indent: 25px; 246 | background: #333; 247 | border-bottom: 1px solid #555; 248 | } 249 | nav a:hover { 250 | background: #444; 251 | } 252 | nav a#openup:after { 253 | content: '|||'; 254 | transform: rotate(-90deg); 255 | -ms-transform: rotate(-90deg); 256 | /* IE 9 */ 257 | -webkit-transform: rotate(-90deg); 258 | /* Safari and Chrome */ 259 | width: 30px; 260 | height: 30px; 261 | display: inline-block; 262 | position: absolute; 263 | right: 5px; 264 | top: 20px; 265 | } 266 | nav a#openup { 267 | display: block; 268 | background-color: #333; 269 | width: 100%; 270 | position: relative; 271 | } 272 | } 273 | .cf:before, 274 | .cf:after { 275 | content: ''; 276 | display: table; 277 | } 278 | 279 | .cf:after { 280 | clear: both; 281 | } 282 | 283 | .cf { 284 | zoom: 1; 285 | } 286 | 287 | /* For IE 6/7 (trigger hasLayout) */ 288 | 289 | @media screen and (max-width: 780px) { 290 | .gift-cards { 291 | grid-template-columns: 1fr; 292 | } 293 | 294 | footer .footer-cols { 295 | display: none; 296 | } 297 | } 298 | 299 | @media screen and (max-height: 580px) { 300 | #showcase p.lead { 301 | display: none; 302 | } 303 | } 304 | -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/03. Responsive Product Landing (+jQuery)/favicon.ico -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/img/cards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/03. Responsive Product Landing (+jQuery)/img/cards.png -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/03. Responsive Product Landing (+jQuery)/img/logo.png -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/img/mockup1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/03. Responsive Product Landing (+jQuery)/img/mockup1.png -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/img/mockup2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/03. Responsive Product Landing (+jQuery)/img/mockup2.png -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/img/section-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/03. Responsive Product Landing (+jQuery)/img/section-bg.jpg -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/img/showcase.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/03. Responsive Product Landing (+jQuery)/img/showcase.jpg -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | Welcome to myTunes 16 | 17 | 18 | 19 |
20 |
21 | 31 |
32 |
33 |

myTunes.

34 |

Your music, movies, and TV shows take center stage.

35 |

36 | myTunes is the best way to organize and enjoy the music, movies, and 37 | TV shows you already have — and shop for the ones you want. Enjoy all 38 | the entertainment myTunes has to offer on your Mac and PC. 39 |

40 |
41 |
42 | 43 | 44 | 45 |
46 |
47 |

Music

48 |

45 million songs. Zero ads.

49 |

50 | Stream over 45 million songs, ad-free. Or download albums and tracks 51 | to listen to offline. All the music in your personal myTunes library — 52 | no matter where it came from — lives right alongside the Orange Music 53 | catalog. Start your free three-month trial with no commitment, and 54 | cancel anytime. 55 |

56 | Start Your Trial Now 57 |

58 | Orange Music is available in myTunes, and for iOS and Android devices. 59 |

60 | 61 |
62 |
63 | 64 | 65 | 66 |
67 |
68 |

The movie and TV collection you always wished for. Granted.

69 |

70 | With over 100,000 movies and TV shows to choose from, there’s always 71 | something great to watch on myTunes and if you watch on Orange TV 4K, 72 | you’ll be able to enjoy a tremendous selection of your favorite 73 | content in 4K HDR. So get ready to enjoy episodes of your favorite TV 74 | shows or hit movies you’ve been waiting to see — anytime, anywhere. 75 | Just tap to play, or even download if you’re going somewhere you won’t 76 | have Wi-Fi. 77 |

78 | Read More 79 | 80 |
81 |
82 | 83 | 84 | 85 |
86 |
87 |

A world of entertainment. Available wherever you are.

88 |

89 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem 90 | veniam nobis, nisi ut expedita, doloribus reprehenderit explicabo non 91 | velit repellat alias saepe inventore repellendus? Molestias suscipit 92 | eos tempora? Quae quaerat cumque in veritatis impedit dolorum sapiente 93 | recusandae minima quo aperiam quam, excepturi quasi totam ad quas? 94 | Ipsam laudantium soluta delectus! 95 |

96 |
97 |
98 | 99 | 100 | 101 |
102 |
103 |
104 |
105 |
106 |

Gift Cards

107 |

108 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. Neque 109 | expedita tempore quasi omnis a aut et totam illo fuga accusamus 110 | dolorum vero, ut harum consectetur. Minima molestias officiis 111 | culpa non sed dicta itaque. Et aliquam illo obcaecati molestias 112 | veritatis porro. 113 |

114 |

Already have an Orange MyTunes Music Gift Card?

115 |
116 | 117 | Redeem 118 | 119 |
120 |
121 |
122 |
123 | 124 | 125 | 126 | 170 | 171 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /03. Responsive Product Landing (+jQuery)/js/main.js: -------------------------------------------------------------------------------- 1 | // Responsive Menu 2 | 3 | $(function() { 4 | menu = $('nav ul'); 5 | 6 | $('#openup').on('click', function(e) { 7 | e.preventDefault(); 8 | menu.slideToggle(); 9 | }); 10 | 11 | $(window).resize(function() { 12 | var w = $(this).width(); 13 | if (w > 580 && menu.is(':hidden')) { 14 | menu.removeAttr('style'); 15 | } 16 | }); 17 | 18 | $('nav li').on('click', function(e) { 19 | var w = $(window).width(); 20 | if (w < 580) { 21 | menu.slideToggle(); 22 | } 23 | }); 24 | $('.open-menu').height($(window).height()); 25 | }); 26 | 27 | // Smooth Scrolling 28 | $('.cf a').on('click', function(event) { 29 | if (this.hash !== '') { 30 | event.preventDefault(); 31 | 32 | const hash = this.hash; 33 | 34 | $('html, body').animate( 35 | { 36 | scrollTop: $(hash).offset().top 37 | }, 38 | 800, 39 | function() { 40 | window.location.hash = hash; 41 | } 42 | ); 43 | } 44 | }); 45 | -------------------------------------------------------------------------------- /04. Bootstrap Landing/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/.DS_Store -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/.DS_Store -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/b.png -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/background.jpg -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/bootstrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/bootstrap.png -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/bootstrap2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/bootstrap2.png -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/less.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/less.png -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/mountains.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/mountains.jpeg -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/sass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/sass.png -------------------------------------------------------------------------------- /04. Bootstrap Landing/img/w3newbie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/04. Bootstrap Landing/img/w3newbie.png -------------------------------------------------------------------------------- /04. Bootstrap Landing/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bootstrap Landing Page Website 5 | 6 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 48 | 49 |
50 |
51 |

BOOTSTRAP

52 |

Learn the basic building blocks.

53 | Get Started 54 |
55 |
56 | 57 |
58 |
59 |
60 |
61 |
62 |

All About Using Bootstrap

63 |

64 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. 65 | Consequuntur nulla harum ipsam cumque quod eligendi iusto 66 | molestias maiores dicta rerum quasi facere quaerat recusandae 67 | nobis quae repellendus qui magni, vitae sit minus blanditiis quam 68 | nam voluptatem esse? Saepe, voluptatem magnam? 69 |

70 |

71 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. 72 | Consequuntur nulla harum ipsam cumque quod eligendi iusto 73 | molestias maiores dicta rerum quasi facere quaerat recusandae 74 | nobis quae repellendus qui magni, vitae sit minus blanditiis quam 75 | nam voluptatem esse? Saepe, voluptatem magnam? 76 |

77 |
78 |
79 |
80 |
81 | 82 |
83 |
84 |
85 |
86 |

Built with Sass

87 |

88 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sequi, 89 | similique atque vel distinctio iusto dignissimos quidem non 90 | aspernatur ipsum error obcaecati molestias adipisci, culpa 91 | asperiores impedit. Voluptas cupiditate rerum nesciunt voluptatem 92 | fugiat? Hic sunt impedit sint illum vitae dolorem porro. 93 |

94 |
95 |
96 | sass-logo 97 |
98 |
99 |

And Less

100 |

101 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Ratione 102 | nihil ullam consequuntur fugiat perspiciatis. Consequatur, tempora 103 | architecto explicabo incidunt quos itaque sed magni perferendis 104 | nostrum aliquid, laboriosam veniam, saepe hic quidem sit voluptate 105 | repellendus? Exercitationem adipisci mollitia soluta? Modi, nisi! 106 |

107 |
108 |
109 | less-logo 110 |
111 |
112 |
113 |
114 | 115 |
116 | 117 |
118 |
119 |
120 |
121 |

Here's a cool thing about Bootstrap...

122 |

123 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. 124 | Consequuntur nulla harum ipsam cumque quod eligendi iusto 125 | molestias maiores dicta rerum quasi facere quaerat recusandae 126 | nobis quae repellendus qui magni, vitae sit minus blanditiis quam 127 | nam voluptatem esse? Saepe, voluptatem magnam? 128 |

129 |

130 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. 131 | Consequuntur nulla harum ipsam cumque quod eligendi iusto 132 | molestias maiores dicta rerum quasi facere quaerat recusandae 133 | nobis quae repellendus qui magni, vitae sit minus blanditiis quam 134 | nam voluptatem esse? Saepe, voluptatem magnam? 135 |

136 |
137 |
138 |
139 |
140 |
141 | 142 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /04. Bootstrap Landing/style.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | height: 100%; 4 | width: 100%; 5 | } 6 | 7 | .navbar { 8 | background-color: #23415c; 9 | padding: 1% 0; 10 | font-size: 1.2em; 11 | } 12 | 13 | .navbar-brand { 14 | min-height: 55px; 15 | padding: 0 15px 5px; 16 | } 17 | 18 | .navbar-default .navbar-nav li a { 19 | color: #d5d5d5; 20 | } 21 | 22 | .navbar-default .navbar-nav li a:hover, 23 | .navbar-default .navbar-nav li a.active { 24 | color: #fff; 25 | } 26 | 27 | #home { 28 | background: url('./img/mountains.jpeg') no-repeat center center fixed; 29 | display: table; 30 | height: 100%; 31 | position: relative; 32 | width: 100%; 33 | background-size: cover; 34 | } 35 | 36 | .landing-text { 37 | display: table-cell; 38 | text-align: center; 39 | vertical-align: middle; 40 | } 41 | 42 | .landing-text h1 { 43 | font-size: 5em; 44 | font-weight: 700; 45 | } 46 | 47 | .padding { 48 | padding: 80px 0; 49 | } 50 | 51 | .padding img { 52 | width: 100%; 53 | } 54 | 55 | #fixed { 56 | background: url('./img/background.jpg') no-repeat center center fixed; 57 | display: table; 58 | height: 60%; 59 | position: relative; 60 | width: 100%; 61 | background-size: cover; 62 | } 63 | 64 | footer { 65 | width: 100%; 66 | background: #23415c; 67 | padding: 5% 5% 10% 5%; 68 | color: #fff; 69 | } 70 | 71 | .fa { 72 | padding: 15px; 73 | font-size: 25px; 74 | color: #fff; 75 | } 76 | 77 | .fa:hover { 78 | color: #d5d5d5; 79 | text-decoration: none; 80 | } 81 | 82 | .icon { 83 | max-width: 200px; 84 | } 85 | 86 | @media (max-width: 768px) { 87 | .landing-text h1 { 88 | font-size: 300%; 89 | } 90 | .fa { 91 | font-size: 20px; 92 | padding: 10px; 93 | } 94 | .icon { 95 | padding-top: 5%; 96 | max-width: 100px; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /05. Parallax Effect Website/css/styles.css: -------------------------------------------------------------------------------- 1 | body, 2 | html { 3 | height: 100%; 4 | margin: 0; 5 | font-size: 16px; 6 | font-family: 'Lato', sans-serif; 7 | font-weight: 400; 8 | line-height: 1.8; 9 | color: #666; 10 | } 11 | 12 | .pimg1, 13 | .pimg2, 14 | .pimg3 { 15 | position: relative; 16 | opacity: 0.7; 17 | background-position: center; 18 | background-size: cover; 19 | background-repeat: no-repeat; 20 | /* Parallax Effect */ 21 | background-attachment: fixed; 22 | } 23 | 24 | .pimg1 { 25 | background-image: url('../img/photo1.jpeg'); 26 | min-height: 100%; 27 | } 28 | 29 | .pimg2 { 30 | background-image: url('../img/photo2.jpg'); 31 | min-height: 400px; 32 | } 33 | 34 | .pimg3 { 35 | background-image: url('../img/photo3.jpeg'); 36 | min-height: 400px; 37 | } 38 | 39 | .section { 40 | text-align: center; 41 | padding: 50px 80px; 42 | } 43 | 44 | .section-light { 45 | background-color: #f4f4f4; 46 | color: #666; 47 | } 48 | 49 | .section-dark { 50 | background-color: #282e34; 51 | color: #ddd; 52 | } 53 | 54 | .ptext { 55 | position: absolute; 56 | top: 50%; 57 | width: 100%; 58 | text-align: center; 59 | color: #000; 60 | font-size: 27px; 61 | letter-spacing: 8px; 62 | text-transform: uppercase; 63 | } 64 | 65 | .ptext .border { 66 | background-color: #111; 67 | color: #fff; 68 | padding: 20px; 69 | } 70 | 71 | @media (max-width: 568px) { 72 | .pimg1, 73 | .pimg2, 74 | .pimg3 { 75 | background-attachment: scroll; 76 | } 77 | .ptext { 78 | font-size: 1.1rem; 79 | } 80 | .section { 81 | padding: 40px 40px; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /05. Parallax Effect Website/img/photo1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/05. Parallax Effect Website/img/photo1.jpeg -------------------------------------------------------------------------------- /05. Parallax Effect Website/img/photo2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/05. Parallax Effect Website/img/photo2.jpg -------------------------------------------------------------------------------- /05. Parallax Effect Website/img/photo3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/05. Parallax Effect Website/img/photo3.jpeg -------------------------------------------------------------------------------- /05. Parallax Effect Website/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Paralax Website 9 | 10 | 11 |
12 |
Parallax Website
13 |
14 | 15 |
16 |

Section 1

17 |

18 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minima eum 19 | ipsum laboriosam voluptatibus deserunt ad optio tempore. Dignissimos 20 | eius qui excepturi nobis molestias quisquam distinctio quaerat autem, 21 | facere minima, odit fugit architecto animi incidunt minus esse deleniti 22 | veritatis itaque vel unde modi sit labore amet optio! Vero eligendi 23 | corporis hic animi laborum quisquam sequi vitae assumenda labore, 24 | ratione explicabo reiciendis? Earum cum pariatur provident esse atque? 25 | Soluta facilis, quod quisquam veritatis repudiandae odio architecto quia 26 | rerum maxime blanditiis laudantium id autem officia at nesciunt quam 27 | officiis quae iusto. Quos facilis, necessitatibus nemo eius quibusdam 28 | praesentium numquam quasi soluta error pariatur? 29 |

30 |
31 | 32 |
33 |
Image 2 Text
34 |
35 | 36 |
37 |

Section 2

38 |

39 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minima eum 40 | ipsum laboriosam voluptatibus deserunt ad optio tempore. Dignissimos 41 | eius qui excepturi nobis molestias quisquam distinctio quaerat autem, 42 | facere minima, odit fugit architecto animi incidunt minus esse deleniti 43 | veritatis itaque vel unde modi sit labore amet optio! Vero eligendi 44 | corporis hic animi laborum quisquam sequi vitae assumenda labore, 45 | ratione explicabo reiciendis? Earum cum pariatur provident esse atque? 46 | Soluta facilis, quod quisquam veritatis repudiandae odio architecto quia 47 | rerum maxime blanditiis laudantium id autem officia at nesciunt quam 48 | officiis quae iusto. Quos facilis, necessitatibus nemo eius quibusdam 49 | praesentium numquam quasi soluta error pariatur? 50 |

51 |
52 | 53 |
54 |
Image 3 Text
55 |
56 | 57 |
58 |

Section 3

59 |

60 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minima eum 61 | ipsum laboriosam voluptatibus deserunt ad optio tempore. Dignissimos 62 | eius qui excepturi nobis molestias quisquam distinctio quaerat autem, 63 | facere minima, odit fugit architecto animi incidunt minus esse deleniti 64 | veritatis itaque vel unde modi sit labore amet optio! Vero eligendi 65 | corporis hic animi laborum quisquam sequi vitae assumenda labore, 66 | ratione explicabo reiciendis? Earum cum pariatur provident esse atque? 67 | Soluta facilis, quod quisquam veritatis repudiandae odio architecto quia 68 | rerum maxime blanditiis laudantium id autem officia at nesciunt quam 69 | officiis quae iusto. Quos facilis, necessitatibus nemo eius quibusdam 70 | praesentium numquam quasi soluta error pariatur? 71 |

72 |
73 | 74 |
75 |
Parallax Website
76 |
77 | 78 | 79 | -------------------------------------------------------------------------------- /06. Coming Soon/css/styles.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: 'montserrat', sans-serif; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | padding: 0; 8 | } 9 | 10 | .page { 11 | background: #d3d9e6; 12 | display: flex; 13 | flex-wrap: wrap; 14 | } 15 | 16 | .col { 17 | flex: 1; 18 | height: 100vh; 19 | position: relative; 20 | } 21 | 22 | .countdown-col { 23 | background: url('../img/background.jpg') no-repeat center; 24 | background-size: cover; 25 | opacity: 0.8; 26 | } 27 | 28 | .time { 29 | color: #fff; 30 | text-transform: uppercase; 31 | width: 90%; 32 | display: flex; 33 | justify-content: center; 34 | } 35 | .middle { 36 | position: absolute; 37 | top: 50%; 38 | left: 50%; 39 | transform: translate(-50%, -50%); 40 | text-align: center; 41 | } 42 | 43 | .time span { 44 | padding: 0 14px; 45 | font-size: 10px; 46 | } 47 | 48 | .time span div { 49 | font-size: 40px; 50 | } 51 | 52 | .newsletter { 53 | width: 90%; 54 | } 55 | 56 | .newsletter h4 { 57 | font-style: italic; 58 | text-transform: lowercase; 59 | font-size: 1rem; 60 | } 61 | 62 | .newsletter input { 63 | display: block; 64 | margin: 12px auto; 65 | width: 100%; 66 | max-width: 400px; 67 | padding: 14px 20px; 68 | border-radius: 30px; 69 | border: 1px solid #ddd; 70 | outline: none; 71 | } 72 | 73 | .newsletter-btn { 74 | background: linear-gradient(125deg, #3498db, #34495e); 75 | color: #fff; 76 | cursor: pointer; 77 | text-transform: uppercase; 78 | letter-spacing: 4px; 79 | font-size: 0.8rem; 80 | font-weight: 900; 81 | } 82 | 83 | .newsletter-btn:hover { 84 | opacity: 0.7; 85 | } 86 | 87 | @media screen and (max-width: 900px) { 88 | .col { 89 | flex: 100%; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /06. Coming Soon/img/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/06. Coming Soon/img/background.jpg -------------------------------------------------------------------------------- /06. Coming Soon/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Coming Soon 9 | 10 | 11 |
12 |
13 |
14 | 15 |
00
16 | Days 17 |
18 | 19 |
00
20 | Hours 21 |
22 | 23 |
00
24 | Minutes 25 |
26 | 27 |
00
28 | Seconds 29 |
30 |
31 |
32 |
33 | 41 |
42 |
43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /06. Coming Soon/js/script.js: -------------------------------------------------------------------------------- 1 | let comingdate = new Date('Jan 1, 2019 00:00:00'); 2 | 3 | const d = document.getElementById('d'); 4 | const h = document.getElementById('h'); 5 | const m = document.getElementById('m'); 6 | const s = document.getElementById('s'); 7 | 8 | const countdown = setInterval(() => { 9 | const now = new Date(); 10 | const des = comingdate.getTime() - now.getTime(); 11 | const days = Math.floor(des / (1000 * 60 * 60 * 24)); 12 | const hours = Math.floor((des % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 13 | const mins = Math.floor((des % (1000 * 60 * 60)) / (1000 * 60)); 14 | const secs = Math.floor((des % (1000 * 60)) / 1000); 15 | 16 | d.innerHTML = getTrueNumber(days); 17 | h.innerHTML = getTrueNumber(hours); 18 | m.innerHTML = getTrueNumber(mins); 19 | s.innerHTML = getTrueNumber(secs); 20 | 21 | if (x <= 0) clearInterval(x); 22 | }, 1000); 23 | 24 | const getTrueNumber = x => (x < 10 ? '0' + x : x); 25 | -------------------------------------------------------------------------------- /07. Fade Out Effect/css/styles.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | font-family: sans-serif; 6 | width: 100%; 7 | height: 100%; 8 | } 9 | 10 | .section-top { 11 | width: 100%; 12 | height: 100%; 13 | overflow: hidden; 14 | position: relative; 15 | background: url('../img/bg1.jpg'); 16 | background-repeat: no-repeat; 17 | background-size: cover; 18 | animation: slide 10s infinite; 19 | } 20 | 21 | .content { 22 | position: absolute; 23 | top: 50%; 24 | left: 50%; 25 | transform: translate(-50%, -50%); 26 | text-transform: uppercase; 27 | text-align: center; 28 | } 29 | 30 | .content h1 { 31 | color: #fff; 32 | font-size: 3rem; 33 | } 34 | 35 | .content a { 36 | background: #098; 37 | color: #fff; 38 | padding: 10px 24px; 39 | text-decoration: none; 40 | font-size: 1.2rem; 41 | border-radius: 10px; 42 | } 43 | 44 | article { 45 | font-size: 1.1rem; 46 | padding: 10px; 47 | line-height: 24px; 48 | } 49 | 50 | @keyframes slide { 51 | 0% { 52 | background-image: url('../img/bg1.jpg'); 53 | } 54 | 33% { 55 | background-image: url('../img/bg2.jpeg'); 56 | } 57 | 66% { 58 | background-image: url('../img/bg3.jpeg'); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /07. Fade Out Effect/img/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/07. Fade Out Effect/img/bg1.jpg -------------------------------------------------------------------------------- /07. Fade Out Effect/img/bg2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/07. Fade Out Effect/img/bg2.jpeg -------------------------------------------------------------------------------- /07. Fade Out Effect/img/bg3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/07. Fade Out Effect/img/bg3.jpeg -------------------------------------------------------------------------------- /07. Fade Out Effect/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Fade Out 9 | 10 | 11 |
12 |
13 |

Hello World!

14 | Sign Up Now 15 |
16 |
17 |
18 |
19 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque non 20 | aliquid cupiditate rerum dolores dolore dicta doloribus praesentium 21 | laudantium id! Pariatur sunt dolores delectus quibusdam tempore 22 | blanditiis vel iusto corrupti fugit, dicta ullam velit accusamus 23 | mollitia recusandae reprehenderit quam perspiciatis ut sapiente nobis 24 | laborum officia. Repellat, fugit? Facere sit quas rerum deserunt error 25 | dicta magni repellendus, velit culpa, ut optio repellat dolorum, 26 | consequatur hic voluptatibus molestiae pariatur laborum voluptatum 27 | ducimus delectus commodi non nihil libero ipsa. Reiciendis, consectetur 28 | odit. Nemo repellat earum amet non ullam dolorum ad velit voluptas, 29 | suscipit maxime blanditiis pariatur. Id repudiandae voluptatum 30 | consectetur laudantium, tempore corporis! Quis veritatis quam nesciunt, 31 | aut dignissimos natus dolores recusandae cumque, quisquam quod est 32 | temporibus, incidunt nemo quas eligendi ut vel? 33 |
34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /08. Split Landing/css/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --container-bg-color: #333; 3 | --left-bg-color: rgba(223, 39, 39, 0.7); 4 | --left-button-hover-color: rgba(161, 11, 11, 0.3); 5 | --right-bg-color: rgba(43, 43, 43, 0.8); 6 | --right-button-hover-color: rgba(92, 92, 92, 0.3); 7 | --hover-width: 75%; 8 | --other-width: 25%; 9 | --speed: 1000ms; 10 | } 11 | 12 | html, 13 | body { 14 | padding: 0; 15 | margin: 0; 16 | font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif; 17 | width: 100%; 18 | height: 100%; 19 | overflow-x: hidden; 20 | } 21 | 22 | h1 { 23 | font-size: 4rem; 24 | color: #fff; 25 | position: absolute; 26 | left: 50%; 27 | top: 20%; 28 | transform: translateX(-50%); 29 | white-space: nowrap; 30 | } 31 | 32 | .button { 33 | display: block; 34 | position: absolute; 35 | left: 50%; 36 | top: 40%; 37 | height: 2.5rem; 38 | padding-top: 1.3rem; 39 | width: 15rem; 40 | text-align: center; 41 | color: #fff; 42 | border: #fff solid 0.2rem; 43 | font-size: 1rem; 44 | font-weight: bold; 45 | text-transform: uppercase; 46 | text-decoration: none; 47 | transform: translateX(-50%); 48 | } 49 | 50 | .split.left .button:hover { 51 | background-color: var(--left-button-hover-color); 52 | border-color: var(--left-button-hover-color); 53 | } 54 | 55 | .split.right .button:hover { 56 | background-color: var(--right-button-hover-color); 57 | border-color: var(--right-button-hover-color); 58 | } 59 | 60 | .container { 61 | position: relative; 62 | width: 100%; 63 | height: 100%; 64 | background: var(--container-bg-color); 65 | } 66 | 67 | .split { 68 | position: absolute; 69 | width: 50%; 70 | height: 100%; 71 | overflow: hidden; 72 | } 73 | 74 | .split.left { 75 | left: 0; 76 | background: url('../img/bg2.jpeg') center center no-repeat; 77 | background-size: cover; 78 | } 79 | 80 | .split.left:before { 81 | position: absolute; 82 | content: ''; 83 | width: 100%; 84 | height: 100%; 85 | background: var(--left-bg-color); 86 | } 87 | 88 | .split.right { 89 | right: 0; 90 | background: url('../img/bg1.png') center center no-repeat; 91 | background-size: cover; 92 | } 93 | 94 | .split.right:before { 95 | position: absolute; 96 | content: ''; 97 | width: 100%; 98 | height: 100%; 99 | background: var(--right-bg-color); 100 | } 101 | 102 | .split.left, 103 | .split.right, 104 | .split.right:before, 105 | .split.left:before { 106 | transition: var(--speed) all ease-in-out; 107 | } 108 | 109 | .hover-left .left { 110 | width: var(--hover-width); 111 | } 112 | 113 | .hover-left .right { 114 | width: var(--other-width); 115 | } 116 | 117 | .hover-left .right:before { 118 | z-index: 2; 119 | } 120 | 121 | .hover-right .right { 122 | width: var(--hover-width); 123 | } 124 | 125 | .hover-right .left { 126 | width: var(--other-width); 127 | } 128 | 129 | .hover-right .left:before { 130 | z-index: 2; 131 | } 132 | 133 | @media (max-width: 800px) { 134 | h1 { 135 | font-size: 2rem; 136 | } 137 | 138 | .button { 139 | width: 12rem; 140 | } 141 | } 142 | 143 | @media (max-height: 700px) { 144 | .button { 145 | top: 70%; 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /08. Split Landing/img/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/08. Split Landing/img/bg1.png -------------------------------------------------------------------------------- /08. Split Landing/img/bg2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/08. Split Landing/img/bg2.jpeg -------------------------------------------------------------------------------- /08. Split Landing/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Split 9 | 10 | 11 |
12 |
13 |

The Designer

14 | Read More 15 |
16 |
17 |

The Programmer

18 | Read More 19 |
20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /08. Split Landing/scripts/main.js: -------------------------------------------------------------------------------- 1 | const left = document.querySelector('.left'); 2 | const right = document.querySelector('.right'); 3 | const container = document.querySelector('.container'); 4 | 5 | left.addEventListener('mouseenter', () => { 6 | container.classList.add('hover-left'); 7 | }); 8 | 9 | left.addEventListener('mouseleave', () => { 10 | container.classList.remove('hover-left'); 11 | }); 12 | 13 | right.addEventListener('mouseenter', () => { 14 | container.classList.add('hover-right'); 15 | }); 16 | 17 | right.addEventListener('mouseleave', () => { 18 | container.classList.remove('hover-right'); 19 | }); 20 | -------------------------------------------------------------------------------- /09. HTML5 Forms/css/styles.css: -------------------------------------------------------------------------------- 1 | /* 1 - BASE FORM STYLES */ 2 | 3 | body { 4 | background: #141414; 5 | margin: 0; 6 | font-family: arial; 7 | } 8 | 9 | header { 10 | background: #0d0d0d; 11 | padding: 20px; 12 | text-align: center; 13 | } 14 | 15 | form { 16 | margin: 20px; 17 | color: #eee; 18 | } 19 | 20 | form p { 21 | font-size: 18px; 22 | letter-spacing: 0.1em; 23 | } 24 | 25 | /* 2 - RADIO BOX STYLES */ 26 | 27 | input[type='radio'] { 28 | opacity: 0; 29 | width: 0; 30 | margin: 0; 31 | } 32 | 33 | label[for='male'], 34 | label[for='female'] { 35 | margin-bottom: 10px; 36 | display: inline-block; 37 | padding-left: 26px; 38 | background: url('../img/checks.png') no-repeat; 39 | background-position: 0 -32px; 40 | line-height: 24px; 41 | cursor: pointer; 42 | } 43 | 44 | input:checked + label[for='male'], 45 | input:checked + label[for='female'] { 46 | background-position: 0 0; 47 | color: #ce1010; 48 | } 49 | 50 | /* 3 - CHECKBOX STYLES */ 51 | 52 | input[type='checkbox'] { 53 | opacity: 0; 54 | width: 0; 55 | margin: 0; 56 | } 57 | 58 | label[for='web'], 59 | label[for='photoshop'], 60 | label[for='madonna'] { 61 | display: inline-block; 62 | margin-bottom: 10px; 63 | padding-left: 26px; 64 | background: url('../img/checks.png') no-repeat; 65 | background-position: 0 -98px; 66 | line-height: 24px; 67 | cursor: pointer; 68 | } 69 | 70 | input:checked + label[for='web'], 71 | input:checked + label[for='photoshop'], 72 | input:checked + label[for='madonna'] { 73 | background-position: 0 -65px; 74 | color: #ce1010; 75 | } 76 | 77 | /* 4 - TEXT INPUT STYLES & FIELDSETS */ 78 | 79 | fieldset { 80 | padding: 20px; 81 | margin: 20px 0; 82 | border: 3px solid #222; 83 | } 84 | 85 | legend { 86 | padding: 10px; 87 | font-size: 18px; 88 | letter-spacing: 0.1em; 89 | } 90 | 91 | input[type='email'], 92 | input[type='telephone'] { 93 | display: block; 94 | margin-bottom: 20px; 95 | padding: 10px 10px 10px 50px; 96 | border: 2px solid #222; 97 | border-radius: 4px; 98 | background: url('../img/inputs.png') no-repeat; 99 | background-color: #222; 100 | font-size: 16px; 101 | color: #fff; 102 | float: left; 103 | clear: both; 104 | } 105 | 106 | input[type='email'] { 107 | background-position: 7px 8px; 108 | } 109 | 110 | input[type='telephone'] { 111 | background-position: 7px -58px; 112 | } 113 | 114 | /* 5 - SELECT BOXES */ 115 | 116 | select { 117 | -webkit-appearance: none; 118 | -moz-appearance: none; 119 | -o-appearance: none; 120 | -ms-appearance: none; 121 | appearance: none; 122 | 123 | display: block; 124 | margin: 30px 0; 125 | padding: 10px 50px 10px 10px; 126 | background: url('../img/select.png') no-repeat 95% center; 127 | background-color: #222; 128 | color: #fff; 129 | border-radius: 4px; 130 | border: 2px solid #fff; 131 | width: 280px; 132 | } 133 | 134 | input[type='submit'] { 135 | background: #b61111; 136 | padding: 15px; 137 | color: white; 138 | font-size: 20px; 139 | letter-spacing: 0.1em; 140 | border-radius: 4px; 141 | border: 0; 142 | box-shadow: 1px 3px 5px rgba(0, 0, 0, 0.5); 143 | width: 280px; 144 | } 145 | 146 | /* 6 - INPUT VALIDATION STYLES */ 147 | 148 | input[type='email']:valid, 149 | input[type='telephone']:valid { 150 | border: 2px solid #fff; 151 | } 152 | 153 | input[type='email']:valid { 154 | background-position: 7px -22px; 155 | } 156 | 157 | input[type='telephone']:valid { 158 | background-position: 7px -97px; 159 | } 160 | 161 | input[type='email']:valid + .tick, 162 | input[type='telephone']:valid + .tick { 163 | background: url('../img/tick.png') center; 164 | background-size: 100%; 165 | display: block; 166 | width: 20px; 167 | height: 20px; 168 | float: left; 169 | margin: 10px; 170 | } 171 | -------------------------------------------------------------------------------- /09. HTML5 Forms/img/checks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/09. HTML5 Forms/img/checks.png -------------------------------------------------------------------------------- /09. HTML5 Forms/img/inputs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/09. HTML5 Forms/img/inputs.png -------------------------------------------------------------------------------- /09. HTML5 Forms/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/09. HTML5 Forms/img/logo.png -------------------------------------------------------------------------------- /09. HTML5 Forms/img/select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/09. HTML5 Forms/img/select.png -------------------------------------------------------------------------------- /09. HTML5 Forms/img/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/09. HTML5 Forms/img/tick.png -------------------------------------------------------------------------------- /09. HTML5 Forms/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 | 9 |

You are a...

10 | 11 |
12 | 13 | 14 | 15 | 16 |

Who is interested in...

17 |
19 | 20 |
21 | 22 | 23 | 24 | 25 |
26 | Contact Info 27 | 28 | 29 | 30 | 31 |
32 | 33 |

How would you like to be contacted?

34 | 38 | 39 |
40 | 41 | 42 | -------------------------------------------------------------------------------- /10. CSS3 Pricing Tables/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Tahoma', sans-serif; 3 | background: #333; 4 | color: #fff; 5 | } 6 | 7 | h2 { 8 | text-align: center; 9 | } 10 | 11 | .col { 12 | float: left; 13 | width: 33.3%; 14 | padding: 8px; 15 | box-sizing: border-box; 16 | } 17 | 18 | .price-box { 19 | background: #fff; 20 | color: #555; 21 | list-style-type: none; 22 | border: 1px solid #555; 23 | margin: 0; 24 | padding: 0; 25 | transition: 0.3s; 26 | } 27 | 28 | .price-box:hover, 29 | .price-box.best { 30 | box-shadow: 0 10px 15px 0 #000; 31 | } 32 | 33 | .price-box .header { 34 | background-color: #111; 35 | color: #fff; 36 | font-size: 25px; 37 | } 38 | 39 | .price-box .header.header-green { 40 | background-color: #4caf50; 41 | } 42 | 43 | .price-box li { 44 | padding: 20px; 45 | border-bottom: 1px solid #eee; 46 | text-align: center; 47 | } 48 | 49 | .price-box .emph { 50 | background-color: #f4f4f4; 51 | font-size: 20px; 52 | } 53 | 54 | .button { 55 | background-color: #4caf50; 56 | border: none; 57 | color: #fff; 58 | padding: 10px 15px; 59 | text-align: center; 60 | text-decoration: none; 61 | font-size: 18px; 62 | } 63 | 64 | @media (max-width: 700px) { 65 | .col { 66 | width: 100%; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /10. CSS3 Pricing Tables/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 |

Responsive CSS3 Pricing Tables

12 |
13 | 23 |
24 | 25 |
26 | 36 |
37 | 38 |
39 | 49 |
50 | 51 | 52 | -------------------------------------------------------------------------------- /11. Fullscreen Video Background/code.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/11. Fullscreen Video Background/code.mov -------------------------------------------------------------------------------- /11. Fullscreen Video Background/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Video Background 9 | 10 | 11 |
12 |
13 | 14 |
15 |
16 |
17 |

Hello Everyone

18 |

19 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt velit 20 | tempora, quod dolore impedit eius saepe provident beatae accusamus 21 | quidem dolorem accusantium alias optio obcaecati magni consectetur, 22 | aspernatur numquam voluptatibus neque ut. Consectetur quasi sint 23 | numquam placeat non repellat explicabo, labore eos eligendi 24 | repudiandae. Itaque ea molestiae harum laboriosam earum. 25 |

26 | Read More 27 |
28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /11. Fullscreen Video Background/styles.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; 8 | font-size: 1rem; 9 | font-weight: normal; 10 | line-height: 1.5; 11 | color: #333; 12 | overflow-x: hidden; 13 | } 14 | 15 | .v-header { 16 | height: 100vh; 17 | display: flex; 18 | align-items: center; 19 | color: #fff; 20 | } 21 | 22 | .container { 23 | max-width: 960px; 24 | padding-left: 1rem; 25 | padding-right: 1rem; 26 | margin: auto; 27 | text-align: center; 28 | } 29 | 30 | .fullscreen-video-wrap { 31 | position: absolute; 32 | top: 0; 33 | left: 0; 34 | width: 100%; 35 | height: 100vh; 36 | overflow: hidden; 37 | } 38 | 39 | .fullscreen-video-wrap video { 40 | min-height: 100%; 41 | min-width: 100%; 42 | } 43 | 44 | .header-overlay { 45 | height: 100vh; 46 | position: absolute; 47 | top: 0; 48 | left: 0; 49 | width: 100vw; 50 | z-index: 1; 51 | background: #225470; 52 | opacity: 0.85; 53 | } 54 | 55 | .header-content { 56 | z-index: 2; 57 | } 58 | 59 | .header-content h1 { 60 | font-size: 50px; 61 | margin-bottom: 0; 62 | } 63 | 64 | .header-content p { 65 | font-size: 1.5rem; 66 | display: block; 67 | padding-bottom: 2rem; 68 | } 69 | 70 | .btn { 71 | background: #34b3a0; 72 | color: #fff; 73 | font-size: 1.2rem; 74 | padding: 1rem 2rem; 75 | text-decoration: none; 76 | } 77 | 78 | .section { 79 | padding: 20px 0; 80 | } 81 | 82 | .section-b { 83 | background: #333; 84 | color: #fff; 85 | } 86 | 87 | @media (max-width: 960px) { 88 | .container { 89 | padding-right: 3rem; 90 | padding-left: 3rem; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /12. Pluralsight Clone/css/styles.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Roboto:300'); 2 | 3 | * { 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | font-family: 'Roboto', sans-serif; 9 | font-weight: 300; 10 | background: #181818; 11 | color: #fff; 12 | overflow: hidden; 13 | } 14 | 15 | h1, 16 | h2, 17 | h3, 18 | h4, 19 | h5, 20 | h6 { 21 | font-weight: 300; 22 | } 23 | 24 | #wrapper { 25 | display: flex; 26 | flex-direction: row; 27 | } 28 | 29 | #left { 30 | display: flex; 31 | flex-direction: column; 32 | flex: 1; 33 | align-items: center; 34 | justify-content: center; 35 | height: 100vh; 36 | } 37 | 38 | #right { 39 | flex: 1; 40 | } 41 | 42 | /* Sign In */ 43 | #signin { 44 | display: flex; 45 | flex-direction: column; 46 | justify-content: center; 47 | align-items: center; 48 | width: 80%; 49 | padding-bottom: 1rem; 50 | } 51 | 52 | #signin form { 53 | width: 80%; 54 | padding-bottom: 3rem; 55 | } 56 | 57 | #signin .logo { 58 | margin-bottom: 8vh; 59 | } 60 | 61 | #signin .logo img { 62 | width: 300px; 63 | } 64 | 65 | #signin label { 66 | font-size: 0.9rem; 67 | line-height: 2rem; 68 | font-weight: 500; 69 | } 70 | 71 | #signin .text-input { 72 | margin-bottom: 1.3rem; 73 | width: 100%; 74 | border-radius: 2px; 75 | background: #181818; 76 | border: 1px solid #555; 77 | color: #ccc; 78 | padding: 0.5rem 1rem; 79 | line-height: 1.3rem; 80 | } 81 | 82 | #signin .primary-btn { 83 | width: 100%; 84 | } 85 | 86 | #signin .secondary-btn, 87 | .or, 88 | .links { 89 | width: 60%; 90 | } 91 | 92 | #signin .links a { 93 | display: block; 94 | color: #fff; 95 | text-decoration: none; 96 | margin-bottom: 1rem; 97 | text-align: center; 98 | font-size: 0.9rem; 99 | } 100 | 101 | #signin .or { 102 | display: flex; 103 | flex-direction: row; 104 | margin-bottom: 1.2rem; 105 | align-items: center; 106 | } 107 | 108 | #signin .or .bar { 109 | flex: auto; 110 | border: none; 111 | height: 1px; 112 | background: #aaa; 113 | } 114 | 115 | #signin .or span { 116 | color: #ccc; 117 | padding: 0 0.8rem; 118 | } 119 | 120 | /* Showcase */ 121 | #showcase { 122 | display: flex; 123 | justify-content: center; 124 | align-items: center; 125 | background: url('https://image.ibb.co/cO9Lxq/login-bg.jpg') no-repeat center 126 | center / cover; 127 | height: 100vh; 128 | text-align: center; 129 | } 130 | 131 | #showcase .showcase-text { 132 | font-size: 3rem; 133 | width: 100%; 134 | color: #fff; 135 | margin-bottom: 1.5rem; 136 | } 137 | 138 | #showcase .secondary-btn { 139 | width: 60%; 140 | margin: auto; 141 | } 142 | 143 | /* Footer */ 144 | #main-footer { 145 | color: #ccc; 146 | text-align: center; 147 | font-size: 0.8rem; 148 | max-width: 80%; 149 | padding-top: 5rem; 150 | } 151 | 152 | #main-footer a { 153 | color: #f96816; 154 | text-decoration: underline; 155 | } 156 | 157 | /* Button */ 158 | .primary-btn { 159 | padding: 0.7rem 1rem; 160 | height: 2.7rem; 161 | display: block; 162 | border: 0; 163 | border-radius: 2px; 164 | font-weight: 500; 165 | background: #f96816; 166 | color: #fff; 167 | text-decoration: none; 168 | cursor: pointer; 169 | text-align: center; 170 | transition: all 0.5s; 171 | } 172 | 173 | .primary-btn:hover { 174 | background-color: #ff7b39; 175 | } 176 | 177 | .secondary-btn { 178 | padding: 0.7rem 1rem; 179 | height: 2.7rem; 180 | display: block; 181 | border: 1px solid #f4f4f4; 182 | border-radius: 2px; 183 | font-weight: 500; 184 | background: none; 185 | color: #fff; 186 | text-decoration: none; 187 | cursor: pointer; 188 | text-align: center; 189 | transition: all 0.5s; 190 | } 191 | 192 | .secondary-btn:hover { 193 | border-color: #ff7b39; 194 | color: #ff7b39; 195 | } 196 | 197 | /* Media Queries */ 198 | @media (min-width: 1200px) { 199 | #left { 200 | flex: 4; 201 | } 202 | 203 | #right { 204 | flex: 6; 205 | } 206 | } 207 | 208 | @media (max-width: 768px) { 209 | body { 210 | overflow: auto; 211 | } 212 | 213 | #right { 214 | display: none; 215 | } 216 | 217 | #left { 218 | justify-content: start; 219 | margin-top: 4vh; 220 | } 221 | 222 | #signin .logo { 223 | margin-bottom: 2vh; 224 | } 225 | 226 | #signin .text-input { 227 | margin-bottom: 0.7rem; 228 | } 229 | 230 | #main-footer { 231 | padding-top: 1rem; 232 | } 233 | } 234 | -------------------------------------------------------------------------------- /12. Pluralsight Clone/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Sluralpright 9 | 10 | 11 |
12 |
13 |
14 | 20 |
21 |
22 | 23 | 24 |
25 |
26 | 27 | 28 |
29 | 30 |
31 | 35 |
36 |
37 | OR 38 |
39 |
40 | Create an account 41 |
42 | 48 |
49 | 59 |
60 | 61 | 62 | -------------------------------------------------------------------------------- /13. Materialize CSS Travel Agency/css/styles.css: -------------------------------------------------------------------------------- 1 | .section-search input { 2 | padding: 5px !important; 3 | font-size: 18px; 4 | width: 90% !important; 5 | border: #f4f4f4 3px solid !important; 6 | } 7 | 8 | .section-follow .fa-4x { 9 | margin: 5px 10px; 10 | } 11 | -------------------------------------------------------------------------------- /13. Materialize CSS Travel Agency/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 12 | 18 | 19 | 20 | Travelville 21 | 22 | 23 | 24 | 25 | 44 | 51 | 52 | 53 | 54 |
55 | 90 |
91 | 92 | 93 | 94 | 114 | 115 |
116 |
117 |
118 |
119 |
120 | room 121 |

Pick Where

122 |

123 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. 124 | Quidem, velit. 125 |

126 |
127 |
128 |
129 |
130 | store 131 |

Travel Shop

132 |

133 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. 134 | Quidem, velit. 135 |

136 |
137 |
138 |
139 |
140 | airplanemode_active 141 |

Fly Cheap

142 |

143 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. 144 | Quidem, velit. 145 |

146 |
147 |
148 |
149 |
150 |
151 | 152 | 153 | 212 | 213 | 214 |
215 |
216 |
217 |
218 |

Follow Travelville

219 |

Follow us on social media for special offers

220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 234 | 235 | 236 | 237 | 238 | 239 |
240 |
241 |
242 |
243 | 244 | 245 | 342 | 343 | 344 |
345 |
346 |
347 |
348 |
349 | email 350 |
Contact Us For Booking
351 |

352 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. 353 | Repellendus sed praesentium delectus. Sit, mollitia quo. Veniam 354 | repellat voluptas ipsum doloremque? 355 |

356 |
357 |
    358 |
  • Location

  • 359 |
  • Travelville Agency
  • 360 |
  • 555 Beach rd, Suite 33
  • 361 |
  • Miami FL, 55555
  • 362 |
363 |
364 |
365 |
366 |
Please fill out this form
367 |
368 | 369 | 370 |
371 |
372 | 373 | 374 |
375 |
376 | 377 | 378 |
379 |
380 | 385 | 386 |
387 | 388 |
389 |
390 |
391 |
392 |
393 | 394 | 395 | 398 | 399 | 400 | 401 | 437 | 438 | 439 | -------------------------------------------------------------------------------- /14. OOP Booklist/css/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/14. OOP Booklist/css/styles.css -------------------------------------------------------------------------------- /14. OOP Booklist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 16 | 17 | Booklist App 18 | 19 | 20 |
21 |

22 | MyBookList 26 |

27 |
28 |
29 | 30 | 31 |
32 |
33 | 34 | 35 |
36 |
37 | 38 | 39 |
40 | 45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
TitleAuthorISBN#
57 |
58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /14. OOP Booklist/js/script.js: -------------------------------------------------------------------------------- 1 | // Book Class: Represents a book 2 | class Book { 3 | constructor(title, author, isbn) { 4 | this.title = title; 5 | this.author = author; 6 | this.isbn = isbn; 7 | } 8 | } 9 | 10 | // UI Class: Handle UI Tasks 11 | class UI { 12 | static displayBooks() { 13 | const books = Store.getBooks(); 14 | 15 | books.forEach(book => UI.addBookToList(book)); 16 | } 17 | 18 | static addBookToList(book) { 19 | const list = document.querySelector('#book-list'); 20 | 21 | const row = document.createElement('tr'); 22 | 23 | row.innerHTML = ` 24 | ${book.title} 25 | ${book.author} 26 | ${book.isbn} 27 | X 28 | `; 29 | 30 | list.appendChild(row); 31 | } 32 | 33 | static deleteBook(el) { 34 | if (el.classList.contains('delete')) { 35 | el.parentElement.parentElement.remove(); 36 | } 37 | } 38 | 39 | static showAlert(message, className) { 40 | const div = document.createElement('div'); 41 | div.className = `alert alert-${className}`; 42 | div.appendChild(document.createTextNode(message)); 43 | 44 | const container = document.querySelector('.container'); 45 | const form = document.querySelector('#book-form'); 46 | container.insertBefore(div, form); 47 | 48 | // Vanish in 3 secs 49 | setTimeout(() => { 50 | document.querySelector('.alert').remove(); 51 | }, 3000); 52 | } 53 | 54 | static clearFields() { 55 | document.querySelector('#title').value = ''; 56 | document.querySelector('#author').value = ''; 57 | document.querySelector('#isbn').value = ''; 58 | } 59 | } 60 | 61 | // Store Class: Handles Storage 62 | class Store { 63 | static getBooks() { 64 | let books; 65 | if (localStorage.getItem('books') === null) { 66 | books = []; 67 | } else { 68 | books = JSON.parse(localStorage.getItem('books')); 69 | } 70 | 71 | return books; 72 | } 73 | 74 | static addBook(book) { 75 | const books = Store.getBooks(); 76 | 77 | books.push(book); 78 | 79 | localStorage.setItem('books', JSON.stringify(books)); 80 | } 81 | 82 | static removeBook(isbn) { 83 | const books = Store.getBooks(); 84 | 85 | books.forEach((book, index) => { 86 | if (book.isbn === isbn) { 87 | books.splice(index, 1); 88 | } 89 | }); 90 | 91 | localStorage.setItem('books', JSON.stringify(books)); 92 | } 93 | } 94 | 95 | // Event: Display Books 96 | document.addEventListener('DOMContentLoaded', UI.displayBooks); 97 | 98 | // Event: Add a Book 99 | document.querySelector('#book-form').addEventListener('submit', e => { 100 | e.preventDefault(); 101 | // Get form values 102 | const title = document.querySelector('#title').value; 103 | const author = document.querySelector('#author').value; 104 | const isbn = document.querySelector('#isbn').value; 105 | 106 | // Validate 107 | if (!title || !author || !isbn) { 108 | UI.showAlert('Please fill in all fields', 'danger'); 109 | } else { 110 | const book = new Book(title, author, isbn); 111 | 112 | // Add Book to UI 113 | UI.addBookToList(book); 114 | 115 | // Add book to store 116 | Store.addBook(book); 117 | 118 | // Show success message 119 | UI.showAlert('Book Added', 'success'); 120 | 121 | // Clear fields 122 | UI.clearFields(); 123 | } 124 | }); 125 | 126 | // Event: Remove a Book 127 | document.querySelector('#book-list').addEventListener('click', e => { 128 | // Remove book from UI 129 | UI.deleteBook(e.target); 130 | 131 | // Remove book from Store 132 | Store.removeBook(e.target.parentElement.previousElementSibling.textContent); 133 | 134 | // Show success message 135 | UI.showAlert('Book Removed', 'success'); 136 | }); 137 | -------------------------------------------------------------------------------- /15. Natours Project/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /15. Natours Project/css/fonts/linea-basic-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/css/fonts/linea-basic-10.eot -------------------------------------------------------------------------------- /15. Natours Project/css/fonts/linea-basic-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/css/fonts/linea-basic-10.ttf -------------------------------------------------------------------------------- /15. Natours Project/css/fonts/linea-basic-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/css/fonts/linea-basic-10.woff -------------------------------------------------------------------------------- /15. Natours Project/css/icon-font.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | @font-face { 4 | font-family: "linea-basic-10"; 5 | src:url("fonts/linea-basic-10.eot"); 6 | src:url("fonts/linea-basic-10.eot?#iefix") format("embedded-opentype"), 7 | url("fonts/linea-basic-10.woff") format("woff"), 8 | url("fonts/linea-basic-10.ttf") format("truetype"), 9 | url("fonts/linea-basic-10.svg#linea-basic-10") format("svg"); 10 | font-weight: normal; 11 | font-style: normal; 12 | 13 | } 14 | 15 | [data-icon]:before { 16 | font-family: "linea-basic-10" !important; 17 | content: attr(data-icon); 18 | font-style: normal !important; 19 | font-weight: normal !important; 20 | font-variant: normal !important; 21 | text-transform: none !important; 22 | speak: none; 23 | line-height: 1; 24 | -webkit-font-smoothing: antialiased; 25 | -moz-osx-font-smoothing: grayscale; 26 | } 27 | 28 | [class^="icon-"]:before, 29 | [class*=" icon-"]:before { 30 | font-family: "linea-basic-10" !important; 31 | font-style: normal !important; 32 | font-weight: normal !important; 33 | font-variant: normal !important; 34 | text-transform: none !important; 35 | speak: none; 36 | line-height: 1; 37 | -webkit-font-smoothing: antialiased; 38 | -moz-osx-font-smoothing: grayscale; 39 | } 40 | 41 | .icon-basic-accelerator:before { 42 | content: "a"; 43 | } 44 | .icon-basic-alarm:before { 45 | content: "b"; 46 | } 47 | .icon-basic-anchor:before { 48 | content: "c"; 49 | } 50 | .icon-basic-anticlockwise:before { 51 | content: "d"; 52 | } 53 | .icon-basic-archive:before { 54 | content: "e"; 55 | } 56 | .icon-basic-archive-full:before { 57 | content: "f"; 58 | } 59 | .icon-basic-ban:before { 60 | content: "g"; 61 | } 62 | .icon-basic-battery-charge:before { 63 | content: "h"; 64 | } 65 | .icon-basic-battery-empty:before { 66 | content: "i"; 67 | } 68 | .icon-basic-battery-full:before { 69 | content: "j"; 70 | } 71 | .icon-basic-battery-half:before { 72 | content: "k"; 73 | } 74 | .icon-basic-bolt:before { 75 | content: "l"; 76 | } 77 | .icon-basic-book:before { 78 | content: "m"; 79 | } 80 | .icon-basic-book-pen:before { 81 | content: "n"; 82 | } 83 | .icon-basic-book-pencil:before { 84 | content: "o"; 85 | } 86 | .icon-basic-bookmark:before { 87 | content: "p"; 88 | } 89 | .icon-basic-calculator:before { 90 | content: "q"; 91 | } 92 | .icon-basic-calendar:before { 93 | content: "r"; 94 | } 95 | .icon-basic-cards-diamonds:before { 96 | content: "s"; 97 | } 98 | .icon-basic-cards-hearts:before { 99 | content: "t"; 100 | } 101 | .icon-basic-case:before { 102 | content: "u"; 103 | } 104 | .icon-basic-chronometer:before { 105 | content: "v"; 106 | } 107 | .icon-basic-clessidre:before { 108 | content: "w"; 109 | } 110 | .icon-basic-clock:before { 111 | content: "x"; 112 | } 113 | .icon-basic-clockwise:before { 114 | content: "y"; 115 | } 116 | .icon-basic-cloud:before { 117 | content: "z"; 118 | } 119 | .icon-basic-clubs:before { 120 | content: "A"; 121 | } 122 | .icon-basic-compass:before { 123 | content: "B"; 124 | } 125 | .icon-basic-cup:before { 126 | content: "C"; 127 | } 128 | .icon-basic-diamonds:before { 129 | content: "D"; 130 | } 131 | .icon-basic-display:before { 132 | content: "E"; 133 | } 134 | .icon-basic-download:before { 135 | content: "F"; 136 | } 137 | .icon-basic-exclamation:before { 138 | content: "G"; 139 | } 140 | .icon-basic-eye:before { 141 | content: "H"; 142 | } 143 | .icon-basic-eye-closed:before { 144 | content: "I"; 145 | } 146 | .icon-basic-female:before { 147 | content: "J"; 148 | } 149 | .icon-basic-flag1:before { 150 | content: "K"; 151 | } 152 | .icon-basic-flag2:before { 153 | content: "L"; 154 | } 155 | .icon-basic-floppydisk:before { 156 | content: "M"; 157 | } 158 | .icon-basic-folder:before { 159 | content: "N"; 160 | } 161 | .icon-basic-folder-multiple:before { 162 | content: "O"; 163 | } 164 | .icon-basic-gear:before { 165 | content: "P"; 166 | } 167 | .icon-basic-geolocalize-01:before { 168 | content: "Q"; 169 | } 170 | .icon-basic-geolocalize-05:before { 171 | content: "R"; 172 | } 173 | .icon-basic-globe:before { 174 | content: "S"; 175 | } 176 | .icon-basic-gunsight:before { 177 | content: "T"; 178 | } 179 | .icon-basic-hammer:before { 180 | content: "U"; 181 | } 182 | .icon-basic-headset:before { 183 | content: "V"; 184 | } 185 | .icon-basic-heart:before { 186 | content: "W"; 187 | } 188 | .icon-basic-heart-broken:before { 189 | content: "X"; 190 | } 191 | .icon-basic-helm:before { 192 | content: "Y"; 193 | } 194 | .icon-basic-home:before { 195 | content: "Z"; 196 | } 197 | .icon-basic-info:before { 198 | content: "0"; 199 | } 200 | .icon-basic-ipod:before { 201 | content: "1"; 202 | } 203 | .icon-basic-joypad:before { 204 | content: "2"; 205 | } 206 | .icon-basic-key:before { 207 | content: "3"; 208 | } 209 | .icon-basic-keyboard:before { 210 | content: "4"; 211 | } 212 | .icon-basic-laptop:before { 213 | content: "5"; 214 | } 215 | .icon-basic-life-buoy:before { 216 | content: "6"; 217 | } 218 | .icon-basic-lightbulb:before { 219 | content: "7"; 220 | } 221 | .icon-basic-link:before { 222 | content: "8"; 223 | } 224 | .icon-basic-lock:before { 225 | content: "9"; 226 | } 227 | .icon-basic-lock-open:before { 228 | content: "!"; 229 | } 230 | .icon-basic-magic-mouse:before { 231 | content: "\""; 232 | } 233 | .icon-basic-magnifier:before { 234 | content: "#"; 235 | } 236 | .icon-basic-magnifier-minus:before { 237 | content: "$"; 238 | } 239 | .icon-basic-magnifier-plus:before { 240 | content: "%"; 241 | } 242 | .icon-basic-mail:before { 243 | content: "&"; 244 | } 245 | .icon-basic-mail-multiple:before { 246 | content: "'"; 247 | } 248 | .icon-basic-mail-open:before { 249 | content: "("; 250 | } 251 | .icon-basic-mail-open-text:before { 252 | content: ")"; 253 | } 254 | .icon-basic-male:before { 255 | content: "*"; 256 | } 257 | .icon-basic-map:before { 258 | content: "+"; 259 | } 260 | .icon-basic-message:before { 261 | content: ","; 262 | } 263 | .icon-basic-message-multiple:before { 264 | content: "-"; 265 | } 266 | .icon-basic-message-txt:before { 267 | content: "."; 268 | } 269 | .icon-basic-mixer2:before { 270 | content: "/"; 271 | } 272 | .icon-basic-mouse:before { 273 | content: ":"; 274 | } 275 | .icon-basic-notebook:before { 276 | content: ";"; 277 | } 278 | .icon-basic-notebook-pen:before { 279 | content: "<"; 280 | } 281 | .icon-basic-notebook-pencil:before { 282 | content: "="; 283 | } 284 | .icon-basic-paperplane:before { 285 | content: ">"; 286 | } 287 | .icon-basic-pencil-ruler:before { 288 | content: "?"; 289 | } 290 | .icon-basic-pencil-ruler-pen:before { 291 | content: "@"; 292 | } 293 | .icon-basic-photo:before { 294 | content: "["; 295 | } 296 | .icon-basic-picture:before { 297 | content: "]"; 298 | } 299 | .icon-basic-picture-multiple:before { 300 | content: "^"; 301 | } 302 | .icon-basic-pin1:before { 303 | content: "_"; 304 | } 305 | .icon-basic-pin2:before { 306 | content: "`"; 307 | } 308 | .icon-basic-postcard:before { 309 | content: "{"; 310 | } 311 | .icon-basic-postcard-multiple:before { 312 | content: "|"; 313 | } 314 | .icon-basic-printer:before { 315 | content: "}"; 316 | } 317 | .icon-basic-question:before { 318 | content: "~"; 319 | } 320 | .icon-basic-rss:before { 321 | content: "\\"; 322 | } 323 | .icon-basic-server:before { 324 | content: "\e000"; 325 | } 326 | .icon-basic-server2:before { 327 | content: "\e001"; 328 | } 329 | .icon-basic-server-cloud:before { 330 | content: "\e002"; 331 | } 332 | .icon-basic-server-download:before { 333 | content: "\e003"; 334 | } 335 | .icon-basic-server-upload:before { 336 | content: "\e004"; 337 | } 338 | .icon-basic-settings:before { 339 | content: "\e005"; 340 | } 341 | .icon-basic-share:before { 342 | content: "\e006"; 343 | } 344 | .icon-basic-sheet:before { 345 | content: "\e007"; 346 | } 347 | .icon-basic-sheet-multiple:before { 348 | content: "\e008"; 349 | } 350 | .icon-basic-sheet-pen:before { 351 | content: "\e009"; 352 | } 353 | .icon-basic-sheet-pencil:before { 354 | content: "\e00a"; 355 | } 356 | .icon-basic-sheet-txt:before { 357 | content: "\e00b"; 358 | } 359 | .icon-basic-signs:before { 360 | content: "\e00c"; 361 | } 362 | .icon-basic-smartphone:before { 363 | content: "\e00d"; 364 | } 365 | .icon-basic-spades:before { 366 | content: "\e00e"; 367 | } 368 | .icon-basic-spread:before { 369 | content: "\e00f"; 370 | } 371 | .icon-basic-spread-bookmark:before { 372 | content: "\e010"; 373 | } 374 | .icon-basic-spread-text:before { 375 | content: "\e011"; 376 | } 377 | .icon-basic-spread-text-bookmark:before { 378 | content: "\e012"; 379 | } 380 | .icon-basic-star:before { 381 | content: "\e013"; 382 | } 383 | .icon-basic-tablet:before { 384 | content: "\e014"; 385 | } 386 | .icon-basic-target:before { 387 | content: "\e015"; 388 | } 389 | .icon-basic-todo:before { 390 | content: "\e016"; 391 | } 392 | .icon-basic-todo-pen:before { 393 | content: "\e017"; 394 | } 395 | .icon-basic-todo-pencil:before { 396 | content: "\e018"; 397 | } 398 | .icon-basic-todo-txt:before { 399 | content: "\e019"; 400 | } 401 | .icon-basic-todolist-pen:before { 402 | content: "\e01a"; 403 | } 404 | .icon-basic-todolist-pencil:before { 405 | content: "\e01b"; 406 | } 407 | .icon-basic-trashcan:before { 408 | content: "\e01c"; 409 | } 410 | .icon-basic-trashcan-full:before { 411 | content: "\e01d"; 412 | } 413 | .icon-basic-trashcan-refresh:before { 414 | content: "\e01e"; 415 | } 416 | .icon-basic-trashcan-remove:before { 417 | content: "\e01f"; 418 | } 419 | .icon-basic-upload:before { 420 | content: "\e020"; 421 | } 422 | .icon-basic-usb:before { 423 | content: "\e021"; 424 | } 425 | .icon-basic-video:before { 426 | content: "\e022"; 427 | } 428 | .icon-basic-watch:before { 429 | content: "\e023"; 430 | } 431 | .icon-basic-webpage:before { 432 | content: "\e024"; 433 | } 434 | .icon-basic-webpage-img-txt:before { 435 | content: "\e025"; 436 | } 437 | .icon-basic-webpage-multiple:before { 438 | content: "\e026"; 439 | } 440 | .icon-basic-webpage-txt:before { 441 | content: "\e027"; 442 | } 443 | .icon-basic-world:before { 444 | content: "\e028"; 445 | } 446 | -------------------------------------------------------------------------------- /15. Natours Project/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/favicon.png -------------------------------------------------------------------------------- /15. Natours Project/img/hero-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/hero-small.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/hero.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/logo-green-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/logo-green-1x.png -------------------------------------------------------------------------------- /15. Natours Project/img/logo-green-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/logo-green-2x.png -------------------------------------------------------------------------------- /15. Natours Project/img/logo-green-small-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/logo-green-small-1x.png -------------------------------------------------------------------------------- /15. Natours Project/img/logo-green-small-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/logo-green-small-2x.png -------------------------------------------------------------------------------- /15. Natours Project/img/logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/logo-white.png -------------------------------------------------------------------------------- /15. Natours Project/img/nat-1-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-1-large.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-1.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-10.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-2-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-2-large.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-2.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-3-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-3-large.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-3.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-4.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-5.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-6.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-7.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-8.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/nat-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/nat-9.jpg -------------------------------------------------------------------------------- /15. Natours Project/img/video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/video.mp4 -------------------------------------------------------------------------------- /15. Natours Project/img/video.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/img/video.webm -------------------------------------------------------------------------------- /15. Natours Project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "natours", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "watch:sass": "node-sass sass/main.scss css/style.css -w", 8 | "dev-server": "live-server", 9 | "start": "npm-run-all --parallel dev-server watch:sass", 10 | "compile:sass": "node-sass sass/main.scss css/style.comp.css", 11 | "concat:sass": "concat -o css/style.concat.css css/icon-font.css css/style.comp.css", 12 | "prefix:css": "postcss --use autoprefixer -b 'last 10 versions' css/style.concat.css -o css/style.prefix.css", 13 | "compress:css": "node-sass css/style.prefix.css css/style.css --output-style compressed", 14 | "build:css": "npm-run-all compile:sass concat:sass prefix:css compress:css" 15 | }, 16 | "author": "", 17 | "license": "ISC", 18 | "devDependencies": { 19 | "autoprefixer": "^9.5.0", 20 | "concat": "^1.0.3", 21 | "node-sass": "^4.11.0", 22 | "npm-run-all": "^4.1.5", 23 | "postcss-cli": "^6.1.2" 24 | }, 25 | "dependencies": {} 26 | } 27 | -------------------------------------------------------------------------------- /15. Natours Project/sass/abstracts/_functions.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikita-rudenko/html-css-practice/cd660d4182b3cb9f60b0d6c7ad1455e79f158aed/15. Natours Project/sass/abstracts/_functions.scss -------------------------------------------------------------------------------- /15. Natours Project/sass/abstracts/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix { 2 | &::after { 3 | content: ''; 4 | display: table; 5 | clear: both; 6 | } 7 | } 8 | 9 | @mixin absCenter { 10 | position: absolute; 11 | top: 50%; 12 | left: 50%; 13 | transform: translate(-50%, -50%); 14 | } 15 | 16 | // MEDIA QUERY MANAGER 17 | /* 18 | 0 - 600px: Phone 19 | 600 - 900px: Tablet portrait 20 | 900 - 1200px: Tablet landscape 21 | [1200 - 1800] is where our normal styles apply 22 | 1800px + : Big desktop 23 | 24 | $breakpoint arguement choices: 25 | - phone 26 | - tab-port 27 | - tab-land 28 | - big-desktop 29 | ORDER: Base + typography > general layout + grid > page layout > components 30 | 1em = 16px 31 | */ 32 | @mixin respond($breakpoint) { 33 | @if $breakpoint == phone { 34 | @media only screen and (max-width: 37.5em) { 35 | @content; 36 | } //600px 37 | } 38 | @if $breakpoint == tab-port { 39 | @media only screen and (max-width: 56.25em) { 40 | @content; 41 | } //900px 42 | } 43 | @if $breakpoint == tab-land { 44 | @media only screen and (max-width: 75em) { 45 | @content; 46 | } //1200px 47 | } 48 | @if $breakpoint == big-desktop { 49 | @media only screen and (min-width: 112.5em) { 50 | @content; 51 | } //1800 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /15. Natours Project/sass/abstracts/_variables.scss: -------------------------------------------------------------------------------- 1 | // COLORS 2 | $color-primary: #55c57a; 3 | $color-primary-light: #7ed56f; 4 | $color-primary-dark: #28b485; 5 | 6 | $color-secondary-light: #ffb900; 7 | $color-secondary-dark: #ff7700; 8 | 9 | $color-tertiary-light: #2998ff; 10 | $color-tertiary-dark: #5643fa; 11 | 12 | $color-grey-light-1: #f7f7f7; 13 | $color-grey-light-2: #eee; 14 | 15 | $color-grey-dark: #777; 16 | $color-grey-dark-2: #999; 17 | $color-grey-dark-3: #333; 18 | 19 | $color-white: #fff; 20 | $color-black: #000; 21 | 22 | // FONT 23 | $default-font-size: 1.6rem; 24 | 25 | // GRID 26 | $grid-width: 114rem; 27 | $gutter-vertical: 8rem; 28 | $gutter-vertical-small: 6rem; 29 | $gutter-horizontal: 6rem; 30 | -------------------------------------------------------------------------------- /15. Natours Project/sass/base/_animations.scss: -------------------------------------------------------------------------------- 1 | @keyframes moveInLeft { 2 | 0% { 3 | opacity: 0; 4 | transform: translateX(-10rem); 5 | } 6 | 7 | 80% { 8 | transform: translate(1rem); 9 | } 10 | 11 | 100% { 12 | opacity: 1; 13 | transform: translate(0); 14 | } 15 | } 16 | 17 | @keyframes moveInRight { 18 | 0% { 19 | opacity: 0; 20 | transform: translateX(10rem); 21 | } 22 | 23 | 80% { 24 | transform: translate(-1rem); 25 | } 26 | 27 | 100% { 28 | opacity: 1; 29 | transform: translate(0); 30 | } 31 | } 32 | 33 | @keyframes moveInBottom { 34 | 0% { 35 | opacity: 0; 36 | transform: translateY(50px); 37 | } 38 | 39 | 100% { 40 | opacity: 1; 41 | transform: translate(0); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /15. Natours Project/sass/base/_base.scss: -------------------------------------------------------------------------------- 1 | *, 2 | *::after, 3 | *::before { 4 | margin: 0; 5 | padding: 0; 6 | box-sizing: inherit; 7 | } 8 | 9 | html { 10 | // This defines what 1rem is 11 | font-size: 62.5%; // 1rem = 10px; 10px/16px = 62.5% 12 | 13 | @include respond(tab-land) { 14 | // width < 1200? 15 | font-size: 56.25%; // 1rem = 9px, 9/16 = 50% 16 | } 17 | 18 | @include respond(tab-port) { 19 | // width < 900? 20 | font-size: 50%; // 1rem = 8px, 8/16 = 50% 21 | } 22 | 23 | @include respond(big-desktop) { 24 | font-size: 75%; // 1rem = 12, 12/16 25 | } 26 | } 27 | 28 | body { 29 | box-sizing: border-box; 30 | padding: 3rem; 31 | 32 | @include respond(tab-port) { 33 | padding: 0; 34 | } 35 | } 36 | 37 | ::selection { 38 | background-color: $color-primary; 39 | color: $color-white; 40 | } 41 | -------------------------------------------------------------------------------- /15. Natours Project/sass/base/_typography.scss: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Lato', sans-serif; 3 | font-weight: 400; 4 | line-height: 1.7; 5 | color: $color-grey-dark; 6 | } 7 | 8 | .heading-primary { 9 | color: $color-white; 10 | text-transform: uppercase; 11 | 12 | backface-visibility: hidden; 13 | margin-bottom: 6rem; 14 | 15 | &--main { 16 | display: block; 17 | font-size: 6rem; 18 | font-weight: 400; 19 | letter-spacing: 3.5rem; 20 | animation-name: moveInLeft; 21 | animation-duration: 1s; 22 | animation-timing-function: ease-out; 23 | 24 | @include respond(phone) { 25 | letter-spacing: 1rem; 26 | font-size: 5rem; 27 | } 28 | } 29 | 30 | &--sub { 31 | display: block; 32 | font-size: 2rem; 33 | font-weight: 700; 34 | letter-spacing: 1rem; 35 | animation-name: moveInRight; 36 | animation-duration: 1s; 37 | animation-timing-function: ease-out; 38 | 39 | @include respond(phone) { 40 | letter-spacing: 0.5rem; 41 | } 42 | } 43 | } 44 | 45 | .heading-secondary { 46 | font-size: 3.5rem; 47 | text-transform: uppercase; 48 | font-weight: 700; 49 | display: inline-block; 50 | background-image: linear-gradient( 51 | to right, 52 | $color-primary-light, 53 | $color-primary-dark 54 | ); 55 | background-clip: text; 56 | -webkit-background-clip: text; 57 | color: transparent; 58 | letter-spacing: 2px; 59 | transition: all 0.2s; 60 | 61 | @include respond(tab-port) { 62 | font-size: 3rem; 63 | } 64 | 65 | @include respond(phone) { 66 | font-size: 2.5rem; 67 | } 68 | 69 | &:hover { 70 | transform: skewY(2deg) skewX(15deg) scale(1.1); 71 | text-shadow: 0.5rem 1rem 2rem rgba($color-black, 0.2); 72 | } 73 | } 74 | 75 | .heading-tertiary { 76 | font-size: $default-font-size; 77 | font-weight: 700; 78 | text-transform: uppercase; 79 | } 80 | 81 | .paragraph { 82 | font-size: $default-font-size; 83 | 84 | &:not(:last-child) { 85 | margin-bottom: 3rem; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /15. Natours Project/sass/base/_utilities.scss: -------------------------------------------------------------------------------- 1 | .u-center-text { 2 | text-align: center !important; 3 | } 4 | 5 | .u-margin-bottom-big { 6 | margin-bottom: 8rem !important; 7 | 8 | @include respond(tab-port) { 9 | margin-bottom: 5rem !important; 10 | } 11 | } 12 | 13 | .u-margin-bottom-medium { 14 | margin-bottom: 4rem !important; 15 | 16 | @include respond(tab-port) { 17 | margin-bottom: 3rem !important; 18 | } 19 | } 20 | 21 | .u-margin-bottom-small { 22 | margin-bottom: 1.2rem !important; 23 | } 24 | 25 | .u-margin-top-big { 26 | margin-top: 8rem !important; 27 | } 28 | 29 | .u-margin-top-huge { 30 | margin-top: 10rem !important; 31 | } 32 | -------------------------------------------------------------------------------- /15. Natours Project/sass/components/_bg-video.scss: -------------------------------------------------------------------------------- 1 | .bg-video { 2 | position: absolute; 3 | top: 0; 4 | top: 0; 5 | width: 100%; 6 | height: 100%; 7 | z-index: -1; 8 | opacity: 0.15; 9 | overflow: hidden; 10 | 11 | &__content { 12 | width: 100%; 13 | height: 100%; 14 | object-fit: cover; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /15. Natours Project/sass/components/_button.scss: -------------------------------------------------------------------------------- 1 | .btn { 2 | &, 3 | &:link, 4 | &:visited { 5 | text-transform: uppercase; 6 | text-decoration: none; 7 | padding: 1.5rem 4rem; 8 | display: inline-block; 9 | border-radius: 10rem; 10 | transition: all 0.2s; 11 | position: relative; 12 | font-size: 1.6rem; 13 | 14 | // Change for the 32 | 33 | 34 | 58 | 59 | 60 |
61 | 101 |
102 | 125 | 126 |
127 |

Hotel Las Palmas

128 |
129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
145 | 146 |
147 | 148 | 149 | 150 | 151 |
152 | 153 |
154 |
155 | 8.6 156 |
157 |
158 | 429 votes 159 |
160 |
161 |
162 | 163 |
164 |
165 |

166 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi 167 | nisi dignissimos debitis ratione sapiente saepe. Accusantium 168 | cumque, quas, ut corporis incidunt deserunt quae architecto 169 | voluptate. 170 |

171 |

172 | Accusantium cumque, quas, ut corporis incidunt deserunt quae 173 | architecto voluptate delectus, inventore iure aliquid aliquam. 174 |

175 | 176 |
    177 |
  • 178 | Close to the beach 179 |
  • 180 |
  • 181 | Breakfast included 182 |
  • 183 |
  • 184 | Free airport shuttle 185 |
  • 186 |
  • 187 | Free wifi in all rooms 188 |
  • 189 |
  • 190 | Air conditioning and heating 191 |
  • 192 |
  • 193 | Pets allowed 194 |
  • 195 |
  • 196 | We speak all languages 197 |
  • 198 |
  • 199 | Perfect for families 200 |
  • 201 |
202 | 203 |
204 |

205 | Lucy and 3 other friends recommend this hotel. 206 |

207 |
208 | Friend 1 213 | Friend 2 218 | Friend 3 223 | Friend 4 228 |
229 |
230 |
231 | 232 |
233 |
234 |
235 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fuga 236 | doloremque architecto dicta animi, totam, itaque officia ex. 237 |
238 |
239 | User 1 244 |
245 |

246 | Nick Smith 247 |

248 |

249 | Feb 23rd, 2017 250 |

251 |
252 |
253 | 7.8 254 |
255 |
256 |
257 | 258 |
259 |
260 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fuga 261 | doloremque architecto dicta animi. 262 |
263 |
264 | User 2 269 |
270 |

271 | Mary Thomas 272 |

273 |

274 | Sept 13th, 2017 275 |

276 |
277 |
278 | 9.3 279 |
280 |
281 |
282 | 283 | 284 |
285 |
286 | 287 |
288 |

289 | Good news! We have 4 free rooms for your selected dates! 290 |

291 | 295 |
296 |
297 |
298 | 299 | 300 | 301 | -------------------------------------------------------------------------------- /16. Trillo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "trillo", 3 | "version": "1.0.0", 4 | "description": "Trillo app", 5 | "main": "index.js", 6 | "scripts": { 7 | "watch:sass": "node-sass sass/main.scss css/style.css -w", 8 | "dev-server": "live-server", 9 | "start": "npm-run-all --parallel dev-server watch:sass", 10 | "compile:sass": "node-sass sass/main.scss css/style.comp.css", 11 | "prefix:css": "postcss --use autoprefixer -b 'last 10 versions' css/style.concat.css -o css/style.prefix.css", 12 | "compress:css": "node-sass css/style.prefix.css css/style.css --output-style compressed", 13 | "build:css": "npm-run-all compile:sass prefix:css compress:css" 14 | }, 15 | "author": "", 16 | "license": "ISC", 17 | "devDependencies": { 18 | "autoprefixer": "^9.5.0", 19 | "node-sass": "^4.11.0", 20 | "npm-run-all": "^4.1.5", 21 | "postcss-cli": "^6.1.2" 22 | }, 23 | "dependencies": {} 24 | } 25 | -------------------------------------------------------------------------------- /16. Trillo/sass/_base.scss: -------------------------------------------------------------------------------- 1 | /* 2 | COLORS 3 | 4 | Primary: #eb2f64 5 | Primary light: #FF3366 6 | Primary dark: #BA265D 7 | 8 | Grey light 1: #faf9f9 9 | Grey light 2: #f4f2f2 10 | Grey light 3: #f0eeee 11 | Grey light 4: #ccc 12 | 13 | Grey dark 1: #333 14 | Grey dark 2: #777 15 | Grey dark 3: #999 16 | 17 | */ 18 | :root { 19 | --color-primary: #eb2f64; 20 | --color-primary-light: #ff3366; 21 | --color-primary-dark: #ba265d; 22 | 23 | --color-grey-light-1: #faf9f9; 24 | --color-grey-light-2: #f4f2f2; 25 | --color-grey-light-3: #f0eeee; 26 | --color-grey-light-4: #ccc; 27 | 28 | --color-grey-dark-1: #333; 29 | --color-grey-dark-2: #777; 30 | --color-grey-dark-3: #999; 31 | 32 | --shadow-dark: 0 2rem 6rem rgba(0, 0, 0, 0.3); 33 | --shadow-light: 0 2rem 5rem rgba(0, 0, 0, 0.06); 34 | 35 | --line: 1px solid var(--color-grey-light-2); 36 | } 37 | 38 | $bp-largest: 75em; // 1200px 39 | $bp-large: 68.75em; // 1100px 40 | $bp-medium: 56.25em; // 900px 41 | $bp-small: 37.5em; // 600px 42 | $bp-smallest: 31.25em; // 500px 43 | 44 | * { 45 | margin: 0; 46 | padding: 0; 47 | } 48 | 49 | *, 50 | *::after, 51 | *::before { 52 | box-sizing: inherit; 53 | } 54 | 55 | html { 56 | box-sizing: border-box; 57 | font-size: 62.5%; // 1rem === 10px, 10px/16px === 62.5% 58 | 59 | @media only screen and (max-width: $bp-large) { 60 | font-size: 50%; 61 | } 62 | } 63 | 64 | body { 65 | font-family: 'Open Sans', sans-serif; 66 | font-weight: 400; 67 | line-height: 1.6; 68 | color: var(--color-grey-dark-2); 69 | background-image: linear-gradient( 70 | to right bottom, 71 | var(--color-primary-light), 72 | var(--color-primary-dark) 73 | ); 74 | background-size: cover; 75 | background-repeat: no-repeat; 76 | } 77 | -------------------------------------------------------------------------------- /16. Trillo/sass/_components.scss: -------------------------------------------------------------------------------- 1 | /////////////////////////////// 2 | // LOGO 3 | 4 | .logo { 5 | height: 3.25rem; 6 | margin-left: 2rem; 7 | } 8 | 9 | /////////////////////////////// 10 | // SEARCH 11 | 12 | .search { 13 | flex: 0 0 40%; 14 | 15 | display: flex; 16 | align-items: center; 17 | justify-content: center; 18 | 19 | @media only screen and (max-width: $bp-smallest) { 20 | order: 1; 21 | flex: 0 0 100%; 22 | background-color: var(--color-grey-light-2); 23 | } 24 | 25 | &__input { 26 | font-family: inherit; 27 | font-size: inherit; 28 | color: inherit; 29 | background-color: var(--color-grey-light-2); 30 | border: none; 31 | padding: 0.7rem 2rem; 32 | border-radius: 99rem; 33 | width: 90%; 34 | transition: all 0.2s; 35 | margin-right: -3.5rem; 36 | 37 | &:focus { 38 | outline: none; 39 | width: 100%; 40 | background-color: var(--color-grey-light-3); 41 | } 42 | 43 | &::placeholder { 44 | font-weight: 100; 45 | color: var(--color-grey-light-4); 46 | } 47 | } 48 | 49 | &__input:focus + &__button { 50 | background-color: var(--color-grey-light-3); 51 | } 52 | 53 | &__button { 54 | border: none; 55 | background-color: var(--color-grey-light-2); 56 | 57 | &:focus { 58 | outline: none; 59 | } 60 | 61 | &:active { 62 | transform: translateY(2px); 63 | } 64 | } 65 | 66 | &__icon { 67 | height: 2rem; 68 | width: 2rem; 69 | fill: var(--color-grey-dark-3); 70 | } 71 | } 72 | 73 | ////////////////////////////// 74 | // USER NAV 75 | 76 | .user-nav { 77 | align-self: stretch; 78 | 79 | display: flex; 80 | align-items: center; 81 | 82 | & > * { 83 | padding: 0 2rem; 84 | cursor: pointer; 85 | height: 100%; 86 | display: flex; 87 | align-items: center; 88 | } 89 | 90 | & > *:hover { 91 | background-color: var(--color-grey-light-2); 92 | } 93 | 94 | &__icon-box { 95 | position: relative; 96 | } 97 | 98 | &__icon { 99 | height: 2.25rem; 100 | width: 2.25rem; 101 | fill: var(--color-grey-dark-2); 102 | } 103 | 104 | &__notification { 105 | font-size: 0.8rem; 106 | height: 1.75rem; 107 | width: 1.75rem; 108 | border-radius: 100%; 109 | background-color: var(--color-primary); 110 | color: #fff; 111 | position: absolute; 112 | top: 1.5rem; 113 | right: 1.1rem; 114 | 115 | display: flex; 116 | justify-content: center; 117 | align-items: center; 118 | } 119 | 120 | &__user-photo { 121 | height: 3.75rem; 122 | width: 3.75rem; 123 | border-radius: 50%; 124 | margin-right: 1rem; 125 | } 126 | } 127 | 128 | /////////////////////////////////// 129 | /// SIDE NAV 130 | 131 | .side-nav { 132 | font-size: 1.4rem; 133 | list-style: none; 134 | margin-top: 3.5rem; 135 | 136 | @media only screen and (max-width: $bp-medium) { 137 | display: flex; 138 | margin: 0; 139 | } 140 | 141 | &__item { 142 | position: relative; 143 | 144 | &:not(:last-child) { 145 | margin-bottom: 0.5rem; 146 | 147 | @media only screen and (max-width: $bp-medium) { 148 | margin-bottom: 0; 149 | } 150 | } 151 | 152 | @media only screen and (max-width: $bp-medium) { 153 | flex: 1; 154 | } 155 | } 156 | 157 | &__item::before { 158 | content: ''; 159 | position: absolute; 160 | top: 0; 161 | left: 0; 162 | height: 100%; 163 | width: 3px; 164 | background-color: var(--color-primary); 165 | transform: scaleY(0); 166 | transition: transform 0.2s, width 0.3s cubic-bezier(1, 0, 0, 1) 0.2s, 167 | background-color 0.1s; 168 | } 169 | 170 | &__item:hover::before, 171 | &__item--active::before { 172 | transform: scaleY(1); 173 | width: 100%; 174 | } 175 | 176 | &__item:active::before { 177 | background-color: var(--color-primary-light); 178 | } 179 | 180 | &__link:link, 181 | &__link:visited { 182 | color: var(--color-grey-light-1); 183 | text-decoration: none; 184 | text-transform: uppercase; 185 | display: block; 186 | padding: 1.5rem 3rem; 187 | position: relative; 188 | z-index: 10; 189 | 190 | display: flex; 191 | align-items: center; 192 | 193 | @media only screen and (max-width: $bp-medium) { 194 | justify-content: center; 195 | padding: 2rem; 196 | } 197 | 198 | @media only screen and (max-width: $bp-small) { 199 | flex-direction: column; 200 | padding: 1.5rem 0.5rem; 201 | } 202 | } 203 | 204 | &__icon { 205 | width: 1.75rem; 206 | height: 1.75rem; 207 | margin-right: 2rem; 208 | fill: currentColor; 209 | 210 | @media only screen and (max-width: $bp-small) { 211 | margin-right: 0; 212 | margin-bottom: 0.7rem; 213 | width: 1.5rem; 214 | height: 1.5rem; 215 | } 216 | } 217 | } 218 | 219 | ////////////////////////////////// 220 | /// LEGAL TEXT 221 | 222 | .legal { 223 | color: var(--color-grey-light-4); 224 | font-size: 1.2rem; 225 | text-align: center; 226 | padding: 2.5rem; 227 | 228 | @media only screen and (max-width: $bp-medium) { 229 | display: none; 230 | } 231 | } 232 | 233 | ////////////////////////////////// 234 | /// GALLERY 235 | .gallery { 236 | display: flex; 237 | 238 | &__photo { 239 | width: 100%; 240 | display: block; 241 | } 242 | } 243 | 244 | ////////////////////////////////// 245 | /// OVERVIEW 246 | .overview { 247 | display: flex; 248 | align-items: center; 249 | border-bottom: var(--line); 250 | 251 | &__heading { 252 | font-size: 2.25rem; 253 | font-weight: 300; 254 | text-transform: uppercase; 255 | letter-spacing: 1px; 256 | padding: 1.5rem 3rem; 257 | 258 | @media only screen and (max-width: $bp-small) { 259 | font-size: 1.8rem; 260 | padding: 1.25rem 2rem; 261 | } 262 | } 263 | 264 | &__stars { 265 | margin-right: auto; 266 | display: flex; 267 | } 268 | 269 | &__icon-star, 270 | &__icon-location { 271 | width: 1.75rem; 272 | height: 1.75rem; 273 | fill: var(--color-primary); 274 | } 275 | 276 | &__location { 277 | font-size: 1.2rem; 278 | display: flex; 279 | align-items: center; 280 | } 281 | 282 | &__icon-location { 283 | margin-right: 0.5rem; 284 | } 285 | 286 | &__rating { 287 | background-color: var(--color-primary); 288 | margin-left: 3rem; 289 | color: #fff; 290 | align-self: stretch; 291 | padding: 0 2.25rem; 292 | 293 | display: flex; 294 | justify-content: center; 295 | align-items: center; 296 | flex-direction: column; 297 | 298 | @media only screen and (max-width: $bp-small) { 299 | padding: 0 1.5rem; 300 | } 301 | } 302 | 303 | &__rating-average { 304 | font-size: 2.25rem; 305 | font-weight: 300; 306 | margin-bottom: -3px; 307 | 308 | @media only screen and (max-width: $bp-small) { 309 | font-size: 1.8rem; 310 | } 311 | } 312 | 313 | &__rating-count { 314 | font-size: 0.8rem; 315 | text-transform: uppercase; 316 | 317 | @media only screen and (max-width: $bp-small) { 318 | font-size: 0.5rem; 319 | } 320 | } 321 | } 322 | 323 | ////////////////////// 324 | /// BUTTON 325 | 326 | .btn-inline { 327 | border: none; 328 | color: var(--color-primary); 329 | font-size: inherit; 330 | border-bottom: 1px solid currentColor; 331 | padding: 2px; 332 | display: inline-block; 333 | background-color: transparent; 334 | cursor: pointer; 335 | transition: all 0.2s; 336 | 337 | & span { 338 | margin-left: 3px; 339 | transition: margin-left 0.2s; 340 | } 341 | 342 | &:hover { 343 | color: var(--color-grey-dark-1); 344 | 345 | span { 346 | margin-left: 8px; 347 | } 348 | } 349 | 350 | &:focus { 351 | outline: none; 352 | animation: pulsate 0.7s infinite; 353 | } 354 | } 355 | 356 | @keyframes pulsate { 357 | 0% { 358 | transform: scale(1); 359 | box-shadow: none; 360 | } 361 | 50% { 362 | transform: scale(1.05); 363 | box-shadow: 0 1rem 4rem rgba(0, 0, 0, 0.25); 364 | } 365 | 100% { 366 | transform: scale(1); 367 | box-shadow: none; 368 | } 369 | } 370 | 371 | /////////////////////////// 372 | /// PARAGRAPH 373 | .paragraph:not(:last-of-type) { 374 | margin-bottom: 2rem; 375 | } 376 | 377 | /////////////////////////// 378 | /// LIST 379 | 380 | .list { 381 | list-style: none; 382 | margin: 3rem 0; 383 | padding: 3rem 0; 384 | border-top: var(--line); 385 | border-bottom: var(--line); 386 | 387 | display: flex; 388 | flex-wrap: wrap; 389 | 390 | &__item { 391 | flex: 0 0 50%; 392 | margin-bottom: 0.7rem; 393 | } 394 | 395 | &__item::before { 396 | content: ''; 397 | display: inline-block; 398 | height: 1rem; 399 | width: 1rem; 400 | margin-right: 0.7rem; 401 | 402 | // Older browsers 403 | // background-image: url(../img/chevron-thin-right.svg); 404 | // background-size: cover; 405 | 406 | // Newer browsers - masks 407 | @supports (-webkit-mask-image: url()) or (mask-image: url()) { 408 | background-color: var(--color-primary); 409 | -webkit-mask-image: url(../img/chevron-thin-right.svg); 410 | -webkit-mask-size: cover; 411 | mask-image: url(../img/chevron-thin-right.svg); 412 | mask-size: cover; 413 | background-image: none; 414 | } 415 | } 416 | } 417 | 418 | /////////////////////////// 419 | /// RECOMMEND 420 | .recommend { 421 | font-size: 1.3rem; 422 | color: var(--color-grey-dark-3); 423 | 424 | display: flex; 425 | align-items: center; 426 | 427 | &__count { 428 | margin-right: auto; 429 | } 430 | 431 | &__friends { 432 | display: flex; 433 | } 434 | 435 | &__photo { 436 | box-sizing: content-box; 437 | height: 4rem; 438 | width: 4rem; 439 | border-radius: 50%; 440 | border: 3px solid #fff; 441 | 442 | &:not(:last-child) { 443 | margin-right: -2rem; 444 | } 445 | } 446 | } 447 | 448 | /////////////////////////// 449 | /// REVIEWS 450 | 451 | .review { 452 | background-color: #fff; 453 | box-shadow: var(--shadow-light); 454 | padding: 3rem; 455 | margin-bottom: 3.5rem; 456 | position: relative; 457 | overflow: hidden; 458 | 459 | @media only screen and (max-width: $bp-medium) { 460 | padding: 2rem; 461 | margin-bottom: 3rem; 462 | } 463 | 464 | &__text { 465 | margin-bottom: 2rem; 466 | position: relative; 467 | z-index: 10; 468 | } 469 | 470 | &__user { 471 | display: flex; 472 | align-items: center; 473 | } 474 | 475 | &__photo { 476 | height: 4.5rem; 477 | width: 4.5rem; 478 | border-radius: 50%; 479 | margin-right: 1.5rem; 480 | } 481 | 482 | &__user-box { 483 | margin-right: auto; 484 | } 485 | 486 | &__user-name { 487 | font-size: 1.1rem; 488 | font-weight: 600; 489 | text-transform: uppercase; 490 | margin-bottom: 0.4rem; 491 | } 492 | 493 | &__user-date { 494 | font-size: 1rem; 495 | color: var(--color-grey-dark-3); 496 | } 497 | 498 | &__rating { 499 | color: var(--color-primary); 500 | font-size: 2.2rem; 501 | font-weight: 300; 502 | } 503 | 504 | &::before { 505 | content: '\201C'; 506 | position: absolute; 507 | top: -2.75rem; 508 | left: -1rem; 509 | line-height: 1; 510 | font-size: 20rem; 511 | color: var(--color-grey-light-2); 512 | font-family: sans-serif; 513 | z-index: 1; 514 | } 515 | } 516 | 517 | //////////////////////////////////////// 518 | // CALL TO ACTION 519 | .cta { 520 | padding: 3.5rem 0; 521 | text-align: center; 522 | 523 | @media only screen and (max-width: $bp-medium) { 524 | padding: 2.5rem 0; 525 | } 526 | 527 | &__book-now { 528 | font-size: 2rem; 529 | font-weight: 300; 530 | text-transform: uppercase; 531 | margin-bottom: 2.5rem; 532 | } 533 | } 534 | 535 | //////////////////////////////////////// 536 | // CTA BUTTON 537 | .btn { 538 | font-size: 1.5rem; 539 | font-weight: 300; 540 | text-transform: uppercase; 541 | border-radius: 100px; 542 | border: none; 543 | background-image: linear-gradient( 544 | to right, 545 | var(--color-primary-light), 546 | var(--color-primary-dark) 547 | ); 548 | color: #fff; 549 | position: relative; 550 | overflow: hidden; 551 | cursor: pointer; 552 | 553 | & > * { 554 | display: inline-block; 555 | height: 100%; 556 | width: 100%; 557 | transition: all 0.2s; 558 | } 559 | 560 | &__visible { 561 | padding: 2rem 7.5rem; 562 | } 563 | 564 | &__invisible { 565 | position: absolute; 566 | padding: 2rem 0; 567 | left: 0; 568 | top: -100%; 569 | } 570 | 571 | &:hover { 572 | background-image: linear-gradient( 573 | to left, 574 | var(--color-primary-light), 575 | var(--color-primary-dark) 576 | ); 577 | } 578 | 579 | &:hover &__visible { 580 | transform: translateY(100%); 581 | } 582 | 583 | &:hover &__invisible { 584 | top: 0; 585 | } 586 | 587 | &:focus { 588 | outline: none; 589 | animation: pulsate 1s infinite; 590 | } 591 | } 592 | -------------------------------------------------------------------------------- /16. Trillo/sass/_layout.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | max-width: 120rem; 3 | margin: 8rem auto; 4 | background-color: var(--color-grey-light-1); 5 | box-shadow: var(--shadow-dark); 6 | 7 | min-height: 50rem; 8 | 9 | @media only screen and (max-width: $bp-largest) { 10 | margin: 0; 11 | max-width: 100%; 12 | width: 100%; 13 | } 14 | } 15 | 16 | .header { 17 | font-size: 1.4rem; 18 | height: 7rem; 19 | background-color: #fff; 20 | border-bottom: var(--line); 21 | 22 | display: flex; 23 | justify-content: space-between; 24 | align-items: center; 25 | 26 | @media only screen and (max-width: $bp-smallest) { 27 | flex-wrap: wrap; 28 | align-content: space-around; 29 | height: 11rem; 30 | } 31 | } 32 | 33 | .content { 34 | display: flex; 35 | 36 | @media only screen and (max-width: $bp-medium) { 37 | flex-direction: column; 38 | } 39 | } 40 | 41 | .sidebar { 42 | background-color: var(--color-grey-dark-1); 43 | 44 | flex: 0 0 18%; 45 | 46 | display: flex; 47 | flex-direction: column; 48 | justify-content: space-between; 49 | } 50 | 51 | .hotel-view { 52 | background-color: #fff; 53 | flex: 1; 54 | } 55 | 56 | .detail { 57 | display: flex; 58 | padding: 4.5rem; 59 | font-size: 1.4rem; 60 | background-color: var(--color-grey-light-1); 61 | border-bottom: var(--line); 62 | 63 | @media only screen and (max-width: $bp-medium) { 64 | padding: 3rem; 65 | } 66 | 67 | @media only screen and (max-width: $bp-small) { 68 | flex-direction: column; 69 | } 70 | } 71 | 72 | .description { 73 | flex: 0 0 60%; 74 | margin-right: 4.5rem; 75 | padding: 3rem; 76 | background-color: #fff; 77 | box-shadow: var(--shadow-light); 78 | 79 | @media only screen and (max-width: $bp-medium) { 80 | padding: 2rem; 81 | margin-right: 3rem; 82 | } 83 | 84 | @media only screen and (max-width: $bp-small) { 85 | margin-right: 0; 86 | margin-bottom: 3rem; 87 | } 88 | } 89 | 90 | .user-reviews { 91 | flex: 1; 92 | 93 | display: flex; 94 | flex-direction: column; 95 | align-items: center; 96 | } 97 | -------------------------------------------------------------------------------- /16. Trillo/sass/main.scss: -------------------------------------------------------------------------------- 1 | @import 'base'; 2 | @import 'components'; 3 | @import 'layout'; 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HTML & CSS Practice 2 | 3 | Practicing HTML & CSS by creating websites and uploading to this repo. 4 | 5 | 1. Acme Web Design [Traversy Media](https://www.youtube.com/watch?v=Wm6CUkswsNw) 6 | 2. Elegant Blur Landing [Traversy Media](https://www.youtube.com/watch?v=HZv8YHYUHTU) 7 | 3. Responsive Landing Page (+jQuery) [Traversy Media](https://www.youtube.com/watch?v=GJXXf3_dcng) 8 | 4. Bootstrap Landing Page [Drew Ryan](https://www.youtube.com/watch?v=Zn64_IVLO88) 9 | 5. Parallax Effect [Traversy Media](https://www.youtube.com/watch?v=JttTcnidSdQ) 10 | 6. Coming Soon Page [DarkCode](https://www.youtube.com/watch?v=uoMkz1cXOcY&t) 11 | 7. Backgrounds Fade out Effect [DarkCode](https://www.youtube.com/watch?v=Vr4Ay4td3xU) 12 | 8. Split Landing Page [Traversy Media](https://www.youtube.com/watch?v=oRmQN244Ir0) 13 | 9. Styling an HTML5 Form Playlist [The Net Ninja](https://www.youtube.com/playlist?list=PL4cUxeGkcC9g5_p_BVUGWykHfqx6bb7qK) 14 | 10. CSS3 Pricing Tables [Traversy Media](https://www.youtube.com/watch?v=7rJ5rhdVvOo) 15 | 11. Fullscreen Video Background [Traversy Media](https://www.youtube.com/watch?v=Xy3GlrddZFI) 16 | 12. Pluralsight Clone Login Page [Traversy Media](https://www.youtube.com/watch?v=wIx1O5Y5EB4) 17 | 13. Materialize CSS Travel Agency [Traversy Media](https://www.youtube.com/watch?v=MaP3vO-vEsg) 18 | 14. Booklist App OOJS [Traversy Media](https://www.youtube.com/watch?v=JaMCxVWtW58) 19 | 15. Natours Project [Advanced CSS and Sass](https://www.udemy.com/advanced-css-and-sass/) 20 | 16. Trillo (Flexbox) [Advanced CSS and Sass](https://www.udemy.com/advanced-css-and-sass/) 21 | --------------------------------------------------------------------------------