Knowhow/Web

CSS tips 1

침닦는수건 2022. 6. 19. 00:18
반응형

Tips

1. css 파일을 html 내에서 tag 형태로 부르는 방법이 있고, 아예 분리하는 방법이 있는데, 후자의 방법이 권장됨.

 

<head>   

    <style>

 

    <style/> # 전자 inline css

    <link href="css file path" rel="stylesheet" /> # 후자 external css

<head> 

 

두 방식을 동시에 쓸 경우( 권장 x), cascading 단어 뜻에 맞게 맨 마지막에 적혀있는 커맨드대로 적용됨.

 

2. 각 html tag 별로 속성을 지정하는 방식을 반복하면 됨. easy.

 

tagname {

    color : blue;

    font-style : italic;

    font-size: 50px;

}

위와 같음.

 

특정 id의 tag만 변경하고자 할 때는 다음과 같이 작성하면 됨.

#id {

}

 

모든 tag에 공통적으로 적용하고자 할 때는 다음과 같이 작성하면 됨.

* {

}

 

카테고리 레벨로 적용하고자 할 때, (예를 들어, 몇몇 tag에만 적용하고자 할 때)

.class {

}

 

 

3. box를 구성하는 것이 가장 핵심. 웬만한 웹사이트는 box로 구분해서 보통 디자인 함.  <div> <div/>나 <header> <header/> 등등이 해당함. 

 

4. block과 inline. block은 옆에 (같은 라인에) 다른 것들이 올 수 없음. inline은 옆에 다른 것들이 올 수 있음.

예를 들어, <div><div/>는 block이어서 우측에 다른 요소가 나타나는 것이 아니라 다음 줄에 다른 요소가 나타남. 반대로 <span><span/>의 경우, inline이어서 우측에 연달아 나타남.

기억할 때는 inline이 무엇인지 기억하는 것이 유리함.

 

css property 중 display : inline or display : block을 지정해서 서로 간에 변경이 가능함.

 

하지만 block -> inline은 권장되지 않음. 왜냐하면, block은 width와 height를 갖는 개념인데 inline은 width와 height가 없음. 따라서 변경 시, 사라지거나 제대로 동작 안할 수 있음. 대신 inline-block 을 사용하면 할 수는 있으나 역시 별로임.

ㅇㄹ

 

5. box에는 margin, border, padding 개념이 있음.

브라우저가 일반적으로 block에는 8px 정도의 margin을 부여함. 

 

margin : value1;  : 사방

margin : value1 value 2; : 상하, 좌우

margin: value1 value2 value3 value4 : 시계 방향, 상우하좌

 

collapsing margins 현상 : block 안에 block이 있는 상황에서, 두 block의 border가 같을 경우, 두 block의 margin이 하나로 취급됨. 상하 margin에서만 적용됨.

 

해결 방법은, padding을 추가하는 것. 

 

border는 많은 속성이 있지만, 보통 하나만 씀. 왜냐면, 안 예뻐서...solid만 많이 씀.

border :2px solid;

 

6. inline 들은 margin, padding을 좌우로만 가질 수 있음. width, height가 없어서. 따라서 바꾸고 싶다면 inline->block으로 변경해서 적용해야 함.

 

7. flexbox. parent element한테 적용하면 child element 일체에 적용됨. 예를 들어,

body {

   display: flex;

    justify-content : space-evenly;

    align-items : center;

    flex-direction: column;

}

 

<body>

    <div> <div/>

<body/>

 

main axis 와 cross axis가 존재함. main axis는 horizontal axis, cross axis 는 vertical axis임.

justify-content는 main axis 방향으로 적용됨. align-items는 cross axis 방향으로 적용됨.

 

main axis와 cross axis 설정을 바꾸면 같이 바뀜. flex-direction : column; 으로 하면 vertical axis가 main axis가 됨.

 

flex parent-child는 계속해서 만들 수 있음. body->div 처럼 div->content으로 만들 수 있음. 

 

8. flex의 내용을 지키려고 유지하다가, child가 원래 규격 외로 찌그러지는 상황이 발생함. 예를 들어, 한 줄에 나열하는 조건을 만족하기 위해서 사진이 압축되는 현상이 있다. 이를 warpping이라고 하는데, flex-wrap: wrap; 같이 바꿀 수 있음. 그러면 찌그러지는 걸 방지하거나 찌그러지더라도 어떻게 움직이는지 조절할 수 있음.

 

9. position 은 웬만한 것들을 다 조절한 뒤에 아주 조금 옮기고 싶을 때 자주 사용함. 혹은 그것들에 상관없이 고정하고 싶을 때 씀.

div {

    position : fixed; static; relative;

}

fixed는 처음 레이아웃이 뜰 때 보였던 위치에 고정되게 됨. 스크롤이나 크기 변화에 상관없이 고정됨. 그러나 top과 같이 위치 지정이 들어가면 레이아웃 무시하고 지정한 대로 설정됨.

 

div {

    width : 100px;

    position : relative;

    top : -10px;

}

relatvie는 초기 설정을 기준으로 상대적인 움직임을 적을 수 있도록 함.

 

10. position : absolute는 parent 중 relative인 것을 대상으로 절대적인 위치를 지정함. 주의할 점이 만약 body 안의 div 안의 div와 같이 되어있고 최하위에서 position: absolute를 사용할 때, 중간 div가 relative 설정이 되어있지 않으면, body 기준으로 절대적 위치를 지정하기 때문에 이상한 곳에 가서 붙을 수 있다. 

 

11. pseudo selectors. id, class와 같이 특정 tag 군만 속성 설정하고자 할 때 사용함.

div:last_child {

    color : blue;

span:nth-child(1),

span:nth-child(2) {

    background-color : tomato;

}

nth_child() 는 even, odd 2n+1과 같이 수식으로 지정 가능.

 

12. combinators. 특정 tag를 찾고 싶을 때 너무 길어서 범위를 좁히고 싶을 때, tag 조합으로 범위를 좁혀주는 것.

div p span{

    ...

}

div 안의 paragraph 안의 span을 찾아 변경하는 것.

 

범위를 좁히는 것을 넘어서 더 구체적으로 지정하고자 할 때는 >, + 와 같은 기호를 사용함.

div > span {}

바로 밑의 자식 중에서만 span을 찾음. 안그러면 손자 중에서도 찾음.

 

p + span {}

p 바로 다음으로 오는 span만 찾음. 징검다리로 연속되는 건 무시. 당연히 p는 안 변함. + 에서 헷갈리지 말 것.

 

p ~ span {}

p 다음에 오는 span을 찾음. 징검다리도 포함. 순서만 맞으면 됨.

 

13. attribute selector.

 

input:required {}

 

input[type="password"] {}

attribute를 기준으로 찾아 속성을 지정할 수 있게 함.

 

= 외에 ~=, *=, $= 등이 있음.

 

14. states. 

button과 같이 interaction이 있는 애들을 대상은 상태가 있음. 이 상태를 기준으로 스타일을 지정할 수도 있음

 

button:active{} # 눌려져 있을 때

button:hover{} # 마우스가 위에 있을 때

button:focus{} # 현재 사용 중 상태. input에 커서가 깜빡이는 것 같이.

 

form:focus-within{} # 하위 자식 중 focus 상태가 되는 애가 있으면 자신이 바뀜.

form:hover input{} # 자신이 hover되면 하위 input 속성이 바뀜

form:hover input:focus # 자신이 hover되고 하위 input이 focus되면 속성이 바뀜.

 

15. 기타

::placeholder ( 콜론 2개임)

input::placeholder{}

placeholder 색이 변함

 

::selection

p::selection{}

select 된 곳의 색깔이 변함.

 

16. color

#FCCE00 : 16진법으로 표기 가능

rgb(0, 255, 0) : rgb를 적은 후 uint8로 표기 가능.

rgba(0, 255, 0, 0.5) : rgba도 가능.

 

17. variable

:root {

    --main-color: #fcee00;

    --default-border : 1px solid var(--main-color);

}

 

a {

    color : var(--main-color);

}

 

 

 

 

 

 

 

 

 

 

 

반응형

'Knowhow > Web' 카테고리의 다른 글

Django tips  (0) 2022.07.21
Javascript tips  (0) 2022.06.21
CSS tips 2  (0) 2022.06.20
HTML tips  (0) 2022.06.12