CSS

FE Developer - CSS, 퍼블리싱 적당히는 알자(3) : hover, active, selected 만들기(2) after before

developerYoung 2022. 3. 3. 21:06
반응형

이전 시간에 다뤘던 hover, active에 이어 버튼의 se

lected 상태 적용할 인터랙션을 알아볼게요!

그전에 간단하게 오늘 다룰 내용을 좀 알아보도록 할텐데 딱 두가지가 중요합니다!

첫번째는 선택한 상태를 나타내도록 useState ReactHook을 알아야하구요!

물론 useState를 안쓰고도 충분히 가능하긴해요~!

 

두번째는 CSS 지식인, after before를 활용한 가상 요소 선택자를 알아야합니다!

 

일단 CSS를 알아가는 과정이니 가상 요소 선택자인 after와 before 위주로 알아볼게요!

 

before selector라고 검색을 해보면 이렇게 정의를 하고 있습니다!

The ::before selector inserts something before the content of each selected element(s).

 

정말 간단하죠?? 선택한 요소의 이전에 삽입을 시켜준다네요

(after는 마찬가지로 이후에 삽입을 시켜줘요!)

 

처음엔 이 말이 정말 뭔소린가 싶었는데 직접 사용해보니 유용하게 쓰이는 곳이 엄청 많았어요!

 

그러면 인터랙션을 통해 밑줄을 만드는 과정과 버튼위의 점을 찍는 두가지 과정을 해보겠습니다!

 

먼저 밑줄을 만들어보도록 할까요?!!

// Link.tsx
<a className={cn(s.root)}>{children}</a>


// module.css
.root {
  position: relative;
}
.root::after {
  content: '';
  position: absolute;
  width: 0%;
  height: 2px;
  top: inherit;
  left: 0;
  bottom: 0px;
  background-color: rgba(0, 89, 255);
}
.root:hover::after {
  width: 100%;
}
 

위와 같이 적용을 하게 되면 태그에선 이런식으로 ::after라고 해당 element의 이후에 삽입이 됩니다!

만약 ::before로 적용한다면 이렇게 아래에 나오겠죠??

물론 둘 중 어떤것을 해도 상관없어요! 왜냐면 .root에 relative를 걸어놓은 후에 after는 absolute를 통해 root 기준으로 접근할 계획이기 때문이에요!

 

.root::after를 해석을 해보면,

 

1) content : '' 로 내용이 없도록,

2) width : 0%, height:2px로 높이는 존재하지만 아직 뭔가는 없는 상태이죠

3) :hover를 통해 커서를 올릴 때, width가 100%가 되어 밑줄이 쫙 그어지게 만들었어요!

쨘! 밑줄이 생기는걸 확인할 수 있습니다!

 

// Link.tsx
<a className={cn(s.root)}>{children}</a>

// module.css
.root {
  position: relative;
}
.root::after {
  content: '';
  position: absolute;
  width: 0%;
  height: 2px;
  top: inherit;
  left: 0;
  bottom: 0px;
  background-color: rgba(0, 89, 255);
  transition: all 0.5s ease-out;
}
.root:hover::after {
  width: 100%;
  transition: all 0.5s ease-out;
}
 

 

그러면 이렇게 끝내면 좀 허전하니 마지막 transition을 통해 밑줄 인터랙션?? 밑줄 charging...? 표현하기 어렵지만 왼쪽에서 오른쪽으로 밑줄이 생성되는 모션을 줘볼께요!

 

 

 

 

호호 심플하지만 뭔가 있어보이게 할 수 있는 방법입니다!

(영상에 뒤에 흐릿하게 비치는 글씨가 보이나요?!!?!

제가 요새 공부한 glassmorpphism이라는 디자인인데 이것도 추후에 포스팅 할께요~!!)

 

 

이렇게 after before를 이용하면 특정 tag를 만들어 고생해서 접근하지 않아도 손쉽게 인터랙션을 접근할 수 있답니다!!

 

목표는 이게 아니였지만 하다보니 hover, active, selected 만들기(3)까지 가야되게 생겼네요ㅠㅠ

다음시간에 마지막으로 글씨위에 점을 before 를 활용하여 접근할게요!

 

만약 혼자 할 수 있으면 혼자서도 해보시죠!!!

 

 

 

다음 포스팅은 FE Developer - CSS, 퍼블리싱 적당히는 알자(4) : hover, active, selected 만들기(3), 가상 요소 선택자 after or before

다다음 포스팅은 FE Developer - CSS, 퍼블리싱 적당히는 알자(5) : box-shadow로 버튼 디자인(1)

다다다음 포스팅은 FE Developer - CSS, 퍼블리싱 적당히는 알자(6) : box-shadow로 버튼 디자인(2)

 

반응형