Class/Frontend

[프론트 엔드 DAY06]

열정코딩 2022. 5. 2.

1.박스 사이징 

-  width, height 높이와 길이를 부여
/ 이 높이와 길이에는 padding이나 border 영역은 포함하지 않음

 * box-sizing:content-box:
        기존 계산법, width와 height 포함하지 않겠다
* box-sizing:border-box:
        width와 height에 padding, border를 포함

 

만약 width 100%로 설정된 경우 padding이나 border 속성을 추가할 수 없음. 
그러니까 여기에 padding을 주려면 border-box를 사용하여 포함한 길이가 100% 되도록 

 

- 입력 코드 -

<!DOCTYPE html>
<html lang="en">
<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>박스사이징</title>
    </head>
<body>
    <h2>박스사이징</h2>
    <div class="bs1"></div>
    <div class="bs2"></div>
</body>
</html>

 

 

- 스타일 코드 작성- 

<style>
        div {
            width: 300px;
            height: 150px;
            border: 10px solid red;
            margin: 10px;
            padding: 30px;
        }

        .bs1{
            box-sizing: content-box;
        }

        .bs2{
            box-sizing: border-box;
            width: 380px;
        }
    </style>

 

- 출력 결과 - 

 

- 개발자 도구 켜봐서 비교하기 - 

1번의 박스

content  박스의 스타일이 넣어졌을땐  컨텐츠+패딩+보더 의 사이즈가 합쳐서 = 길이 380

 

 

2번의 박스

- 다 포함해서 그냥 380 .

 

질문 1 . = 이러나 저러나 , 다 380인데 다른게 무슨 차이점일까? (물어보기)

 

 

2번. 둥근테두리 

 

(전부 따로 줄 때)
    border-radius  > 8개의 값을 다 넣어줌 

top-left-x   top-right-x   bottom-right-x   bottom-left-x 

/ top-left-y top-right-y bottom-right-y bottom-left-y

 

(대각선 위치의 값이 같을 때)
border-radius : top-left-x  top-right-x / top-left-y top-right-y
                                       

(전부 같을 때)
border-radius : xy

 

-  작성 코드- 

<!DOCTYPE html>
<html lang="en">
<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>둥근테두리</title>
    </head>
<body>
    <h2>둥근테두리</h2>
    <div class="radius1"></div>
    <div class="radius2"></div>
    <div class="radius3"></div>
    <div class="radius4"></div>
</body>
</html>

 

 

- 스타일 코드- 

 <style>
        div{
            width: 200px;
            height: 200px;
            margin: 20px;
        }
        .radius1{
            border: 3px solid red;
            border-radius: 100px 100px 50px 50px / 30px 30px 100px 100px;
        }

        .radius2{
            border: 3px solid blue;
            border-radius: 100px / 50px;
        }

        .radius3{
            border: 3px solid green;
            border-radius: 100px 20px / 50px 100px;
        }

        .radius4 {
                border: 3px solid hotpink;
                border-radius: 50%;
                 }
</style>

 

 

- 출력 결과 - 

- 첫번째 값에 8개의 값을 넣었는데 

출력 하고난후 개발자 도구를 보면 속성이 다 적용 되어있는게[ 보인다. 

 

 

 

3. 테이블 테두리
-  테이블 셀들 간의 공백을 어떻게 처리할지 결정하는 속성
    separate(기본, 셀들을 분리),  collapse(셀들 사이를 합쳐서 공백을 없앰)

 

- 입력 코드 - 

<!DOCTYPE html>
<html lang="en">
<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>테이블 테두리 </title>
    </head>
<body>
    <h2>테이블 테두리</h2>
    <table>
        <caption>브라우저의 종류</caption>
        <tr>
            <th>개발사</th>
            <th>브라우저 이름</th>
        </tr>
        <tr>
            <td>구글</td>
            <td>크롬</td>
        </tr>
        <tr>
            <td>마이크로소트트</td>
            <td>엣지</td>
        </tr>
        <tr>
            <td>마이크로소트트</td>
            <td>사파리</td>
        </tr>
        <tr>
            <td>삼성</td>
            <td>삼성브라우저</td>
        </tr>
    </table>
</body>
</html>

 

 - 입력 스타일- 

<style>
    table{
        border: 3px solid red;
        width: 600px;
        border-collapse: collapse;}
    th,td{
        border: 3px solid red;
        height: 40px;
        text-align: center;}
	th{
        background-color: pink;}
tr>td {background-color:moccasin;}
</style>

 

- 출력 결과 - 

- 질문 2 : 왼쪽 면으로만 색이 채워지게 하고 싶은데 어떻게 코드를 짜야 할까?

 

 

 

4. 디스플레이 ( block / inline block) 의 차이점 

- 웹 페이지의 레이아웃을 결정하는 속성
block : 새로운 라인에서 시작하고, 해당 라인의 모든 너비를 차지
            높이값만큼 한줄을 가득채우는 속성을 가지고 있음 (DIV, HEADER, P, TABLE, H1~6...)

inline : 새로운 라인에서 시작되지 않고, 앞의 요소에 이어서 배치
        width, height 값이 적용x 안의 컨텐츠 내용만큼 영역을 차지 (A, SPAN, IMG...)
        * display inline일 경우 margin,padding top-bottom이 안 먹는 경우가 있음 대표적으로 span

inline-block : block과 inline 속성을 모두 적용
none : 웹 페이지에서 해당 요소가 나타나지 않고 레이아웃에서 사라짐

 

- 입력 코드 - 

<body>
    <h2>디스플레이</h2>
    <div id="inline">
        <img src="./sea1.png" alt="바다"/>
        <img src="./sea2.png" alt="바다"/>
        <img src="./sea3.png" alt="바다"/>
    </div>
    <div id="block">
        <img src="./sea1.png" alt="바다"/>
        <img src="./sea2.png" alt="바다"/>
        <img src="./sea3.png" alt="바다"/>
    </div>
    <hr> <!-- 직선의 줄을 그어준다 -->
    <span class="ib"></span>
    <span class="ib"></span>
    <span class="ib"></span>
    <hr>
    <div class="ib"></div>
    <div class="ib"></div>
    <div class="ib"></div>
</body>
</html>

 

- 스타일 코드- 

   <style>
        div{
            margin: 20px;
            border: 1px solid deeppink;
            border-radius: 20px;
            padding: 10px;}
        img {
            border: 1px solid deepskyblue;}
	.ib{
            border: 3px solid blue;
            width: 100px;
            height: 100px;
            margin: 10px;}
        span.ib{
            display: block;}
        div.ib{
            display: inline-block;}
    </style>

-  이미지가 들어있는 전체의 div 값에 1px 핑크색인 살짝 둥그런 테두리를 만들어준다 .

이미지와 테두리 사이의 간격은 10px

- 이미지가 잘 보이기 위에 이미지 자체 테두리에 색과 넓이를 넣어주었다. 

-  ib 값에 기본적인 높이와,,넓이 를 정해주고 <spane>으로 묶어준 ib값에 display: block을 넣어주면

 ib 에  값을 주고 만들어진 모형이 1개의 블럭처럼 되어 세로로 블럭처럼 나열 된 모습이 보인다. 

- div 태그에 있는 ib 값은 inline-block 블럭처럼 나열된 모습을 보일수 있다. 

 

 

- 출력 결과 -  

 

 

 

5. 디스 플레이 ( none /  hidden 의 차이점 )

- none : 웹 페이지에서 해당 요소가 나타나지 않고 레이아웃에서 사라짐

- hidden: 말 그대로 숨김, 공간차지 함 

- 입력 코드- 

<!DOCTYPE html>
<html lang="en">
<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>디스플레이2</title>
    </head>
<body>
    <h2>디스플레이2</h2>
    <div>
        <p>display 속성값을 none으로 설정</p>
        <p class="none">display 속성값을 none으로 설정</p>
    </div>
    <div>
        <p>display 속성값을 hidden으로 설정</p>
        <p class="hidden">display 속성값을 hidden으로 설정</p>
    </div>
</body>
</html>

 

 

- 스타일 코드 - 

 <style>
        div{
            background-color: hotpink;
            border: 3px solid blue;
            margin-bottom: 20px; }   
        p.none{
            /*display: none*/
            display: block;}
        p.hidden{
            /*visibility: hidden */
            visibility: visible;}

 </style>

- none 은 자리까지 없어지고 , hidden 은 공간 차지를 하지만 숨기는것 

block  /  visible   로 적으면 다시 공간에 상관없이 입력했던 값들이 나타난다. 

 

 

- 출력 결과 -

 

 

6. CSS 폼
- 폼 요소의 스타일을 설정

 

 * 입력부분 *
선택자:

focus: 폼 요소가 포커싱 되어있을 때의 스타일을 설정된
 ex) outline: none

버튼

ex) cursor:pointer -> 마우스를 올렸을 때 커서 모양을 설정
textarea: resize: none ==> textarea 크기를 사용자가 변경 불가능하도록 설정

 

 

- 입력 코드 - 

<!DOCTYPE html>
<html lang="en">
<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>폼</title>
    </head>
<body>
    <form action="">
        <p> 아이디: <input type="text" placeholder="아이디를 입력하세요"required/></p>
        <p>비밀번호:<input type="password" placeholder="비밀번호를 입력하세요"required/></p>
        <p>
             직업
            <select>
                <option>교사</option>
                <option>강사</option>
                <option>의사</option>
                <option>판사</option>
                <option>학사</option>
                <option>주부</option>
                <option>사무직</option>
                <option>기타</option>
            </select>
        </p>
        <p>자기소개 
            <textarea></textarea>
        </p>
        <p>
            <input type="submit" value="회원가입"/>
            <input type="reset" value="다시작성"/>
            <input type="button" value="돌아가기"/>

        </p>
    </form>
</body>
</html>

 

- 입력 스타일 코드- 

 

-  text>  border:none;   텍스트 박으에 있는 테두리를 없애 준다.

-  text : focos > outlione:none;  비밀번호 입력창 테두리를 없애준다 

- text area:  > resize: none; 자기소개 입력창에 사용자가 함부로 사이즈 조절 못하게 딱 정해준다 .

 

- 출력 결과 - 

 

'Class > Frontend' 카테고리의 다른 글

[프론트 엔드 DAY08]  (0) 2022.05.23
[프론트 엔드 DAY07]  (1) 2022.05.09
[프론트 엔드 DAY05]  (0) 2022.04.27
[프론트 엔드 DAY04-1]  (0) 2022.04.27
[프론트 엔드 DAY04]  (1) 2022.04.26

댓글