├── .github
└── workflows
│ ├── jekyll-gh-pages.yml
│ └── static.yml
├── LICENSE
├── README.md
├── assets
├── css
│ └── styles.css
├── img
│ ├── about.jpg
│ ├── perfil.png
│ ├── work1.jpg
│ ├── work2.jpg
│ ├── work3.jpg
│ ├── work4.jpg
│ ├── work5.jpg
│ └── work6.jpg
├── js
│ └── main.js
└── scss
│ └── styles.scss
└── index.html
/.github/workflows/jekyll-gh-pages.yml:
--------------------------------------------------------------------------------
1 | # Sample workflow for building and deploying a Jekyll site to GitHub Pages
2 | name: Deploy Jekyll with GitHub Pages dependencies preinstalled
3 |
4 | on:
5 | # Runs on pushes targeting the default branch
6 | push:
7 | branches: ["main"]
8 |
9 | # Allows you to run this workflow manually from the Actions tab
10 | workflow_dispatch:
11 |
12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13 | permissions:
14 | contents: read
15 | pages: write
16 | id-token: write
17 |
18 | # Allow one concurrent deployment
19 | concurrency:
20 | group: "pages"
21 | cancel-in-progress: true
22 |
23 | jobs:
24 | # Build job
25 | build:
26 | runs-on: ubuntu-latest
27 | steps:
28 | - name: Checkout
29 | uses: actions/checkout@v3
30 | - name: Setup Pages
31 | uses: actions/configure-pages@v2
32 | - name: Build with Jekyll
33 | uses: actions/jekyll-build-pages@v1
34 | with:
35 | source: ./
36 | destination: ./_site
37 | - name: Upload artifact
38 | uses: actions/upload-pages-artifact@v1
39 |
40 | # Deployment job
41 | deploy:
42 | environment:
43 | name: github-pages
44 | url: ${{ steps.deployment.outputs.page_url }}
45 | runs-on: ubuntu-latest
46 | needs: build
47 | steps:
48 | - name: Deploy to GitHub Pages
49 | id: deployment
50 | uses: actions/deploy-pages@v1
51 |
--------------------------------------------------------------------------------
/.github/workflows/static.yml:
--------------------------------------------------------------------------------
1 | # Simple workflow for deploying static content to GitHub Pages
2 | name: Deploy static content to Pages
3 |
4 | on:
5 | # Runs on pushes targeting the default branch
6 | push:
7 | branches: ["main"]
8 |
9 | # Allows you to run this workflow manually from the Actions tab
10 | workflow_dispatch:
11 |
12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13 | permissions:
14 | contents: read
15 | pages: write
16 | id-token: write
17 |
18 | # Allow one concurrent deployment
19 | concurrency:
20 | group: "pages"
21 | cancel-in-progress: true
22 |
23 | jobs:
24 | # Single deploy job since we're just deploying
25 | deploy:
26 | environment:
27 | name: github-pages
28 | url: ${{ steps.deployment.outputs.page_url }}
29 | runs-on: ubuntu-latest
30 | steps:
31 | - name: Checkout
32 | uses: actions/checkout@v3
33 | - name: Setup Pages
34 | uses: actions/configure-pages@v2
35 | - name: Upload artifact
36 | uses: actions/upload-pages-artifact@v1
37 | with:
38 | # Upload entire repository
39 | path: '.'
40 | - name: Deploy to GitHub Pages
41 | id: deployment
42 | uses: actions/deploy-pages@v1
43 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Coding With Enjoy
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
Personal Portfolio | سایت شخصی
2 |
3 | ###
4 |
5 | دمو | Demo 😁 https://codingwithenjoy.github.io/Portfolio-HTML-CSS-JS
6 |
7 | ###
8 |
9 |
10 |
11 | ###
12 |
13 |
14 |
15 | ###
16 |
17 |
18 |
19 |
20 |
21 | ###
22 |
23 |
24 |
25 | ###
26 |
27 |
28 |
29 |
30 |
31 | ###
32 |
33 |
34 |
35 | ###
36 |
37 |
38 |
39 | ###
40 |
41 |
42 |
43 | ###
44 |
45 |
59 |
60 | ###
61 |
62 |
63 |
64 | ###
65 |
66 | توسعه داده شده توسط برنامه نویسی با لذت
67 |
68 | ###
69 |
--------------------------------------------------------------------------------
/assets/css/styles.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap");
2 |
3 | :root {
4 | --header-height: 3rem;
5 | --font-semi: 600;
6 | --hue-color: 224;
7 | --first-color: hsl(var(--hue-color), 89%, 60%);
8 | --second-color: hsl(var(--hue-color), 56%, 12%);
9 | --body-font: "Poppins", sans-serif;
10 | --big-font-size: 2rem;
11 | --h2-font-size: 1.25rem;
12 | --normal-font-size: 0.938rem;
13 | --smaller-font-size: 0.75rem;
14 | --mb-2: 1rem;
15 | --mb-4: 2rem;
16 | --mb-5: 2.5rem;
17 | --mb-6: 3rem;
18 | --z-back: -10;
19 | --z-fixed: 100;
20 | }
21 |
22 | @media screen and (min-width: 968px) {
23 | :root {
24 | --big-font-size: 3.5rem;
25 | --h2-font-size: 2rem;
26 | --normal-font-size: 1rem;
27 | --smaller-font-size: 0.875rem;
28 | }
29 | }
30 |
31 | *,
32 | ::before,
33 | ::after {
34 | box-sizing: border-box;
35 | }
36 |
37 | html {
38 | scroll-behavior: smooth;
39 | }
40 |
41 | body {
42 | margin: var(--header-height) 0 0 0;
43 | font-family: var(--body-font);
44 | font-size: var(--normal-font-size);
45 | color: var(--second-color);
46 | }
47 |
48 | h1,
49 | h2,
50 | p {
51 | margin: 0;
52 | }
53 |
54 | ul {
55 | margin: 0;
56 | padding: 0;
57 | list-style: none;
58 | }
59 |
60 | a {
61 | text-decoration: none;
62 | }
63 |
64 | img {
65 | max-width: 100%;
66 | height: auto;
67 | display: block;
68 | }
69 |
70 | .section-title {
71 | position: relative;
72 | font-size: var(--h2-font-size);
73 | color: var(--first-color);
74 | margin-top: var(--mb-2);
75 | margin-bottom: var(--mb-4);
76 | text-align: center;
77 | }
78 |
79 | .section-title::after {
80 | position: absolute;
81 | content: "";
82 | width: 64px;
83 | height: 0.18rem;
84 | left: 0;
85 | right: 0;
86 | margin: auto;
87 | top: 2rem;
88 | background-color: var(--first-color);
89 | }
90 |
91 | .section {
92 | padding-top: 3rem;
93 | padding-bottom: 2rem;
94 | }
95 |
96 | .bd-grid {
97 | max-width: 1024px;
98 | display: grid;
99 | margin-left: var(--mb-2);
100 | margin-right: var(--mb-2);
101 | }
102 |
103 | .l-header {
104 | width: 100%;
105 | position: fixed;
106 | top: 0;
107 | left: 0;
108 | z-index: var(--z-fixed);
109 | background-color: #fff;
110 | box-shadow: 0 1px 4px rgba(146, 161, 176, 0.15);
111 | }
112 |
113 | .nav {
114 | height: var(--header-height);
115 | display: flex;
116 | justify-content: space-between;
117 | align-items: center;
118 | font-weight: var(--font-semi);
119 | }
120 |
121 | @media screen and (max-width: 767px) {
122 | .nav__menu {
123 | position: fixed;
124 | top: var(--header-height);
125 | right: -100%;
126 | width: 80%;
127 | height: 100%;
128 | padding: 2rem;
129 | background-color: rgba(0, 0, 0, 0.8);
130 | backdrop-filter: blur(8px);
131 | transition: 0.5s;
132 | }
133 | }
134 |
135 | .nav__item {
136 | margin-bottom: var(--mb-4);
137 | }
138 |
139 | .nav__link {
140 | position: relative;
141 | color: #fff;
142 | }
143 |
144 | .nav__link:hover {
145 | position: relative;
146 | }
147 |
148 | .nav__link:hover::after {
149 | position: absolute;
150 | content: "";
151 | width: 100%;
152 | height: 0.18rem;
153 | left: 0;
154 | top: 2rem;
155 | background-color: var(--first-color);
156 | }
157 |
158 | .nav__logo {
159 | color: var(--second-color);
160 | }
161 |
162 | .nav__toggle {
163 | color: var(--second-color);
164 | font-size: 1.5rem;
165 | cursor: pointer;
166 | }
167 |
168 | .active::after {
169 | position: absolute;
170 | content: "";
171 | width: 100%;
172 | height: 0.18rem;
173 | left: 0;
174 | top: 2rem;
175 | background-color: var(--first-color);
176 | }
177 |
178 | .show {
179 | right: 0;
180 | }
181 |
182 | .home {
183 | position: relative;
184 | row-gap: 5rem;
185 | padding: 4rem 0 5rem;
186 | }
187 |
188 | .home__data {
189 | align-self: center;
190 | }
191 |
192 | .home__title {
193 | font-size: var(--big-font-size);
194 | margin-bottom: var(--mb-5);
195 | }
196 |
197 | .home__title-color {
198 | color: var(--first-color);
199 | }
200 |
201 | .home__social {
202 | display: flex;
203 | flex-direction: column;
204 | }
205 |
206 | .home__social-icon {
207 | width: max-content;
208 | margin-bottom: var(--mb-2);
209 | font-size: 1.5rem;
210 | color: var(--second-color);
211 | }
212 |
213 | .home__social-icon:hover {
214 | color: var(--first-color);
215 | }
216 |
217 | .home__img {
218 | position: absolute;
219 | right: 0;
220 | bottom: 0;
221 | width: 260px;
222 | }
223 |
224 | .home__blob {
225 | fill: var(--first-color);
226 | }
227 |
228 | .home__blob-img {
229 | width: 360px;
230 | }
231 |
232 | .button {
233 | display: inline-block;
234 | background-color: var(--first-color);
235 | color: #fff;
236 | padding: 0.75rem 2.5rem;
237 | font-weight: var(--font-semi);
238 | border-radius: 0.5rem;
239 | transition: 0.3s;
240 | }
241 |
242 | .button:hover {
243 | box-shadow: 0px 10px 36px rgba(0, 0, 0, 0.15);
244 | }
245 |
246 | .about__container {
247 | row-gap: 2rem;
248 | text-align: center;
249 | }
250 |
251 | .about__subtitle {
252 | margin-bottom: var(--mb-2);
253 | }
254 |
255 | .about__img {
256 | justify-self: center;
257 | }
258 |
259 | .about__img img {
260 | width: 200px;
261 | border-radius: 0.5rem;
262 | }
263 |
264 | .skills__container {
265 | row-gap: 2rem;
266 | text-align: center;
267 | }
268 |
269 | .skills__subtitle {
270 | margin-bottom: var(--mb-2);
271 | }
272 |
273 | .skills__text {
274 | margin-bottom: var(--mb-4);
275 | }
276 |
277 | .skills__data {
278 | display: flex;
279 | justify-content: space-between;
280 | align-items: center;
281 | position: relative;
282 | font-weight: var(--font-semi);
283 | padding: 0.5rem 1rem;
284 | margin-bottom: var(--mb-4);
285 | border-radius: 0.5rem;
286 | box-shadow: 0px 4px 25px rgba(14, 36, 49, 0.15);
287 | }
288 |
289 | .skills__icon {
290 | font-size: 2rem;
291 | margin-right: var(--mb-2);
292 | color: var(--first-color);
293 | }
294 |
295 | .skills__names {
296 | display: flex;
297 | align-items: center;
298 | }
299 |
300 | .skills__bar {
301 | position: absolute;
302 | left: 0;
303 | bottom: 0;
304 | background-color: var(--first-color);
305 | height: 0.25rem;
306 | border-radius: 0.5rem;
307 | z-index: var(--z-back);
308 | }
309 |
310 | .skills__html {
311 | width: 95%;
312 | }
313 |
314 | .skills__css {
315 | width: 85%;
316 | }
317 |
318 | .skills__js {
319 | width: 90%;
320 | }
321 |
322 | .skills__ux {
323 | width: 85%;
324 | }
325 |
326 | .skills__img {
327 | border-radius: 0.5rem;
328 | }
329 |
330 | .work__container {
331 | row-gap: 2rem;
332 | }
333 |
334 | .work__img {
335 | box-shadow: 0px 4px 25px rgba(14, 36, 49, 0.15);
336 | border-radius: 0.5rem;
337 | overflow: hidden;
338 | }
339 |
340 | .work__img img {
341 | transition: 1s;
342 | }
343 |
344 | .work__img img:hover {
345 | transform: scale(1.1);
346 | }
347 |
348 | .contact__input {
349 | width: 100%;
350 | font-size: var(--normal-font-size);
351 | font-weight: var(--font-semi);
352 | padding: 1rem;
353 | border-radius: 0.5rem;
354 | border: 1.5px solid var(--second-color);
355 | outline: none;
356 | margin-bottom: var(--mb-4);
357 | }
358 |
359 | .contact__button {
360 | display: block;
361 | border: none;
362 | outline: none;
363 | font-size: var(--normal-font-size);
364 | cursor: pointer;
365 | margin-left: auto;
366 | }
367 |
368 | .footer {
369 | background-color: var(--second-color);
370 | color: #fff;
371 | text-align: center;
372 | font-weight: var(--font-semi);
373 | padding: 2rem 0;
374 | }
375 |
376 | .footer__title {
377 | font-size: 2rem;
378 | margin-bottom: var(--mb-4);
379 | }
380 |
381 | .footer__social {
382 | margin-bottom: var(--mb-4);
383 | }
384 |
385 | .footer__icon {
386 | font-size: 1.5rem;
387 | color: #fff;
388 | margin: 0 var(--mb-2);
389 | }
390 |
391 | .footer__copy {
392 | font-size: var(--smaller-font-size);
393 | }
394 |
395 | @media screen and (max-width: 320px) {
396 | .home {
397 | row-gap: 2rem;
398 | }
399 | .home__img {
400 | width: 200px;
401 | }
402 | }
403 |
404 | @media screen and (min-width: 576px) {
405 | .home {
406 | padding: 4rem 0 2rem;
407 | }
408 | .home__social {
409 | padding-top: 0;
410 | padding-bottom: 2.5rem;
411 | flex-direction: row;
412 | align-self: flex-end;
413 | }
414 | .home__social-icon {
415 | margin-bottom: 0;
416 | margin-right: var(--mb-4);
417 | }
418 | .home__img {
419 | width: 300px;
420 | bottom: 25%;
421 | }
422 | .about__container {
423 | grid-template-columns: repeat(2, 1fr);
424 | align-items: center;
425 | text-align: initial;
426 | }
427 | .skills__container {
428 | grid-template-columns: 0.7fr;
429 | justify-content: center;
430 | column-gap: 1rem;
431 | }
432 | .work__container {
433 | grid-template-columns: repeat(2, 1fr);
434 | column-gap: 2rem;
435 | padding-top: 2rem;
436 | }
437 | .contact__form {
438 | width: 360px;
439 | padding-top: 2rem;
440 | }
441 | .contact__container {
442 | justify-items: center;
443 | }
444 | }
445 |
446 | @media screen and (min-width: 768px) {
447 | body {
448 | margin: 0;
449 | }
450 | .section {
451 | padding-top: 4rem;
452 | padding-bottom: 3rem;
453 | }
454 | .section-title {
455 | margin-bottom: var(--mb-6);
456 | }
457 | .section-title::after {
458 | width: 80px;
459 | top: 3rem;
460 | }
461 | .nav {
462 | height: calc(var(--header-height) + 1.5rem);
463 | }
464 | .nav__list {
465 | display: flex;
466 | padding-top: 0;
467 | }
468 | .nav__item {
469 | margin-left: var(--mb-6);
470 | margin-bottom: 0;
471 | }
472 | .nav__toggle {
473 | display: none;
474 | }
475 | .nav__link {
476 | color: var(--second-color);
477 | }
478 | .home {
479 | padding: 8rem 0 2rem;
480 | }
481 | .home__img {
482 | width: 400px;
483 | bottom: 10%;
484 | }
485 | .about__container {
486 | padding-top: 2rem;
487 | }
488 | .about__img img {
489 | width: 300px;
490 | }
491 | .skills__container {
492 | grid-template-columns: repeat(2, 1fr);
493 | column-gap: 2rem;
494 | align-items: center;
495 | text-align: initial;
496 | }
497 | .work__container {
498 | grid-template-columns: repeat(3, 1fr);
499 | column-gap: 2rem;
500 | }
501 | }
502 |
503 | @media screen and (min-width: 992px) {
504 | .bd-grid {
505 | margin-left: auto;
506 | margin-right: auto;
507 | }
508 | .home {
509 | padding: 10rem 0 2rem;
510 | }
511 | .home__img {
512 | width: 450px;
513 | }
514 | }
515 |
--------------------------------------------------------------------------------
/assets/img/about.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/about.jpg
--------------------------------------------------------------------------------
/assets/img/perfil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/perfil.png
--------------------------------------------------------------------------------
/assets/img/work1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/work1.jpg
--------------------------------------------------------------------------------
/assets/img/work2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/work2.jpg
--------------------------------------------------------------------------------
/assets/img/work3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/work3.jpg
--------------------------------------------------------------------------------
/assets/img/work4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/work4.jpg
--------------------------------------------------------------------------------
/assets/img/work5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/work5.jpg
--------------------------------------------------------------------------------
/assets/img/work6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingWithEnjoy/Portfolio-HTML-CSS-JS/d543e6b3d2bd9361cee4fa001772e325c290bcf9/assets/img/work6.jpg
--------------------------------------------------------------------------------
/assets/js/main.js:
--------------------------------------------------------------------------------
1 | const showMenu = (toggleId, navId) => {
2 | const toggle = document.getElementById(toggleId),
3 | nav = document.getElementById(navId);
4 |
5 | if (toggle && nav) {
6 | toggle.addEventListener("click", () => {
7 | nav.classList.toggle("show");
8 | });
9 | }
10 | };
11 | showMenu("nav-toggle", "nav-menu");
12 |
13 | const navLink = document.querySelectorAll(".nav__link");
14 |
15 | function linkAction() {
16 | const navMenu = document.getElementById("nav-menu");
17 | navMenu.classList.remove("show");
18 | }
19 | navLink.forEach((n) => n.addEventListener("click", linkAction));
20 |
21 | const sections = document.querySelectorAll("section[id]");
22 |
23 | function scrollActive() {
24 | const scrollY = window.pageYOffset;
25 |
26 | sections.forEach((current) => {
27 | const sectionHeight = current.offsetHeight;
28 | const sectionTop = current.offsetTop - 50;
29 | sectionId = current.getAttribute("id");
30 |
31 | if (scrollY > sectionTop && scrollY <= sectionTop + sectionHeight) {
32 | document
33 | .querySelector(".nav__menu a[href*=" + sectionId + "]")
34 | .classList.add("active");
35 | } else {
36 | document
37 | .querySelector(".nav__menu a[href*=" + sectionId + "]")
38 | .classList.remove("active");
39 | }
40 | });
41 | }
42 | window.addEventListener("scroll", scrollActive);
43 |
44 | const sr = ScrollReveal({
45 | origin: "top",
46 | distance: "60px",
47 | duration: 2000,
48 | delay: 200,
49 | reset: true,
50 | });
51 |
52 | sr.reveal(".home__data, .about__img, .skills__subtitle, .skills__text", {});
53 | sr.reveal(".home__img, .about__subtitle, .about__text, .skills__img", {
54 | delay: 400,
55 | });
56 | sr.reveal(".home__social-icon", { interval: 200 });
57 | sr.reveal(".skills__data, .work__img, .contact__input", { interval: 200 });
58 |
--------------------------------------------------------------------------------
/assets/scss/styles.scss:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap");
2 |
3 | --header-height: 3rem;
4 | --font-semi: 600;
5 |
6 | --hue-color: 224;
7 | --first-color: hsl(var(--hue-color), 89%, 60%);
8 | --second-color: hsl(var(--hue-color), 56%, 12%);
9 |
10 | --body-font: "Poppins", sans-serif;
11 |
12 | --big-font-size: 2rem;
13 | --h2-font-size: 1.25rem;
14 | --normal-font-size: 0.938rem;
15 | --smaller-font-size: 0.75rem;
16 |
17 | --mb-2: 1rem;
18 | --mb-4: 2rem;
19 | --mb-5: 2.5rem;
20 | --mb-6: 3rem;
21 |
22 | --z-back: -10;
23 | --z-fixed: 100;
24 |
25 | @media screen and (min-width: 968px) {
26 | --big-font-size: 3.5rem;
27 | --h2-font-size: 2rem;
28 | --normal-font-size: 1rem;
29 | --smaller-font-size: 0.875rem;
30 | }
31 |
32 | *,
33 | ::before,
34 | ::after {
35 | box-sizing: border-box;
36 | }
37 | html {
38 | scroll-behavior: smooth;
39 | }
40 | body {
41 | margin: var(--header-height) 0 0 0;
42 | font-family: var(--body-font);
43 | font-size: var(--normal-font-size);
44 | color: var(--second-color);
45 | }
46 | h1,
47 | h2,
48 | p {
49 | margin: 0;
50 | }
51 | ul {
52 | margin: 0;
53 | padding: 0;
54 | list-style: none;
55 | }
56 | a {
57 | text-decoration: none;
58 | }
59 | img {
60 | max-width: 100%;
61 | height: auto;
62 | display: block;
63 | }
64 |
65 | .section-title {
66 | position: relative;
67 | font-size: var(--h2-font-size);
68 | color: var(--first-color);
69 | margin-top: var(--mb-2);
70 | margin-bottom: var(--mb-4);
71 | text-align: center;
72 |
73 | &::after {
74 | position: absolute;
75 | content: "";
76 | width: 64px;
77 | height: 0.18rem;
78 | left: 0;
79 | right: 0;
80 | margin: auto;
81 | top: 2rem;
82 | background-color: var(--first-color);
83 | }
84 | }
85 | .section {
86 | padding-top: 3rem;
87 | padding-bottom: 2rem;
88 | }
89 |
90 | .bd-grid {
91 | max-width: 1024px;
92 | display: grid;
93 | margin-left: var(--mb-2);
94 | margin-right: var(--mb-2);
95 | }
96 | .l-header {
97 | width: 100%;
98 | position: fixed;
99 | top: 0;
100 | left: 0;
101 | z-index: var(--z-fixed);
102 | background-color: #fff;
103 | box-shadow: 0 1px 4px rgba(146, 161, 176, 0.15);
104 | }
105 |
106 | .nav {
107 | height: var(--header-height);
108 | display: flex;
109 | justify-content: space-between;
110 | align-items: center;
111 | font-weight: var(--font-semi);
112 |
113 | &__menu {
114 | @media screen and (max-width: 767px) {
115 | position: fixed;
116 | top: var(--header-height);
117 | right: -100%;
118 | width: 80%;
119 | height: 100%;
120 | padding: 2rem;
121 | background-color: var(--second-color);
122 | transition: 0.5s;
123 | }
124 | }
125 | &__item {
126 | margin-bottom: var(--mb-4);
127 | }
128 | &__link {
129 | position: relative;
130 | color: #fff;
131 |
132 | &:hover {
133 | position: relative;
134 |
135 | &::after {
136 | position: absolute;
137 | content: "";
138 | width: 100%;
139 | height: 0.18rem;
140 | left: 0;
141 | top: 2rem;
142 | background-color: var(--first-color);
143 | }
144 | }
145 | }
146 | &__logo {
147 | color: var(--second-color);
148 | }
149 | &__toggle {
150 | color: var(--second-color);
151 | font-size: 1.5rem;
152 | cursor: pointer;
153 | }
154 | }
155 | .active::after {
156 | position: absolute;
157 | content: "";
158 | width: 100%;
159 | height: 0.18rem;
160 | left: 0;
161 | top: 2rem;
162 | background-color: var(--first-color);
163 | }
164 |
165 | .show {
166 | right: 0;
167 | }
168 |
169 | .home {
170 | position: relative;
171 | row-gap: 5rem;
172 | padding: 4rem 0 5rem;
173 |
174 | &__data {
175 | align-self: center;
176 | }
177 | &__title {
178 | font-size: var(--big-font-size);
179 | margin-bottom: var(--mb-5);
180 |
181 | &-color {
182 | color: var(--first-color);
183 | }
184 | }
185 | &__social {
186 | display: flex;
187 | flex-direction: column;
188 | &-icon {
189 | width: max-content;
190 | margin-bottom: var(--mb-2);
191 | font-size: 1.5rem;
192 | color: var(--second-color);
193 |
194 | &:hover {
195 | color: var(--first-color);
196 | }
197 | }
198 | }
199 |
200 | &__img {
201 | position: absolute;
202 | right: 0;
203 | bottom: 0;
204 | width: 260px;
205 | }
206 | &__blob {
207 | fill: var(--first-color);
208 |
209 | &-img {
210 | width: 360px;
211 | }
212 | }
213 | }
214 |
215 | .button {
216 | display: inline-block;
217 | background-color: var(--first-color);
218 | color: #fff;
219 | padding: 0.75rem 2.5rem;
220 | font-weight: var(--font-semi);
221 | border-radius: 0.5rem;
222 | transition: 0.3s;
223 |
224 | &:hover {
225 | box-shadow: 0px 10px 36px rgba(0, 0, 0, 0.15);
226 | }
227 | }
228 |
229 | .about {
230 | &__container {
231 | row-gap: 2rem;
232 | text-align: center;
233 | }
234 | &__subtitle {
235 | margin-bottom: var(--mb-2);
236 | }
237 |
238 | &__img {
239 | justify-self: center;
240 |
241 | & img {
242 | width: 200px;
243 | border-radius: 0.5rem;
244 | }
245 | }
246 | }
247 |
248 | .skills {
249 | &__container {
250 | row-gap: 2rem;
251 | text-align: center;
252 | }
253 | &__subtitle {
254 | margin-bottom: var(--mb-2);
255 | }
256 | &__text {
257 | margin-bottom: var(--mb-4);
258 | }
259 | &__data {
260 | display: flex;
261 | justify-content: space-between;
262 | align-items: center;
263 | position: relative;
264 | font-weight: var(--font-semi);
265 | padding: 0.5rem 1rem;
266 | margin-bottom: var(--mb-4);
267 | border-radius: 0.5rem;
268 | box-shadow: 0px 4px 25px rgba(14, 36, 49, 0.15);
269 | }
270 | &__icon {
271 | font-size: 2rem;
272 | margin-right: var(--mb-2);
273 | color: var(--first-color);
274 | }
275 | &__names {
276 | display: flex;
277 | align-items: center;
278 | }
279 | &__bar {
280 | position: absolute;
281 | left: 0;
282 | bottom: 0;
283 | background-color: var(--first-color);
284 | height: 0.25rem;
285 | border-radius: 0.5rem;
286 | z-index: var(--z-back);
287 | }
288 | &__html {
289 | width: 95%;
290 | }
291 | &__css {
292 | width: 85%;
293 | }
294 | &__js {
295 | width: 65%;
296 | }
297 | &__ux {
298 | width: 85%;
299 | }
300 | &__img {
301 | border-radius: 0.5rem;
302 | }
303 | }
304 | .work {
305 | &__container {
306 | row-gap: 2rem;
307 | }
308 | &__img {
309 | box-shadow: 0px 4px 25px rgba(14, 36, 49, 0.15);
310 | border-radius: 0.5rem;
311 | overflow: hidden;
312 |
313 | & img {
314 | transition: 1s;
315 |
316 | &:hover {
317 | transform: scale(1.1);
318 | }
319 | }
320 | }
321 | }
322 |
323 | .contact {
324 | &__input {
325 | width: 100%;
326 | font-size: var(--normal-font-size);
327 | font-weight: var(--font-semi);
328 | padding: 1rem;
329 | border-radius: 0.5rem;
330 | border: 1.5px solid var(--second-color);
331 | outline: none;
332 | margin-bottom: var(--mb-4);
333 | }
334 | &__button {
335 | display: block;
336 | border: none;
337 | outline: none;
338 | font-size: var(--normal-font-size);
339 | cursor: pointer;
340 | margin-left: auto;
341 | }
342 | }
343 |
344 | .footer {
345 | background-color: var(--second-color);
346 | color: #fff;
347 | text-align: center;
348 | font-weight: var(--font-semi);
349 | padding: 2rem 0;
350 |
351 | &__title {
352 | font-size: 2rem;
353 | margin-bottom: var(--mb-4);
354 | }
355 | &__social {
356 | margin-bottom: var(--mb-4);
357 | }
358 | &__icon {
359 | font-size: 1.5rem;
360 | color: #fff;
361 | margin: 0 var(--mb-2);
362 | }
363 | &__copy {
364 | font-size: var(--smaller-font-size);
365 | }
366 | }
367 |
368 | @media screen and (max-width: 320px) {
369 | .home {
370 | row-gap: 2rem;
371 |
372 | &__img {
373 | width: 200px;
374 | }
375 | }
376 | }
377 |
378 | @media screen and (min-width: 576px) {
379 | .home {
380 | padding: 4rem 0 2rem;
381 | &__social {
382 | padding-top: 0;
383 | padding-bottom: 2.5rem;
384 | flex-direction: row;
385 | align-self: flex-end;
386 |
387 | &-icon {
388 | margin-bottom: 0;
389 | margin-right: var(--mb-4);
390 | }
391 | }
392 | &__img {
393 | width: 300px;
394 | bottom: 25%;
395 | }
396 | }
397 |
398 | .about__container {
399 | grid-template-columns: repeat(2, 1fr);
400 | align-items: center;
401 | text-align: initial;
402 | }
403 |
404 | .skills__container {
405 | grid-template-columns: 0.7fr;
406 | justify-content: center;
407 | column-gap: 1rem;
408 | }
409 |
410 | .work__container {
411 | grid-template-columns: repeat(2, 1fr);
412 | column-gap: 2rem;
413 | padding-top: 2rem;
414 | }
415 |
416 | .contact {
417 | &__form {
418 | width: 360px;
419 | padding-top: 2rem;
420 | }
421 | &__container {
422 | justify-items: center;
423 | }
424 | }
425 | }
426 |
427 | @media screen and(min-width: 768px) {
428 | body {
429 | margin: 0;
430 | }
431 | .section {
432 | padding-top: 4rem;
433 | padding-bottom: 3rem;
434 | }
435 |
436 | .section-title {
437 | margin-bottom: var(--mb-6);
438 |
439 | &::after {
440 | width: 80px;
441 | top: 3rem;
442 | }
443 | }
444 |
445 | .nav {
446 | height: calc(var(--header-height) + 1.5rem);
447 | &__list {
448 | display: flex;
449 | padding-top: 0;
450 | }
451 | &__item {
452 | margin-left: var(--mb-6);
453 | margin-bottom: 0;
454 | }
455 | &__toggle {
456 | display: none;
457 | }
458 | &__link {
459 | color: var(--second-color);
460 | }
461 | }
462 | .home {
463 | padding: 8rem 0 2rem;
464 |
465 | &__img {
466 | width: 400px;
467 | bottom: 10%;
468 | }
469 | }
470 |
471 | .about {
472 | &__container {
473 | padding-top: 2rem;
474 | }
475 | &__img {
476 | & img {
477 | width: 300px;
478 | }
479 | }
480 | }
481 | .skills__container {
482 | grid-template-columns: repeat(2, 1fr);
483 | column-gap: 2rem;
484 | align-items: center;
485 | text-align: initial;
486 | }
487 | .work__container {
488 | grid-template-columns: repeat(3, 1fr);
489 | column-gap: 2rem;
490 | }
491 | }
492 |
493 | @media screen and (min-width: 992px) {
494 | .bd-grid {
495 | margin-left: auto;
496 | margin-right: auto;
497 | }
498 | .home {
499 | padding: 10rem 0 2rem;
500 |
501 | &__img {
502 | width: 450px;
503 | }
504 | }
505 | }
506 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 | Portfolio - Coding With Enjoy
13 |
14 |
15 |
45 |
46 |
47 |
48 |
49 |
50 | Hi, I'am Marlon
51 | Web Developer
52 |
53 |
Contact Me
54 |
55 |
64 |
65 |
71 |
72 |
75 |
76 |
77 |
80 |
86 |
87 |
88 |
89 |
90 |
91 |
92 | About Me
93 |
94 |
95 |
96 |
97 |
98 |
I'am Marlon
99 |
100 | Lorem, ipsum dolor sit amet consectetur adipisicing elit.
101 | Voluptate cum expedita quo culpa tempora, assumenda, quis fugiat
102 | ut voluptates soluta, aut earum nemo recusandae cumque
103 | perferendis! Recusandae alias accusamus atque.
104 |
105 |
106 |
107 |
108 |
109 |
110 | Skills
111 |
112 |
113 |
Profesional Skills
114 |
115 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Velit
116 | optio id vero amet, alias architecto consectetur error eum eaque
117 | sit.
118 |
119 |
120 |
121 |
122 | HTML5
123 |
124 |
125 |
126 | 95%
127 |
128 |
129 |
130 |
131 |
132 | CSS3
133 |
134 |
135 |
136 | 85%
137 |
138 |
139 |
140 |
141 |
142 | JavaScript
143 |
144 |
145 |
146 | 90%
147 |
148 |
149 |
150 |
151 |
152 | UX/UI
153 |
154 |
155 |
156 | 85%
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
189 |
190 |
212 |
213 |
214 |
223 |
224 |
225 |
226 |
227 |
228 |
--------------------------------------------------------------------------------