코딩/스파르타코딩-웹개발

웹개발 1주차 개발일지(2) - 부트스트랩, CSS복습

김기지 2022. 10. 6. 18:48
728x90

◎ 부트스트랩

- 예쁜 css를 모아둔 것

 

●시작템플릿

다른 사람이 미리 작성한 css를 내 HTML파일에 적용한다는 점에서, 

부트스트랩 적용은 css파일분리와 원리가 동일하다.

(다만, css파일이 인터넷의 어딘가에 있다는 점이 다름)

https://getbootstrap.kr/docs/5.1/getting-started/introduction/

 

시작하기

세계에서 가장 인기있는 프레임워크인 Bootstrap으로 반응형, 모바일 우선 사이트를 jsDelivr와 스타터 페이지 템플릿을 통해 시작해보세요.

getbootstrap.kr

본 수업에서는 코드스니펫에 미리 세팅이 되어 그대로 사용했지만,

부트스트랩을 사용하기 위해서는 css링크 스타일시트와 js의 script를 붙여줘야한다.

(나중에 자바스크립트를 사용하기 위해)

<!doctype html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>

<title>스파르타코딩클럽 | 부트스트랩 연습하기</title>
</head>

<body>
<h1>이걸로 시작해보죠!</h1>
</body>

</html>

 

 

우선 부트스트랩으로 버튼을 하나 가져와보자.

이 버튼 중 하나를 골라 복사 후 붙여넣기를 해보자.

<button type="button" class="btn btn-primary">Primary</button>

css설정을 해주지 않았는데도 파란색버튼이 생겼고 심지어는 클릭도 된다.

안의 텍스트도 바꿀 수 있다.

부트스트랩 페이지를 보면 어려가지의 폼과 컴포넌트를 사용할 수 있고 약간의 수정도 가능하다.

 


●부트스트랩을 사용하기 전 css복습을 해보자.

먼저 html코드를 작성해주자.

<body>
<div class="mytitle">
    <h1>내 생에 최고의 영화들</h1>
    <button>영화 기록하기</button>
</div>
</body>

css설정을 해주자.

우선 큰 틀을 잡기 위해 배경색을 넣어주고 전체적인 사이즈를 조정해주자.

    <style>
        .mytitle {
            background-color: green;
            width: 100%; <!--화면 가득 채워주기-->
            height: 250px;
        }
    </style>

이제 배경 이미지를 넣어주고 글자의 색도 바꾸어준다.

이미지url은 네이버영화에서 가져왔다.

            background-image: url("https://movie-phinf.pstatic.net/20210715_95/1626338192428gTnJl_JPEG/movie_image.jpg");
            background-size: cover;
            background-position: center;
            color: white;

안의 내용물을 가운데로 가져오자.

내용물의 위치를 정렬할때는 dispaly-flex를 사용한다.

            display: flex;
            flex-direction: column; <!--가로로 정렬시에는 row-->
            justify-content: center;
            align-items: center;

이제 버튼을 꾸며주자. 

버튼을 꾸밀때는 class로 명칭을 붙여서 꾸며도 되지만

버튼이 하나이거나 안에 들어있는 모든 버튼에 대한 설정인 경우에는 .상위명칭 > button으로 지칭해도 된다.

 

버튼은 배경이 투명하고 양 끝이 반구의 형태이다.

위의 텍스트와의 여백도 띄어주자.

        .mytitle > button {
            width: 200px;
            height: 50px;
            border-radius: 50px;
            background-color: transparent; <!--배경 투명하게 하기-->
            border: 1px solid white;
            color: white;
            margin-top: 10px;
        }

여기서 마우스를 버튼에 올렸을때 테두리가 굵어지도록 하려면 어떻게 해야할까?

        .mytitle > button:hover {  <!--버튼에 마우스가 올라갈때-->
            border: 2px solid white;
        }

 

배경이미지를 자세히 보면 조금 어둡다. 

배경이미지를 어둡게 나타내는 방법은 구글링을 하면 알 수 있는데

linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)) 를 배경이미지url앞에 붙여준다.

background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)) ,url("https://movie-phinf.pstatic.net/20210715_95/1626338192428gTnJl_JPEG/movie_image.jpg");

 

마지막으로 폰트를 적용하자.

폰트는 코드스니펫을 이용했다.

폰트 링크를 <title>아래에 붙이고 font-family를 <style>아래에 붙여주면 완성.


●부트스트랩 활용하기

부트스트랩에 컴포넌트안에 있는 카드를 가져와 꾸며보자.

하단을 쭉 내리다보면 위와 같은 이미지 카드가 나온다. 이 코드를 복사해오자.

화면에 카드4장을 띄우고싶면 row-cols-md-4로 바꿔주자.

(부트스트랩 설명을 보면 해당 내용에대한 설명이 있다.)

이제 안의 내용물을 바꾸어주자.

포스터이미지는 코드스니펫을 사용했고, 안의 텍스트는 바꿔주었다.

여기에 나중에 쓰일 별점과 코멘트를 추가해야하는데 별점은 이모티콘을 사용해야한다.

https://kr.piliapp.com/facebook-symbols/

 

페이스 북 기호 : 웃는 기호, 이모티콘 기호, 이모티콘과 코드 목록

× 이모지 - 이모티콘 혹은 웃는 얼굴이라고도 불립니다. iOS와 Android는 기본적으로 845개의 이모티콘을 지원하고 있으며, 페이스북은 하트/사랑 기호, 별, 부호 및 동물 모양을 포함한 절반을 지원

kr.piliapp.com

        <div class="col">
            <div class="card">
                <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                     class="card-img-top" alt="...">
                <div class="card-body">
                    <h5 class="card-title">영화 제목이 들어갑니다</h5>
                    <p class="card-text">여기에 영화에 대한 설명이 들어갑니다</p>
                    <p>⭐⭐⭐</p>
                    <p class="mycomment">여기에 코멘트가 들어갑니다</p>
                </div>
            </div>

코멘트부분은 css로 글자색을 회색으로 바꾸었다.

한개의 카드가 완성되었다.

나머지 카드도 같게 해줘야하는데, 방금 꾸민 카드를 다른 카드자리에 붙여준다면 간단하다.

우선 카드가 묶여있는 부분을 접어 지워준 후 만들어둔 카드를 붙여넣기하자.

 

카드가 화면에 꽉 차게 들어가있다.

여기에 여백을 넣어주자.

먼저 이 카드를 <div>에 넣어 하나로 묶어준 후 여백을 넣자.

    <div class="wrap">
        <div class="row row-cols-1 row-cols-md-4 g-4">
            <div class="col">
                <div class="card">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                         class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">영화 제목이 들어갑니다</h5>
                        <p class="card-text">여기에 영화에 대한 설명이 들어갑니다</p>
                        <p>⭐⭐⭐</p>
                        <p class="mycomment">여기에 코멘트가 들어갑니다</p>
                    </div>
                </div>
            </div>
            <div class="col">
                <div class="card">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                         class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">영화 제목이 들어갑니다</h5>
                        <p class="card-text">여기에 영화에 대한 설명이 들어갑니다</p>
                        <p>⭐⭐⭐</p>
                        <p class="mycomment">여기에 코멘트가 들어갑니다</p>
                    </div>
                </div>
            </div>
            <div class="col">
                <div class="card">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                         class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">영화 제목이 들어갑니다</h5>
                        <p class="card-text">여기에 영화에 대한 설명이 들어갑니다</p>
                        <p>⭐⭐⭐</p>
                        <p class="mycomment">여기에 코멘트가 들어갑니다</p>
                    </div>
                </div>
            </div>
            <div class="col">
                <div class="card">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                         class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">영화 제목이 들어갑니다</h5>
                        <p class="card-text">여기에 영화에 대한 설명이 들어갑니다</p>
                        <p>⭐⭐⭐</p>
                        <p class="mycomment">여기에 코멘트가 들어갑니다</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
        .wrap {
            width: 1200px;
            margin: 20px auto 0px auto;
        }

 

여기에 포스팅박스를 넣어보자.

우선 들어갈 위치에 <div>로 구역을 나눠주자.

    <div class="mypost">
        포스팅박스
    </div>

이 구역을 꾸며주자.

배경색을 넣어 눈에 보이게한 뒤 크기와 내부 정렬을 정해준다.

        .mypost {
            background-color: green;
            width: 500px;
            margin: 20px auto 0px auto;
        }

박스를 자세히 보면 그림자가 있다. 그림자를 넣어주고 안쪽 여백도 넣어주자.

 

        .mypost {
            width: 500px;
            margin: 20px auto 0px auto;
            box-shadow: 0px 0px 3px 0px gray;
            padding: 20px;
        }

이제 부트스트랩에서 필요한것을 가져와서 필요에 맞게 바꿔준다.

① 영화 url : 플로팅라벨의 이메일 입력박스

② 별점박스 : input group에 custom forms

③ 코멘트url : 플로팅라벨의 textarea

④기록하기, 닫기버튼 : 버튼

버튼은 css로 정렬을 해주어야하므로 명칭을 달아주자.

    <div class="mypost">
        <div class="form-floating mb-3">
            <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
            <label for="floatingInput">영화URL</label>
        </div>
        <div class="input-group mb-3">
            <label class="input-group-text" for="inputGroupSelect01">별점</label>
            <select class="form-select" id="inputGroupSelect01">
                <option selected>--선택하기--</option>
                <option value="1">⭐</option>
                <option value="2">⭐⭐</option>
                <option value="3">⭐⭐⭐</option>
                <option value="4">⭐⭐⭐⭐</option>
                <option value="5">⭐⭐⭐⭐⭐</option>
            </select>
        </div>
        <div class="form-floating">
            <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>
            <label for="floatingTextarea">코멘트</label>
        </div>
        <div class="mybtn">
            <button type="button" class="btn btn-dark">기록하기</button>
            <button type="button" class="btn btn-outline-dark">닫기</button>
        </div>

    </div>

버튼의 상단과 사이 여백을 띄어주고 중앙정렬해주자.

        .mybtn {
            margin-top: 20px;
            display: flex;
            flex-direction: row;
            justify-content: center;
            align-items: center;
        }
        .mybtn > button {
            margin-right: 10px;
        }

 

그런데 창을 줄이면 카드박스가 잘려서나온다.

카드의 형태를 그대로 유지하려면 모바일처리를 하면 되는데, 가로넓이의 속성을 조절하는 것이다.

설정한 넓이를 최대넓이로 설정한 후 그 전까지의 넓이를 화면의 95%만 채우게하면 된다.

카드박스와 전체 구역에 설정해주자.

        .wrap {
            max-width: 1200px;
            width: 95%;
            margin: 20px auto 0px auto;
        }
        .mypost {
            max-width: 500px;
            width: 95%;
            margin: 20px auto 0px auto;
            box-shadow: 0px 0px 3px 0px gray;
            padding: 20px;
        }

모바일버전으로 보고싶다면 우측마우스 클릭 후 검사의 toggle device toolbar를 누르면 볼 수 있다.

 

728x90