KH/CSS

CSS_프로퍼티(2) visibility, 애니매이션 효과, form 꾸미기

오늘의 진 2022. 9. 16. 11:56

z-index 값은 적지 않으면 0으로 취급한다. 

 

hidden과 none의 차이점 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>visibility 프로퍼티</title>
<style>
    span{
        visibility: hidden;
        /*
        display: none; 
        : 스타일을 가진 태그가 공간이 할당되지도 않고 보이지도 않는다. 
        visibility : hidden; 
        : 스타일의 경우 태그의 공간은 할당되고 보이지만 않는다. 
        */
    }
</style>

</head>
<body>
    <h3>다음 빈 곳에 숨은 단어?</h3>
<hr>
<ul>
<li>I (<span>love</span>) you.</li>
<li>CSS is Cascading (<span>Style</span>) Sheet.</li>
<li>응답하라 (<span>2022</span>)</li>
</ul>
</body>
</html>
hidden none

 

 

overflow 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>overflow</title>
<style>
    p{
        width: 15em;
        height: 3em;
        border: 1px solid lightgray;
    }

    .hidden{overflow: hidden;}
    .visible{overflow: visible;}
    .scroll{overflow: scroll;}
</style>
</head>
<body>
<h3>overflow 프로퍼티</h3>
<hr>

<p class="hidden">overflow 에 hidden 값을 적용하면 박스를 넘어가는 내용이 잘려 보이지 않는다.</p>
<p class="visivle">overflow 에 visivle 값을 적용하면 값을 넘어가면 박스를 넘어가서도 출력된다.</p>
<p class="scroll">overflow 에 scroll 값을 적용하면 박스에 크스롤바를 붙여 출력한다. </p>



</body>
</html>

 

 

 

리스트

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>리스트로 메뉴만들기</title>

<style>
    #menubar{
        background: olive;
    }
    #menubar ul{
        margin: 0;
        padding: 0;
        width: 567px;  /*모든 아이템<li>를 한줄에 품을수 있는 폭*/
    }
    #menubar ul li{
        display: inline-block; /*새 줄로 넘어가지 않게 */
        list-style-type: none; /*마커 삭제*/
        padding: 0px 15px; /*위아래 , 좌우*/
    }

    #menubar ul li a{
        color: white;
        text-decoration: none; /*링크 보이지 않게 */
    }

    #menubar ul li a:hover{
        color: violet; /*마우스 올라갈때 색*/
    }



    #menubar_1{
        background: darkorange;
        border: 8px dotted white;
    }
    #menubar_1 ul{
        margin: 10px;
        padding: 20px;
        width: 567px;  /*모든 아이템<li>를 한줄에 품을수 있는 폭*/
    }
    #menubar_1 ul li{
        display: inline-block; /*새 줄로 넘어가지 않게 */
        list-style-type: none; /*마커 삭제*/
        padding: 0px 15px; /*위아래 , 좌우*/
    }

    #menubar_1 ul li a{
        color: white;
        text-decoration: none; /*링크 보이지 않게 */
    }

    #menubar_1 ul li a:hover{
        color: royalblue; /*마우스 올라갈때 색*/
    }

</style>
</head>
<body>

   <nav id="menubar">
    <ul>
        <li><a href="#">HOME</a></li>
        <li><a href="#">Espresso</a></li>
        <li><a href="#">Cappuccino</a></li>
        <li><a href="#">Cafe Latte</a></li>
        <li><a href="#">F.A.Q</a></li>
    </ul>

   </nav>
<br>
   <nav id="menubar_1">
    <ul>
        <li><a href="#">HOME</a></li>
        <li><a href="#">Espresso</a></li>
        <li><a href="#">Cappuccino</a></li>
        <li><a href="#">Cafe Latte</a></li>
        <li><a href="#">F.A.Q</a></li>
    </ul>

   </nav>
</body>
</html>

 

 

마커 :

리스트 만들면 동그라미 나오는거 없앨라고 없애줌

 

# : 달아준 링크가 없을때는 그냥 # 처리함

 

 

 

 

<nav> 태그는 다른 페이지 또는 현재 페이지의 다른 부분과 연결되는 네비게이션 링크(navigation links)들의
집합을 정의할 때 사용한다. 
 
<nav> 요소를 사용하는 일반적인 예로는 메뉴, 목차, 인덱스 등이 있습니다.
글을 읽지 못하는 사용자를 위한 스크린 리더기와 같은 브라우저는 <nav> 요소를 사용하여 해당 콘텐츠의 초기 렌더링을 생략할지 여부를 결정합니다.

html5에서 <nav> 태그는 현재 웹 사이트에서 주요한 지점으로 이동할 수 있는 네비게이션(NAVigation) 역할을 담당하고 있는 태그이다. 예전에는 메뉴든 뭐든 전부다 div에 넣는 것이 일반적이었지만, 이제 div는 일반적으로 떠다니는 내용을 넣을 때의 역할을 하는 경우가 많아졌고, html5에서는 각 영역별로 그 의미를 나타내기 위하여 <nav> 태그와 같은 특정 태그를 사용하게 되었다.

 

 

표꾸미기

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표 응용</title>
<style>
    table{
        border-collapse:  collapse; /*이중 테두리 제거*/
        /*collapse : 표 테두리와 셀 테두리 사이의 간격을 없앤다. 겹치는 선은 한줄로 나타낸다.*/
    }
    td,th{
        text-align: left;
        padding: 5px;
        height: 15px;
        width: 100px;
    }
    thead,tfoot{ /*thead, tfoot의 모든 셀에 적용*/
        background: darkgray;
        color: yellow;
    }
    tbody tr:nth-child(even){ /*짝수 tr에 적용*/
        background: #cccc66;

    }
    tbody tr:hover{
     background: pink;
    }

</style>
</head>
<body>

<h3>1학기 성적</h3>
<hr>
<table>
    <thead>
        <tr><th>이름</th><th>HTML</th><th>CSS</th></tr>
    </thead>
    <tfoot>
        <tr><th>합</th><th>310</th><th>249</th></tr>
    </tfoot>
    <tbody>
        <tr><td>고유탁</td><td>80</td><td>70</td></tr>
        <tr><td>김기우</td><td>95</td><td>99</td></tr>
        <tr><td>김남혁</td><td>85</td><td>90</td></tr>
        <tr><td>김민준</td><td>40</td><td>50</td></tr>
    </tbody>
</table>
</body>
</html>

odd : 홀수 / even : 짝수

 

 

 

폼에 스타일 주기

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>폼 스타일주기</title>

<style>
    input[type=text]{ /*텍스트창에만 적용*/
        color: red;
    }
    input:hover, textarea:hover{/*마우스가 올라올때*/
        background: #cccc66;
    }
    input[type=text]:focus, input[type=email]:focus{
        /*포커스 받을때*/
        font-size: 120%;
    }
    label{
        display: block; /*새라인에서 시작*/
        padding: 5px;
    }
    lable span{
        display: inline-block;
        width: 90px;
        text-align: right;
        padding: 10px;
    }
</style>
</head>
<body>
<h3>CONTACT US</h3>
<hr>
<form >
    <label >
        <span>Name</span><input type="text" placeholder="Korea">
    </label>
    <label>
        <span>Email</span><input type="email" placeholder="Korea@naver.com">
    </label>
    <label>
        <span>Comment</span><textarea  placeholder="메시지를 남겨주세요"  ></textarea>
    </label>
    <label><span></span><input type="submit" value="submit"></label>
</form>
</body>
</html>
실행시 모습 마우스를 올리면 색이변함 포커스를 주면 120%로 커짐

 

 


애니매이션 효과들

 

 

애니매이션 효과 주기 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>애니메이션</title>
<style>
    @keyframes bomb {
        from{font-size:500%;}
        to{font-size:100%;}
    }
    /*
    애니매이션 효과를 적용하기 위해 애니매이션에 대한 키 프레임(@keyframes)을 정의해야 한다. 
    키 프레임의 from에 처음 스타일을 정의하고, to에 마지막 스타일을 정의한다. 
    또는 %를 이용해 세부적으로 스타일을 정의할수 있다. 
    (시작 0% ~ 종료 100% )
    */

    h3{
        animation-name: bomb; /*사용자가 지정한이름, @keyframe 가 적용될 애니메이션 이름*/
        animation-duration: 3s; 
        /*
        타임 프레임의 길이, 키 프레임이 동작하는 시간을 설정할때 사용 
        초(S) 단위 또는 밀리초(ms)단위 
        default 값은 0초로 설정
        */
        animation-iteration-count: infinite;
        /*
        반복횟수 지정 
        infinite : 무한반복  |  숫자 : 숫자만큼 반복  |  default : 1
        */
    }
</style>
</head>
<body>

    <h3>꽝!</h3>
    <hr>
    <p>
        꽝! 글자가 3초동안 500%에서 시작하여 100%로 바뀌는 애니매이션 입니다. 무한반복합니다. 
    </p>

</body>
</html>
@keyframes small{
    from{font-size: 100%; color: blue;}
    to{font-size: 500%; color: red;}
}

이런식으로 색변화도 가능

 

이미지 사이즈 변화주는 애니매이션 만들기 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>애니메이션</title>
<style>

@keyframes imm{
    from{ width: 100%; height: 100%;}
    to{width: 50%; height: 50%;}
}
.ss{
    animation-name: imm;
    animation-duration: 2s;
    animation-iteration-count: infinite;
}
</style>
</head>
<body>

<img src="../dog/dog2.jpg" alt="개" class="ss">
</body>
</html>

 

transition

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>전환</title>

<style>
    span{
        transition: font-size 5s;
        /*
        transition 는 속성의 변경이 있었을때 일정 시간에 속성을 변경시키는기능
        키프레임 애니매이션을 적용하지 않기 때문에, 미세한 움직임의 에니메이션을 
        구현보다는 간단한 움직임의 애니매이션을 구현할때 이용
        */
    }
    span:hover{
        font-size: 500%; /*5초에 걸쳐 500%까지 글자 키우는 전환 효과*/
    }

</style>

</head>
<body>
<h3>font-size에 대한 전환</h3>
<hr>
<p><span>꽝!</span>글자에 마우스를 올려보세요.</p>
</body>
</html>
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>전환</title>

    <style>
        span {
            transition: font-size 5s;
            /*
        transition 는 속성의 변경이 있었을때 일정 시간에 속성을 변경시키는기능
        키프레임 애니매이션을 적용하지 않기 때문에, 미세한 움직임의 에니메이션을 
        구현보다는 간단한 움직임의 애니매이션을 구현할때 이용
        */
        }

        span:hover {
            font-size: 500%;
            /*5초에 걸쳐 500%까지 글자 키우는 전환 효과*/
        }


        span#small:hover {
            font-size: 20%;
        }


        span#big:hover {
            font-size: 500%;
        }
    </style>

</head>

<body>
    <h3>font-size에 대한 전환</h3>
    <hr>
    <p><span>꽝!</span>글자에 마우스를 올려보세요.</p>


    <p><span id="big">커지기</span>&nbsp;&nbsp;<span id="small">작아지기</span></p>

</body>

</html>

 

 


 

 

 

 

 

다양한 변환

transform function 설명 단위
translate(x,y) 요소의 위치를 X축으로 x만큼 Y축으로y만큼 이동시킨다. px,%,em 등
translateX(n) 요소의 위치를 X축으로 x만큼 이동시킨다. px,%,em 등
translateY(n) 요소의 위치를 Y 축으로 y 만큼 이동시킨다. px,%,em 등
scale(x,y) 요소의 크기를 X축으로 x배 Y축으로 y배 확대 또는 축소 시킨다.  0과 양수 
scaleX(n) 요소의 크기를 X축으로 x배 확대 또는 축소 시킨다.  0과 양수 
scaleY(n) 요소의 크기를 Y축으로 y배 확대 또는 축소 시킨다.  0과 양수 
skew(x-angle,y-angle) 요소를 X축으로 x각도만큼 Y축으로 y각도만큼 기울인다. +/- 각도(deg)
skewX(x-angle) 요소를 X축으로 x각도만큼 기울인다. +/- 각도(deg)
skewY(Y-angle) 요소를 Y축으로 y각도만큼 기울인다. +/- 각도(deg)
rotate(angle) 요소를 angle 만큼 회전시킨다.  +/- 각도(deg) (시계방향이 양수)

 

 

활용 예시

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>다양한 변환</title>

<style>
    div{
        display: inline-block;
        padding: 5px;
        color: white;
        background: olivedrab;
    }
    /*변환*/
 div#rotate{transform: rotate(20deg);}
 div#skew{transform: skew(0deg,-20deg);}
 div#translate{transform: translateY(100px);}
 div#scale{transform: scale(3,1);}

/*마우스 올릴 때 추가 변환*/
div#rotate:hover{transform: rotate(80deg);}
 div#skew:hover{transform: skew(0deg,-60deg);}
 div#translate:hover{transform: translate(50px,100px);}
 div#scale:hover{transform: scale(4,2);}

 /*마우스 누를때 추가 변환*/
div#scale:active{transform: scale(5,1);}

</style>

</head>
<body>

    <h3>다양한 transform</h3>
아래는 회전(rotate),기울임(skew),이동(transform),확대/축소(scale)가 적용된 사례이다.
또한 마우스를 올리면 추가적 변환이 일어난다. 
<hr>
<div id="rotate">rotate(20deg)</div>
<div id="skew">skew(0,-20deg)</div>
<div id="translate">translateY(100px)</div>
<div id="scale">scale(3,1)</div>
</body>
</html>

 

 

 

 

transition : 속성을 서서히 변화시킨다. 

 

[전환 효과들 ]

linear 전환 효과(transition)가 처음부터 끝까지 일정한 속도로 진행된다.
ease 기본값/ 전환 효과가 천천히 시작되어 그다음에는 빨라지고 마지막에는 다시 느려진다. 
ease-in 전환 효과가 천천히 시작된다.
ease-out 전환효과가 천천히 끝난다.
ease-in-out 전환 효과가 천천히 시작되고 끝난다.
cubic-bezier(n,n,n,n) 전환효과가 시작되어 사용자가 정의하 cubic-bizer 함수에 따라진행된다. 
prev~ sibling prev 다음 요소 

 

(예)

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>transition</title>
    <style>
        #tran {
            transition: width 2s; /*넓이라는 속성에 2초를 주겠다 라는말*/
            /*transition : 속성을 서서히 변화시키는 속성*/
        }

        #tran:hover {
            width: 100%; /*폭을 화면크기의 100% 까지 늘리겠다 */
        }
    </style>
</head>

<body>

    <h3>마우스를 올려봐요</h3>
    <hr>
    <img id="tran" src="../images/spongebob.png" width="100" height="100" alt="animation">

</body>

</html>

 

 

 

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>CSS Test</title>
    <style>
        .jb {
            box-sizing: border-box;
            width: 64px;
            height: 64px;
            margin: 10px 0px;
            background-color: orange;
            border-radius: 100%;
            transition: all ease 2s 0s;
        }

        input:checked~.jb { /*checked 다음의 모든 jb들을 지정함*/
            width: 100%;
            height: 150px;
            border-radius: 20%;
            background-color: red;
        }
    </style>
</head>

<body>

    <input type="checkbox">
    <div class="jb"></div>


</body>

</html>

 

'KH > CSS' 카테고리의 다른 글

CSS_애니매이션2 / list  (0) 2022.09.19
CSS_ 마우스 이벤트/ 목록 꾸미기  (0) 2022.09.16
CSS_ 스타일시트의 기본적인 모습들  (0) 2022.09.15
CSS_스타일시트의 종류  (0) 2022.09.14