웹/포토폴리오

[바닐라 JS] 책 평가하는 사이트 제작하기 - 1

Judith Hopps 2023. 1. 16. 23:42
반응형
2023.1.16 한 것
- html 코드 작성
- css 코드 작성

2023.1.17 
- 블로그 수정

 

 

더보기

전체 구조 

1. html

a. 하나의 index.html로 설정한다.

b. head 

  • 뷰포트 관련 정보를 적어두었다.
  • title은 Book Review
  • style은 외부 스타일 시트를 링크한다.
  • javascript는 defer 명령어를 통해 head 부분에 첨부한다.

c. body

  • body는 main과 footer로 구성되어 있다. (header는 제외하였다.)
  • main 태크 안에 section, article로 구성되어 있고 BEM(Block Element Modifier)을 사용하여 가독성 있는 이름을 이용했다.
  • footer 태그 안에는 sr-only 클래스를 이용하여 스크린 리더를 이용하여 웹 접근성을 높였다.

 

 

html

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Book Review</title>
    <!-- style -->
    <link rel="stylesheet" href="./style.css" />
    <!-- javascript -->
    <script defer src="script.js"></script>
  </head>
  <body>
    <main>
      <!-- title -->
      <section class="title">
        <h2>Book Reviews</h2>
      </section> 

      <!-- book -->
      <article class="book">
        <div class="book_image">
          <img src="./img/book1.jpg" alt="" />
        </div>
        <h4 id ="book_title">데미안</h4>
        <p id = "book_author">헤르만 헤세</p>
        <p id = "book_review">
          새는 싱클레어처럼 성장통을 겪고 있는 사람들을 의미하고 알은 그 사람들이 극복해야 할 시련을 의미하며 파괴한다는 말 자체가 극복, 아브락사스에게 나아가는 길 자체는 나락과 구원으로 얼룩진 인생을 의미한다. 그렇게 도달한 선과 악의 신 아브락사스는 역경이 있어야 성장도 있다는 깨달음을 주는 개념이 아닌가 하는 생각을 가져본다.
          </p>
      </article>     
    </main>
    <footer>
      <h1 class="sr-only">Copyright</h1>
      <p>
        2023 judith - hopps
      </p>
    </footer>
  </body>

 

더보기

전체 구조 

2. css

a. 하나의 스타일 시트를 이용했다. 

b. 구글 웹 폰트를 이용하였다.

c. root 변수를 설정하여 유지보수성을 가졌다.

d. 기본 설정되어 있는 html 문서 css 설정을 무효화 설정하였다.

e. 메인 구간

  • text-align을 중앙으로 배치하여 가독성을 살렸다.
  • article의 배경색을 웹 페이지와 달리 하여 사용자의 시선을 사로 잡았다.
  • 책 이미지는 display : block 과 margin: auto로 중앙 정렬을 하였고, 크기를 지정했다.

f. 푸터 구간

  • 스크린 리더용으로 css 설정을 하여 웹 접근성을 높였다.
  • 글씨는 gray, opacity 설정을 통해 사용자의 시선이 분산되지 않도록 하였다.
 

css

/* 폰트 */
@import url('https://fonts.googleapis.com/css2?family=Dongle:wght@300&display=swap');

/* ===== 변수 구간 ===== */
:root {
  --color-main: rgb(255,232,232);
  --color-background: rgba(233, 246, 246, 0.63);
  --color-author: rgb(242, 189, 189);
  
  --font-size-title: 44px;
  --font-size-subtitle: 42px;
  --font-size-author: 20px;
  --font-size-text: 18px;

  --img-size : 230px;
}

/* ===== 리셋 구간 ===== */

body {
  margin: 0;
  font-family: "Dongle", sans-serif;
  background-color: var(--color-background);
  /* 개발용 설정 */
  min-height: 50vh;
  min-width: 30vw;
}
h4,p {
  margin:0px;
  padding:0px;
}

/* ===== 메인 구간 ===== */
main{
  text-align: center;

}
/* title */
.title{
  font-size: var(--font-size-title);
  text-decoration: underline 4px var(--color-main);
  text-underline-position:under;  
}

/* ===== 책 소개 구간 ===== */

.book{
  background-color: white;
  width:80vw;
  margin:auto;
}
.book_image{
  padding: 3%;
  /* 이미지 정렬 */
  display:block;
  margin:auto;

  width:var(--img-size);
  height: var(--img-size);
  background-color: white;
  overflow: hidden;
}
.book h4{
  font-size: var(--font-size-subtitle);
  
}
#book_author{
  font-size:var(--font-size-author);
  color:var(--color-author);
  
}
#book_review{
  font-size:var(--font-size-text);
  padding: 0 10% 3% 10%;
  
}

footer{
  color:gray;
  opacity: 30%;
  text-align: center;
}


/* 스크린 리더용 */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

완성

 

 

반응형