├── .DS_Store ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── AWS-Cloudfront-Deploy.yml │ └── test-github-action.yml ├── .gitignore ├── LICENSE ├── README.md ├── css ├── default.css ├── default.css.map ├── home.css ├── home.css.map ├── question.css ├── question.css.map ├── result.css ├── result.css.map ├── variable.css └── variable.css.map ├── favicon ├── android-icon-144x144.png ├── android-icon-192x192.png ├── android-icon-36x36.png ├── android-icon-48x48.png ├── android-icon-72x72.png ├── android-icon-96x96.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── apple-icon-precomposed.png ├── apple-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── favicon.ico ├── manifest.json ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png └── ms-icon-70x70.png ├── gh-pages.txt ├── html ├── home.html ├── question.html └── result.html ├── imgs ├── chracter-img │ └── ISFJ_I.png ├── desktop │ └── desktop_background_Frame48.png ├── index_left_btn_active.png ├── index_left_btn_not_active.png ├── index_right_btn_active.png ├── index_right_btn_not_active.png ├── instagram_download_img.png ├── loading_ment.png ├── mobile │ └── mobile_background_Frame96.png ├── movie_character │ ├── ISFJ_C.png │ ├── ISTJ_C.png │ └── soundofmusic_maria_s_image31.png ├── movie_title │ ├── ISFJ_T.png │ └── ISTJ_T.png ├── question_num │ ├── Q10_Frame909.png │ ├── Q11_Frame910.png │ ├── Q12_Frame899.png │ ├── Q1_Frame900.png │ ├── Q2_Frame901.png │ ├── Q3_Frame902.png │ ├── Q4_Frame903.png │ ├── Q5_Frame904.png │ ├── Q6_Frame905.png │ ├── Q7_Frame906.png │ ├── Q8_Frame907.png │ └── Q9_Frame908.png ├── replyBtn_Frame139.png ├── replyDeleteBtn_Frame896.png ├── replyReporteBtn_icon.png ├── restartBtn_Frame134.png ├── result_character_subject.png ├── share-icons │ ├── share_band_Frame88.png │ ├── share_facebook_Frame86.png │ ├── share_instagram_Frame89.png │ ├── share_kakaotalk_Frame85.png │ └── share_twitter_Frame87.png ├── showResult_Frame61.png ├── startBtn_Frame88.png ├── subTitle_Frame16.png ├── title.png ├── writeCommentBtn_Frame140.png └── writeCommentBtn_Frame69.png ├── index.html ├── javascript ├── comment.js ├── default.js ├── home.js ├── question.js └── userResult.js └── scss ├── default.scss ├── home.scss ├── question.scss ├── result.scss └── variable.scss /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/.DS_Store -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: 7 | --- 8 | 9 | ## 증상 10 | 11 | ## 시나리오 12 | 13 | Steps to reproduce the behavior: 14 | 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | ## 예상되는 부작용 21 | 22 | ## Screenshots 23 | 24 | ## 추가 질의사항 25 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "" 5 | labels: enhancement 6 | assignees: 7 | --- 8 | 9 | ## 기존 사항에 대한 문제점 / 구현 사항 10 | 11 | ## 원하는 솔루션 설명 12 | 13 | ## 고려했던 대안 설명 14 | 15 | ## 추가 질의사항 16 | -------------------------------------------------------------------------------- /.github/workflows/AWS-Cloudfront-Deploy.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | 10 | permissions: 11 | id-token: write 12 | contents: read 13 | 14 | env: 15 | AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Setup Python 20 | uses: actions/setup-python@v2 21 | with: 22 | python-version: '3.x' 23 | architecture: 'x64' 24 | - name: Install AWS CLI 25 | run: pip3 install awscli --upgrade --user 26 | - name: print secrets 27 | run: echo My AWS_ACCOUNT_ID is $AWS_ACCOUNT_ID 28 | - name: Configure AWS Credentials 29 | uses: aws-actions/configure-aws-credentials@v1 30 | with: 31 | aws-region: ap-northeast-2 32 | role-to-assume: arn:aws:iam::$AWS_ACCOUNT_ID:role/github-actions-${{ github.event.repository.name }} 33 | - name: Cache node modules 34 | uses: actions/cache@v2 35 | with: 36 | path: ~/.npm 37 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 38 | restore-keys: | 39 | ${{ runner.os }}-node- 40 | - name: Install Dependencies 41 | run: npm install 42 | - name: Build 43 | run: npm run build 44 | - name: Push Contents to S3 45 | run: aws s3 sync ./dist s3://${{ secrets.S3_BUCKET }} 46 | - name: Invalidate CloudFront Cache 47 | run: aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*" 48 | -------------------------------------------------------------------------------- /.github/workflows/test-github-action.yml: -------------------------------------------------------------------------------- 1 | name: test Github Action 2 | 3 | on: 4 | # Triggers the workflow on push or pull request events but only for the main branch 5 | push: 6 | branches: 7 | - githubAction 8 | 9 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 10 | jobs: 11 | # This workflow contains a single job called "build" 12 | build: 13 | # The type of runner that the job will run on 14 | runs-on: ubuntu-latest 15 | 16 | # Steps represent a sequence of tasks that will be executed as part of the job 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: print secrets 20 | run: echo My AWS_ACCOUNT_ID is '${{ secrets.AWS_ACCOUNT_ID }}' 21 | 22 | - name: print env 23 | run: echo My AWS_ACCOUNT_ID is '${{ env.AWS_ACCOUNT_ID }}' 24 | 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # api keys 2 | .env -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 MBTImaker 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 | # MBTImaker-javascript-frontend 2 | 3 | ### [소개](https://github.com/MBTImaker/Introduction/blob/main/README.md) 4 | 5 | ### 개발 기한 6 | 7 | - 2021.10.15 ~ 2021.12.21 8 | 9 | ### 개발 규칙 10 | 11 | 0. 모든 html 파일에서 default.css를 사용한다. 이 파일에는 전체적인 속성이 들어간다. 12 | 1. 모바일 뷰를 우선으로 개발한다. 13 | 2. js file을 import할 때는 defer를 사용한다. 14 | 5. 안 풀린 문제는 끝까지 해결한다. 15 | -------------------------------------------------------------------------------- /css/default.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 모든 html 파일 안에 들어가는 css입니다. */ 3 | @font-face { 4 | font-family: "SBAggroM"; 5 | src: local("SB 어그로 M"), local("SB 어그로OTF M"), url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2108@1.1/SBAggroM.woff") format("woff"); 6 | font-weight: normal; 7 | font-style: normal; 8 | font-display: fallback; 9 | unicode-range: U+0020-007E, U+0030-0039, U+AC00-D7A3, U+0041-005A, U+0061-007A, U+0020-002F, U+003A-0040, U+005B-0060, U+007B-007E; 10 | } 11 | * { 12 | padding: 0; 13 | margin: 0; 14 | box-sizing: border-box; 15 | font-family: "SBAggroM", "NanumBarunGothic"; 16 | background: no-repeat center; 17 | background-size: contain; 18 | } 19 | 20 | html { 21 | width: 100vw; 22 | } 23 | 24 | body { 25 | background: repeat #08623e url("../imgs/mobile/mobile_background_Frame96.png"); 26 | } 27 | 28 | button { 29 | cursor: pointer; 30 | background-color: transparent; 31 | border: 0px; 32 | opacity: 1; 33 | } 34 | 35 | /* mobile(768px) labtop(1020px) / desktop(1400px) */ 36 | @media screen and (min-width: 47.25rem) { 37 | body { 38 | background-image: url("../imgs/desktop/desktop_background_Frame48.png"); 39 | } 40 | } 41 | 42 | /*# sourceMappingURL=default.css.map */ 43 | -------------------------------------------------------------------------------- /css/default.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../scss/default.scss"],"names":[],"mappings":";AAAA;AAIA;EACE;EACA;EAGA;EACA;EACA;EACA;;AAMF;EACE;EACA;EACA;EACA,aANW;EAOX;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;AACA;EACE;IACE","file":"default.css"} -------------------------------------------------------------------------------- /css/home.css: -------------------------------------------------------------------------------- 1 | body { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content: center; 5 | align-items: center; 6 | height: 100vh; 7 | scrollbar-width: none; 8 | /* Firefox */ 9 | } 10 | 11 | body::-webkit-scrollbar { 12 | display: none; 13 | width: 0; 14 | } 15 | 16 | header { 17 | display: flex; 18 | flex-direction: column; 19 | justify-content: center; 20 | align-items: center; 21 | } 22 | header .t1 { 23 | background: no-repeat center url("../imgs/subTitle_Frame16.png"); 24 | background-size: contain; 25 | width: 90vw; 26 | height: 3vh; 27 | margin-top: 17.73vh; 28 | } 29 | header .t2 { 30 | background: no-repeat center url("../imgs/title.png"); 31 | background-size: contain; 32 | width: 100vw; 33 | height: 20vh; 34 | } 35 | 36 | .b1 { 37 | display: flex; 38 | flex-direction: column; 39 | justify-content: flex-end; 40 | align-items: center; 41 | height: 60vh; 42 | } 43 | .b1 .b2 { 44 | background: no-repeat center url("../imgs/startBtn_Frame88.png"); 45 | background-size: contain; 46 | width: 89.1vw; 47 | height: 9vh; 48 | border-radius: 80px; 49 | background-color: transparent; 50 | } 51 | .b1 .t1 { 52 | color: #ffffff; 53 | font-size: 0.875rem; 54 | margin: 3.5vh 0 10vh 0; 55 | } 56 | 57 | @media screen and (min-width: 47.25rem) and (min-height: 50.75rem) { 58 | header .t1 { 59 | width: 37vw; 60 | height: 3.51vh; 61 | margin-top: 13.33vh; 62 | } 63 | header .t2 { 64 | width: 37vw; 65 | height: 18.88vh; 66 | margin-top: 1.94vh; 67 | } 68 | 69 | .b1 .b2 { 70 | width: 37vw; 71 | height: 12.96vh; 72 | } 73 | .b1 .t1 { 74 | font-size: 1.5rem; 75 | line-height: 1.8125rem; 76 | margin: 3.98vh 0 9.25vh 0; 77 | } 78 | } 79 | 80 | /*# sourceMappingURL=home.css.map */ 81 | -------------------------------------------------------------------------------- /css/home.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../scss/home.scss","../scss/variable.scss"],"names":[],"mappings":"AAUA;ECkBE;EACA,gBAFmD;EAGnD,iBAH2B;EAI3B;EDnBA;EACA;AAAuB;;;AAGzB;EACE;EACA;;;AAGF;ECOE;EACA,gBAFmD;EAGnD,iBAH2B;EAI3B;;ADPA;EAlBA;EACA;EAmBE;EACA;EACA;;AAGF;EAzBA;EACA;EA0BE;EACA;;;AAIJ;ECVE;EACA,gBAFmD;EAGnD,iBDSc;ECRd;EDSA;;AAEA;EApCA;EACA;EAqCE;EACA;EACA;EACA;;AAGF;EACE,OCnDK;EDoDL,WAlDa;EAmDb;;;AAIJ;EAEI;IACE;IACA;IACA;;EAGF;IACE;IACA;IACA;;;EAKF;IACE;IACA;;EAGF;IACE,WA5EY;IA6EZ;IACA","file":"home.css"} -------------------------------------------------------------------------------- /css/question.css: -------------------------------------------------------------------------------- 1 | /* 2 | =========== 3 | Global 4 | =========== 5 | */ 6 | body { 7 | display: flex; 8 | flex-direction: column; 9 | justify-content: normal; 10 | align-items: center; 11 | width: 100%; 12 | margin: calc(7vh - 20px) 0 calc(8vh + 20px) 0; 13 | scrollbar-width: none; 14 | } 15 | 16 | body::-webkit-scrollbar { 17 | display: none; 18 | width: 0; 19 | } 20 | 21 | .hidden { 22 | height: 100%; 23 | min-height: 100%; 24 | overflow: hidden !important; 25 | touch-action: pan-y; 26 | } 27 | 28 | .b2 { 29 | display: flex; 30 | flex-direction: column; 31 | justify-content: center; 32 | align-items: center; 33 | text-align: center; 34 | width: 89.25vw; 35 | height: calc(var(--vh, 1vh) * 85); 36 | min-height: 480px; 37 | margin-top: 20px; 38 | border-radius: 20px; 39 | border: 2px #053f28 solid; 40 | background-color: #f5f5f5; 41 | } 42 | .b2 .q2 { 43 | display: none; 44 | width: 66px; 45 | height: 36px; 46 | margin-bottom: 14px; 47 | background-size: 100% 100%; 48 | } 49 | .b2 .q1 { 50 | font-size: 1.125rem; 51 | color: #222222; 52 | line-height: 167%; 53 | letter-spacing: 0.02em; 54 | } 55 | .b2 .q1.t0 { 56 | margin-bottom: 1.375rem; 57 | } 58 | .b2 .q1.b0 { 59 | margin-bottom: 1.75rem; 60 | } 61 | 62 | /* 63 | ============ 64 | block - btns 65 | ============ 66 | */ 67 | .n1 { 68 | background: linear-gradient(93.11deg, #dadcdd 4.01%, #bec0c2 97.86%); 69 | box-shadow: 0px 6px 0px #505050; 70 | border: 2px solid #6f6f70; 71 | border-radius: 80px; 72 | width: 78.66%; 73 | height: 8.62vh; 74 | min-height: 20px; 75 | max-height: 70px; 76 | position: fixed; 77 | top: 80%; 78 | line-height: 1.25rem; 79 | font-size: 0.875rem; 80 | color: #6f6f70; 81 | cursor: default; 82 | white-space: pre; 83 | } 84 | 85 | .s2 { 86 | background: linear-gradient(93.11deg, #f7202f 4.01%, #c11723 97.86%); 87 | box-shadow: 0px 6px 0px #56070c; 88 | border: 4px solid #9b151e; 89 | border-radius: 80px; 90 | width: 78.66%; 91 | height: 8.62vh; 92 | max-height: 70px; 93 | position: fixed; 94 | top: 80%; 95 | font-size: 0.875rem; 96 | line-height: 1.25rem; 97 | color: #ffffff; 98 | } 99 | 100 | .b2 .t1 { 101 | display: flex; 102 | flex-direction: column; 103 | justify-content: normal; 104 | align-items: center; 105 | width: 100%; 106 | } 107 | .b2 .t1 .s1 { 108 | width: 88.05%; 109 | height: 9.85vh; 110 | min-height: 20px; 111 | max-height: 80px; 112 | margin-bottom: 1.25rem; 113 | border-radius: 162px; 114 | background-color: #e8e8e8; 115 | color: #888888; 116 | font-size: 0.875rem; 117 | line-height: 1.25rem; 118 | } 119 | .b2 .t1 .s1.b0 { 120 | margin-bottom: 10vh; 121 | } 122 | .b2 .t1 .s1.active { 123 | background-color: #2d6242; 124 | border: 2px solid #1a3e2a; 125 | color: #ffffff; 126 | pointer-events: none; 127 | } 128 | 129 | /* 130 | =========== 131 | media 132 | =========== 133 | */ 134 | /* (width < 428px) and (height > 812px) */ 135 | @media screen and (max-width: 26.75rem) and (min-height: 50.75rem) { 136 | body { 137 | margin: calc(15vh - 20px) 0 calc(15vh + 20px) 0; 138 | } 139 | 140 | .b2 { 141 | height: 70vh; 142 | } 143 | 144 | .n1, 145 | .s2 { 146 | top: 70%; 147 | } 148 | } 149 | /* width > 756px */ 150 | @media screen and (min-width: 47.25rem) { 151 | .b2 { 152 | width: 37vw; 153 | min-width: 716px; 154 | height: 87.03vh; 155 | border-width: 6px; 156 | } 157 | .b2 .q2 { 158 | width: 6.875rem; 159 | height: 3.375rem; 160 | margin-bottom: 2.12vh; 161 | } 162 | .b2 .q1 { 163 | font-size: 2rem; 164 | } 165 | .b2 .q1.b0 { 166 | margin-bottom: 2.5rem; 167 | } 168 | .b2 .t1 .s1 { 169 | width: 532px; 170 | height: 11.11vh; 171 | max-height: 120px; 172 | line-height: 1.875rem; 173 | font-size: 1.25rem; 174 | } 175 | 176 | .n1, 177 | .s2 { 178 | width: 532px; 179 | height: 9.44vh; 180 | max-height: 102px; 181 | line-height: 2.5rem; 182 | font-size: 1.375rem; 183 | } 184 | } 185 | /* height < 756px */ 186 | @media screen and (max-height: 47.25rem) { 187 | .b2 .q1 { 188 | font-size: 1.25rem; 189 | } 190 | 191 | .n1, 192 | .s2 { 193 | top: 77%; 194 | } 195 | } 196 | /* width < 320px (Galaxy S5, iPhone 5, iPhone 6/7/8, fold)*/ 197 | @media screen and (max-width: 23.4375rem) { 198 | .b2 .q1 { 199 | font-size: 0.9375rem; 200 | } 201 | 202 | .b2 .t1 .s1, 203 | .n1, 204 | .s2 { 205 | font-size: 0.75rem; 206 | } 207 | } 208 | @media screen and (max-height: 32.56rem) { 209 | .n1 { 210 | display: none; 211 | } 212 | } 213 | 214 | /*# sourceMappingURL=question.css.map */ 215 | -------------------------------------------------------------------------------- /css/question.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../scss/question.scss","../scss/variable.scss"],"names":[],"mappings":"AAaA;AAAA;AAAA;AAAA;AAAA;AAMA;ECSE;EACA,gBAFmD;EAGnD,iBDVc;ECWd;EDVA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;ECVE;EACA,gBAFmD;EAGnD,iBAH2B;EAI3B;EDSA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBC9CO;;ADgDP;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE,WAvDkB;EAwDlB,OCtCK;EDuCL;EACA,gBAjDa;;AAoDf;EACE;;AAGF;EACE;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAMA;EC3CE;EACA;EACA;EACA;ED0CA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WA/EwB;EAgFxB,OC5EM;ED6EN;EACA;;;AAGF;ECnDE;EACA;EACA;EACA;EDkDA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OCtGO;;;AD0GP;EC9EA;EACA,gBAFmD;EAGnD,iBD6EgB;EC5EhB;ED6EE;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kBC9GE;ED+GF,OC1GE;ED2GF,WA9GoB;EA+GpB;;AAGF;EACE;;AAGF;EACE,kBChHG;EDiHH;EACA,OCjIG;EDkIH;;;AAKN;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;EACE;IACE;;;EAGF;IACE;;;EAGF;AAAA;IAEE;;;AAIJ;AACA;EACE;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;IACA;;EAGF;IACE,WAvKiB;;EA0KnB;IACE;;EAIA;IACE;IACA;IACA;IACA;IACA,WAlLgB;;;EAuLtB;AAAA;IAEE;IACA;IACA;IACA;IACA,WA1LuB;;;AA8L3B;AACA;EACE;IACE,WArMsB;;;EAwMxB;AAAA;IAEE;;;AAIJ;AACA;EACE;IACE,WAnNqB;;;EAsNvB;AAAA;AAAA;IAGE,WApNyB;;;AAwN7B;EACE;IACE","file":"question.css"} -------------------------------------------------------------------------------- /css/result.css: -------------------------------------------------------------------------------- 1 | /* 2 | =========== 3 | Global 4 | =========== 5 | */ 6 | body { 7 | display: flex; 8 | flex-direction: column; 9 | justify-content: normal; 10 | align-items: center; 11 | padding: 2.5rem 1.25rem; 12 | } 13 | 14 | section { 15 | display: flex; 16 | flex-direction: column; 17 | justify-content: normal; 18 | align-items: center; 19 | width: 100%; 20 | height: 100%; 21 | background-color: #f8f8f8; 22 | border: 2px solid #ededed; 23 | border-radius: 10px; 24 | margin-bottom: 0.625rem; 25 | } 26 | 27 | li { 28 | text-decoration: none; 29 | list-style: none; 30 | } 31 | 32 | select { 33 | -o-appearance: none; 34 | -webkit-appearance: none; 35 | -moz-appearance: none; 36 | appearance: none; 37 | height: 13.33%; 38 | border-radius: 16px; 39 | padding: 0 1.5rem; 40 | } 41 | 42 | select option { 43 | font-size: 1.125rem; 44 | } 45 | 46 | .subTitle { 47 | width: 100%; 48 | height: 3.25rem; 49 | display: inline-block; 50 | font-size: 1.125rem; 51 | line-height: 3.375rem; 52 | margin-top: 1.375rem; 53 | } 54 | 55 | /* 56 | =========== 57 | loading 58 | =========== 59 | */ 60 | .l1 { 61 | display: flex; 62 | flex-direction: column; 63 | justify-content: normal; 64 | align-items: center; 65 | width: 100vw; 66 | height: 100vh; 67 | } 68 | .l1 img { 69 | width: 100%; 70 | } 71 | 72 | /* mobile(768px) labtop(1020px) / desktop(1024px) */ 73 | @media screen and (min-width: 47.25rem) { 74 | .l1 img { 75 | width: 37vw; 76 | } 77 | } 78 | /* 79 | =========== 80 | block 81 | =========== 82 | */ 83 | .b3 { 84 | width: 100%; 85 | height: 100%; 86 | display: none; 87 | flex-direction: column; 88 | align-items: center; 89 | text-align: center; 90 | background-color: #ffffff; 91 | border: 2px solid #053f28; 92 | border-radius: 20px; 93 | padding: 1.25rem; 94 | } 95 | .b3 .r1 .t2 { 96 | display: flex; 97 | flex-direction: column; 98 | justify-content: normal; 99 | align-items: center; 100 | width: 100%; 101 | height: 100%; 102 | } 103 | .b3 .r1 .t2 .subject { 104 | object-fit: contain; 105 | content: url("../imgs/result_character_subject.png"); 106 | width: 90%; 107 | height: 1rem; 108 | margin-top: 2.5rem; 109 | } 110 | .b3 .r1 .t2 .movie-title { 111 | height: 1.25rem; 112 | margin-top: 1.6rem; 113 | } 114 | .b3 .r1 .t2 .movie-character { 115 | height: 1.875rem; 116 | margin-top: 1.375rem; 117 | } 118 | .b3 .r1 .t2 .character-img { 119 | width: 100%; 120 | padding: 0 1.25rem; 121 | object-fit: contain; 122 | margin-top: 2.375rem; 123 | } 124 | .b3 .r1 .c1 { 125 | display: inline-block; 126 | width: 100%; 127 | height: 3.25rem; 128 | font-size: 1.25rem; 129 | line-height: 1.875rem; 130 | font-weight: 400; 131 | margin-top: 1.75rem; 132 | } 133 | .b3 .r1 .f1 { 134 | display: flex; 135 | flex-direction: column; 136 | justify-content: center; 137 | align-items: center; 138 | width: 86.44%; 139 | margin-top: 1.3125rem; 140 | } 141 | .b3 .r1 .f2 { 142 | display: flex; 143 | flex-direction: row; 144 | justify-content: center; 145 | align-items: center; 146 | width: 100%; 147 | height: 3rem; 148 | background-color: #ffffff; 149 | border-radius: 16px; 150 | margin-top: 0.625rem; 151 | font-size: feature-mobile-font-size; 152 | line-height: feature-mobile-line-height; 153 | } 154 | .b3 .r1 .h1 { 155 | display: flex; 156 | flex-direction: row; 157 | justify-content: center; 158 | align-items: center; 159 | width: 86.1%; 160 | margin: 2.5625rem 0rem 2.5rem 0rem; 161 | } 162 | .b3 .r1 .h1 .chemi { 163 | display: flex; 164 | flex-direction: column; 165 | justify-content: normal; 166 | align-items: center; 167 | width: 100%; 168 | background-color: #ffffff; 169 | border: 2px solid #e5e5e5; 170 | border-radius: 10px; 171 | } 172 | .b3 .r1 .h1 .chemi .chemi-title { 173 | width: 100%; 174 | height: 2rem; 175 | display: inline-block; 176 | text-align: center; 177 | font-size: 0.875rem; 178 | line-height: 1.0625rem; 179 | margin-top: 1.5rem; 180 | } 181 | .b3 .r1 .h1 .chemi .character-img { 182 | width: 64.91%; 183 | object-fit: contain; 184 | } 185 | .b3 .r1 .h1 .chemi .movie-title { 186 | width: 67.21%; 187 | height: 1.75rem; 188 | display: inline-block; 189 | font-size: 0.75rem; 190 | line-height: 0.875rem; 191 | color: #4a4a4a; 192 | margin-top: 1rem; 193 | } 194 | .b3 .r1 .h1 .chemi .movie-character { 195 | width: 67.21%; 196 | height: 1.0625rem; 197 | display: inline-block; 198 | font-size: 0.875rem; 199 | line-height: 1.0625rem; 200 | color: #e10017; 201 | margin: 0.25rem 0rem 1.4375rem 0rem; 202 | } 203 | .b3 .r1 .h1 .good { 204 | margin-right: 0.625rem; 205 | } 206 | .b3 .likeMe, 207 | .b3 .mostType { 208 | padding: 0 1.25rem 1.25rem 1.25rem; 209 | } 210 | .b3 .whiteBox { 211 | width: 100%; 212 | height: 100%; 213 | background-color: #ffffff; 214 | border: 2px solid #e5e5e5; 215 | border-radius: 16px; 216 | margin-top: 0.625rem; 217 | } 218 | .b3 .whiteBox .movie-title { 219 | font-size: 0.875rem; 220 | margin-top: 2.5rem; 221 | } 222 | .b3 .whiteBox .movie-character { 223 | font-size: 1.125rem; 224 | margin-top: 0.4375rem; 225 | } 226 | .b3 .whiteBox .imgAndGraph { 227 | display: flex; 228 | flex-direction: column; 229 | justify-content: center; 230 | align-items: center; 231 | } 232 | .b3 .whiteBox img { 233 | width: 9.25rem; 234 | margin: 1rem 0 1.875rem 0; 235 | } 236 | 237 | .circular { 238 | height: 160px; 239 | width: 160px; 240 | position: relative; 241 | top: 0px; 242 | margin-bottom: 3rem; 243 | } 244 | .circular .inner, 245 | .circular .outer, 246 | .circular .circle { 247 | position: absolute; 248 | z-index: 6; 249 | height: 100%; 250 | width: 100%; 251 | border-radius: 100%; 252 | } 253 | .circular .inner { 254 | top: 50%; 255 | left: 50%; 256 | height: 136px; 257 | width: 136px; 258 | margin: -68px 0 0 -68px; 259 | background-color: #ffffff; 260 | border-radius: 100%; 261 | } 262 | .circular .circle { 263 | z-index: 1; 264 | box-shadow: none; 265 | } 266 | .circular .numb { 267 | position: absolute; 268 | left: 50%; 269 | transform: translate(-50%, -50%); 270 | z-index: 10; 271 | color: #222222; 272 | white-space: nowrap; 273 | top: 45%; 274 | font-size: 2rem; 275 | } 276 | .circular .numb-title { 277 | position: absolute; 278 | left: 50%; 279 | transform: translate(-50%, -50%); 280 | z-index: 10; 281 | color: #222222; 282 | white-space: nowrap; 283 | top: 65%; 284 | font-size: 0.875rem; 285 | } 286 | .circular .bar { 287 | position: absolute; 288 | height: 100%; 289 | width: 100%; 290 | background: #e5e5e5; 291 | border-radius: 100%; 292 | clip: rect(0px, 160px, 160px, 80px); 293 | } 294 | 295 | .circle { 296 | opacity: 0; 297 | transition: all 0.5s ease; 298 | } 299 | .circle .bar .progress { 300 | position: absolute; 301 | height: 100%; 302 | width: 100%; 303 | border-radius: 100%; 304 | clip: rect(0px, 80px, 160px, 0px); 305 | } 306 | .circle .progress, 307 | .circle .dot span, 308 | .circle .fixed-dot span { 309 | background: #08623e; 310 | } 311 | .circle .left .progress { 312 | z-index: 1; 313 | animation: left 2s linear both; 314 | animation-play-state: paused; 315 | } 316 | .circle .left .progress.show, 317 | .circle .right .progress.show, 318 | .circle .dot.show { 319 | animation-play-state: running; 320 | } 321 | .circle .right { 322 | z-index: 3; 323 | transform: rotate(180deg); 324 | } 325 | .circle .right .progress { 326 | animation: right 2s linear both; 327 | animation-delay: 2s; 328 | animation-play-state: paused; 329 | } 330 | .circle .fixed-dot { 331 | z-index: 20; 332 | position: absolute; 333 | left: 50%; 334 | top: 50%; 335 | width: 50%; 336 | height: 12px; 337 | margin-top: -6px; 338 | animation: dot 4s linear both; 339 | transform-origin: 0% 50%; 340 | animation-play-state: paused; 341 | } 342 | .circle .dot { 343 | z-index: 2; 344 | position: absolute; 345 | left: 50%; 346 | top: 50%; 347 | width: 50%; 348 | height: 12px; 349 | margin-top: -6px; 350 | animation: dot 4s linear both; 351 | transform-origin: 0% 50%; 352 | animation-play-state: paused; 353 | } 354 | .circle .fixed-dot span, 355 | .circle .dot span { 356 | position: absolute; 357 | right: 0; 358 | width: 12px; 359 | height: 12px; 360 | border-radius: 100%; 361 | } 362 | 363 | .circle.show { 364 | opacity: 1; 365 | transform: none; 366 | } 367 | 368 | @keyframes left { 369 | 100% { 370 | transform: rotate(180deg); 371 | } 372 | } 373 | @keyframes right { 374 | 100% { 375 | transform: rotate(180deg); 376 | } 377 | } 378 | @keyframes dot { 379 | 0% { 380 | transform: rotate(-90deg); 381 | } 382 | 50% { 383 | transform: rotate(90deg); 384 | z-index: 4; 385 | } 386 | 100% { 387 | transform: rotate(270deg); 388 | z-index: 4; 389 | } 390 | } 391 | .b3 .s1 { 392 | height: 100%; 393 | } 394 | .b3 .s1 .s2 { 395 | width: 83.72%; 396 | height: 2.5rem; 397 | display: flex; 398 | flex-direction: row; 399 | justify-content: center; 400 | margin: 0.5rem 0 2.8025rem 0; 401 | } 402 | .b3 .s1 .s2 li { 403 | width: 20%; 404 | height: 100%; 405 | } 406 | .b3 .s1 .s2 li a { 407 | display: inline-block; 408 | width: 100%; 409 | height: 100%; 410 | background-color: rgba(0, 0, 0, 0); 411 | } 412 | .b3 .s1 .s2 li .kakaotalk { 413 | background-image: url("../imgs/share-icons/share_kakaotalk_Frame85.png"); 414 | } 415 | .b3 .s1 .s2 li .facebook { 416 | background-image: url("../imgs/share-icons/share_facebook_Frame86.png"); 417 | } 418 | .b3 .s1 .s2 li .twitter { 419 | background-image: url("../imgs/share-icons/share_twitter_Frame87.png"); 420 | } 421 | .b3 .s1 .s2 li .band { 422 | background-image: url("../imgs/share-icons/share_band_Frame88.png"); 423 | } 424 | .b3 .s1 .s2 li .instagram { 425 | background-image: url("../imgs/share-icons/share_instagram_Frame89.png"); 426 | } 427 | .b3 .m1 { 428 | height: 100%; 429 | } 430 | .b3 .m1 .m2 { 431 | width: 55.93%; 432 | height: 100%; 433 | display: flex; 434 | flex-direction: column; 435 | align-items: center; 436 | margin: 0.375rem 0rem 1.875rem 0rem; 437 | } 438 | .b3 .m1 .m2 li { 439 | width: 100%; 440 | height: 100%; 441 | margin-bottom: 0.625rem; 442 | } 443 | .b3 .m1 .m2 li img { 444 | width: 100%; 445 | height: 14.875rem; 446 | object-fit: contain; 447 | } 448 | .b3 .restart { 449 | background-image: url("../imgs/restartBtn_Frame134.png"); 450 | background-size: contain; 451 | width: 100%; 452 | height: 3.5rem; 453 | margin: 2rem 0 2.8125rem 0; 454 | } 455 | .b3 .communication .add-comment { 456 | display: flex; 457 | flex-direction: column; 458 | justify-content: normal; 459 | align-items: center; 460 | width: 100%; 461 | height: 30.14%; 462 | } 463 | .b3 .communication .add-comment .nickname { 464 | width: 89%; 465 | height: 2.75rem; 466 | margin: 2.5rem 1.25rem 0.625rem 1.25rem; 467 | display: flex; 468 | } 469 | .b3 .communication .add-comment .commentArea { 470 | width: 100%; 471 | position: relative; 472 | display: inlsine-block; 473 | } 474 | .b3 .communication .add-comment .commentArea .comment-area { 475 | width: 89%; 476 | height: 13.5rem; 477 | padding-top: 0.5rem; 478 | resize: none; 479 | } 480 | .b3 .communication .add-comment .commentArea span { 481 | position: absolute; 482 | bottom: 20px; 483 | right: 40px; 484 | } 485 | .b3 .communication .add-comment .commentArea #comment_count { 486 | font-size: 0.625em; 487 | color: #a8a8a8; 488 | } 489 | .b3 .communication .add-comment .add-comment-pw .password { 490 | width: 89%; 491 | height: 2.75rem; 492 | margin: 0.6875rem 0 0.625rem 0; 493 | } 494 | .b3 .communication .add-comment .add-comment-pw .wrtie-comment-btn { 495 | background-image: url("../imgs/writeCommentBtn_Frame140.png"); 496 | background-size: contain; 497 | width: 70vw; 498 | height: 5vh; 499 | } 500 | .b3 .communication .show-comment { 501 | display: flex; 502 | flex-direction: column; 503 | justify-content: normal; 504 | align-items: center; 505 | width: 100%; 506 | height: 63.7%; 507 | margin: 2.0625rem 0 0.875rem 0; 508 | } 509 | .b3 .communication .show-comment .comment { 510 | display: flex; 511 | flex-direction: column; 512 | justify-content: normal; 513 | align-items: center; 514 | width: 90.15%; 515 | height: 20%; 516 | border: 2px solid #ededed; 517 | border-radius: 10px; 518 | margin-bottom: 0.75rem; 519 | } 520 | .b3 .communication .show-comment .comment .comment_header { 521 | width: 100%; 522 | height: 43.5%; 523 | display: flex; 524 | flex-direction: row; 525 | justify-content: space-between; 526 | box-sizing: border-box; 527 | border-radius: 10px 10px 0px 0px; 528 | background-color: #f5f5f5; 529 | } 530 | .b3 .communication .show-comment .comment .comment_header .info { 531 | display: flex; 532 | flex-direction: column; 533 | } 534 | .b3 .communication .show-comment .comment .comment_header .info .commentNickname { 535 | display: flex; 536 | align-items: start; 537 | margin: 1.25rem 0rem 0.6875rem 1.8125rem; 538 | color: #00010c; 539 | font-size: 1rem; 540 | line-height: 19px; 541 | } 542 | .b3 .communication .show-comment .comment .comment_header .info .commentMBTI { 543 | display: flex; 544 | align-items: center; 545 | justify-content: flex-start; 546 | margin: 0rem 0rem 1.3125rem 1.8125rem; 547 | color: #8a8a8a; 548 | font-size: 0.83rem; 549 | } 550 | .b3 .communication .show-comment .comment .comment_header .btn { 551 | display: flex; 552 | flex-direction: row; 553 | justify-content: space-evenly; 554 | align-items: center; 555 | width: 6rem; 556 | } 557 | .b3 .communication .show-comment .comment .comment_header .btn .del-reply-btn { 558 | display: flex; 559 | flex-direction: column; 560 | justify-content: row-reverse; 561 | align-items: center; 562 | width: 1.3rem; 563 | height: 1.3rem; 564 | background-color: #f5f5f5; 565 | background-size: 100% 100%; 566 | background-image: url("../imgs/replyDeleteBtn_Frame896.png"); 567 | background-size: contain; 568 | } 569 | .b3 .communication .show-comment .comment .comment_header .btn .report-reply-btn { 570 | display: flex; 571 | flex-direction: column; 572 | justify-content: row-reverse; 573 | align-items: center; 574 | width: 1.3rem; 575 | height: 1.3rem; 576 | background-color: #f5f5f5; 577 | background-size: 100% 100%; 578 | background-image: url("../imgs/replyReporteBtn_icon.png"); 579 | background-size: contain; 580 | } 581 | .b3 .communication .show-comment .comment_content { 582 | width: 100%; 583 | height: 100%; 584 | display: flex; 585 | flex-direction: column; 586 | border-radius: 0px 0px 10px 10px; 587 | background-color: #ffffff; 588 | } 589 | .b3 .communication .show-comment .comment_content .content { 590 | font-size: 1rem; 591 | color: #00010c; 592 | background-color: #ffffff; 593 | margin: 1.25rem 1.25rem 0rem 1.8125rem; 594 | display: flex; 595 | justify-content: flex-start; 596 | text-align: left; 597 | word-break: break-all; 598 | /* word-break: normal; */ 599 | } 600 | .b3 .communication .show-comment .createdDate { 601 | display: flex; 602 | flex-direction: row; 603 | justify-content: flex-start; 604 | align-items: center; 605 | color: #8a8a8a; 606 | font-size: 0.75rem; 607 | margin: 0.6875rem 1.25rem 1.3125rem 1.8125rem; 608 | } 609 | .b3 .communication .comment-pages { 610 | background-color: #f8f8f8; 611 | width: 72%; 612 | height: 1.75rem; 613 | display: flex; 614 | justify-content: space-between; 615 | margin-bottom: 2.5rem; 616 | } 617 | .b3 .communication .comment-pages #index_left_btn_active { 618 | width: 20%; 619 | background-image: url("../imgs/index_left_btn_active.png"); 620 | background-size: contain; 621 | background-color: #f8f8f8; 622 | margin-top: 0; 623 | } 624 | .b3 .communication .comment-pages #index_left_btn_not_active { 625 | width: 20%; 626 | background-image: url("../imgs/index_left_btn_not_active.png"); 627 | background-size: contain; 628 | background-color: #f8f8f8; 629 | margin-top: 0; 630 | cursor: default; 631 | } 632 | .b3 .communication .comment-pages #index { 633 | display: flex; 634 | flex-direction: column; 635 | justify-content: space-between; 636 | align-items: center; 637 | font-size: 1rem; 638 | background-color: #f8f8f8; 639 | color: #2a2a2a; 640 | } 641 | .b3 .communication .comment-pages #index_right_btn_active { 642 | width: 20%; 643 | background-image: url("../imgs/index_right_btn_active.png"); 644 | background-size: contain; 645 | background-color: #f8f8f8; 646 | margin-top: 0; 647 | } 648 | .b3 .communication .comment-pages #index_right_btn_not_active { 649 | width: 20%; 650 | background-image: url("../imgs/index_right_btn_not_active.png"); 651 | background-size: contain; 652 | background-color: #f8f8f8; 653 | margin-top: 0; 654 | } 655 | 656 | .report-modal { 657 | position: fixed; 658 | top: 0; 659 | left: 0; 660 | width: 100%; 661 | height: 90%; 662 | background: transparent; 663 | display: grid; 664 | place-items: center; 665 | visibility: hidden; 666 | z-index: 10; 667 | } 668 | .report-modal .report-modal-container { 669 | display: flex; 670 | flex-direction: column; 671 | justify-content: normal; 672 | align-items: center; 673 | width: 72vw; 674 | height: 29rem; 675 | background: #ffffff; 676 | border: 2px solid #053f28; 677 | border-radius: 20px; 678 | text-align: center; 679 | padding: 1.25rem; 680 | } 681 | .report-modal .report-modal-container .input-area { 682 | width: 100%; 683 | height: 24rem; 684 | background-color: #f8f8f8; 685 | border: 2px solid #ededed; 686 | border-radius: 20px; 687 | } 688 | .report-modal .report-modal-container h2 { 689 | margin-top: 1rem; 690 | } 691 | .report-modal .report-modal-container select { 692 | width: 88.14%; 693 | font-size: 1rem; 694 | margin-top: 1rem; 695 | margin-bottom: 1rem; 696 | background-color: #ffffff; 697 | } 698 | .report-modal .report-modal-container .input-area .reportArea { 699 | height: 55%; 700 | } 701 | .report-modal .report-modal-container #description { 702 | width: 88.14%; 703 | height: 13.5rem; 704 | font-size: 0.8rem; 705 | border-radius: 20px; 706 | border: 2px solid #e8e8e8; 707 | padding: 1.25rem; 708 | word-break: break-all; 709 | resize: none; 710 | } 711 | .report-modal .report-modal-container #description::placeholder { 712 | color: #a8a8a8; 713 | } 714 | .report-modal .report-modal-container #report_count { 715 | position: absolute; 716 | bottom: 255px; 717 | right: 150px; 718 | font-size: 0.625em; 719 | color: #a8a8a8; 720 | } 721 | 722 | .open-modal { 723 | visibility: visible; 724 | z-index: 10; 725 | } 726 | 727 | .b3 .communication .add-comment .nickname::placeholder, 728 | .comment-area::placeholder, 729 | .password::placeholder { 730 | color: #a8a8a8; 731 | } 732 | 733 | .b3 .communication .add-comment .nickname, 734 | .comment-area, 735 | .password { 736 | background: #ffffff; 737 | border: 2px solid #e8e8e8; 738 | border-radius: 10px; 739 | font-size: 0.75rem; 740 | padding-left: 1.25rem; 741 | } 742 | 743 | .btns { 744 | margin-top: 1rem; 745 | } 746 | 747 | button#cancle, 748 | button#submit { 749 | width: 29.62%; 750 | height: 2.625rem; 751 | font-size: 1rem; 752 | cursor: pointer; 753 | } 754 | 755 | button#cancle { 756 | background: linear-gradient(93.11deg, #dadcdd 4.01%, #bec0c2 97.86%); 757 | box-shadow: 0px 6px 0px #505050; 758 | border: 2px solid #6f6f70; 759 | border-radius: 80px; 760 | margin-right: 0.75rem; 761 | } 762 | 763 | button#submit { 764 | background: linear-gradient(93.11deg, #f7202f 4.01%, #c11723 97.86%); 765 | box-shadow: 0px 6px 0px #56070c; 766 | border: 4px solid #9b151e; 767 | border-radius: 80px; 768 | color: #ffffff; 769 | } 770 | 771 | .p1 { 772 | width: 100%; 773 | height: 0.625rem; 774 | background: linear-gradient(to right, #ededed 50%, rgba(255, 255, 255, 0) 0%) repeat-x bottom; 775 | background-size: 16px 2px; 776 | margin-top: 2.3125rem; 777 | } 778 | 779 | /* 780 | =========== 781 | media 782 | =========== 783 | */ 784 | /* width < 320px (Galaxy S5, iPhone 5, iPhone 6/7/8, fold)*/ 785 | @media screen and (max-width: 23.4375rem) { 786 | /* ----------------- conclusion ----------------- */ 787 | .b3 .r1 .c1 { 788 | font-size: 1.1rem; 789 | } 790 | .b3 .r1 .f2 { 791 | font-size: 0.8rem; 792 | } 793 | 794 | .b3 .s1 span, 795 | .b3 .m1 span, 796 | .b3 .likeMe span, 797 | .b3 .mostType span { 798 | font-size: 1.1rem; 799 | } 800 | } 801 | /* mobile(768px) labtop(1020px) / desktop(1024px) */ 802 | @media screen and (min-width: 47.25rem) { 803 | /* ----------------- Global ----------------- */ 804 | body { 805 | padding: 0; 806 | } 807 | 808 | section { 809 | margin: 0.625rem 3.75rem; 810 | border-width: 4px; 811 | border-radius: 32px; 812 | } 813 | 814 | .subTitle { 815 | font-size: 1.75rem; 816 | margin-top: 3rem; 817 | } 818 | 819 | /* ----------------- block ----------------- */ 820 | .b3 { 821 | width: 716px; 822 | border-width: 6px; 823 | border-radius: 40px; 824 | margin: 5rem 0; 825 | padding: 3.75rem; 826 | } 827 | .b3 .r1 .t2 .subject { 828 | height: 2rem; 829 | margin-top: 4rem; 830 | } 831 | .b3 .r1 .t2 .movie-title { 832 | height: 3rem; 833 | margin-top: 2.5rem; 834 | } 835 | .b3 .r1 .t2 .movie-character { 836 | height: 4rem; 837 | } 838 | .b3 .r1 .t2 .character-img { 839 | padding: 0 3.75rem; 840 | } 841 | .b3 .r1 .c1 { 842 | height: 100%; 843 | line-height: 2.625rem; 844 | font-size: 2rem; 845 | margin-top: 2.375rem; 846 | } 847 | .b3 .r1 .f1 { 848 | width: 79.86%; 849 | } 850 | .b3 .r1 .f2 { 851 | height: 3.5rem; 852 | font-size: 1.125rem; 853 | line-height: 1.35rem; 854 | font-weight: 300; 855 | } 856 | .b3 .r1 .h1 { 857 | width: 79.86%; 858 | margin: 4.125rem 0 3.75rem 0; 859 | } 860 | .b3 .r1 .h1 .chemi { 861 | height: 100%; 862 | border-radius: 16px; 863 | } 864 | .b3 .r1 .h1 .chemi .chemi-title { 865 | width: 100%; 866 | height: 3.25rem; 867 | font-size: 1.5rem; 868 | line-height: 1.8125rem; 869 | margin-top: 2.5rem; 870 | } 871 | .b3 .r1 .h1 .chemi .character-img { 872 | width: 64.91%; 873 | height: 10.75rem; 874 | margin-top: 0.625rem; 875 | } 876 | .b3 .r1 .h1 .chemi .movie-title { 877 | width: 100%; 878 | height: 1.375rem; 879 | font-size: 1rem; 880 | line-height: 1.1875rem; 881 | margin-top: 2.375rem; 882 | } 883 | .b3 .r1 .h1 .chemi .movie-character { 884 | width: 100%; 885 | height: 2.125rem; 886 | font-size: 1.625rem; 887 | line-height: 1.9375rem; 888 | margin-top: 0.75rem; 889 | margin-bottom: 2.25rem; 890 | } 891 | .b3 .r1 .h1 .good { 892 | margin-right: 1.25rem; 893 | } 894 | .b3 .communication .add-comment .nickname { 895 | width: 79.86%; 896 | height: 3.25rem; 897 | margin: 2.5rem 3.7rem 1.25rem 3.7rem; 898 | } 899 | .b3 .communication .add-comment .commentArea .comment-area { 900 | width: 79.86%; 901 | } 902 | .b3 .communication .add-comment .commentArea span { 903 | position: absolute; 904 | bottom: 20px; 905 | right: 90px; 906 | } 907 | .b3 .communication .add-comment .commentArea #comment_count { 908 | font-size: 0.625em; 909 | } 910 | .b3 .communication .add-comment .add-comment-pw { 911 | display: flex; 912 | flex-direction: row; 913 | width: 79.86%; 914 | /* align-items: start; */ 915 | } 916 | .b3 .communication .add-comment .add-comment-pw .password { 917 | display: flex; 918 | flex-direction: row; 919 | justify-content: flex-start; 920 | align-items: center; 921 | width: 200vw; 922 | height: 3.25rem; 923 | margin: 1.25rem 1.25rem 0.625rem 0; 924 | } 925 | .b3 .communication .add-comment .add-comment-pw .wrtie-comment-btn { 926 | display: flex; 927 | flex-direction: row; 928 | justify-content: center; 929 | align-items: center; 930 | height: 3.25rem; 931 | background-image: url("../imgs/writeCommentBtn_Frame69.png"); 932 | margin-top: 1.25rem; 933 | } 934 | .b3 .communication .show-comment { 935 | margin: 4.125rem 0 0.875rem 0; 936 | } 937 | .b3 .communication .show-comment .comment { 938 | border-radius: 20px; 939 | margin-bottom: 1.6875rem; 940 | } 941 | .b3 .communication .show-comment .comment .comment_header { 942 | border-radius: 20px 20px 0px 0px; 943 | } 944 | .b3 .communication .show-comment .comment .comment_content { 945 | border-radius: 0px 0px 20px 20px; 946 | } 947 | .b3 .communication .show-comment .comment .add-reply { 948 | display: flex; 949 | flex-direction: row; 950 | justify-content: flex-start; 951 | align-items: center; 952 | } 953 | .b3 .communication .show-comment .comment .add-reply .write-reply-btn { 954 | width: 17.02%; 955 | height: 3rem; 956 | background-image: url("../imgs/desktop/desktop_writeCommentBtn_Frame69.png"); 957 | background-color: transparent; 958 | margin: 1.125rem 1.0625rem 0 0; 959 | } 960 | .b3 .communication .show-comment .comment .add-reply .comment-reply-area { 961 | margin: 1.25rem 1.25rem 1.125rem 1.0625rem; 962 | } 963 | .b3 .communication .comment-pages { 964 | width: 40%; 965 | } 966 | .b3 .likeMe, 967 | .b3 .mostType { 968 | padding: 0 3.75rem 3.75rem 3.75rem; 969 | } 970 | .b3 .whiteBox .imgAndGraph { 971 | flex-direction: row; 972 | justify-content: center; 973 | } 974 | .b3 .whiteBox .movie-title { 975 | font-size: 1rem; 976 | margin-top: 2.5rem; 977 | } 978 | .b3 .whiteBox .movie-character { 979 | font-size: 1.5rem; 980 | margin-top: 0.5rem; 981 | } 982 | .b3 .whiteBox img { 983 | margin: 1rem 2.5rem 3.75rem 0; 984 | } 985 | .b3 .s1 .s2 { 986 | width: 79.86%; 987 | height: 4rem; 988 | margin: 1.75rem 0 4.25rem 0; 989 | padding: 0 1.875rem; 990 | } 991 | .b3 .m1 { 992 | height: 100%; 993 | } 994 | .b3 .m1 .m2 { 995 | width: 79.86%; 996 | height: 13.125rem; 997 | display: flex; 998 | flex-direction: row; 999 | justify-content: space-between; 1000 | margin-top: 1.625rem; 1001 | margin-bottom: 3.75rem; 1002 | } 1003 | .b3 .m1 .m2 li { 1004 | width: 30%; 1005 | margin-bottom: 0; 1006 | } 1007 | .b3 .restart { 1008 | width: 63.75%; 1009 | height: 5.875rem; 1010 | margin: 2.5rem 0; 1011 | } 1012 | 1013 | .circular { 1014 | top: -20px; 1015 | margin-bottom: 0; 1016 | } 1017 | 1018 | .p1 { 1019 | background-size: 28px 4px; 1020 | border-width: 4px; 1021 | margin-top: 62px; 1022 | } 1023 | 1024 | .b3 .communication .add-comment .nickname, 1025 | .comment-area, 1026 | .password { 1027 | border-width: 3px; 1028 | border-radius: 20px; 1029 | font-size: var(--placeholder-desktop-font-size); 1030 | } 1031 | 1032 | .report-modal .report-modal-container { 1033 | width: 36.9375rem; 1034 | height: 33rem; 1035 | border-width: 6px; 1036 | border-radius: 40px; 1037 | } 1038 | .report-modal .report-modal-container .input-area { 1039 | height: 27rem; 1040 | border-radius: 32px; 1041 | } 1042 | .report-modal .report-modal-container select { 1043 | margin-top: 2rem; 1044 | } 1045 | } 1046 | 1047 | /*# sourceMappingURL=result.css.map */ 1048 | -------------------------------------------------------------------------------- /css/result.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../scss/result.scss","../scss/variable.scss"],"names":[],"mappings":"AAwCA;AAAA;AAAA;AAAA;AAAA;AAKA;ECjBE;EACA,gBAFmD;EAGnD,iBDgBc;ECfd;EDgBA;;;AAGF;ECtBE;EACA,gBAFmD;EAGnD,iBDqBc;ECpBd;EDqBA;EACA;EACA,kBCpDO;EDqDP;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA,WA5EuB;EA6EvB,aAvDyB;EAwDzB;;;AAEF;AAAA;AAAA;AAAA;AAAA;AAMA;ECjEE;EACA,gBAFmD;EAGnD,iBDgEc;EC/Dd;EDgEA;EACA;;AAEA;EACE;;;AAIJ;AACA;EACE;IACE;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAMA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kBC1HO;ED2HP;EACA;EACA;;AAGE;ECpGF;EACA,gBAFmD;EAGnD,iBDmGkB;EClGlB;EDmGI;EACA;;AAEA;EC/EJ;EACA;EDgFM;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA,WAhKwB;EAiKxB,aA3I0B;EA4I1B,aAlI0B;EAmI1B;;AAGF;EC5IF;EACA,gBAFmD;EAGnD,iBAH2B;EAI3B;ED2II;EACA;;AAGF;EClJF;EACA,gBDkJ0B;ECjJ1B,iBDiJkB;EChJlB;EDiJI;EACA;EACA,kBClLG;EDmLH;EACA;EACA;EACA;;AAGF;EC7JF;EACA,gBD6J0B;EC5J1B,iBD4JkB;EC3JlB;ED4JI;EACA;;AAEA;EClKJ;EACA,gBAFmD;EAGnD,iBDiKoB;EChKpB;EDiKM;EACA,kBCjMC;EDkMD;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA,WAtMqB;EAuMrB,aAjLuB;EAkLvB;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA,WAnN2B;EAoN3B,aA9L6B;EA+L7B,OC7MD;ED8MC;;AAGF;EACE;EACA;EACA;EACA,WA5N+B;EA6N/B,aAvMiC;EAwMjC,OC3MJ;ED4MI;;AAIJ;EACE;;AAKN;AAAA;EAEE;;AAGF;EACE;EACA;EACA,kBCvPK;EDwPL;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EC1OF;EACA,gBD0O0B;ECzO1B,iBDyOkB;ECxOlB;;AD2OE;EACE;EACA;;;AAKN;EACE,QA9Oc;EA+Od,OA/Oc;EAgPd;EACA;EACA;;AAEA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA,QAhQS;EAiQT,OAjQS;EAkQT;EACA,kBCxSK;EDySL;;AAGF;EACE;EACA;;AAGF;ECtPA;EACA;EACA;EACA;EACA,OA1CO;EA2CP;EDmPE;EACA;;AAGF;EC5PA;EACA;EACA;EACA;EACA,OA1CO;EA2CP;EDyPE;EACA;;AAGF;EACE;EACA;EACA;EACA,YC7TI;ED8TJ;EACA;;;AAIJ;EACE;EACA;;AAGE;EACE;EACA;EACA;EACA;EACA;;AAIJ;AAAA;AAAA;EAGE,YCxUK;;AD2UP;EACE;EACA;EACA;;AAGF;AAAA;AAAA;EAGE;;AAGF;EACE;EACA;;AAEA;EACE;EACA,iBAvUa;EAwUb;;AAIJ;EC9SA,SD+Se;EC9Sf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ADySA;EClTA,SDmTe;EClTf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AD6SA;AAAA;EAEE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAKF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAMR;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAMR;ECzbA;EACA;ED0bE;EACA;EACA;;AAIA;ECtdF;EACA,gBAFmD;EAGnD,iBDqdkB;ECpdlB;EDqdI;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA,OCzgBF;;AD8gBA;EACE;EACA;EACA;;AAGF;EC5eN;EACA;ED6eQ;EACA;;AAKN;ECzgBF;EACA,gBAFmD;EAGnD,iBDwgBkB;ECvgBlB;EDwgBI;EACA;EACA;;AAEA;EC/gBJ;EACA,gBAFmD;EAGnD,iBD8gBoB;EC7gBpB;ED8gBM;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBC1jBD;;AD4jBC;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA,OC/iBL;EDgjBK,WA7jBe;EA8jBf;;AAGF;EACE;EACA;EACA;EACA;EACA,OCrkBN;EDskBM,WAxkBc;;AA4kBlB;ECxjBR;EACA,gBDwjBsC;ECvjBtC,iBDujBwB;ECtjBxB;EDujBU;;AAEA;EC5jBV;EACA,gBAFmD;EAGnD,iBD2jB0B;EC1jB1B;EAkDA;EACA;EACA,kBAlFO;EAmFP;EAnCA;EACA;;AD4iBU;EClkBV;EACA,gBAFmD;EAGnD,iBDikB0B;EChkB1B;EAkDA;EACA;EACA,kBAlFO;EAmFP;EAnCA;EACA;;ADqjBI;EACE;EACA;EACA;EACA;EACA;EACA,kBC7mBC;;AD+mBD;EACE,WAvmBmB;EAwmBnB,OC3lBD;ED4lBC,kBClnBD;EDmnBC;EACA;EACA;EACA;EAEA;AACA;;AAIJ;ECjmBJ;EACA,gBDimBgC;EChmBhC,iBDgmBoB;EC/lBpB;EDgmBM,OCrnBA;EDsnBA,WA3nB6B;EA4nB7B;;AAIJ;EACE,kBCpoBG;EDqoBH;EACA;EACA;EACA;EACA;;AAEA;ECrjBJ;EACA;EACA;EACA,kBAzFO;EA0FP;;ADqjBI;ECzjBJ;EACA;EACA;EACA,kBAzFO;EA0FP;EDujBM;;AAGF;EC1nBJ;EACA,gBAFmD;EAGnD,iBDynBoB;ECxnBpB;EDynBM,WA/oBqB;EAgpBrB,kBCvpBC;EDwpBD,OCtoBC;;ADyoBH;ECrkBJ;EACA;EACA;EACA,kBAzFO;EA0FP;;ADqkBI;ECzkBJ;EACA;EACA;EACA,kBAzFO;EA0FP;;;AD4kBF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ECxpBA;EACA,gBAFmD;EAGnD,iBDupBgB;ECtpBhB;EDupBE;EACA;EACA,YCxrBK;EDyrBL;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,kBC/rBG;EDgsBH;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA,kBC/sBG;;ADktBL;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE,OCztBE;;AD4tBJ;EACE;EACA;EACA;EACA;EACA,OCjuBE;;;ADsuBR;EACE;EACA;;;AAGF;AAAA;AAAA;EAGE,OC9uBM;;;ADivBR;AAAA;AAAA;EAGE,YC7vBO;ED8vBP;EACA;EACA,WAtvBsB;EAuvBtB;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EC7uBE;EACA;EACA;EACA;ED4uBA;;;AAGF;EC3uBE;EACA;EACA;EACA;ED0uBA,OCvxBO;;;AD0xBT;EACE;EACA;EACA;EAEA;EACA;;;AAEF;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACE;EAEE;IACE,WA1xB2B;;EA6xB7B;IACE,WA7xBwB;;;EAiyB5B;AAAA;AAAA;AAAA;IAIE,WApyBwB;;;AAwyB5B;AACA;AACE;EACA;IACE;;;EAGF;IACE;IACA;IACA;;;EAGF;IACE,WA1zBsB;IA2zBtB;;;AAGF;EACA;IACE;IACA;IACA;IACA;IACA;;EAII;IACE;IACA;;EAEF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAIJ;IACE;IACA,aAt1ByB;IAu1BzB,WAl2BuB;IAm2BvB;;EAGF;IACE,OAx2Bc;;EA22BhB;IACE;IACA,WA32BoB;IA42BpB,aA31BsB;IA41BtB,aAv1BsB;;EA01BxB;IACE,OAn3Bc;IAo3Bd;;EAEA;IACE;IACA;;EAEA;IACE;IACA;IACA,WA13BoB;IA23BpB,aA12BsB;IA22BtB;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;IACA;IACA,aAv3B4B;IAw3B5B;;EAGF;IACE;IACA;IACA,WA94B8B;IA+4B9B,aA93BgC;IA+3BhC;IACA;;EAIJ;IACE;;EAOF;IACE;IACA;IACA;;EAIA;IACE;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAIJ;IACE;IACA;IACA;AACA;;EAEA;IC76BR;IACA,gBD66BoC;IC56BpC,iBD46BwB;IC36BxB;ID46BU;IACA;IACA;;EAGF;ICp7BR;IACA,gBDo7BgC;ICn7BhC,iBDm7BwB;ICl7BxB;IDm7BU;IACA;IACA;;EAKN;IACE;;EAEA;IACE;IACA;;EAEA;IACE;;EAGF;IACE;;EAGF;IC58BR;IACA,gBD48BoC;IC38BpC,iBD28BwB;IC18BxB;;ED48BU;IACE;IACA;IACA;IACA;IACA;;EAGF;IACE;;EAMR;IACE;;EAIJ;AAAA;IAEE;;EAIA;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAIJ;IACE,OA/gCgB;IAghChB;IACA;IACA;;EAGF;IACE;;EAEA;IACE,OAzhCc;IA0hCd;IACA;IACA;IACA;IACA;IACA;;EAEA;IACE;IACA;;EAKN;IACE;IACA;IACA;;;EAIJ;IACE;IACA;;;EAGF;IACE;IACA;IACA;;;EAGF;AAAA;AAAA;IAGE;IACA;IACA;;;EAGF;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;;EAGF;IACE","file":"result.css"} -------------------------------------------------------------------------------- /css/variable.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | /*# sourceMappingURL=variable.css.map */ 4 | -------------------------------------------------------------------------------- /css/variable.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":[],"names":[],"mappings":"","file":"variable.css"} -------------------------------------------------------------------------------- /favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/apple-icon.png -------------------------------------------------------------------------------- /favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/favicon.ico -------------------------------------------------------------------------------- /favicon/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /gh-pages.txt: -------------------------------------------------------------------------------- 1 | gh-pages update // 2021.12.19 13:55 gh-pages branch 부활 2 | gh-pages update // 2021.12.19 16:18 복구 작업 진행중: html 페이지만 존재 3 | gh-pages update // 2021.12.19 16:27 복구 작업 진행중: js 폴더만 추가 4 | gh-pages update // 2021.12.19 16:30 복구 작업 진행중: css 폴더 추가 5 | gh-pages update // 2021.12.19 16:40 복구 작업 진행중: imgs 폴더 추가 6 | gh-pages update // 2021.12.19 17:56 복구 작업 진행중: favicon 폴더 추가 7 | gh-pages update // 2022.01.03 21:30 리팩토링 진행중 8 | gh-pages update // 2022.01.10 13:06 scss 추가 9 | gh-pages update // 2022.01.10 14:49 github action (AWS-Cloudfront-Deploy) 10 | gh-pages update // 2022.01.10 15:03 dev branch 추가 11 | gh-pages update // 2022.01.10 15:42 다른 버전으로 github action 테스트 12 | gh-pages update // 2022.01.10 15:42 다른 버전으로 github action 테스트2 13 | gh-pages update // 2022.01.10 15:42 다른 버전으로 github action 테스트3 14 | gh-pages update // 2022.01.10 15:42 다른 버전으로 github action 테스트4 15 | -------------------------------------------------------------------------------- /html/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 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 | 37 | 38 |
39 |
40 |
41 |
42 | 43 |
44 | 45 | 46 | -------------------------------------------------------------------------------- /html/question.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 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 | -------------------------------------------------------------------------------- /html/result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 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 | 52 | 53 | 54 |
55 |
56 |
57 | 58 | 59 | 60 | 61 |
62 | 63 | 64 |
65 |
66 |
67 |
68 | 69 |
70 | 71 | 72 |
73 |
74 | 환상의 케미 75 | 76 | 77 | 78 |
79 |
80 | 환장의 케미 81 | 82 | 83 | 84 |
85 |
86 |
87 | 88 | 89 |
90 | 나와 같은 유형 91 |
92 |
93 |
94 |
95 | 96 | 97 | 98 |
99 |
100 |
101 |
102 | 0% 103 |
104 |
105 | 나와 같은 유형 106 |
107 |
108 |
109 | 110 |
111 |
112 | 113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 | 126 | 127 |
128 | 가장 많이 나온 유형 129 |
130 |
131 |
132 |
133 | 134 | 135 | 136 |
137 |
138 |
139 |
140 | 0% 141 |
142 |
143 | 현재 1위 유형 144 |
145 |
146 |
147 | 148 |
149 |
150 | 151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 | 163 | 164 |
165 | 결과 공유하기 166 | 173 |
174 | 175 | 176 |
177 | 추천 영화 178 | 189 |
190 | 191 | 192 | 193 | 194 | 195 |
196 | 197 | 198 |
199 | 201 |
202 | 205 | (0/500) 206 |
207 |
208 | 210 | 212 |
213 |
214 | 215 | 216 |
217 | 218 | 219 |
220 | 221 |
222 | 223 | 224 |
225 |
226 |

신고

227 | 228 | 229 |
230 | 239 | 240 |
241 | 244 | (0/500) 245 |
246 | 247 |
248 | 249 | 250 |
251 |
252 |
253 |
254 | 255 | 256 |
257 |
258 | 259 |
260 | 261 | 262 |
263 | 264 |
265 | 266 | 267 | -------------------------------------------------------------------------------- /imgs/chracter-img/ISFJ_I.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/chracter-img/ISFJ_I.png -------------------------------------------------------------------------------- /imgs/desktop/desktop_background_Frame48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/desktop/desktop_background_Frame48.png -------------------------------------------------------------------------------- /imgs/index_left_btn_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/index_left_btn_active.png -------------------------------------------------------------------------------- /imgs/index_left_btn_not_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/index_left_btn_not_active.png -------------------------------------------------------------------------------- /imgs/index_right_btn_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/index_right_btn_active.png -------------------------------------------------------------------------------- /imgs/index_right_btn_not_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/index_right_btn_not_active.png -------------------------------------------------------------------------------- /imgs/instagram_download_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/instagram_download_img.png -------------------------------------------------------------------------------- /imgs/loading_ment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/loading_ment.png -------------------------------------------------------------------------------- /imgs/mobile/mobile_background_Frame96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/mobile/mobile_background_Frame96.png -------------------------------------------------------------------------------- /imgs/movie_character/ISFJ_C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/movie_character/ISFJ_C.png -------------------------------------------------------------------------------- /imgs/movie_character/ISTJ_C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/movie_character/ISTJ_C.png -------------------------------------------------------------------------------- /imgs/movie_character/soundofmusic_maria_s_image31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/movie_character/soundofmusic_maria_s_image31.png -------------------------------------------------------------------------------- /imgs/movie_title/ISFJ_T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/movie_title/ISFJ_T.png -------------------------------------------------------------------------------- /imgs/movie_title/ISTJ_T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/movie_title/ISTJ_T.png -------------------------------------------------------------------------------- /imgs/question_num/Q10_Frame909.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q10_Frame909.png -------------------------------------------------------------------------------- /imgs/question_num/Q11_Frame910.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q11_Frame910.png -------------------------------------------------------------------------------- /imgs/question_num/Q12_Frame899.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q12_Frame899.png -------------------------------------------------------------------------------- /imgs/question_num/Q1_Frame900.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q1_Frame900.png -------------------------------------------------------------------------------- /imgs/question_num/Q2_Frame901.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q2_Frame901.png -------------------------------------------------------------------------------- /imgs/question_num/Q3_Frame902.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q3_Frame902.png -------------------------------------------------------------------------------- /imgs/question_num/Q4_Frame903.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q4_Frame903.png -------------------------------------------------------------------------------- /imgs/question_num/Q5_Frame904.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q5_Frame904.png -------------------------------------------------------------------------------- /imgs/question_num/Q6_Frame905.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q6_Frame905.png -------------------------------------------------------------------------------- /imgs/question_num/Q7_Frame906.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q7_Frame906.png -------------------------------------------------------------------------------- /imgs/question_num/Q8_Frame907.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q8_Frame907.png -------------------------------------------------------------------------------- /imgs/question_num/Q9_Frame908.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/question_num/Q9_Frame908.png -------------------------------------------------------------------------------- /imgs/replyBtn_Frame139.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/replyBtn_Frame139.png -------------------------------------------------------------------------------- /imgs/replyDeleteBtn_Frame896.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/replyDeleteBtn_Frame896.png -------------------------------------------------------------------------------- /imgs/replyReporteBtn_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/replyReporteBtn_icon.png -------------------------------------------------------------------------------- /imgs/restartBtn_Frame134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/restartBtn_Frame134.png -------------------------------------------------------------------------------- /imgs/result_character_subject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/result_character_subject.png -------------------------------------------------------------------------------- /imgs/share-icons/share_band_Frame88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/share-icons/share_band_Frame88.png -------------------------------------------------------------------------------- /imgs/share-icons/share_facebook_Frame86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/share-icons/share_facebook_Frame86.png -------------------------------------------------------------------------------- /imgs/share-icons/share_instagram_Frame89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/share-icons/share_instagram_Frame89.png -------------------------------------------------------------------------------- /imgs/share-icons/share_kakaotalk_Frame85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/share-icons/share_kakaotalk_Frame85.png -------------------------------------------------------------------------------- /imgs/share-icons/share_twitter_Frame87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/share-icons/share_twitter_Frame87.png -------------------------------------------------------------------------------- /imgs/showResult_Frame61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/showResult_Frame61.png -------------------------------------------------------------------------------- /imgs/startBtn_Frame88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/startBtn_Frame88.png -------------------------------------------------------------------------------- /imgs/subTitle_Frame16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/subTitle_Frame16.png -------------------------------------------------------------------------------- /imgs/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/title.png -------------------------------------------------------------------------------- /imgs/writeCommentBtn_Frame140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/writeCommentBtn_Frame140.png -------------------------------------------------------------------------------- /imgs/writeCommentBtn_Frame69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MBTImaker/MBTImaker-javascript-frontend/f76e84f19a8274c442acba9faaff504b9bbd53c1/imgs/writeCommentBtn_Frame69.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /javascript/comment.js: -------------------------------------------------------------------------------- 1 | // =========================== Comment =========================== 2 | 3 | const showComment = document.querySelector(".show-comment"); 4 | const chkCommentInit = document.querySelector(".wrtie-comment-btn"); 5 | const chkcommentArea = document.querySelector(".comment-area"); 6 | const commentIndex = document.querySelector(".b3 .communication .comment-pages"); 7 | 8 | let isWriteCheck = true; // write 함수에서 왔는지 확인하는 값. Write 함수를 호출했을 경우 true. 9 | let isDeleteCheck = false; // 해당 값이 true 일 경우, delete -> display 할 때 기존 댓글 목록들 전체를 지워줌. 10 | let isFirst = false; 11 | let isIndexCheck = false; // index가 1234567812345678 이런 식으로 발생해서 구분 하기 위해 생성 12 | let chkeckWrite = true; // wrtie-comment-btn 을 눌렀을 경우, 해당 댓글의 mbti 유형값을 따로 저장하기 위해 사용. display 해서 나오는 mbti 와 구분하기 위해 사용. 13 | 14 | let errorMsg = ''; // 에러메시지 안내 15 | let userMBTI; // 서버의 response 로 오는 값인 'INTP..' 값들을 저장 16 | let displayFuncText = { "text": "나의 영화 캐릭터 유형은? " }; // displayComment() 함수에서 getNamebyMBTI() 함수를 호출 할 때 따로 쓸 변수 17 | 18 | /* displayComment() 함수의 index 부분에서 사용 */ 19 | let page = 1; // 조회 할 페이지 20 | let size = 3; // 해당 페이지에서 보여 줄 댓글의 수 21 | let currentPage = 1; // 현재 페이지 22 | 23 | let commentReqURL = reqHOST + '/comment'; 24 | 25 | /* 해당 값이 true 일 경우, countCommentByte() 함수 부분에서 사용 */ 26 | let checkIsNickname = String(false); // 댓글 작성자 영역인지 확인 27 | let checkIsComment = String(false); // 댓글 본문 영역인지 확인 28 | let checkIsPW = String(false); // 댓글 비밀번호 영역인지 확인 29 | let checkIsReport = String(false); // 신고 부분 신고 내용 영역인지 확인 30 | let commentCount = document.getElementById("comment_count"); // 작성한 댓글의 글자수 세기 (countCommentByte() 함수에서 사용) 31 | let reportCount = document.getElementById("report_count"); // 신고 내용의 글자수 세기 (countCommentByte() 함수에서 사용) 32 | 33 | 34 | window.addEventListener('load', searchComment(page, size)); 35 | 36 | 37 | // 댓글 닉네임, 댓글 본문, 댓글 비밀번호 입력시 입력값 검증 함수 38 | function checkInput(userInput, isNickname, isComment, checkIsPW, checkIsReport) { 39 | let chk = /^[a-z|A-Z|0-9|ㄱ-ㅎ|ㅏ-ㅣ|가-힣|~!@\#$%^&*\()\-=+_'\;<>\/.\`:\"\\,\[\]?|<>?:{}|\s|\s+$]*$/g; // 영어소문자,대문자,숫자,한글,특수문자 구분하는 정규식 40 | let modInput; // 정규식에 해당지 않는 문자를 입력했을 경우 이를 삭제한 뒤 문자열 저장. 41 | let chkInput; // 검증해야 할 입력값 42 | let eachMaxByte; // 댓글 작성자, 댓글 본문 마다 최대 입력값이 다르므로 따로 설정해줌 43 | 44 | let chkPWReg = /^[0-9]*$/g; // 숫자를 입력하지 않았을 경우를 찾는 정규식. 댓글 닉네임, 댓글 본문과는 조건이 달라서 따로 설정. 45 | let modPW; // 숫자가 아닌 문자를 입력했을 경우 이를 삭제하고 숫자만 남김. 46 | 47 | // 댓글 작성자 부분 인지, 댓글 본문 부분인지 확인 후 각각의 값 셋팅 48 | if (isNickname == true) { // 댓글 작성자 부분 로직 검증시 49 | // 검증해야 할 값은 댓글 작성자 값. 댓글 작성자, 비밀번호는 글자 수 체킹 50 | chkInput = document.getElementById("nickname").value; 51 | eachMaxByte = Number(10); 52 | checkIsNickname = true; 53 | checkIsComment = false; 54 | checkIsPW = false; 55 | checkIsReport = false; 56 | } else if (isComment == true || checkIsReport == true) { // 댓글 본문, 신고 내용 부분 로직 검증시 57 | // 나머지 값은 동일하게 셋팅 58 | eachMaxByte = Number(500); 59 | checkIsNickname = false; 60 | checkIsPW = false; 61 | 62 | if (isComment == true) { 63 | // 검증해야 할 값은 댓글 본문 값. 64 | chkInput = document.getElementById("comment-area").value; 65 | checkIsComment = true; 66 | checkIsReport = false; 67 | } else { 68 | // 검증해야 할 값은 신고 내용 본문 값. 69 | chkInput = document.getElementById("description").value; 70 | checkIsComment = false; 71 | checkIsReport = true; 72 | } 73 | 74 | } else { // 댓글 비밀번호 부분 로직 검증시 75 | chkInput = document.getElementById("password").value; 76 | eachMaxByte = Number(20); 77 | checkIsNickname = false; 78 | checkIsComment = false; 79 | checkIsPW = true; 80 | checkIsReport = false; 81 | 82 | if (chkPWReg.test(userInput)) { 83 | document.getElementById("password").value = userInput; 84 | countCommentByte(userInput, eachMaxByte, checkIsNickname, checkIsComment, checkIsPW, checkIsReport); 85 | } else { // 숫자가 아닌 문자를 입력했을 경우 86 | alert("작성자 비밀번호는 4자 이상 20자 이하 숫자만 입력해주세요."); 87 | modPW = userInput.replace(/[^0-9]*$/g, '') // 숫자가 아닌 문자 삭제 88 | document.getElementById("password").value = modPW; // 사용자의 input 값에도 삭제한 패스워드 문자열 반영 89 | countCommentByte(modPW, eachMaxByte, checkIsNickname, checkIsComment, checkIsPW, checkIsReport); 90 | } 91 | } 92 | 93 | // 입력값 검증. 댓글 작성자와 댓글은 정규식이 같으므로 여기서 따로 입력값 검증. 94 | if (checkIsNickname == true || checkIsComment == true || checkIsReport == true) { 95 | if (chk.test(userInput)) { 96 | chkInput = userInput; 97 | countCommentByte(chkInput, eachMaxByte, checkIsNickname, checkIsComment, checkIsPW, checkIsReport); 98 | } else { // 위의 정규식이 아닌 문자를 입력했을 경우 99 | modInput = userInput.replace(!chk, '') // 숫자가 아닌 문자 삭제 100 | chkInput = modInput; // 사용자의 input 값에도 삭제한 패스워드 문자열 반영 101 | countCommentByte(chkInput, eachMaxByte, checkIsNickname, checkIsComment, checkIsPW, checkIsReport); 102 | } 103 | } 104 | } 105 | 106 | // 댓글 작성자, 댓글 내용, 댓글 비밀번호 의 자릿수를 체크하는 함수 107 | function countCommentByte(input, maxBytes, checkIsNickname, checkIsComment, checkIsPW, checkIsReport) { 108 | let text_val = String(input); 109 | let text_len = text_val.length; // 입력한 문자수 110 | let maxByte = Number(maxBytes); // 최대 입력 가능한 바이트 수 111 | let mod_text = ""; // maxBytes 바이트 넘었을 경우 문자열을 자른 뒤 내용 저장하는 변수 112 | 113 | let commentArea = document.getElementById("comment-area").value; // 500 글자 이상 작성시 내용 자르기 위해 사용 114 | let commentCountStr = text_len + "/500"; 115 | 116 | let reportArea = document.getElementById("description").value; // 500 글자 이상 작성시 내용 자르기 위해 사용 117 | let reportCountStr = text_len + "/500"; 118 | 119 | if (text_len > maxByte) { // 입력한 댓글이 500자 이상일 경우 120 | //alert("잘못된 입력 입니다. 다시 한번 입력해주세요."); 121 | alert("1자 이상 500자 이하로 입력해주세요."); 122 | mod_text = text_val.substring(0, maxByte); // 초과한 자리수 만큼 제거 123 | text_val = mod_text; 124 | 125 | if (checkIsNickname == true) { // 댓글 닉네임 일 경우 126 | document.getElementById("nickname").value = text_val; 127 | } else if (checkIsComment == true) { // 댓글 본문 일 경우 128 | commentArea.innerHTML += text_val; 129 | document.getElementById("comment-area").value = text_val; 130 | 131 | // 댓글 본문 일 경우, 글자수를 동적으로 보여주기 위해 500자 이상의 경우 글자수 표시 132 | commentCountStr = maxByte + "/500"; 133 | commentCount.innerText = commentCountStr; 134 | commentCount.style.color = "green"; 135 | document.getElementById("comment-area").value = text_val; 136 | } else if (checkIsPW == true) { // 댓글 비밀번호 일 경우 137 | document.getElementById("password").value = text_val; 138 | } else { // 신고 내용 부분일 경우 139 | reportArea.innerHTML += text_val; 140 | document.getElementById("description").value = text_val; 141 | 142 | // 댓글 본문 일 경우, 글자수를 동적으로 보여주기 위해 500자 이상의 경우 글자수 표시 143 | reportCountStr = maxByte + "/500"; 144 | reportCount.innerText = reportCountStr; 145 | reportCount.style.color = "green"; 146 | document.getElementById("description").value = text_val; 147 | } 148 | 149 | } else { // 해당 값이 허용한 범위 내에서 입력 됐을 경우 150 | // 댓글 본문 일 경우에만, 글자수를 동적으로 보여줌 151 | if (checkIsComment == true) { 152 | commentCountStr = text_len + "/500"; 153 | commentCount.innerText = commentCountStr; 154 | commentCount.style.color = "green"; 155 | } else if (checkIsReport == true) { // 신고 내용일 경우 156 | reportCountStr = text_len + "/500"; 157 | reportCount.innerText = reportCountStr; 158 | reportCount.style.color = "green"; 159 | } 160 | } 161 | 162 | } 163 | 164 | // 댓글 작성 날짜 작성 (ex) 11.08 22:49:51 165 | function dateToStr(svrDate) { 166 | // 서버에서 보내주는 값: 2021-11-23T13:04:59.610937 167 | let month = svrDate.substring(5, 7); 168 | let day = svrDate.substring(8, 10); 169 | let times = svrDate.substring(11, 19); 170 | 171 | let dateToString = month + '.' + day + " " + times; 172 | 173 | return dateToString; 174 | } 175 | 176 | // 댓글 작성 177 | function commentWrite() { 178 | 179 | showComment.style.display = "flex"; 180 | 181 | // 사용자가 입력 한 값을 받아온다. 182 | let nickname = document.getElementById("nickname").value; 183 | let content = document.getElementById("comment-area").value; 184 | let password = document.getElementById("password").value; 185 | 186 | // 서버로 보낼 데이터 셋팅 187 | let commentJson = { 'content': content, 'mbti': MBTI, 'name': nickname, 'password': password }; 188 | 189 | fetch(commentReqURL, { 190 | method: 'POST', 191 | cache: 'no-cache', 192 | headers: { 193 | 'Accept': '*', 194 | 'Content-Type': 'application/json', 195 | 'Access-Control-Allow-Origin': commentReqURL, 196 | 'Origin': reqHOST, 197 | 'Referer': reqHOST 198 | }, 199 | body: JSON.stringify(commentJson), 200 | }) 201 | .then((response) => { // http 통신 요청과 응답에서 응답의 정보를 담고 있는 객체. 응답 JSON 데이터를 사용하기 위해 return 해줌. 202 | return response.json(); 203 | }) 204 | .then(response => { 205 | if (response.status == 200) { 206 | alert("댓글이 정상적으로 작성 되었습니다."); 207 | 208 | // 댓글 작성 후 해당 필드 빈값 처리 209 | document.getElementById("nickname").value = ""; 210 | document.getElementById("comment-area").value = ""; 211 | document.getElementById("password").value = ""; 212 | commentCount.innerText = "(0/500)"; 213 | 214 | searchComment(page, size); // 댓글 조회 함수 호출 215 | } 216 | else { 217 | // 오류 발생 시 alert 로 메시지 표출 218 | for (let i = 0; i < response.errors.length; i++) { 219 | errorMsg += response.errors[i].reason + '\n'; 220 | } 221 | alert(errorMsg); 222 | errorMsg = ''; // 에러메시지 안내 후 에러메시지 초기화 223 | 224 | } 225 | }) 226 | .catch((error) => alert("error: ", error)); 227 | 228 | } 229 | 230 | // function commentWrite() { 231 | 232 | // showComment.style.display = "flex"; 233 | 234 | // // 사용자가 입력 한 값을 받아온다. 235 | // let nickname = document.getElementById("nickname").value; 236 | // let content = document.getElementById("comment-area").value; 237 | // let password = document.getElementById("password").value; 238 | 239 | // // 서버로 보낼 데이터 셋팅 240 | // let commentJson = { 'content': content, 'mbti': MBTI, 'name': nickname, 'password': password }; 241 | 242 | // // 서버에서 받은 값 저장 243 | // runFetch("POST", 'https://mbti-test.herokuapp.com/comment', commentJson) 244 | // .then((response) => { 245 | // alert("댓글 작성 성공!"); 246 | // searchComment(page, size); // 댓글 조회 함수 호출 247 | // [content.value, nickname.value, password.value] = [null, null, null]; 248 | // }) 249 | // .catch((error) => { 250 | // //console.log(error); 251 | // alert(JSON.stringify(error.errors)); 252 | // }) 253 | // } 254 | 255 | 256 | // 화면에 댓글을 보여주기 위해 HTML 코드를 리턴하는 함수 257 | function displayComment(comment, size) { 258 | 259 | let comments = []; // 배열 선언 260 | let innerComment = ''; // 각 댓글의 전체 창을 만듬 261 | let innerCommentIndex = ''; // 인덱스의 버튼 태그들을 만듬 262 | let totalPages = comment.data.totalPages; // 사이즈 수로 나눈 총 페이지 수 263 | let displayFuncTextSplit; // mainText 앞 부분인 "나의 영화 캐릭터 유형은? " 이 부분 제거 후 ' 여기 부터 끝까지 잘라온다 264 | let charWithMovieName; // '' 를 기준으로 각 댓글 당 "영화 이름+영화 주인공" 을 값을 가져온다. 265 | 266 | let displayFuncStr = ''; 267 | 268 | // if (isDeleteCheck || isIndexCheck) { 269 | if (isDeleteCheck || isFirst || isIndexCheck) { // 댓글 삭제 후 해당 함수를 호출 할 경우, 새로운 화면을 띄워줘야 하므로 아래의 값들을 초기화 해줌 270 | for (let i = 0; i < size; i++) { 271 | comments.length = 0; 272 | innerComment = ''; 273 | showComment.innerHTML = ''; 274 | 275 | // index 부분에서 1페이지, 2페이지를 누를 때 마다 index가 1234567812345678 이런식으로 계속 생겨서 초기화 해 줌 276 | innerCommentIndex = ''; 277 | commentIndex.innerHTML = ''; 278 | displayFuncText = { "text": "나의 영화 캐릭터 유형은? " }; // 새로운 페이지 클릭 시 해당 문자열에 계속 이어져서 초기화 작업해줌. 279 | } 280 | } 281 | 282 | for (let i = 0; i < size; i++) { 283 | //size 가 3인데, 댓글이 2개만 있는 경우엔 아래 코드가 실행 되지 않아서 2개만 보여주게 추가해줌. 284 | if (comment.data.content[i] == null) { 285 | break; 286 | } 287 | 288 | // 서버의 response 값으로 mbti 값들은 'INTP' 와 같이 옴. 이를 영화 주인공 이름으로 변형 하기 위해 mbti 값을 변형 시켜 줌. 289 | userMBTI = comment.data.content[i].mbti; 290 | getNamebyMBTI(displayFuncText, userMBTI); 291 | displayFuncStr = displayFuncText.text; 292 | displayFuncTextSplit = displayFuncStr.substring(displayFuncStr.indexOf("?") + 3); // ? 문자 3번째 뒤 부터 영화이름+영화주인공이름 시작 293 | charWithMovieName = displayFuncTextSplit.split("''"); 294 | 295 | comments.push({ //각 댓글마다 아래 항목들을 추가함 296 | content: `${comment.data.content[i].content}`, // 댓글 내용 297 | mbti: `${charWithMovieName[i].substring(charWithMovieName[i].lastIndexOf("의 ") + 2, charWithMovieName[i].length - 1)}`, // MBTI 유형 298 | name: `${comment.data.content[i].name}`, // 작성자 이름 299 | password: `${comment.data.content[i].password}`, // 작성자 비밀번호 300 | id: `${comment.data.content[i].id}`, // 해당 댓글의 id(서버에서 보관) 301 | parentId: `${comment.data.content[i].parentId}`, // 해당 댓글의 부모 id(서버에서 보관) 302 | createdDate: `${comment.data.content[i].createdDate}`, // 해당 댓글 작성 시간 303 | }); 304 | } 305 | 306 | innerComment = comments.map(function (c) { // 각 댓글별로 html 코드 작성 307 | let changeCreatedDate = dateToStr(c.createdDate); 308 | 309 | return ` 310 |
311 |
312 |
313 | ${c.name} 314 | ${c.mbti} 315 |
316 |
317 | 318 | 319 | 320 |
321 | 322 |
323 |
324 | ${c.content} 325 | ${changeCreatedDate} 326 |
327 |
328 | `; 329 | }); 330 | 331 | // string -> html 332 | innerComment = innerComment.join(""); 333 | 334 | // innerHTML 335 | showComment.innerHTML += innerComment; 336 | 337 | 338 | // =========================== 페이지 번호 표시 =========================== 339 | 340 | let b_pageNum_list = 3; // 블럭에 나타낼 페이지 번호 갯수 341 | 342 | let block = Math.ceil(currentPage / b_pageNum_list); //현재 리스트의 블럭 구하기 343 | let b_start_page = ((block - 1) * b_pageNum_list) + 1; //현재 블럭에서 시작페이지 번호 344 | let b_end_page = b_start_page + b_pageNum_list - 1; //현재 블럭에서 마지막 페이지 번호 345 | 346 | if (b_end_page > totalPages) b_end_page = totalPages; // 블럭의 마지막 페이지가 총 페이지 수보다 클 때 두 숫자를 같게 해줌. 347 | 348 | 349 | // =========================== '이전' 버튼 만들기 =========================== 350 | if (currentPage == 1) { // 현재 페이지가 1 이면, 링크 없이 이전 버튼만 보여지게 함. 351 | innerCommentIndex += ` 352 | 353 | `; 354 | } else { // 현재 페이지가 1보다 크면, 이전 페이지로 갈 수 있도록 이전 버튼 생성 355 | innerCommentIndex += ` 356 | 357 | `; 358 | } 359 | 360 | for (let i = b_start_page; i <= b_end_page; i++) { 361 | if (currentPage == i) { // 현재 페이지 이면 그냥 현재 페이지만 출력 362 | innerCommentIndex += ` 363 | 364 | `; 365 | } else { // 현재 페이지를 제외한 나머지 페이지 번호들에 링크 달아서 출력 366 | innerCommentIndex += ` 367 | 368 | `; 369 | } 370 | } 371 | 372 | // =========================== '다음' 버튼 만들기 =========================== 373 | if (currentPage >= totalPages) { // block 과 총 block 갯수와 값이 같다면, 맨 마지막 블럭이므로 다음 링크버튼이 필요없으므로 보여주지 않는다. 374 | innerCommentIndex += ` 375 | 376 | `; 377 | } else { // 그게 아니면 다음 링크 버튼을 걸어서 보여준다. 378 | innerCommentIndex += ` 379 | 380 | `; 381 | } 382 | 383 | commentIndex.innerHTML += innerCommentIndex; // index 부분을 찾아서 1번부터 totalPages 까지 span 으로 추가함 384 | 385 | const indexBtns = document.querySelectorAll(".index:nth-child(n)"); 386 | 387 | // 생성된 인덱스 버튼들이 몇 페이지 인지 인식한 뒤 currentPage 변수에 저장 388 | indexBtns.forEach((idxbtn) => { 389 | idxbtn.addEventListener("click", (e) => { 390 | currentPage = Number(e.target.value); // Number 로 형변환 해주지 않으니 String 으로 맘대로 변환 되서 처리해줌. 391 | }); 392 | }); 393 | } 394 | 395 | // 댓글 삭제 396 | function commentDelete(id, name, password) { 397 | // 서버로 보낼 데이터 셋팅 398 | let commentJson = { 'id': id, 'name': name, 'password': password }; 399 | 400 | let pwPrompt = prompt("비밀번호를 입력해주세요."); 401 | 402 | if (pwPrompt == null) { // 취소를 누를 경우 403 | return false; // 아무런 알람 띄우지 않음 404 | } else { 405 | if (pwPrompt == password) { 406 | runFetch("PATCH", commentReqURL, commentJson) 407 | .then((response) => { 408 | if (response.status == 200) { 409 | alert("댓글이 정상적으로 삭제 되었습니다."); 410 | 411 | // 삭제 함수(commentDelete)를 호출했을 경우, 해당 값을 true 로 변경 후 댓글을 보여주는 함수 (displayComment)로 넘긴다. 412 | isDeleteCheck = 'true'; 413 | 414 | // 댓글 삭제에 성공할 경우, 조회 함수(searchComment)를 호출하여 화면에 띄울 댓글들의 목록을 조회해온다. 415 | searchComment(page, size); 416 | } else { 417 | // 오류 발생 시 alert 로 메시지 표출 418 | for (let i = 0; i < response.errors.length; i++) { 419 | errorMsg += response.errors[i].reason + '\n'; 420 | } 421 | alert(errorMsg); 422 | } 423 | 424 | [content.value, nickname.value, password.value] = [null, null, null]; 425 | }) 426 | .catch((error) => alert("error: ", error)); 427 | } else if (pwPrompt != password) { // 비밀번호 입력에 실패했을 경우 428 | alert("비밀번호가 일치하지 않습니다."); 429 | } 430 | } 431 | } 432 | 433 | 434 | function searchComment(page, size) { // 댓글 페이징 조회 435 | let reqURLSearch = commentReqURL + '?page=' + page + '&' + 'size=' + size; // ex) https://mbti-test.herokuapp.com/comment?page=1&size=5 436 | 437 | // 서버로 부터 받은 값 저장 438 | fetch(reqURLSearch) 439 | .then((response) => { // http 통신 요청과 응답에서 응답의 정보를 담고 있는 객체. 응답 JSON 데이터를 사용하기 위해 return 해줌. 440 | return response.json(); 441 | }) 442 | .then(response => { 443 | if (response.status == 200) { 444 | isIndexCheck = true; 445 | displayComment(response, size); 446 | } else { 447 | alert("오류 입니다."); 448 | } 449 | }) 450 | .catch((error) => alert("error:", error)); 451 | } 452 | -------------------------------------------------------------------------------- /javascript/default.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | /* 설명: 모든 페이지에 적용되는 사항입니다. */ 4 | 5 | // (0) github.io와 aws를 구분한다. 6 | let checkHostName = String(document.location.hostname); 7 | let reqHOST = (checkHostName === 'christmas-movie.net') ? 'https://mbtimaker.net' : 'https://mbti-test.herokuapp.com'; 8 | 9 | // (1) vh값을 css에서 정의된 값이 아닌 새로운 값을 사용한다. 10 | let vHeight = window.innerHeight * 0.01; 11 | document.documentElement.style.setProperty('--vh', `${vHeight}px`); 12 | 13 | // (2) head tag 안에 favicon(타이틀 왼쪽에 들어가는 이미지)을 넣는다. 14 | const head = document.getElementsByTagName("head")[0]; 15 | 16 | const favicon = function () { 17 | return ` 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | `; 35 | } 36 | 37 | head.innerHTML += favicon(); 38 | 39 | // (3) fetch 40 | async function runFetch(method, postURL, body) { 41 | const options = { 42 | method: method, 43 | headers: { 44 | "Content-Type": "application/json", 45 | }, 46 | body: JSON.stringify(body), 47 | }; 48 | const res = await fetch(postURL, options); 49 | const data = await res.json(); 50 | if (res.ok) { 51 | return data; 52 | } else { 53 | throw Error(data); 54 | } 55 | } -------------------------------------------------------------------------------- /javascript/home.js: -------------------------------------------------------------------------------- 1 | /* 설명: 현재까지 테스트에 참여한 사람의 수를 보여줍니다. */ 2 | 3 | "use strict"; 4 | 5 | const participants = document.querySelector(".participants"); 6 | const b1 = document.querySelector(".b1"); 7 | let testReqURL = reqHOST + '/test'; 8 | 9 | fetch(testReqURL) 10 | .then((response) => response.json()) 11 | .then((info) => { 12 | b1.innerHTML = ` 13 | 현재 총 ${info.data.testCount}명이 참여했어요.`; 14 | } 15 | ); -------------------------------------------------------------------------------- /javascript/question.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | /* 설명: 질문 12가지를 화면에 보여줍니다. */ 4 | 5 | // =========================== Variables =========================== 6 | 7 | const questionList = [ 8 | { // 01 9 | num: "../imgs/question_num/Q1_Frame900.png", 10 | qTop: "오늘은 크리스마스 홈파티 하는 날.
방을 어떻게 꾸밀까?", 11 | qBottom: "고민하는 나는?", 12 | btnTop: "오늘은 특별한 날 화려하게 꾸민다.", 13 | btnBottom: "그래도 단순한 게 좋다.
미니멀하게 꾸민다." 14 | }, 15 | { // 02 16 | num: "../imgs/question_num/Q2_Frame901.png", 17 | qTop: "오늘은
크리스마스", 18 | qBottom: "집에 있는 나는?", 19 | btnTop: "친구들에게 연락해 약속을 잡는다.", 20 | btnBottom: "오늘은 그냥 평범한 하루,
집에서 쉰다." 21 | }, 22 | { // 03 23 | num: "../imgs/question_num/Q3_Frame902.png", 24 | qTop: "내가 영화 속
히어로라면", 25 | qBottom: "나는?", 26 | btnTop: "불의를 못 참고,
바로 행동에 나서는 히어로.", 27 | btnBottom: "계획을 세우고
이후에 행동 개시하는 히어로." 28 | }, 29 | { // 04 30 | num: "../imgs/question_num/Q4_Frame903.png", 31 | qTop: "지금 밖에
눈이 내린다.", 32 | qBottom: "옆 사람에게 나는?", 33 | btnTop: "\"눈이 2cm 정도 왔네. 내일은 더 쌓인대.
뉴스 봐야겠다.\" 라고 말한다.", 34 | btnBottom: "\"눈이 많이 왔네. 집 갈 때 조심해\"
라고 말한다." 35 | }, 36 | { // 05 37 | num: "../imgs/question_num/Q5_Frame904.png", 38 | qTop: "크리스마스에
재밌는 영화를 보았다.", 39 | qBottom: "친구에게 묘사하는 나는?", 40 | btnTop: "\"주인공이...\" 스토리부터 길고 상세하게
구체적으로 설명한다.", 41 | btnBottom: "\"재밌게 볼만하더라.\" 라고 짧게
설명한다." 42 | }, 43 | { // 06 44 | num: "../imgs/question_num/Q6_Frame905.png", 45 | qTop: "영화를 선택하려는데
평점이 생각보다 낮았다.", 46 | qBottom: "그러면 나는?", 47 | btnTop: "\"평점이 낮다면 재미없을 게 뻔해.\" 라며
다른 걸 찾아본다.", 48 | btnBottom: "\"평점이 낮지만 내용이 끌리는데,
한 번 봐볼까?\" 라며 영화를 감상한다." 49 | }, 50 | { // 07 51 | num: "../imgs/question_num/Q7_Frame906.png", 52 | qTop: "크리스마스 데이트하는 날,
사고가 나 상대방이 늦었다.", 53 | qBottom: "그때 나는?", 54 | btnTop: "\"괜찮아? 놀랐겠다ㅠㅠ 병원 다녀왔어?\"
라고 말한다.", 55 | btnBottom: "\"무슨 사고? 어떻게 하다가 다쳤어?\"
라고 말한다." 56 | }, 57 | { // 08 58 | num: "../imgs/question_num/Q8_Frame907.png", 59 | qTop: "크리스마스
선물을 받았다고", 60 | qBottom: "자랑하는 친구에게 나는?", 61 | btnTop: "\"진짜? 기분 좋겠다!\"라고 말한다.", 62 | btnBottom: "\"뭐 받았어? 봐봐!\" 라고 말한다." 63 | }, 64 | { // 09 65 | num: "../imgs/question_num/Q9_Frame908.png", 66 | qTop: "영화를
볼 때,", 67 | qBottom: "나는?", 68 | btnTop: "주인공에게 감정을 이입해서 본다.", 69 | btnBottom: "상황이 어떻게 흘러가는지,
논리적으로 사고하면서 본다." 70 | }, 71 | { // 10 72 | num: "../imgs/question_num/Q10_Frame909.png", 73 | qTop: "크리스마스 아침에
일어나서", 74 | qBottom: "나는?", 75 | btnTop: "오늘 할 일을 세세하게 계획한다.", 76 | btnBottom: "할 일을 대강 정해두었지만,
변경 가능성은 있다." 77 | }, 78 | { // 11 79 | num: "../imgs/question_num/Q11_Frame910.png", 80 | qTop: "크리스마스
홈 파티가 끝나고,", 81 | qBottom: "나는?", 82 | btnTop: "어지러진 것들을 바로 치운다.", 83 | btnBottom: "친구들이 떠난 후, 치운다." 84 | }, 85 | { // 12 86 | num: "../imgs/question_num/Q12_Frame899.png", 87 | qTop: "영화관에서 영화를 보려는데,
자리가 없다..", 88 | qBottom: "그때 나는?", 89 | btnTop: "\"오늘은 날이 아닌가보다. 다음에 봐야지\"
라며 돌아간다.", 90 | btnBottom: "\"그러면 지금 하는 다른 걸 볼까?\" 하며
다른 걸 본다." 91 | } 92 | ]; 93 | 94 | const body = document.querySelector("body"); 95 | 96 | 97 | // =========================== window =========================== 98 | window.addEventListener('load', () => { 99 | setTimeout(() => { 100 | scrollTo(0, 0); 101 | }, 10); 102 | }); 103 | 104 | window.onpageshow = function (event) { 105 | // 뒤로가기 선택시 106 | if (event.persisted) { 107 | window.location.reload(); 108 | } // else - 새로운 페이지 로드 시 109 | } 110 | 111 | let showCorrectQuestion = null; 112 | 113 | // 브라우저 화면 크기가 바뀌었을 때 현문제 위치로 움직인다. 114 | window.addEventListener('resize', () => { 115 | clearTimeout(showCorrectQuestion); 116 | showCorrectQuestion = setTimeout(scrollToNextQuestion(document.documentElement, blocks[questionNum].offsetTop, 20), 200); 117 | }); 118 | 119 | // 화면에 문제 보여주기 120 | let innerQuestion = questionList.map(function (q) { 121 | 122 | return ` 123 |
124 |
125 | ${q.qTop} 126 | ${q.qBottom} 127 | 128 |
129 | 130 | 131 |
132 |
133 | `; 134 | }); 135 | 136 | innerQuestion = innerQuestion.join(""); 137 | body.innerHTML += innerQuestion; 138 | 139 | 140 | // =========================== Variables =========================== 141 | // HTML에 block 12개가 들어가야 아래 변수를 얻을 수 있음. 142 | 143 | const selectBtns = document.querySelectorAll(".s1:nth-child(n)"); 144 | const qNums = document.querySelectorAll('.q2:nth-child(n)'); 145 | const blocks = document.querySelectorAll(".b2:nth-child(n)"); 146 | const next = document.querySelector(".n1"); 147 | const questionNumMax = questionList.length; 148 | 149 | let questionNum = 0; 150 | let clientClicked = ""; 151 | let selectBtnIndex = 0; 152 | 153 | // =========================== Functions =========================== 154 | 155 | let changeNextText = function () { 156 | let leftQuestion = questionNumMax - questionNum - 1; 157 | 158 | if (window.innerWidth < 756) { 159 | next.textContent = `${leftQuestion}개의 항목이 남았습니다.\r\n`; 160 | next.textContent += `(총 ${questionNumMax}문항)`; 161 | } 162 | else { 163 | next.textContent = `${leftQuestion}개의 항목이 남았습니다. (총 ${questionNumMax}문항)`; 164 | } 165 | } 166 | 167 | let showNextQnum = function () { 168 | qNums[questionNum].style.display = "block"; 169 | } 170 | 171 | // 부드럽게 아래로 이동할 떄 사용하는 함수 172 | // t = current time, b = start value, c = change in value, d = duration 173 | Math.easeInOutQuad = function (t, b, c, d) { 174 | t /= d / 2; 175 | if (t < 1) return c / 2 * t * t + b; 176 | t--; 177 | return -c / 2 * (t * (t - 2) - 1) + b; 178 | }; 179 | 180 | let vh = function (value) { 181 | let vHeight = window.innerHeight * 0.01; 182 | return vHeight * value; 183 | } 184 | 185 | // 버튼을 누를 때마다 다음 문제로 이동한다. 186 | let scrollToNextQuestion = function (element, nextQuestion, duration) { 187 | let setBlockCenter = 0; 188 | 189 | // 가로로 긴 모바일 화면에서는 이전 문제의 하단이 더 많이 보인다. (iPhone X, Pixel XL) 190 | setBlockCenter = (window.innerHeight > 811 && window.innerWidth < 429) ? vh(15) : vh(7); 191 | 192 | let start = element.scrollTop, change = nextQuestion - start - setBlockCenter, currentTime = 0, increment = 20; 193 | 194 | let animateScroll = function () { 195 | currentTime += increment; 196 | let movement = Math.easeInOutQuad(currentTime, start, change, duration); 197 | element.scrollTop = movement; 198 | 199 | if (currentTime < duration) { 200 | setTimeout(animateScroll, increment); 201 | } 202 | } 203 | 204 | // (1) next btn text 변경 205 | changeNextText(); 206 | 207 | // (2) 이동 208 | animateScroll(); 209 | 210 | // (3) 다음 q-num이 보인다. 211 | showNextQnum(); 212 | } 213 | 214 | selectBtns.forEach((btn) => { 215 | btn.addEventListener("click", (e) => { 216 | 217 | // 선택된 문항의 색을 바꾸어준다. 218 | e.currentTarget.classList.add("active"); 219 | 220 | if (e.currentTarget.classList.contains("t0")) { 221 | clientClicked += "0"; 222 | selectBtns[selectBtnIndex + 1].style.pointerEvents = "none"; 223 | } 224 | else { 225 | clientClicked += "1"; 226 | selectBtns[selectBtnIndex].style.pointerEvents = "none"; 227 | } 228 | 229 | // 문항이 선택되면 아래로 이동한다. 230 | if (questionNum < questionNumMax - 1) { 231 | // 다음 문제로 232 | questionNum += 1; 233 | selectBtnIndex += 2; 234 | 235 | scrollToNextQuestion(document.documentElement, blocks[questionNum].offsetTop, 650); 236 | } else { 237 | // 모든 문항에 답변하면 결과를 볼 수 있는 버튼이 활성화된다. 238 | next.textContent = `나랑 비슷한 영화 캐릭터 결과 보기`; 239 | next.classList.remove("n1"); 240 | next.classList.add("s2"); 241 | next.onclick = function () { 242 | location.href = "result.html"; 243 | window.sessionStorage.setItem('clientClicked', JSON.stringify(clientClicked)); 244 | } 245 | } 246 | }); 247 | }); 248 | 249 | // 첫 문항의 이미지를 화면에 보여준다. 250 | qNums[0].style.display = "block"; 251 | 252 | changeNextText(); -------------------------------------------------------------------------------- /javascript/userResult.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | /* 설명: 사용자가 선택한 값에 따라 MBTI 결과값을 서버에서 가져와 화면에 보여줍니다. */ 4 | 5 | // ============================== Run ============================== 6 | if (!document.referrer.includes("question.html")) { 7 | location.href = "home.html"; 8 | } 9 | 10 | // =========================== Variables =========================== 11 | 12 | let userResultTestReqURL = reqHOST + '/test'; 13 | let userResultReportReqURL = reqHOST + '/report'; 14 | const loading = document.querySelector(".l1"); 15 | const block = document.querySelector(".b3"); 16 | const circulars = document.querySelectorAll('.circular'); 17 | const chemistry = document.querySelector('.h1'); 18 | 19 | const showMargin = 900; 20 | let likeMePercentage = 0; 21 | let mostTypePercentage = 0; 22 | let likeMeCounter = 0; 23 | let mostTypeCounter = 0; 24 | 25 | // ====================== Variables(share) ====================== 26 | const shareLink = "https://" + String(document.location.host) + "/html/home.html"; 27 | 28 | const subText = "나의 MBTI 유형과 어울리는 캐릭터와 영화를 알아보세요!"; 29 | const shareImage = "url(https://mbti-image-server.s3.ap-northeast-2.amazonaws.com/og_image.png)"; 30 | 31 | let mainText = { "text": "나의 영화 캐릭터 유형은? " }; 32 | let MBTI = ''; 33 | 34 | // ====================== Variables(report) ====================== 35 | /* 설명: 사용자가 선택한 값에 따라 MBTI 결과값을 서버에서 가져와 화면에 보여줍니다. */ 36 | 37 | let commentId = 0; 38 | const reportModal = document.querySelector(".report-modal"); 39 | const reportSubject = document.querySelector("#subject"); 40 | const reportDescription = document.querySelector("#description"); 41 | let checkReportCommit = String(false); // 신고 제출 후 취소 함수로 갈 경우, 이미 제출 완료 됐는데 취소가 자동으로 호출 되면서 '취소하겠습니까?' 라는 알림이 뜸. 이를 확인하기 위해 선언. 42 | 43 | // =========================== Loading =========================== 44 | 45 | // 페이지가 다시 로드되면 0ms만에 맨 위로 이동한다. 46 | window.addEventListener('load', function () { 47 | loading.style.display = "none"; 48 | block.style.display = "flex"; 49 | 50 | setTimeout(function () { 51 | scrollTo(0, 0); 52 | }, 0); 53 | }); 54 | 55 | // 새로고침 했을 때 위치가 맨 위로 움직이지 않으면 "circle"에 show가 들어가 있어서 삭제해줘야 한다. 56 | window.addEventListener('load', () => { 57 | const circles = document.querySelectorAll(".circle"); 58 | circles.forEach(circle => { 59 | if (circle.classList.contains("show")) 60 | circle.classList.remove("show"); 61 | }); 62 | }); 63 | 64 | // ====================== Functions(report) ====================== 65 | 66 | // 신고한 댓글 아이디를 가져오고 모달을 연다. 67 | const openReportModal = function (id) { 68 | reportModal.classList.add("open-modal"); 69 | commentId = id; 70 | } 71 | 72 | // 서버에 댓글 신고 보내기 73 | const sendReport = function () { 74 | const reportSubjectValue = reportSubject.options[reportSubject.selectedIndex].value; 75 | const reportDescriptionValue = reportDescription.value; 76 | 77 | if (reportDescriptionValue === "") { 78 | alert("신고 내용을 입력해 주세요."); 79 | } 80 | else { 81 | runFetch("POST", userResultReportReqURL, { 82 | "commentId": commentId, 83 | "description": reportDescriptionValue, 84 | "subject": reportSubjectValue, 85 | }) 86 | .then(() => { 87 | alert("신고가 접수되었습니다. 처리될 때까지 조금만 기다려주세요."); 88 | checkReportCommit = true; 89 | closeReportModal(checkReportCommit); 90 | }) 91 | .catch(() => { alert("신고 유형을 선택해 주세요.") }); 92 | } 93 | } 94 | 95 | // 모달 창 닫기 96 | const closeReportModal = function (checkReportCommit) { 97 | // 사용자가 입력한 값 초기화 98 | [reportSubject.selectedIndex, reportDescription.value, reportCount.innerText] = [0, null, "(0/500)"]; 99 | if (checkReportCommit === true) { // 신고 제출이 정상적으로 완료됐으면, 신고 취소 확인 멘트 안 내보냄 100 | reportModal.classList.remove("open-modal"); 101 | } else { 102 | if (confirm("신고를 취소 하시겠습니까? 취소를 원하시면 [예], 아니면 [아니오]를 선택해주세요.")) { 103 | alert("신고가 취소 되었습니다."); 104 | reportModal.classList.remove("open-modal"); 105 | } 106 | } 107 | } 108 | 109 | // ====================== Functions(share) ====================== 110 | 111 | // MBTI에 따라 공유되는 텍스트를 다르게 설정한다. 112 | const getNamebyMBTI = function (obj, userMBTI) { 113 | switch (userMBTI) { 114 | case "ISTJ": { 115 | obj.text += "'킹스맨의 해리 하트'"; 116 | break; 117 | } 118 | case "ISFJ": { 119 | obj.text += "'셜록홈즈의 왓슨'"; 120 | break; 121 | } 122 | case "ISTP": { 123 | obj.text += "'007의 제임스 본드'"; 124 | break; 125 | } 126 | case "ISFP": { 127 | obj.text += "'타이타닉의 로즈'"; 128 | break; 129 | } 130 | case "INTJ": { 131 | obj.text += "'닥터 스트레인지의 닥터 스트레인지'"; 132 | break; 133 | } 134 | case "INTP": { 135 | obj.text += "'이미테이션 게임의 앨런 튜링'"; 136 | break; 137 | } 138 | case "INFJ": { 139 | obj.text += "'위대한 개츠비의 개츠비'"; 140 | break; 141 | } 142 | case "INFP": { 143 | obj.text += "'신비한 동물사전의 뉴트 스캐맨더'"; 144 | break; 145 | } 146 | case "ESTJ": { 147 | obj.text += "'해리포터의 헤르미온느'"; 148 | break; 149 | } 150 | case "ESFJ": { 151 | obj.text += "'분노의 질주의 돔'"; 152 | break; 153 | } 154 | case "ESTP": { 155 | obj.text += "'라푼젤의 플린 라이더'"; 156 | break; 157 | } 158 | case "ESFP": { 159 | obj.text += "'수어사이드 스쿼드의 할리퀸'"; 160 | break; 161 | } 162 | case "ENTJ": { 163 | obj.text += "'악마는 프라다를 입는다의 미란다'"; 164 | break; 165 | } 166 | case "ENTP": { 167 | obj.text += "'크리스마스의 악몽의 잭 스켈레톤'"; 168 | break; 169 | } 170 | case "ENFJ": { 171 | obj.text += "'금발이 너무해의 엘 우즈'"; 172 | break; 173 | } 174 | case "ENFP": { 175 | obj.text += "'사운드 오브 뮤직의 마리아'"; 176 | break; 177 | } 178 | default: { 179 | break; 180 | } 181 | } 182 | } 183 | 184 | const shareKakaotalk = function () { 185 | Kakao.Link.sendDefault({ 186 | objectType: 'feed', 187 | content: { 188 | title: mainText.text, 189 | description: subText, 190 | imageUrl: 191 | 'https://mbti-image-server.s3.ap-northeast-2.amazonaws.com/og_image.png', 192 | link: { 193 | mobileWebUrl: shareLink, 194 | webUrl: shareLink, 195 | }, 196 | }, 197 | // 카카오톡 미설치 시 카카오톡 설치 198 | installTalk: true, 199 | }) 200 | } 201 | 202 | const shareFacebook = function () { 203 | window.open("http://www.facebook.com/sharer/sharer.php?u=" + shareLink); 204 | } 205 | 206 | const shareTwitter = function () { 207 | window.open("https://twitter.com/intent/tweet?text=" + mainText.text + "&url=" + shareLink); 208 | } 209 | 210 | const format = function () { 211 | let args = Array.prototype.slice.call(arguments, 1); 212 | return arguments[0].replace(/\{(\d+)\}/g, function (match, index) { 213 | return args[index]; 214 | }); 215 | } 216 | 217 | const shareBand = function () { 218 | let encodeBody = encodeURIComponent(format('{0}\n{1}', mainText.text, shareLink)); 219 | let encodeRoute = encodeURIComponent(window.location.href); 220 | let link = format('http://band.us/plugin/share?body={0}&route={1}', encodeBody, encodeRoute); 221 | window.open(link, 'share', 'width=500, height=500'); 222 | } 223 | 224 | // ========================= MBTI Result ========================= 225 | 226 | // 000000000000 -> 000-000-000-000 227 | let result = JSON.parse(window.sessionStorage.getItem('clientClicked')); 228 | result = result.slice(0, 3) + '-' + result.slice(3, 6) + '-' + result.slice(6, 9) + '-' + result.slice(9, 12); 229 | 230 | runFetch("POST", userResultTestReqURL, { 231 | "testCode": result, 232 | }) 233 | .then((info) => { 234 | showResult(info.data); 235 | 236 | if (!Kakao.isInitialized()) { 237 | Kakao.init(info.data.kakao_JAVASCRIPT_KEY); 238 | } 239 | }) 240 | .catch(() => { alert("카카오 공유가 불가능합니다.") }); 241 | 242 | 243 | // 가져온 것들을 html에 설정한다. 244 | const showResult = function (data) { 245 | const mbtiResult = data.mbtiResult; 246 | MBTI = mbtiResult.mbti; 247 | 248 | const textAndImg = document.querySelector(".b3 .r1 .t2"); 249 | textAndImg.querySelector(".movie-title").src = mbtiResult.character.movieName.url; 250 | textAndImg.querySelector(".movie-character").src = mbtiResult.character.name.url; 251 | textAndImg.querySelector(".character-img").src = mbtiResult.character.image.url; 252 | 253 | // ---------------- conclusion ---------------- 254 | const conclusion = document.querySelector(".b3 .r1 .c1"); 255 | conclusion.innerHTML = mbtiResult.character.representativePersonality; 256 | 257 | const features = document.querySelectorAll(".b3 .r1 .f2:nth-child(n)"); 258 | for (let i = 0; i < features.length; i++) { 259 | features[i].innerHTML = mbtiResult.character.personalities[i]; 260 | } 261 | 262 | // ---------------- chemistry ---------------- 263 | const goodChemi = document.querySelector(".b3 .r1 .h1 .good"); 264 | goodChemi.querySelector(".movie-title").innerHTML = mbtiResult.bestChemistry.movieName; 265 | goodChemi.querySelector(".movie-character").innerHTML = mbtiResult.bestChemistry.characterName; 266 | goodChemi.querySelector(".character-img").src = mbtiResult.bestChemistry.imageUrl; 267 | 268 | const badChemi = document.querySelector(".b3 .r1 .h1 .bad"); 269 | badChemi.querySelector(".movie-title").innerHTML = mbtiResult.worstChemistry.movieName; 270 | badChemi.querySelector(".movie-character").innerHTML = mbtiResult.worstChemistry.characterName; 271 | badChemi.querySelector(".character-img").src = mbtiResult.worstChemistry.imageUrl; 272 | 273 | // ------------------ graph ----------------- 274 | const likeMe = document.querySelector(".b3 .likeMe .whiteBox"); 275 | const sameType = data.sameType; 276 | likeMe.querySelector(".movie-title").innerHTML = sameType.movieName; 277 | likeMe.querySelector(".movie-character").innerHTML = sameType.characterName; 278 | likeMe.querySelector("img").src = sameType.imageUrl; 279 | likeMePercentage = sameType.percentage; 280 | 281 | const mostType = document.querySelector(".b3 .mostType .whiteBox"); 282 | const mostPopularType = data.mostPopularType; 283 | mostType.querySelector(".movie-title").innerHTML = mostPopularType.movieName; 284 | mostType.querySelector(".movie-character").innerHTML = mostPopularType.characterName; 285 | mostType.querySelector("img").src = mostPopularType.imageUrl; 286 | mostTypePercentage = mostPopularType.percentage; 287 | 288 | // ----------- recommendedMovies ----------- 289 | const movieList = document.querySelectorAll(".b3 .m1 .m2 li img:nth-child(n)"); 290 | const recommendedMovies = mbtiResult.recommendedMovies; 291 | for (let i = 0; i < movieList.length; i++) { 292 | movieList[i].src = recommendedMovies[i].url; 293 | } 294 | 295 | getNamebyMBTI(mainText, mbtiResult.mbti); 296 | } 297 | 298 | // =========================== Graph =========================== 299 | 300 | // result.html에서 그래프 2개를 가져와서 애니메이션을 실행한다. 301 | const showAnimation = function () { 302 | circulars.forEach((circular) => { 303 | const circle = circular.querySelector('.circle'); 304 | const numb = circular.querySelector(".numb"); 305 | 306 | if (!circle.classList.contains('show')) { 307 | if (0 > chemistry.getBoundingClientRect().top) { 308 | circle.classList.add('show'); 309 | toggleShow(circle); 310 | 311 | let drawing = setInterval(() => { 312 | // id에 따라서 다른 숫자를 보여준다. 313 | if (circular.id === "likeMe") { 314 | if (likeMeCounter === likeMePercentage) { 315 | toggleShow(circle); 316 | clearInterval(drawing); 317 | } else { 318 | likeMeCounter += 1; 319 | numb.textContent = `${likeMeCounter}%`; 320 | } 321 | } 322 | else { 323 | if (mostTypeCounter === mostTypePercentage) { 324 | toggleShow(circle); 325 | clearInterval(drawing); 326 | } else { 327 | mostTypeCounter += 1; 328 | numb.textContent = `${mostTypeCounter}%`; 329 | } 330 | } 331 | }, 40); // 숫자가 작을수록 빠르다. 332 | } 333 | } 334 | }); 335 | } 336 | 337 | // .show를 toggle한다. 처음엔 없다가 보여주고 숫자에 다다르면 애니메이션을 종료한다. 338 | const toggleShow = function (item) { 339 | const leftProgress = item.querySelector(".circle .left .progress"); 340 | const rightProgress = item.querySelector(".circle .right .progress"); 341 | const dot = item.querySelector(".circle .dot"); 342 | 343 | leftProgress.classList.toggle("show"); 344 | rightProgress.classList.toggle("show"); 345 | dot.classList.toggle("show"); 346 | } 347 | 348 | window.addEventListener('scroll', showAnimation); -------------------------------------------------------------------------------- /scss/default.scss: -------------------------------------------------------------------------------- 1 | /* 모든 html 파일 안에 들어가는 css입니다. */ 2 | 3 | @import "./variable.scss"; 4 | 5 | @font-face { 6 | font-family: "SBAggroM"; 7 | src: local("SB 어그로 M"), local("SB 어그로OTF M"), 8 | url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2108@1.1/SBAggroM.woff") 9 | format("woff"); 10 | font-weight: normal; 11 | font-style: normal; 12 | font-display: fallback; 13 | unicode-range: U+0020-007E, U+0030-0039, U+AC00-D7A3, U+0041-005A, U+0061-007A, 14 | U+0020-002F, U+003A-0040, U+005B-0060, U+007B-007E; 15 | } 16 | 17 | $basic-font: "SBAggroM", "NanumBarunGothic"; 18 | 19 | * { 20 | padding: 0; 21 | margin: 0; 22 | box-sizing: border-box; 23 | font-family: $basic-font; 24 | background: no-repeat center; 25 | background-size: contain; 26 | } 27 | 28 | html { 29 | width: 100vw; 30 | } 31 | 32 | body { 33 | background: repeat $green2 url("../imgs/mobile/mobile_background_Frame96.png"); 34 | } 35 | 36 | button { 37 | cursor: pointer; 38 | background-color: transparent; 39 | border: 0px; 40 | opacity: 1; 41 | } 42 | 43 | /* mobile(768px) labtop(1020px) / desktop(1400px) */ 44 | @media screen and (min-width: 47.25rem) { 45 | body { 46 | background-image: url("../imgs/desktop/desktop_background_Frame48.png"); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /scss/home.scss: -------------------------------------------------------------------------------- 1 | @import "./variable.scss"; 2 | 3 | $t1-mobile-size: 0.875rem; 4 | $t1-desktop-size: 1.5rem; 5 | 6 | @mixin background($BackgroundImg) { 7 | background: no-repeat center url($BackgroundImg); 8 | background-size: contain; 9 | } 10 | 11 | body { 12 | @include flex(); 13 | height: 100vh; 14 | scrollbar-width: none; /* Firefox */ 15 | } 16 | 17 | body::-webkit-scrollbar { 18 | display: none; 19 | width: 0; 20 | } 21 | 22 | header { 23 | @include flex(); 24 | 25 | .t1 { 26 | @include background("../imgs/subTitle_Frame16.png"); 27 | width: 90vw; 28 | height: 3vh; 29 | margin-top: 17.73vh; 30 | } 31 | 32 | .t2 { 33 | @include background("../imgs/title.png"); 34 | width: 100vw; 35 | height: 20vh; 36 | } 37 | } 38 | 39 | .b1 { 40 | @include flex(flex-end); 41 | height: 60vh; 42 | 43 | .b2 { 44 | @include background("../imgs/startBtn_Frame88.png"); 45 | width: 89.1vw; 46 | height: 9vh; 47 | border-radius: 80px; 48 | background-color: transparent; 49 | } 50 | 51 | .t1 { 52 | color: $white1; 53 | font-size: $t1-mobile-size; 54 | margin: 3.5vh 0 10vh 0; 55 | } 56 | } 57 | 58 | @media screen and (min-width: 47.25rem) and (min-height: 50.75rem) { 59 | header { 60 | .t1 { 61 | width: 37vw; 62 | height: 3.51vh; 63 | margin-top: 13.33vh; 64 | } 65 | 66 | .t2 { 67 | width: 37vw; 68 | height: 18.88vh; 69 | margin-top: 1.94vh; 70 | } 71 | } 72 | 73 | .b1 { 74 | .b2 { 75 | width: 37vw; 76 | height: 12.96vh; 77 | } 78 | 79 | .t1 { 80 | font-size: $t1-desktop-size; 81 | line-height: 1.8125rem; 82 | margin: 3.98vh 0 9.25vh 0; 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /scss/question.scss: -------------------------------------------------------------------------------- 1 | @import "./variable.scss"; 2 | 3 | $q-num-mobile-size: 1.75rem; 4 | $q-title-mobile-size: 1.125rem; 5 | $q-title-mobile-xs-size: 0.9375rem; 6 | $q-title-desktop-size: 2rem; 7 | $q-title-desktop-xs-size: 1.25rem; 8 | $two-btns-desktop-size: 1.25rem; 9 | $button-text-mobile-size: 0.875rem; 10 | $button-text-mobile-xs-size: 0.75rem; 11 | $button-text-desktop-size: 1.375rem; 12 | $button-text-desktop-xs-size: 1.125rem; 13 | $letter-spacing: 0.02em; 14 | /* 15 | =========== 16 | Global 17 | =========== 18 | */ 19 | 20 | body { 21 | @include flex(normal); 22 | width: 100%; 23 | margin: calc(7vh - 20px) 0 calc(8vh + 20px) 0; 24 | scrollbar-width: none; 25 | } 26 | 27 | body::-webkit-scrollbar { 28 | display: none; 29 | width: 0; 30 | } 31 | 32 | .hidden { 33 | height: 100%; 34 | min-height: 100%; 35 | overflow: hidden !important; 36 | touch-action: pan-y; 37 | } 38 | 39 | .b2 { 40 | @include flex(); 41 | text-align: center; 42 | width: 89.25vw; 43 | height: calc(var(--vh, 1vh) * 85); 44 | min-height: 480px; 45 | margin-top: 20px; 46 | border-radius: 20px; 47 | border: 2px $green4 solid; 48 | background-color: $white2; 49 | 50 | .q2 { 51 | display: none; 52 | width: 66px; 53 | height: 36px; 54 | margin-bottom: 14px; 55 | background-size: 100% 100%; 56 | } 57 | 58 | .q1 { 59 | font-size: $q-title-mobile-size; 60 | color: $black2; 61 | line-height: 167%; 62 | letter-spacing: $letter-spacing; 63 | } 64 | 65 | .q1.t0 { 66 | margin-bottom: 1.375rem; 67 | } 68 | 69 | .q1.b0 { 70 | margin-bottom: 1.75rem; 71 | } 72 | } 73 | /* 74 | ============ 75 | block - btns 76 | ============ 77 | */ 78 | 79 | .n1 { 80 | @include greyBtn; 81 | width: 78.66%; 82 | height: 8.62vh; 83 | min-height: 20px; 84 | max-height: 70px; 85 | position: fixed; 86 | top: 80%; 87 | line-height: 1.25rem; 88 | font-size: $button-text-mobile-size; 89 | color: $grey9; 90 | cursor: default; 91 | white-space: pre; 92 | } 93 | 94 | .s2 { 95 | @include redBtn; 96 | width: 78.66%; 97 | height: 8.62vh; 98 | max-height: 70px; 99 | position: fixed; 100 | top: 80%; 101 | font-size: 0.875rem; 102 | line-height: 1.25rem; 103 | color: $white1; 104 | } 105 | 106 | .b2 { 107 | .t1 { 108 | @include flex(normal); 109 | width: 100%; 110 | .s1 { 111 | width: 88.05%; 112 | height: 9.85vh; 113 | min-height: 20px; 114 | max-height: 80px; 115 | margin-bottom: 1.25rem; 116 | border-radius: 162px; 117 | background-color: $grey3; 118 | color: $grey8; 119 | font-size: $button-text-mobile-size; 120 | line-height: 1.25rem; 121 | } 122 | 123 | .s1.b0 { 124 | margin-bottom: 10vh; 125 | } 126 | 127 | .s1.active { 128 | background-color: $green1; 129 | border: 2px solid $green3; 130 | color: $white1; 131 | pointer-events: none; 132 | } 133 | } 134 | } 135 | 136 | /* 137 | =========== 138 | media 139 | =========== 140 | */ 141 | 142 | /* (width < 428px) and (height > 812px) */ 143 | @media screen and (max-width: 26.75rem) and (min-height: 50.75rem) { 144 | body { 145 | margin: calc(15vh - 20px) 0 calc(15vh + 20px) 0; 146 | } 147 | 148 | .b2 { 149 | height: 70vh; 150 | } 151 | 152 | .n1, 153 | .s2 { 154 | top: 70%; 155 | } 156 | } 157 | 158 | /* width > 756px */ 159 | @media screen and (min-width: 47.25rem) { 160 | .b2 { 161 | width: 37vw; 162 | min-width: 716px; 163 | height: 87.03vh; 164 | border-width: 6px; 165 | 166 | .q2 { 167 | width: 6.875rem; 168 | height: 3.375rem; 169 | margin-bottom: 2.12vh; 170 | } 171 | 172 | .q1 { 173 | font-size: $q-title-desktop-size; 174 | } 175 | 176 | .q1.b0 { 177 | margin-bottom: 2.5rem; 178 | } 179 | 180 | .t1 { 181 | .s1 { 182 | width: 532px; 183 | height: 11.11vh; 184 | max-height: 120px; 185 | line-height: 1.875rem; 186 | font-size: $two-btns-desktop-size; 187 | } 188 | } 189 | } 190 | 191 | .n1, 192 | .s2 { 193 | width: 532px; 194 | height: 9.44vh; 195 | max-height: 102px; 196 | line-height: 2.5rem; 197 | font-size: $button-text-desktop-size; 198 | } 199 | } 200 | 201 | /* height < 756px */ 202 | @media screen and (max-height: 47.25rem) { 203 | .b2 .q1 { 204 | font-size: $q-title-desktop-xs-size; 205 | } 206 | 207 | .n1, 208 | .s2 { 209 | top: 77%; 210 | } 211 | } 212 | 213 | /* width < 320px (Galaxy S5, iPhone 5, iPhone 6/7/8, fold)*/ 214 | @media screen and (max-width: 23.4375rem) { 215 | .b2 .q1 { 216 | font-size: $q-title-mobile-xs-size; 217 | } 218 | 219 | .b2 .t1 .s1, 220 | .n1, 221 | .s2 { 222 | font-size: $button-text-mobile-xs-size; 223 | } 224 | } 225 | 226 | @media screen and (max-height: 32.56rem) { 227 | .n1 { 228 | display: none; 229 | } 230 | } 231 | -------------------------------------------------------------------------------- /scss/result.scss: -------------------------------------------------------------------------------- 1 | @import "./variable.scss"; 2 | 3 | $conclusion-mobile-font-size: 1.25rem; 4 | $feature-mobile-font-size: 0.875rem; 5 | $chemi-title-mobile-font-size: 0.875rem; 6 | $chemi-movie-title-mobile-font-size: 0.75rem; 7 | $chemi-movie-character-mobile-font-size: 0.875rem; 8 | $share-mobile-font-size: 1.125rem; 9 | $comment-created-font-size: 0.83rem; 10 | $comment-nickname-font-size: 1rem; 11 | $placeholder-font-size: 0.75rem; 12 | $basic-desktop-width: 79.86%; 13 | $conclusion-desktop-font-size: 2rem; 14 | $feature-desktop-font-size: 1.125rem; 15 | $chemi-title-desktop-font-size: 1.5rem; 16 | $chemi-movie-title-desktop-font-size: 1rem; 17 | $chemi-movie-character-desktop-font-size: 1.625rem; 18 | $share-desktop-font-size: 1.75rem; 19 | $placeholder-desktop-font-size: 1rem; 20 | $conclusion-mobile-font-xs-size: 1.1rem; 21 | $feature-mobile-font-xs-size: 0.8rem; 22 | $share-mobile-font-xs-size: 1.1rem; 23 | $admin-margin-top-size: 0.833rem; 24 | $conclusion-desktop-line-height: 2.625rem; 25 | $conclusion-mobile-line-height: 1.875rem; 26 | $feature-mobile-line-height: 1.5rem; 27 | $chemi-title-mobile-line-height: 1.0625rem; 28 | $chemi-movie-title-mobile-line-height: 0.875rem; 29 | $chemi-movie-character-mobile-line-height: 1.0625rem; 30 | $share-mobile-line-height: 3.375rem; 31 | $feature-desktop-line-height: 1.35rem; 32 | $chemi-title-desktop-line-height: 1.8125rem; 33 | $chemi-movie-title-desktop-line-height: 1.1875rem; 34 | $chemi-movie-character-desktop-line-height: 1.9375rem; 35 | $conclusion-mobile-font-weight: 400; 36 | $feature-desktop-font-weight: 300; 37 | $circular-size: 160px; 38 | $inner-size: 136px; 39 | $circle-half-time: 2s; 40 | 41 | /* 42 | =========== 43 | Global 44 | =========== 45 | */ 46 | body { 47 | @include flex(normal); 48 | padding: 2.5rem 1.25rem; 49 | } 50 | 51 | section { 52 | @include flex(normal); 53 | width: 100%; 54 | height: 100%; 55 | background-color: $white3; 56 | border: 2px solid $grey4; 57 | border-radius: 10px; 58 | margin-bottom: 0.625rem; 59 | } 60 | 61 | li { 62 | text-decoration: none; 63 | list-style: none; 64 | } 65 | 66 | select { 67 | -o-appearance: none; 68 | -webkit-appearance: none; 69 | -moz-appearance: none; 70 | appearance: none; 71 | height: 13.33%; 72 | border-radius: 16px; 73 | padding: 0 1.5rem; 74 | } 75 | 76 | select option { 77 | font-size: 1.125rem; 78 | } 79 | 80 | .subTitle { 81 | width: 100%; 82 | height: 3.25rem; 83 | display: inline-block; 84 | font-size: $share-mobile-font-size; 85 | line-height: $share-mobile-line-height; 86 | margin-top: 1.375rem; 87 | } 88 | /* 89 | =========== 90 | loading 91 | =========== 92 | */ 93 | 94 | .l1 { 95 | @include flex(normal); 96 | width: 100vw; 97 | height: 100vh; 98 | 99 | img { 100 | width: 100%; 101 | } 102 | } 103 | 104 | /* mobile(768px) labtop(1020px) / desktop(1024px) */ 105 | @media screen and (min-width: 47.25rem) { 106 | .l1 img { 107 | width: 37vw; 108 | } 109 | } 110 | /* 111 | =========== 112 | block 113 | =========== 114 | */ 115 | 116 | .b3 { 117 | width: 100%; 118 | height: 100%; 119 | display: none; 120 | flex-direction: column; 121 | align-items: center; 122 | text-align: center; 123 | background-color: $white1; 124 | border: 2px solid $green4; 125 | border-radius: 20px; 126 | padding: 1.25rem; 127 | 128 | .r1 { 129 | .t2 { 130 | @include flex(normal); 131 | width: 100%; 132 | height: 100%; 133 | 134 | .subject { 135 | @include imgContent("../imgs/result_character_subject.png"); 136 | width: 90%; 137 | height: 1rem; 138 | margin-top: 2.5rem; 139 | } 140 | 141 | .movie-title { 142 | height: 1.25rem; 143 | margin-top: 1.6rem; 144 | } 145 | 146 | .movie-character { 147 | height: 1.875rem; 148 | margin-top: 1.375rem; 149 | } 150 | 151 | .character-img { 152 | width: 100%; 153 | padding: 0 1.25rem; 154 | object-fit: contain; 155 | margin-top: 2.375rem; 156 | } 157 | } 158 | 159 | .c1 { 160 | display: inline-block; 161 | width: 100%; 162 | height: 3.25rem; 163 | font-size: $conclusion-mobile-font-size; 164 | line-height: $conclusion-mobile-line-height; 165 | font-weight: $conclusion-mobile-font-weight; 166 | margin-top: 1.75rem; 167 | } 168 | 169 | .f1 { 170 | @include flex(); 171 | width: 86.44%; 172 | margin-top: 1.3125rem; 173 | } 174 | 175 | .f2 { 176 | @include flex(center, row); 177 | width: 100%; 178 | height: 3rem; 179 | background-color: $white1; 180 | border-radius: 16px; 181 | margin-top: 0.625rem; 182 | font-size: feature-mobile-font-size; 183 | line-height: feature-mobile-line-height; 184 | } 185 | 186 | .h1 { 187 | @include flex(center, row); 188 | width: 86.1%; 189 | margin: 2.5625rem 0rem 2.5rem 0rem; 190 | 191 | .chemi { 192 | @include flex(normal); 193 | width: 100%; 194 | background-color: $white1; 195 | border: 2px solid $grey1; 196 | border-radius: 10px; 197 | 198 | .chemi-title { 199 | width: 100%; 200 | height: 2rem; 201 | display: inline-block; 202 | text-align: center; 203 | font-size: $chemi-title-mobile-font-size; 204 | line-height: $chemi-title-mobile-line-height; 205 | margin-top: 1.5rem; 206 | } 207 | 208 | .character-img { 209 | width: 64.91%; 210 | object-fit: contain; 211 | } 212 | 213 | .movie-title { 214 | width: 67.21%; 215 | height: 1.75rem; 216 | display: inline-block; 217 | font-size: $chemi-movie-title-mobile-font-size; 218 | line-height: $chemi-movie-title-mobile-line-height; 219 | color: $grey10; 220 | margin-top: 1rem; 221 | } 222 | 223 | .movie-character { 224 | width: 67.21%; 225 | height: 1.0625rem; 226 | display: inline-block; 227 | font-size: $chemi-movie-character-mobile-font-size; 228 | line-height: $chemi-movie-character-mobile-line-height; 229 | color: $red; 230 | margin: 0.25rem 0rem 1.4375rem 0rem; 231 | } 232 | } 233 | 234 | .good { 235 | margin-right: 0.625rem; 236 | } 237 | } 238 | } 239 | 240 | .likeMe, 241 | .mostType { 242 | padding: 0 1.25rem 1.25rem 1.25rem; 243 | } 244 | 245 | .whiteBox { 246 | width: 100%; 247 | height: 100%; 248 | background-color: $white1; 249 | border: 2px solid $grey1; 250 | border-radius: 16px; 251 | margin-top: 0.625rem; 252 | 253 | .movie-title { 254 | font-size: 0.875rem; 255 | margin-top: 2.5rem; 256 | } 257 | 258 | .movie-character { 259 | font-size: 1.125rem; 260 | margin-top: 0.4375rem; 261 | } 262 | 263 | .imgAndGraph { 264 | @include flex(center, column); 265 | } 266 | 267 | img { 268 | width: 9.25rem; 269 | margin: 1rem 0 1.875rem 0; 270 | } 271 | } 272 | } 273 | 274 | .circular { 275 | height: $circular-size; 276 | width: $circular-size; 277 | position: relative; 278 | top: 0px; 279 | margin-bottom: 3rem; 280 | 281 | .inner, 282 | .outer, 283 | .circle { 284 | position: absolute; 285 | z-index: 6; 286 | height: 100%; 287 | width: 100%; 288 | border-radius: 100%; 289 | } 290 | 291 | .inner { 292 | top: 50%; 293 | left: 50%; 294 | height: $inner-size; 295 | width: $inner-size; 296 | margin: calc(-1 * $inner-size / 2) 0 0 calc(-1 * $inner-size / 2); 297 | background-color: $white1; 298 | border-radius: 100%; 299 | } 300 | 301 | .circle { 302 | z-index: 1; 303 | box-shadow: none; 304 | } 305 | 306 | .numb { 307 | @include numb(); 308 | top: 45%; 309 | font-size: 2rem; 310 | } 311 | 312 | .numb-title { 313 | @include numb(); 314 | top: 65%; 315 | font-size: 0.875rem; 316 | } 317 | 318 | .bar { 319 | position: absolute; 320 | height: 100%; 321 | width: 100%; 322 | background: $grey1; 323 | border-radius: 100%; 324 | clip: rect(0px, $circular-size, $circular-size, calc($circular-size / 2)); 325 | } 326 | } 327 | 328 | .circle { 329 | opacity: 0; 330 | transition: all 0.5s ease; 331 | 332 | .bar { 333 | .progress { 334 | position: absolute; 335 | height: 100%; 336 | width: 100%; 337 | border-radius: 100%; 338 | clip: rect(0px, calc($circular-size / 2), $circular-size, 0px); 339 | } 340 | } 341 | 342 | .progress, 343 | .dot span, 344 | .fixed-dot span { 345 | background: $green2; 346 | } 347 | 348 | .left .progress { 349 | z-index: 1; 350 | animation: left $circle-half-time linear both; 351 | animation-play-state: paused; 352 | } 353 | 354 | .left .progress.show, 355 | .right .progress.show, 356 | .dot.show { 357 | animation-play-state: running; 358 | } 359 | 360 | .right { 361 | z-index: 3; 362 | transform: rotate(180deg); 363 | 364 | .progress { 365 | animation: right $circle-half-time linear both; 366 | animation-delay: $circle-half-time; 367 | animation-play-state: paused; 368 | } 369 | } 370 | 371 | .fixed-dot { 372 | @include dot(20); 373 | } 374 | 375 | .dot { 376 | @include dot(2); 377 | } 378 | 379 | .fixed-dot span, 380 | .dot span { 381 | position: absolute; 382 | right: 0; 383 | width: calc(($circular-size - $inner-size) / 2); 384 | height: calc(($circular-size - $inner-size) / 2); 385 | border-radius: 100%; 386 | } 387 | } 388 | 389 | .circle.show { 390 | opacity: 1; 391 | transform: none; 392 | } 393 | 394 | @keyframes left { 395 | 100% { 396 | transform: rotate(180deg); 397 | } 398 | } 399 | 400 | @keyframes right { 401 | 100% { 402 | transform: rotate(180deg); 403 | } 404 | } 405 | 406 | @keyframes dot { 407 | 0% { 408 | transform: rotate(-90deg); 409 | } 410 | 50% { 411 | transform: rotate(90deg); 412 | z-index: 4; 413 | } 414 | 100% { 415 | transform: rotate(270deg); 416 | z-index: 4; 417 | } 418 | } 419 | 420 | .b3 { 421 | .s1 { 422 | height: 100%; 423 | 424 | .s2 { 425 | width: 83.72%; 426 | height: 2.5rem; 427 | display: flex; 428 | flex-direction: row; 429 | justify-content: center; 430 | margin: 0.5rem 0 2.8025rem 0; 431 | 432 | li { 433 | width: 20%; 434 | height: 100%; 435 | 436 | a { 437 | display: inline-block; 438 | width: 100%; 439 | height: 100%; 440 | background-color: rgba(0, 0, 0, 0); 441 | } 442 | 443 | .kakaotalk { 444 | background-image: url("../imgs/share-icons/share_kakaotalk_Frame85.png"); 445 | } 446 | 447 | .facebook { 448 | background-image: url("../imgs/share-icons/share_facebook_Frame86.png"); 449 | } 450 | 451 | .twitter { 452 | background-image: url("../imgs/share-icons/share_twitter_Frame87.png"); 453 | } 454 | 455 | .band { 456 | background-image: url("../imgs/share-icons/share_band_Frame88.png"); 457 | } 458 | 459 | .instagram { 460 | background-image: url("../imgs/share-icons/share_instagram_Frame89.png"); 461 | } 462 | } 463 | } 464 | } 465 | 466 | .m1 { 467 | height: 100%; 468 | 469 | .m2 { 470 | width: 55.93%; 471 | height: 100%; 472 | display: flex; 473 | flex-direction: column; 474 | align-items: center; 475 | margin: 0.375rem 0rem 1.875rem 0rem; 476 | 477 | li { 478 | width: 100%; 479 | height: 100%; 480 | margin-bottom: 0.625rem; 481 | 482 | img { 483 | width: 100%; 484 | height: 14.875rem; 485 | object-fit: contain; 486 | } 487 | } 488 | } 489 | } 490 | 491 | .restart { 492 | @include background("../imgs/restartBtn_Frame134.png"); 493 | width: 100%; 494 | height: 3.5rem; 495 | margin: 2rem 0 2.8125rem 0; 496 | } 497 | 498 | .communication { 499 | .add-comment { 500 | @include flex(normal); 501 | width: 100%; 502 | height: 30.14%; 503 | 504 | .nickname { 505 | width: 89%; 506 | height: 2.75rem; 507 | margin: 2.5rem 1.25rem 0.625rem 1.25rem; 508 | display: flex; 509 | } 510 | 511 | .commentArea { 512 | width: 100%; 513 | position: relative; 514 | display: inlsine-block; 515 | 516 | .comment-area { 517 | width: 89%; 518 | height: 13.5rem; 519 | padding-top: 0.5rem; 520 | resize: none; 521 | } 522 | 523 | span { 524 | position: absolute; 525 | bottom: 20px; 526 | right: 40px; 527 | } 528 | 529 | #comment_count { 530 | font-size: 0.625em; 531 | color: $grey6; 532 | } 533 | } 534 | 535 | .add-comment-pw { 536 | .password { 537 | width: 89%; 538 | height: 2.75rem; 539 | margin: 0.6875rem 0 0.625rem 0; 540 | } 541 | 542 | .wrtie-comment-btn { 543 | @include background("../imgs/writeCommentBtn_Frame140.png"); 544 | width: 70vw; 545 | height: 5vh; 546 | } 547 | } 548 | } 549 | 550 | .show-comment { 551 | @include flex(normal); 552 | width: 100%; 553 | height: 63.7%; 554 | margin: 2.0625rem 0 0.875rem 0; 555 | 556 | .comment { 557 | @include flex(normal); 558 | width: 90.15%; 559 | height: 20%; 560 | border: 2px solid $grey4; 561 | border-radius: 10px; 562 | margin-bottom: 0.75rem; 563 | 564 | .comment_header { 565 | width: 100%; 566 | height: 43.5%; 567 | display: flex; 568 | flex-direction: row; 569 | justify-content: space-between; 570 | box-sizing: border-box; 571 | border-radius: 10px 10px 0px 0px; 572 | background-color: $white2; 573 | 574 | .info { 575 | display: flex; 576 | flex-direction: column; 577 | 578 | .commentNickname { 579 | display: flex; 580 | align-items: start; 581 | margin: 1.25rem 0rem 0.6875rem 1.8125rem; 582 | color: $black3; 583 | font-size: $comment-nickname-font-size; 584 | line-height: 19px; 585 | } 586 | 587 | .commentMBTI { 588 | display: flex; 589 | align-items: center; 590 | justify-content: flex-start; 591 | margin: 0rem 0rem 1.3125rem 1.8125rem; 592 | color: $grey7; 593 | font-size: $comment-created-font-size; 594 | } 595 | } 596 | 597 | .btn { 598 | @include flex(space-evenly, row); 599 | width: 6rem; 600 | 601 | .del-reply-btn { 602 | @include flex(row-reverse); 603 | @include replyBtn(); 604 | @include background("../imgs/replyDeleteBtn_Frame896.png"); 605 | } 606 | 607 | .report-reply-btn { 608 | @include flex(row-reverse); 609 | @include replyBtn(); 610 | @include background("../imgs/replyReporteBtn_icon.png"); 611 | } 612 | } 613 | } 614 | } 615 | 616 | .comment_content { 617 | width: 100%; 618 | height: 100%; 619 | display: flex; 620 | flex-direction: column; 621 | border-radius: 0px 0px 10px 10px; 622 | background-color: $white1; 623 | 624 | .content { 625 | font-size: $comment-nickname-font-size; 626 | color: $black3; 627 | background-color: $white1; 628 | margin: 1.25rem 1.25rem 0rem 1.8125rem; 629 | display: flex; 630 | justify-content: flex-start; 631 | text-align: left; 632 | 633 | word-break: break-all; 634 | /* word-break: normal; */ 635 | } 636 | } 637 | 638 | .createdDate { 639 | @include flex(flex-start, row); 640 | color: $grey7; 641 | font-size: $chemi-movie-title-mobile-font-size; 642 | margin: 0.6875rem 1.25rem 1.3125rem 1.8125rem; 643 | } 644 | } 645 | 646 | .comment-pages { 647 | background-color: $white3; 648 | width: 72%; 649 | height: 1.75rem; 650 | display: flex; 651 | justify-content: space-between; 652 | margin-bottom: 2.5rem; 653 | 654 | #index_left_btn_active { 655 | @include indexBtn("../imgs/index_left_btn_active.png"); 656 | } 657 | 658 | #index_left_btn_not_active { 659 | @include indexBtn("../imgs/index_left_btn_not_active.png"); 660 | cursor: default; 661 | } 662 | 663 | #index { 664 | @include flex(space-between); 665 | font-size: $comment-nickname-font-size; 666 | background-color: $white3; 667 | color: $black1; 668 | } 669 | 670 | #index_right_btn_active { 671 | @include indexBtn("../imgs/index_right_btn_active.png"); 672 | } 673 | 674 | #index_right_btn_not_active { 675 | @include indexBtn("../imgs/index_right_btn_not_active.png"); 676 | } 677 | } 678 | } 679 | } 680 | 681 | .report-modal { 682 | position: fixed; 683 | top: 0; 684 | left: 0; 685 | width: 100%; 686 | height: 90%; 687 | background: transparent; 688 | display: grid; 689 | place-items: center; 690 | visibility: hidden; 691 | z-index: 10; 692 | 693 | .report-modal-container { 694 | @include flex(normal); 695 | width: 72vw; 696 | height: 29rem; 697 | background: $white1; 698 | border: 2px solid #053f28; 699 | border-radius: 20px; 700 | text-align: center; 701 | padding: 1.25rem; 702 | 703 | .input-area { 704 | width: 100%; 705 | height: 24rem; 706 | background-color: $white3; 707 | border: 2px solid $grey4; 708 | border-radius: 20px; 709 | } 710 | 711 | h2 { 712 | margin-top: 1rem; 713 | } 714 | 715 | select { 716 | width: 88.14%; 717 | font-size: 1rem; 718 | margin-top: 1rem; 719 | margin-bottom: 1rem; 720 | background-color: $white1; 721 | } 722 | 723 | .input-area .reportArea { 724 | height: 55%; 725 | } 726 | 727 | #description { 728 | width: 88.14%; 729 | height: 13.5rem; 730 | font-size: 0.8rem; 731 | border-radius: 20px; 732 | border: 2px solid $grey3; 733 | padding: 1.25rem; 734 | word-break: break-all; 735 | resize: none; 736 | } 737 | 738 | #description::placeholder { 739 | color: $grey6; 740 | } 741 | 742 | #report_count { 743 | position: absolute; 744 | bottom: 255px; 745 | right: 150px; 746 | font-size: 0.625em; 747 | color: $grey6; 748 | } 749 | } 750 | } 751 | 752 | .open-modal { 753 | visibility: visible; 754 | z-index: 10; 755 | } 756 | 757 | .b3 .communication .add-comment .nickname::placeholder, 758 | .comment-area::placeholder, 759 | .password::placeholder { 760 | color: $grey6; 761 | } 762 | 763 | .b3 .communication .add-comment .nickname, 764 | .comment-area, 765 | .password { 766 | background: $white1; 767 | border: 2px solid $grey3; 768 | border-radius: 10px; 769 | font-size: $placeholder-font-size; 770 | padding-left: 1.25rem; 771 | } 772 | 773 | .btns { 774 | margin-top: 1rem; 775 | } 776 | 777 | button#cancle, 778 | button#submit { 779 | width: 29.62%; 780 | height: 2.625rem; 781 | font-size: 1rem; 782 | cursor: pointer; 783 | } 784 | 785 | button#cancle { 786 | @include greyBtn(); 787 | margin-right: 0.75rem; 788 | } 789 | 790 | button#submit { 791 | @include redBtn(); 792 | color: $white1; 793 | } 794 | 795 | .p1 { 796 | width: 100%; 797 | height: 0.625rem; 798 | background: linear-gradient(to right, $grey4 50%, rgba(255, 255, 255, 0) 0%) 799 | repeat-x bottom; 800 | background-size: 16px 2px; 801 | margin-top: 2.3125rem; 802 | } 803 | /* 804 | =========== 805 | media 806 | =========== 807 | */ 808 | 809 | /* width < 320px (Galaxy S5, iPhone 5, iPhone 6/7/8, fold)*/ 810 | @media screen and (max-width: 23.4375rem) { 811 | /* ----------------- conclusion ----------------- */ 812 | .b3 .r1 { 813 | .c1 { 814 | font-size: $conclusion-mobile-font-xs-size; 815 | } 816 | 817 | .f2 { 818 | font-size: $feature-mobile-font-xs-size; 819 | } 820 | } 821 | 822 | .b3 .s1 span, 823 | .b3 .m1 span, 824 | .b3 .likeMe span, 825 | .b3 .mostType span { 826 | font-size: $share-mobile-font-xs-size; 827 | } 828 | } 829 | 830 | /* mobile(768px) labtop(1020px) / desktop(1024px) */ 831 | @media screen and (min-width: 47.25rem) { 832 | /* ----------------- Global ----------------- */ 833 | body { 834 | padding: 0; 835 | } 836 | 837 | section { 838 | margin: 0.625rem 3.75rem; 839 | border-width: 4px; 840 | border-radius: 32px; 841 | } 842 | 843 | .subTitle { 844 | font-size: $share-desktop-font-size; 845 | margin-top: 3rem; 846 | } 847 | 848 | /* ----------------- block ----------------- */ 849 | .b3 { 850 | width: 716px; 851 | border-width: 6px; 852 | border-radius: 40px; 853 | margin: 5rem 0; 854 | padding: 3.75rem; 855 | 856 | .r1 { 857 | .t2 { 858 | .subject { 859 | height: 2rem; 860 | margin-top: 4rem; 861 | } 862 | .movie-title { 863 | height: 3rem; 864 | margin-top: 2.5rem; 865 | } 866 | 867 | .movie-character { 868 | height: 4rem; 869 | } 870 | 871 | .character-img { 872 | padding: 0 3.75rem; 873 | } 874 | } 875 | 876 | .c1 { 877 | height: 100%; 878 | line-height: $conclusion-desktop-line-height; 879 | font-size: $conclusion-desktop-font-size; 880 | margin-top: 2.375rem; 881 | } 882 | 883 | .f1 { 884 | width: $basic-desktop-width; 885 | } 886 | 887 | .f2 { 888 | height: 3.5rem; 889 | font-size: $feature-desktop-font-size; 890 | line-height: $feature-desktop-line-height; 891 | font-weight: $feature-desktop-font-weight; 892 | } 893 | 894 | .h1 { 895 | width: $basic-desktop-width; 896 | margin: 4.125rem 0 3.75rem 0; 897 | 898 | .chemi { 899 | height: 100%; 900 | border-radius: 16px; 901 | 902 | .chemi-title { 903 | width: 100%; 904 | height: 3.25rem; 905 | font-size: $chemi-title-desktop-font-size; 906 | line-height: $chemi-title-desktop-line-height; 907 | margin-top: 2.5rem; 908 | } 909 | 910 | .character-img { 911 | width: 64.91%; 912 | height: 10.75rem; 913 | margin-top: 0.625rem; 914 | } 915 | 916 | .movie-title { 917 | width: 100%; 918 | height: 1.375rem; 919 | font-size: 1rem; 920 | line-height: $chemi-movie-title-desktop-line-height; 921 | margin-top: 2.375rem; 922 | } 923 | 924 | .movie-character { 925 | width: 100%; 926 | height: 2.125rem; 927 | font-size: $chemi-movie-character-desktop-font-size; 928 | line-height: $chemi-movie-character-desktop-line-height; 929 | margin-top: 0.75rem; 930 | margin-bottom: 2.25rem; 931 | } 932 | } 933 | 934 | .good { 935 | margin-right: 1.25rem; 936 | } 937 | } 938 | } 939 | 940 | .communication { 941 | .add-comment { 942 | .nickname { 943 | width: 79.86%; 944 | height: 3.25rem; 945 | margin: 2.5rem 3.7rem 1.25rem 3.7rem; 946 | } 947 | 948 | .commentArea { 949 | .comment-area { 950 | width: 79.86%; 951 | } 952 | 953 | span { 954 | position: absolute; 955 | bottom: 20px; 956 | right: 90px; 957 | } 958 | 959 | #comment_count { 960 | font-size: 0.625em; 961 | } 962 | } 963 | 964 | .add-comment-pw { 965 | display: flex; 966 | flex-direction: row; 967 | width: 79.86%; 968 | /* align-items: start; */ 969 | 970 | .password { 971 | @include flex(flex-start, row); 972 | width: 200vw; 973 | height: 3.25rem; 974 | margin: 1.25rem 1.25rem 0.625rem 0; 975 | } 976 | 977 | .wrtie-comment-btn { 978 | @include flex(center, row); 979 | height: 3.25rem; 980 | background-image: url("../imgs/writeCommentBtn_Frame69.png"); 981 | margin-top: 1.25rem; 982 | } 983 | } 984 | } 985 | 986 | .show-comment { 987 | margin: 4.125rem 0 0.875rem 0; 988 | 989 | .comment { 990 | border-radius: 20px; 991 | margin-bottom: 1.6875rem; 992 | 993 | .comment_header { 994 | border-radius: 20px 20px 0px 0px; 995 | } 996 | 997 | .comment_content { 998 | border-radius: 0px 0px 20px 20px; 999 | } 1000 | 1001 | .add-reply { 1002 | @include flex(flex-start, row); 1003 | 1004 | .write-reply-btn { 1005 | width: 17.02%; 1006 | height: 3rem; 1007 | background-image: url("../imgs/desktop/desktop_writeCommentBtn_Frame69.png"); 1008 | background-color: transparent; 1009 | margin: 1.125rem 1.0625rem 0 0; 1010 | } 1011 | 1012 | .comment-reply-area { 1013 | margin: 1.25rem 1.25rem 1.125rem 1.0625rem; 1014 | } 1015 | } 1016 | } 1017 | } 1018 | 1019 | .comment-pages { 1020 | width: 40%; 1021 | } 1022 | } 1023 | 1024 | .likeMe, 1025 | .mostType { 1026 | padding: 0 3.75rem 3.75rem 3.75rem; 1027 | } 1028 | 1029 | .whiteBox { 1030 | .imgAndGraph { 1031 | flex-direction: row; 1032 | justify-content: center; 1033 | } 1034 | 1035 | .movie-title { 1036 | font-size: 1rem; 1037 | margin-top: 2.5rem; 1038 | } 1039 | 1040 | .movie-character { 1041 | font-size: 1.5rem; 1042 | margin-top: 0.5rem; 1043 | } 1044 | 1045 | img { 1046 | margin: 1rem 2.5rem 3.75rem 0; 1047 | } 1048 | } 1049 | 1050 | .s1 .s2 { 1051 | width: $basic-desktop-width; 1052 | height: 4rem; 1053 | margin: 1.75rem 0 4.25rem 0; 1054 | padding: 0 1.875rem; 1055 | } 1056 | 1057 | .m1 { 1058 | height: 100%; 1059 | 1060 | .m2 { 1061 | width: $basic-desktop-width; 1062 | height: 13.125rem; 1063 | display: flex; 1064 | flex-direction: row; 1065 | justify-content: space-between; 1066 | margin-top: 1.625rem; 1067 | margin-bottom: 3.75rem; 1068 | 1069 | li { 1070 | width: 30%; 1071 | margin-bottom: 0; 1072 | } 1073 | } 1074 | } 1075 | 1076 | .restart { 1077 | width: 63.75%; 1078 | height: 5.875rem; 1079 | margin: 2.5rem 0; 1080 | } 1081 | } 1082 | 1083 | .circular { 1084 | top: -20px; 1085 | margin-bottom: 0; 1086 | } 1087 | 1088 | .p1 { 1089 | background-size: 28px 4px; 1090 | border-width: 4px; 1091 | margin-top: 62px; 1092 | } 1093 | 1094 | .b3 .communication .add-comment .nickname, 1095 | .comment-area, 1096 | .password { 1097 | border-width: 3px; 1098 | border-radius: 20px; 1099 | font-size: var(--placeholder-desktop-font-size); 1100 | } 1101 | 1102 | .report-modal .report-modal-container { 1103 | width: 36.9375rem; 1104 | height: 33rem; 1105 | border-width: 6px; 1106 | border-radius: 40px; 1107 | 1108 | .input-area { 1109 | height: 27rem; 1110 | border-radius: 32px; 1111 | } 1112 | 1113 | select { 1114 | margin-top: 2rem; 1115 | } 1116 | } 1117 | } 1118 | -------------------------------------------------------------------------------- /scss/variable.scss: -------------------------------------------------------------------------------- 1 | $white1: #ffffff; 2 | $white2: #f5f5f5; 3 | $white3: #f8f8f8; 4 | 5 | $grey1: #e5e5e5; 6 | $grey2: #e6e6e6; 7 | $grey3: #e8e8e8; 8 | $grey4: #ededed; 9 | $grey5: #d1d1d1; 10 | $grey6: #a8a8a8; 11 | $grey7: #8a8a8a; 12 | $grey8: #888888; 13 | $grey9: #6f6f70; 14 | $grey10: #4a4a4a; 15 | 16 | $green1: #2d6242; 17 | $green2: #08623e; 18 | $green3: #1a3e2a; 19 | $green4: #053f28; 20 | 21 | $black1: #2a2a2a; 22 | $black2: #222222; 23 | $black3: #00010c; 24 | 25 | $navy: #060713; 26 | $red: #e10017; 27 | 28 | @mixin flex($JustifyContent: center, $FlexDirection: column) { 29 | display: flex; 30 | flex-direction: $FlexDirection; 31 | justify-content: $JustifyContent; 32 | align-items: center; 33 | } 34 | 35 | @mixin greyBtn { 36 | background: linear-gradient(93.11deg, #dadcdd 4.01%, #bec0c2 97.86%); 37 | box-shadow: 0px 6px 0px #505050; 38 | border: 2px solid #6f6f70; 39 | border-radius: 80px; 40 | } 41 | 42 | @mixin redBtn { 43 | background: linear-gradient(93.11deg, #f7202f 4.01%, #c11723 97.86%); 44 | box-shadow: 0px 6px 0px #56070c; 45 | border: 4px solid #9b151e; 46 | border-radius: 80px; 47 | } 48 | 49 | @mixin background($ImgUrl) { 50 | background-image: url($ImgUrl); 51 | background-size: contain; 52 | } 53 | 54 | @mixin imgContent($ContentUrl) { 55 | object-fit: contain; 56 | content: url($ContentUrl); 57 | } 58 | 59 | @mixin numb { 60 | position: absolute; 61 | left: 50%; 62 | transform: translate(-50%, -50%); 63 | z-index: 10; 64 | color: $black2; 65 | white-space: nowrap; 66 | } 67 | 68 | @mixin dot($zIndex) { 69 | z-index: $zIndex; 70 | position: absolute; 71 | left: 50%; 72 | top: 50%; 73 | width: 50%; 74 | height: calc(($circular-size - $inner-size) / 2); 75 | margin-top: calc(-1 * ($circular-size - $inner-size) / 4); 76 | animation: dot calc($circle-half-time) * 2 linear both; 77 | transform-origin: 0% 50%; 78 | animation-play-state: paused; 79 | } 80 | 81 | @mixin replyBtn { 82 | width: 1.3rem; 83 | height: 1.3rem; 84 | background-color: $white2; 85 | background-size: 100% 100%; 86 | } 87 | 88 | @mixin indexBtn($ImgUrl) { 89 | width: 20%; 90 | background-image: url($ImgUrl); 91 | background-size: contain; 92 | background-color: $white3; 93 | margin-top: 0; 94 | } 95 | --------------------------------------------------------------------------------