├── .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 |
46 | 47 | instagram logo 48 | 49 | 50 | youtube logo 51 | 52 | 53 | gmail logo 54 | 55 | 56 | twitter logo 57 | 58 |
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 |
167 |

Work

168 | 188 |
189 | 190 |
191 |

Contact

192 |
193 |
194 | 195 | 196 | 204 | 209 |
210 |
211 |
212 |
213 | 214 | 223 | 224 | 225 | 226 | 227 | 228 | --------------------------------------------------------------------------------