ʕ ˙ɷ˙ ʔค

카테고리 없음

CSS 팁 스무스한 스크롤링, 가운데 정렬, 애니메이션 효과

YJ_P 2023. 8. 18. 19:13

1. 스크롤링   

<! DOCTYPE html> 
<html>
  <head>
    <title>Parel SandBox</title>
     <meta charset="UTF-8" />
  </head>
  <body>
    <div id="app">
      <h1>스무스한 스크롤링</h1>
        <a href="#one>1번</a>
        <a href="#two>2번</a>
        <a href="#three>3번</a>
            
        <div id="one"></div>
        <div id="two"></div>
        <div id="three"></div>
    </div> 
  </body>
</html>

 

2. 가운데 정렬 

margin : 0 auto; 가 일반적이지만 넓이값을 모른다면 flex로 가능하다. 

 

body {

   background: blue; 

   display: flex; 

   justify-content: center;        // 가운데 정렬 가능 

 

.txt { 

   display: inline-block;

   background: pink; 

}

 

flex를 사용할 수 없는 환경이라면 

 

body {

   background: blue; 

   position: relative;

 

.txt {

   position: absolute;

   left: 50%;

   transform: translateX(-50%);   

   display: inline-block;

   background: pink; 

 

translate 속성이 자동으로 컨텐츠의 넓이를 인식해서 그 값의 50%만 땡겨준다.

3. 애니메이션 효과 

display 효과는 애니메이션으로 제어할 수 없다. 

 

@keyframes fadeout { 

     100% {

          display: none;   // 효과 적용 안된다. 

          opacity: 0;   //이것도 버튼은 투명하게 사라졌지만 커서는 그대로 남아있음 

          pointer-events: none;   // 이거를 주면 사라진다 

       }

}

 

위에 코드 단점은 밑에 있는 요소는 사라진 (버튼) 요소의 위치를 차지해야하지만 밑에 있다. 

 

.btn {

   width: 100px;

   height: 100px;

   background: pink;

   cursor: pointer;

   animation: fadeout 3s forwards; 

}  

완벽하게 사라지게 하는 방법은 자바스크립트를 이용해야한다. 

const btn = document.querySelector(".btn");

btn.addEventListener("animationend", (e) => {

  e.target.style.display = "none";

});

버튼의 애니메이션이 끝나면 해당 디스플레이를 지운다.