프론트/html.css.js

웹개발 2차시 CSS

복지희 2023. 3. 21. 01:29

<body> 본문내용 </body>

<style> 디자인 </style>

<style>
    a {
        color : red;
        text-decoration : none;
    }
</style>

여기서 a 를 선택자(selector) 라고 부름.

 

또는 본문 내용안에 style 속성으로 직접 작성 가능

<li><a href = "2.html" style="color:red; text-decoration:underline">CSS</a></li>

 

+) css 파일을 따로 저장하여

<head>
    <title>WEB1 - CSS </title>
    <meta charset="uft-8">
    <link rel="stylesheet" href="style.css">
</head>

css 파일을 링크 걸어주면 파일별 수정 용이!

 

<속성>

글 디자인

h1{
    font-size: 45px;
    text-align: center;
    }

+) 검색하는 방법: 

    글씨크기를 변경하고싶다 -> css text size property 검색

    글씨를 중앙정렬하고싶다 -> css text center property 등 검색가능

 

<선택자>

<body>
    <h1><a href = "index.html"></a>WEB</h1>
    <ol>
        <li><a href = "1.html" class="saw">HTML</a></li>	//class 지정
        <li><a href = "2.html" class="saw active">CSS</a></li>	//class 지정
        <li><a href = "3.html">JavaScript</a></li>
    </ol>

</body>

<style>
    a{
        color : black;
        text-decoration: none;
    }
    h1{
        font-size: 45px;
        text-align: center;
    }
    .saw{
        color:gray;
    }
    .active{
        color:red;
    }
</style>

html에서 a태그에 class를 지정해주고,

style에서 .saw 라고 해주면 html에서 class가 saw인것 모두 지정.

class는 여러개의 값이 들어올 수있고, 띄어쓰기로 구분!

class = "saw active" 라고 지정해주면 saw라는 class, active라는 class 두개 다 가능

 

※ class = "saw active" -> .saw 와 .active 모두 해당된다는 불편함 발생

    -> id 사용

<body>
    <h1><a href = "index.html"></a>WEB</h1>
    <ol>
        <li><a href = "1.html" class="saw">HTML</a></li>
        <li><a href = "2.html" class="saw" id="active">CSS</a></li>
        <li><a href = "3.html">JavaScript</a></li>
    </ol>

</body>

<style>
    a{
        color : black;
        text-decoration: none;
    }
    h1{
        font-size: 45px;
        text-align: center;
    }
    #active{
        color:red;
    }
    .saw{
        color:gray;
    }
</style>

class = "saw" id = "active"

-> id가 class보다 더 우선시됨!

why? id 중복불가능, class 중복가능. (id가 더 구체적)

 

<박스모델>

<body>
    <h1>HTML</h1>
    <p> 
        인터넷에서 웹을 통해 접근되는 대부분의 웹 페이지들은
        <a href = "https://ko.wikipedia.org/wiki/HTML">HTML</a>로 작성된다.<br>
        HTML은 문서의 글자크기, 글자색, 글자모양, 그래픽, 문서이동(하이퍼링크) 등을 정의하는 명령어로서 홈페이지를 작성하는 데 쓰인다. 
    </p>
</body>

<style>
    h1, a{			/*중복되는것 한번에 적기 가능*/
        border-width: 5px;
        border-color:red;
        border-style:solid;
        <!--border: 5px solid red;--> /*중복 한번에 가능*/
    }
</style>

화면 전체를 쓰는 태그 : 블록 레벨 엘리먼트(block level element)

자기자신만큼만 쓰는 태그 : 인라인 엘리먼트(inline element)

-> css를 통해 바꿀 수 있음

<body>
    <h1>HTML</h1>
    <p> 
        인터넷에서 웹을 통해 접근되는 대부분의 웹 페이지들은
        <a href = "https://ko.wikipedia.org/wiki/HTML">HTML</a>로 작성된다.<br>
        HTML은 문서의 글자크기, 글자색, 글자모양, 그래픽, 문서이동(하이퍼링크) 등을 정의하는 명령어로서 홈페이지를 작성하는 데 쓰인다. 
    </p>
</body>

<style>
    h1{
        border-width: 5px;
        border-color:red;
        border-style:solid;
        display:inline;		/*display 추가*/
    }

    a{
        border-width: 5px;
        border-color:red;
        border-style:solid;
        display: block;		/*display 추가*/
    }
</style>
</html>

 

padding, margin

<body>
    <h1>CSS</h1>
    <h1>CSS</h1>
</body>

<style>
    h1{
        border: 5px solid red;
        padding: 20px;		/*박스 안에서의 간격*/
        margin: 0;		/*박스끼리의 간격*/
       	width: 100px;		/*원래 블럭이었지만, 간격 지정*/
    }
</style>

 

<그리드>

디자인을 위한. 의미없는 태그

- <div></div> : 블록태그. 줄바꿈됨.

- <span></span> : 인라인태그.

 

두개의 태그를 옆으로 나란히 붙이고 싶다면?!

1. 우선 붙이고 싶은 것들을 부모태그로 한번 더 묶어줌

<body>
    <div id="grid">	//부모태그로 한번 더 감싸주기
        <div>NAVIGATION</div> 
        <div>ARTICLE</div>
    </div>
</body>

<style>
    #grid{
        border: 5px solid pink;
    }
    div{
        border: 5px solid gray;
    }
</style>
</html>

2. 부모태그 css를 display: grid로 설정해주고

3. 원하는 사이즈 지정

<body>
    <div id="grid">
        <div>NAVIGATION</div> 
        <div>ARTICLE</div>
    </div>
</body>

<style>
    #grid{
        border: 5px solid pink;
        display:grid;				/*우선 그리드로 설정해주고*/
        grid-template-columns: 150px 1fr;	/*첫번째 150px, 나머지 자동화*/
    }
    div{
        border: 5px solid gray;
    }
</style>

if) grid-template-columns: 2fr 1fr

        -> 앞은 2만큼, 뒤는 1만큼의 크기를 갖도록 자동조정

 

<body>
    <h1><a href = "index.html"></a>WEB</h1>
    <div id="grid">				//id 지정
        <ol>
            <li><a href = "1.html">HTML</a></li>
            <li><a href = "2.html">CSS</a></li>
            <li><a href = "3.html">JavaScript</a></li>
        </ol>
        <div id="article">
            <h2>CSS</h2>
            <p>
                기존의 HTML은 웹 문서를 다양하게 설계하고 수시로 변경하는데 많은 제약이 따르는데, 이를 보완하기 위해 만들어진 것이 스타일 시트이고 스타일 시트의 표준안이 바로 CSS이다. 간단히 스타일 시트라고도 한다.<br>
                HTML을 이용해서 웹 페이지를 제작할 경우 전반적인 틀에서 세세한 글꼴 하나 하나를 일일이 지정해주어야 하지만, 웹 페이지의 스타일(작성형식)을 미리 저장해 두면 웹 페이지의 한 가지 요소만 변경해도 관련되는 전체 페이지의 내용이 한꺼번에 변경되므로, 문서 전체의 일관성을 유지할 수 있고 작업 시간도 단축된다.
            </p>
        </div>
    </div>
</body>

<style>
    body{
        margin: 0px;
    }
    #grid{
        display: grid;
        grid-template-columns: 150px 1fr;
    }
    a{
        color : black;
        text-decoration: none;
    }
    h1{
        font-size: 45px;
        text-align: center;
        border-bottom: 1px solid gray;
        margin: 0;
        padding: 20px;
    }
    #grid ol{				/*#grid를 부모로 가지는 ol라고 명확하게 표시*/
        border-right:1px solid gray;
        width: 100px;
        margin: 0;
        padding: 20px;
        padding-left: 33px;
    }
    #article{
        padding-left:25px;
    }
</style>

 

현재 웹브라우저들이 그 기술들을 얼마나 채택하고 있는가를 보여주는 사이트:

https://caniuse.com/

 

Can I use... Support tables for HTML5, CSS3, etc

 

caniuse.com

 

<미디어 쿼리>

반응형 디자인 : 화면의 크기에 따라 웹 페이지의 모양 바뀌는것

<body>
    <div>
        Responsive
    </div>
</body>

<style>
    div{
        border: 10px solid green;
        font-size: 60px;
    }
    @media(min-width: 800px){ 		/*800px보다 화면이 크다면*/
        div{
            display:none;
        }
    }      
</style>

800px 넘는순간 사라짐

 

<다음 사이트를 미디어쿼리를 사용해 조정>

<style>
    /*screen width < 800px*/
    
    @media(max-width: 800px){
        h1{
            border-bottom:none;
        }
        #grid{
            display: block /*grid에서 원상복구*/
        }
        #grid ol{
            border-right: none;
        }
    }
</style>

화면 사이즈 작아짐에 따라 디자인 변경!