diff --git "a/3\352\270\260/KimTaeYoung/week2/css/style.css" "b/3\352\270\260/KimTaeYoung/week2/css/style.css" new file mode 100644 index 0000000..6d592c8 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/css/style.css" @@ -0,0 +1,943 @@ +/* common */ +*, ::before, ::after { + box-sizing: border-box; +} + +html, +body { + margin: 0; + padding: 0; + font-family: 'Inter', 'Pretendard', sans-serif; + font-size: 16px; + line-height: 160%; + color: #2D3436; +} + +button { + color: inherit; +} + +.screen-reader-text { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; +} + +.container { + margin: 0 auto; + padding: 0 32px; + max-width: calc(1200px + 32px + 32px); + width: 100%; +} + +@media (max-width: 767px) { + .container { + padding-left: 16px; + padding-right: 16px; + max-width: calc(1200px + 16px + 16px); + } +} + +html.scroll-lock, +html.scroll-lock body { + overflow: hidden; +} + + +/* wrap */ +#wrap { + display: flex; + flex-direction: column; + min-height: 100vh; + background-color: #fafafa; +} + + +/* header */ +#header { + flex: 0 0 auto; + position: fixed; + top: 0; + left: 0; + z-index: 100; + width: 100%; + background-color: #fff; + backdrop-filter: blur(5px); +} + +#header .container { + display: flex; + justify-content: space-between; + align-items: center; + height: 100px; +} + +#header .title { + margin: 0; + font-weight: 700; + font-size: 20px; + line-height: 160%; + color: #2D3436; + text-transform: uppercase; +} + +#header .navigation { + display: flex; + align-items: center; +} +#header .navigation .toggle-sidebar { + position: relative; + right: -10px; + z-index: 11; + display: none; + width: 44px; + height: 44px; + background: transparent url('../svgs/menu.svg') no-repeat center center; + border: 0; + cursor: pointer; +} +#header .navigation ul { + display: flex; + margin: 0; + padding: 0; + list-style: none; + gap: 20px; +} +#header .navigation ul::after { + content: ''; + display: none; + position: absolute; + top: 0; + right: 100%; + width: 100vw; + height: 100%; + background-color: #2d3436; + opacity: 0.8; +} +#header .navigation li button { + padding: 20px 10px; + font-weight: 500; + font-size: 14px; + line-height: 160%; + text-transform: uppercase; + cursor: pointer; + color: #2D3436; + background-color: transparent; + border: 0; +} +#header .navigation li.active button { + font-weight: 900; +} + +@media (max-width: 1023px) { + #header .container { + height: 70px; + } + + #header .title { + font-size: 18px; + } + + #header .navigation .toggle-sidebar { + display: block; + } + + #header .navigation ul { + position: fixed; + top: 0; + left: 100%; + z-index: 10; + flex-direction: column; + padding: 100px 0; + gap: 0; + width: 250px; + height: 100vh; + background-color: #fff; + transform: translate3d(0, 0, 0); + transition: transform 0.3s; + } + + #header .navigation li button { + display: block; + width: 100%; + text-align: left; + border-bottom: 1px solid #DFE4EA; + } + + /* sidebar active */ + html.sidebar-active, + html.sidebar-active body { + overflow: hidden; + } + + html.sidebar-active #header .navigation ul { + transform: translate3d(-100%, 0, 0); + } + html.sidebar-active #header .navigation ul::after { + display: block; + } + + html.sidebar-active #header .navigation .toggle-sidebar { + background-image: url('../svgs/close.svg'); + } +} + +@media (max-width: 767px) { + #header .container { + height: 50px; + } + + #header .title { + font-size: 12px; + } +} + +/* main */ +#main { + flex: 1 1 auto; + display: flex; + flex-direction: column; + margin-top: 100px; +} + +@media (max-width: 1023px) { + #main { + margin-top: 70px; + } +} + +@media (max-width: 767px) { + #main { + margin-top: 50px; + } +} + +/* tab content */ +.tab-content { + flex: 1 1 auto; + display: none; +} + +.tab-content.active { + display: flex; + flex-direction: column; +} + +/* about */ +.about { + position: relative; + z-index: 2; + justify-content: center; +} + +.about::after { + content: ''; + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + background: transparent url('../images/about-background.png') no-repeat center center / cover; + opacity: 0.05; +} + +.about .container { + display: flex; + padding-top: 100px; + padding-bottom: 100px; +} + +.about .content { + flex: 1 1 0; +} +.about .content .title { + margin: 0; + font-weight: 400; + font-size: 28px; + line-height: 160%; +} +.about .content .title span { + display: block; +} +.about .content .title strong { + font-weight: 700; + color: #ff7f50; +} +.about .content .description { + margin: 16px 0 0; + font-size: 16px; + line-height: 160%; +} + +.about .languages { + flex: 1 1 0; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + gap: 16px; +} +.about .languages .row { + display: flex; + gap: 16px; +} +.about .languages .row img { + width: 35px; +} + +@media (max-width: 1023px) { + .about .content { + flex-basis: auto; + } + + .about .content .title { + font-size: 24px; + } + + .about .languages { + flex: 0 0 auto; + width: 250px; + } +} + +@media (max-width: 767px) { + .about .container { + display: block; + } + + .about .content .title { + font-size: 20px; + } + + .about .content .description { + margin-top: 8px; + font-size: 14px; + } + + .about .languages { + margin-top: 64px; + flex-direction: row; + justify-content: flex-start; + width: initial; + flex-wrap: wrap; + gap: 8px; + } + + .about .languages .row { + gap: 8px; + } + + .about .languages .row img { + width: 32px; + } +} + + +/* timeline */ +.timeline { + padding: 100px 0; +} + +.timeline .container { + display: flex; + gap: 16px; +} + +.timeline .title-block { + flex: 1 1 0; +} +.timeline .title-block .subtitle { + font-weight: 700; + font-size: 16px; + color: #FF7F50; + line-height: 160%; + text-transform: uppercase; +} +.timeline .title-block .title { + margin: 0; + font-weight: 700; + font-size: 28px; + line-height: 160%; +} + +.timeline .content-block { + flex: 1 1 0; +} + +.timeline .content-block ul { + margin: 0; + padding: 0; + list-style: none; +} +.timeline .content-block li { + display: flex; + gap: 16px; +} +.timeline .content-block li:not(:first-child) { + margin-top: 32px; +} +.timeline .content-block .date { + flex: 0 0 auto; + padding: 4px 0; + width: 150px; + font-weight: 700; + font-size: 18px; + line-height: 160%; + letter-spacing: -0.02em; + border-right: 1px solid #636E72; + white-space: pre-line; +} +.timeline .content-block .content { + padding: 4px 0; +} +.timeline .content-block .title { + margin: 0; + font-weight: 700; + font-size: 16px; + line-height: 160%; + letter-spacing: -0.02em; +} +.timeline .content-block .description { + margin: 0; + font-size: 16px; + line-height: 160%; + letter-spacing: -0.02em; + color: #636E72; + white-space: pre-line; +} + +@media (max-width: 1023px) { + .timeline { + padding-top: 82px; + } + + .timeline .container { + display: block; + } + + .timeline .title-block .subtitle { + font-size: 14px; + } + + .timeline .title-block .title { + font-size: 24px; + } + + .timeline .content-block { + margin-top: 32px; + } +} + +@media (max-width: 767px) { + .timeline .content-block li { + flex-direction: column; + gap: 8px; + } + + .timeline .content-block li:not(:first-child) { + padding-top: 32px; + border-top: 1px solid #DFE4EA; + } + + .timeline .content-block .date { + padding: 0; + width: initial; + border-right: none; + white-space: normal; + } + + .timeline .content-block .date br { + display: none; + } + + .timeline .content-block .content { + padding: 0; + } +} + + +/* portfolio */ +.portfolio { + padding: 100px 0; +} + +.portfolio .title-block .subtitle { + font-weight: 700; + font-size: 16px; + color: #FF7F50; + line-height: 160%; + text-transform: uppercase; +} + +.portfolio .title-block .title { + margin: 0; + padding: 0; + font-weight: 700; + font-size: 28px; + line-height: 160%; +} + +.portfolio .content-block { + margin-top: 32px; +} +.portfolio .content-block ul { + margin: 0 auto; + padding: 0; + list-style: none; + + display: grid; + max-width: 932px; + grid-template-columns: repeat(3, 1fr); + grid-auto-rows: 300px; + gap: 16px; +} +.portfolio .content-block .button { + position: relative; + z-index: 2; + margin: 0; + padding: 16px; + width: 100%; + height: 100%; + background-color: transparent; + border: 0; + cursor: pointer; +} +.portfolio .content-block .button:hover .overlay { + opacity: 0.95; +} + +.portfolio .content-block .thumbnail { + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + object-fit: cover; + object-position: top; +} + +.portfolio .content-block .overlay { + position: relative; + display: flex; + justify-content: center; + align-items: center; + padding: 0 8px; + width: 100%; + height: 100%; + background: #fff; + backdrop-filter: blur(5px); + opacity: 0; + transition: opacity 0.2s; +} +.portfolio .content-block .overlay .title { + font-weight: 700; + font-size: 16px; + line-height: 160%; + text-transform: uppercase; +} +.portfolio .content-block .overlay .arrow { + position: absolute; + right: 10px; + bottom: 10px; + width: 24px; + height: 24px; +} + +@media (max-width: 1023px) { + .portfolio { + padding-top: 82px; + } + + .portfolio .title-block .subtitle { + font-size: 14px; + } + + .portfolio .title-block .title { + font-size: 24px; + } + + .portfolio .content-block ul { + grid-template-columns: repeat(2, 1fr); + grid-auto-rows: 344px; + } +} +@media (max-width: 767px) { + .portfolio .content-block ul { + grid-template-columns: repeat(1, 1fr); + grid-auto-rows: 288px; + } +} + + +/* contact */ +.contact { + padding: 100px 0; +} + +.contact .title-block .subtitle { + font-weight: 700; + font-size: 16px; + color: #FF7F50; + line-height: 160%; + text-transform: uppercase; +} + +.contact .title-block .title { + margin: 0; + padding: 0; + font-weight: 700; + font-size: 28px; + line-height: 160%; +} + +.contact .content-block { + margin-top: 32px; +} + +.contact .content-block .infomation { + display: flex; + gap: 10px; +} +.contact .content-block .infomation .item { + flex: 1 1 0; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + gap: 10px; + height: 150px; + text-align: center; + background-color: #fff; +} +.contact .content-block .infomation .icon {} +.contact .content-block .infomation .icon img { + vertical-align: middle; +} +.contact .content-block .infomation .value { + padding: 0 12px; + font-weight: 700; + font-size: 18px; + line-height: 160%; + color: #636e72; + word-break: break-all;; +} +.contact .content-block .infomation .value a { + color: inherit; +} + +.contact .content-block .form { + display: flex; + margin-top: 32px; +} +.contact .content-block .form form { + flex: 1 1 auto; +} +.contact .content-block .form .row { +} +.contact .content-block .form .row:not(:first-child) { + margin-top: 16px; +} +.contact .content-block .form .row .comm { + padding: 16px; + width: 100%; + min-height: 60px; + font: inherit; + font-size: 16px; + line-height: 160%; + background-color: #fff; + border: 1px solid #DFE4EA; + vertical-align: middle; + outline: none; +} +.contact .content-block .form .row .comm::placeholder { + color: #636E72; + letter-spacing: -0.02em; + text-transform: uppercase; + opacity: 0.5; +} +.contact .content-block .form .row .comm:valid, +.contact .content-block .form .row .comm:focus, +.contact .content-block .form .row .comm:active { + border-color: #2D3436; +} + +.contact .content-block .validation-detect .row .comm:invalid { + background-image: url('../svgs/report.svg'); + background-repeat: no-repeat; + background-position: right 16px center; + border-color: #E74C3C; +} +.contact .content-block .validation-detect .row .comm:invalid::placeholder { + color: #E74C3C; +} +.contact .content-block .validation-detect .message-row .comm:invalid { + background-image: none; +} + +.contact .content-block .form .row input {} +.contact .content-block .form .row button { + display: flex; + align-items: center; + justify-content: center; + padding: 0; + margin: 0%; + width: 100%; + height: 60px; + font-weight: 700; + font-size: 18px; + color: #FAFAFA; + gap: 8px; + text-transform: uppercase; + background-color: #636E72; + border: 0; + cursor: pointer; +} +.contact .content-block .form .row button img {} + +.contact .content-block .form .message-row .comm { + min-height: 228px; + resize: vertical; +} +.contact .content-block .form .button-row { + margin-top: 10px; +} + +.contact .content-block .form .icon { + flex: 0 0 450px; + display: flex; + justify-content: center; + align-items: center; +} + +@media (max-width: 1023px) { + .contact { + padding-top: 82px; + } + + .contact .title-block .subtitle { + font-size: 14px; + } + + .contact .title-block .title { + font-size: 24px; + } + + .contact .content-block .infomation { + flex-wrap: wrap; + } + + .contact .content-block .infomation .item { + flex-basis: calc(50% - 10px); + } + + .contact .content-block .form { + margin-top: 16px; + } + + .contact .content-block .form .icon { + display: none; + } +} +@media (max-width: 767px) { + .contact .content-block .infomation { + display: block; + } + + .contact .content-block .infomation .item { + height: 100px; + } + + .contact .content-block .infomation .item:not(:first-child) { + margin-top: 16px; + } + + .contact .content-block .infomation .icon img { + width: 20px; + } + + .contact .content-block .infomation .value { + font-size: 14px; + } + + .contact .content-block .form .row button { + font-size: 16px; + } + + .contact .content-block .form .row button img { + width: 16px; + } +} + +/* footer */ +#footer { + flex: 0 0 auto; + background-color: #2d3436; +} + +#footer .container { + display: flex; + justify-content: center; + align-items: center; + height: 100px; + color: #DFE4EA; + font-size: 14px; + line-height: 160%; +} + +#footer .mobile { + display: none; +} + +#footer .copy { + color: #fff; +} + +@media (max-width: 767px) { + #footer .container { + height: 50px; + } + + #footer .desktop { + display: none; + } + + #footer .mobile { + display: block; + } +} + + +/* modal */ +#modal { + position: fixed; + top: 0; + left: 0; + z-index: 200; + display: none; + justify-content: center; + padding: 60px 32px; + width: 100%; + height: 100%; + background: rgba(45, 52, 54, 0.5); + overflow: hidden auto; +} + +#modal .inner { + flex: 0 0 auto; + position: relative; + display: flex; + gap: 16px; + margin-top: auto; + margin-bottom: auto; + padding: 32px; + max-width: 800px; + width: 100%; + background-color: #fff; +} + +#modal .close { + position: absolute; + top: 10px; + right: 10px; + margin: 0; + padding: 0; + background-color: transparent; + border: 0; + line-height: 0; + cursor: pointer; +} + +#modal .close img { + width: 26px; + height: 26px; +} + +#modal .thumbnail { + flex: 0 0 auto; + width: 300px; +} +#modal .thumbnail img { + width: 100%; + vertical-align: middle; +} + +#modal .content { + flex-grow: 1; +} +#modal .content .head { + padding: 16px; + background-color: #fafafa; +} +#modal .content .head .title { + padding-bottom: 8px; + font-weight: 700; + font-size: 18px; + line-height: 160%; +} +#modal .content .head .info { + display: flex; + align-items: center; + gap: 4px; + font-weight: 700; + font-size: 12px; + line-height: 160%; + color: #636E72; +} +#modal .content .head .languages {} +#modal .content .head .date { + margin-top: 4px; +} + +#modal .content .body { + padding: 16px; + font-size: 14px; + line-height: 160%; + white-space: pre-line; +} + +@media (max-width: 1023px) { + #modal .thumbnail { + width: 250px; + } +} + +@media (max-width: 767px) { + #modal { + padding: 30px 16px; + } + + #modal .inner { + padding: 0; + } + + #modal .close { + top: 16px; + right: 16px; + } + + #modal .close img { + width: 24px; + height: 24px; + } + + #modal .thumbnail { + display: none; + } + + #modal .content .head .title { + padding-right: 40px; + } + + #modal .content .body { + padding-bottom: 32px; + } +} diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/pretendard.css" "b/3\352\270\260/KimTaeYoung/week2/fonts/pretendard.css" new file mode 100644 index 0000000..e4dd01d --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/fonts/pretendard.css" @@ -0,0 +1,71 @@ +/* +Copyright (c) 2021 Kil Hyung-jin, with Reserved Font Name Pretendard. +https://github.com/orioncactus/pretendard + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL +*/ + +@font-face { + font-family: 'Pretendard'; + font-weight: 900; + font-display: swap; + src: local('Pretendard Black'), url('./woff2/Pretendard-Black.woff2') format('woff2'), url('./woff/Pretendard-Black.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 800; + font-display: swap; + src: local('Pretendard ExtraBold'), url('./woff2/Pretendard-ExtraBold.woff2') format('woff2'), url('./woff/Pretendard-ExtraBold.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 700; + font-display: swap; + src: local('Pretendard Bold'), url('./woff2/Pretendard-Bold.woff2') format('woff2'), url('./woff/Pretendard-Bold.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 600; + font-display: swap; + src: local('Pretendard SemiBold'), url('./woff2/Pretendard-SemiBold.woff2') format('woff2'), url('./woff/Pretendard-SemiBold.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 500; + font-display: swap; + src: local('Pretendard Medium'), url('./woff2/Pretendard-Medium.woff2') format('woff2'), url('./woff/Pretendard-Medium.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 400; + font-display: swap; + src: local('Pretendard Regular'), url('./woff2/Pretendard-Regular.woff2') format('woff2'), url('./woff/Pretendard-Regular.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 300; + font-display: swap; + src: local('Pretendard Light'), url('./woff2/Pretendard-Light.woff2') format('woff2'), url('./woff/Pretendard-Light.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 200; + font-display: swap; + src: local('Pretendard ExtraLight'), url('./woff2/Pretendard-ExtraLight.woff2') format('woff2'), url('./woff/Pretendard-ExtraLight.woff') format('woff'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 100; + font-display: swap; + src: local('Pretendard Thin'), url('./woff2/Pretendard-Thin.woff2') format('woff2'), url('./woff/Pretendard-Thin.woff') format('woff'); +} diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Black.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Black.woff" new file mode 100644 index 0000000..20b0641 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Black.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Bold.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Bold.woff" new file mode 100644 index 0000000..bfc573c Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Bold.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-ExtraBold.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-ExtraBold.woff" new file mode 100644 index 0000000..14a61ab Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-ExtraBold.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-ExtraLight.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-ExtraLight.woff" new file mode 100644 index 0000000..a7af8a2 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-ExtraLight.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Light.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Light.woff" new file mode 100644 index 0000000..6e00ad2 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Light.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Medium.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Medium.woff" new file mode 100644 index 0000000..71b13eb Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Medium.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Regular.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Regular.woff" new file mode 100644 index 0000000..741be57 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Regular.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-SemiBold.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-SemiBold.woff" new file mode 100644 index 0000000..7bf2860 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-SemiBold.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Thin.woff" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Thin.woff" new file mode 100644 index 0000000..665fe44 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff/Pretendard-Thin.woff" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Black.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Black.woff2" new file mode 100644 index 0000000..306697c Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Black.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Bold.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Bold.woff2" new file mode 100644 index 0000000..d99618c Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Bold.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-ExtraBold.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-ExtraBold.woff2" new file mode 100644 index 0000000..d7a908e Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-ExtraBold.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-ExtraLight.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-ExtraLight.woff2" new file mode 100644 index 0000000..0c41886 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-ExtraLight.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Light.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Light.woff2" new file mode 100644 index 0000000..805d10c Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Light.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Medium.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Medium.woff2" new file mode 100644 index 0000000..a96e69b Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Medium.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Regular.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Regular.woff2" new file mode 100644 index 0000000..a5d5aea Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Regular.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-SemiBold.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-SemiBold.woff2" new file mode 100644 index 0000000..d5a7717 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-SemiBold.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Thin.woff2" "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Thin.woff2" new file mode 100644 index 0000000..8ce8ee2 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/fonts/woff2/Pretendard-Thin.woff2" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/images/CSS3.png" "b/3\352\270\260/KimTaeYoung/week2/images/CSS3.png" new file mode 100644 index 0000000..aafbc1e Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/images/CSS3.png" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/images/Figma.png" "b/3\352\270\260/KimTaeYoung/week2/images/Figma.png" new file mode 100644 index 0000000..8c1c7c0 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/images/Figma.png" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/images/HTML5.png" "b/3\352\270\260/KimTaeYoung/week2/images/HTML5.png" new file mode 100644 index 0000000..386bf9a Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/images/HTML5.png" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/images/JavaScript.png" "b/3\352\270\260/KimTaeYoung/week2/images/JavaScript.png" new file mode 100644 index 0000000..bd223a8 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/images/JavaScript.png" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/images/about-background.png" "b/3\352\270\260/KimTaeYoung/week2/images/about-background.png" new file mode 100644 index 0000000..2e47e4d Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/images/about-background.png" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/images/sample.jpg" "b/3\352\270\260/KimTaeYoung/week2/images/sample.jpg" new file mode 100644 index 0000000..fd358aa Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/images/sample.jpg" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/images/sample2.png" "b/3\352\270\260/KimTaeYoung/week2/images/sample2.png" new file mode 100644 index 0000000..b79c5e8 Binary files /dev/null and "b/3\352\270\260/KimTaeYoung/week2/images/sample2.png" differ diff --git "a/3\352\270\260/KimTaeYoung/week2/index.html" "b/3\352\270\260/KimTaeYoung/week2/index.html" new file mode 100644 index 0000000..0a3faeb --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/index.html" @@ -0,0 +1,200 @@ + + + + + + + + Mission01 + + + + + + + + + + + + +
+ + +
+
+
+
+

+ 👋🏻 + I’m Frontend Developer +

+ +

+ 안녕하세요. +
프론트엔트 개발자 캐스퍼입니다. +

+
+ +
+
+ HTML5 아이콘 + CSS3 아이콘 + JavaScript 아이콘 + Figma 아이콘 +
+
+
+
+ +
+
+
+ Timeline +

수상 및 활동

+
+ +
+
    +
    +
    +
    + +
    +
    +
    + Portfilio +

    포트폴리오

    +
    + +
    +
      +
      +
      +
      + +
      +
      +
      + Get in Touch +

      연락하기

      +
      + +
      +
      +
      +
      + 이메일 아이콘 +
      + +
      + +
      +
      + 전화기 아이콘 +
      + +
      + + + +
      +
      + 위치 아이콘 +
      +
      서울시 관악구
      +
      +
      + +
      +
      +
      + +
      + + + +
      + +
      + +
      + +
      +
      + +
      + +
      +
      +
      +
      +
      +
      + + +
      + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/javascript/core-footer.js" "b/3\352\270\260/KimTaeYoung/week2/javascript/core-footer.js" new file mode 100644 index 0000000..ab89762 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/javascript/core-footer.js" @@ -0,0 +1,133 @@ +// 모바일 사이드바 토글 +document.querySelector('.toggle-sidebar').addEventListener('click', () => { + document.documentElement.classList.toggle('sidebar-active'); +}); + +// 탭 기능 +const wrap = document.querySelector('#wrap'); +const tabButtons = wrap.querySelectorAll('.navigation [data-tab]'); + +tabButtons.forEach((button, index) => { + button.addEventListener('click', () => { + // 불필요한 실행 방지를 위한 active 체크 + if ( ! button.parentNode.classList.contains('active') ) { + const tabId = button.dataset.tab; + + button.parentNode.parentNode.querySelector('.active').classList.remove('active'); + button.parentNode.classList.add('active'); + + wrap.querySelector('#main .tab-content.active').classList.remove('active'); + wrap.querySelector(`#main .${tabId}`).classList.add('active'); + } + + if ( document.documentElement.classList.contains('sidebar-active') ) { + document.documentElement.classList.remove('sidebar-active') + } + }) +}); + +// 타임라인 통신 +fetch('./json/timeline.json') + .then(response => response.json()) + .then(data => { + const timelineLists = document.querySelector('#fetch-timeline'); + const item = data.map((item) => { + return `
    • +
      ${item.period}
      +
      +

      ${item.title}

      +

      ${item.description}

      +
      +
    • ` + }).join(''); + timelineLists.innerHTML = item; + }); + +// 포트폴리오 통신 +fetch('./json/portfolio.json') + .then(response => response.json()) + .then(data => { + const timelineLists = document.querySelector('#fetch-portfolio'); + const item = data.map((item) => { + return `
    • + +
    • ` + }).join(''); + timelineLists.innerHTML = item; + }); + +// 모달 액션 +function modalOpen(button) { + // 모달 영역 가져오기 + const modal = document.querySelector('#modal'); + const thumbnail = modal.querySelector('.thumbnail'); + const title = modal.querySelector('.title'); + const languages = modal.querySelector('.languages span'); + const date = modal.querySelector('.date span'); + const body = modal.querySelector('.body'); + + // 포트폴리오 데이터 가져오기 + const item = JSON.parse(button.dataset.itemDetail); + + // 부모 스크롤 잠그기 + document.documentElement.classList.add('scroll-lock'); + + // 모달에 데이터 넣기 + thumbnail.innerHTML = `${item.title} 포트폴리오 대표 이미지`; + title.innerHTML = item.title; + languages.innerHTML = item.languages.map(item => item).join(', '); + date.innerHTML = item.date; + body.innerHTML = item.description; + + // 모달 보이기 + modal.style.display = 'flex'; + + // 포커스 이동 + modal.querySelector('[autofocus]').focus(); +} + +function modalClose() { + // 모달 영역 가져오기 + const modal = document.querySelector('#modal'); + + // 모달 닫기 + modal.style.display = 'none'; + + // 부모 스크롤 허용 + document.documentElement.classList.remove('scroll-lock'); +} + + +// 폼 유효성 검사 +const form = document.querySelector('form'); +const requiredItems = form.querySelectorAll('[required]'); + +function sendEmail(form) { + let detectValidationItems = []; + + // Array.from()을 사용해 NodeList를 Array로 변환 + Array.from(requiredItems, (item) => { + + if ( ! item.checkValidity() ) { + detectValidationItems.push(item); + form.classList.add('validation-detect'); + } + }); + + if ( detectValidationItems.length > 0 ) { + console.log(detectValidationItems); + } else { + alert('submit!'); + } + + return false; +} diff --git "a/3\352\270\260/KimTaeYoung/week2/json/portfolio.json" "b/3\352\270\260/KimTaeYoung/week2/json/portfolio.json" new file mode 100644 index 0000000..c30b3e2 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/json/portfolio.json" @@ -0,0 +1,20 @@ +[ + { + "title": "만들면서 배우는 실전 퍼블리싱", + "thumbnail": "../images/sample.jpg", + "date": "2019.01 ~ 2019.02", + "languages": [ + "HTML", "CSS", "JavaScript", "jQuery", "PHP", "MySQL" + ], + "description": "프로젝트 설명\n줄바꿈은?" + }, + { + "title": "주니어 Java 개발자를 위한 코스", + "thumbnail": "../images/sample2.png", + "date": "2019.01 ~ 2019.02", + "languages": [ + "HTML", "CSS", "Java" + ], + "description": "프로젝트 설명" + } +] diff --git "a/3\352\270\260/KimTaeYoung/week2/json/timeline.json" "b/3\352\270\260/KimTaeYoung/week2/json/timeline.json" new file mode 100644 index 0000000..6c6e24f --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/json/timeline.json" @@ -0,0 +1,12 @@ +[ + { + "period": "2015", + "title": "티스토리 반응형 웹 스킨 공모전 대상", + "description": "https://notice.tistory.com/2256\n디자인부터 스킨 개발까지 단독으로 진행했습니다." + }, + { + "period": "2019-12 ~\n2021-12", + "title": "에스제이더블유인터네셔널", + "description": "1. 개발자와 협업하여 공통 모듈 통합, 수강생 강의실 리뉴얼 등 전사 웹서비스 내의 다양한 UI를 개발했습니다.\n2. 제2외국어 중 9개 언어의 사이트 유지보수를 담당했습니다.(스페인어, 프랑스어, 독일어, 러시아어, 아랍어, 이탈리아어, 히브리어, 한국어능력시험, 한국어)" + } +] diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/arrow_forward.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/arrow_forward.svg" new file mode 100644 index 0000000..e6a3bd2 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/arrow_forward.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/arrow_outward.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/arrow_outward.svg" new file mode 100644 index 0000000..c652628 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/arrow_outward.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/calendar_today.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/calendar_today.svg" new file mode 100644 index 0000000..da89109 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/calendar_today.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/close.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/close.svg" new file mode 100644 index 0000000..0560536 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/close.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/github.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/github.svg" new file mode 100644 index 0000000..6d2ec97 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/github.svg" @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/local_post_office.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/local_post_office.svg" new file mode 100644 index 0000000..ab6077e --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/local_post_office.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/location_on.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/location_on.svg" new file mode 100644 index 0000000..8222b0f --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/location_on.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/mail.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/mail.svg" new file mode 100644 index 0000000..c43686f --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/mail.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/menu.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/menu.svg" new file mode 100644 index 0000000..7b9f805 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/menu.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/phone_enabled.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/phone_enabled.svg" new file mode 100644 index 0000000..60cc967 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/phone_enabled.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/report.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/report.svg" new file mode 100644 index 0000000..4f56ffb --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/report.svg" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/3\352\270\260/KimTaeYoung/week2/svgs/terminal.svg" "b/3\352\270\260/KimTaeYoung/week2/svgs/terminal.svg" new file mode 100644 index 0000000..aa9eb53 --- /dev/null +++ "b/3\352\270\260/KimTaeYoung/week2/svgs/terminal.svg" @@ -0,0 +1,8 @@ + + + + + + + +