실전퍼블리싱(before, after 활용 텍스트 네비게이션)

Dev_Go·2022년 7월 11일
0
post-thumbnail

before, after 활용 텍스트 네비게이션 2가지 방법


html에 2개를 적고 위치 조정해서 만드는 방법

예제보기

HTML

  <div class="gnb">
    <a href="javascript:viod(0)">
      <span>메일</span>
      <span>메일</span>
    </a>
    <a href="javascript:viod(0)">
      <span>카페</span>
      <span>카페</span>
    </a>
    <a href="javascript:viod(0)">
      <span>블로그</span>
      <span>블로그</span>
    </a>
    <a href="javascript:viod(0)">
      <span>지식iN</span>
      <span>지식iN</span>
    </a>
    <a href="javascript:viod(0)">
      <span>쇼핑</span>
      <span>쇼핑</span>
    </a>
    <a href="javascript:viod(0)">
      <span>Pay</span>
      <span>Pay</span>
    </a>
    <a href="javascript:viod(0)">
      <span>사전</span>
      <span>사전</span>
    </a>
    <a href="javascript:viod(0)">
      <span>뉴스</span>
      <span>뉴스</span>
    </a>
  </div>

CSS

/* Google Web Fonts CDN */
@import url('https://fonts.googleapis.com/css?family=Noto+Sans+KR:300,400,500,700,900&display=swap');

body {
  font-family: 'Noto Sans KR', sans-serif;
  color: #222;
  line-height: 1.5em;
  margin: 0;
  font-weight: 300;
  background: linear-gradient(90deg, #DCE35B, #45B649);
  /* 수직 수평 중앙 */
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}
a {
  color: #222;
  text-decoration: none;
}

.gnb {
  background-color: #fff;
  padding: 15px;
  border-radius: 10px;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
  padding-bottom: 10px;
}
.gnb a {
  width: 80px;
  display: inline-block;
  height: 30px;
  line-height: 30px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.gnb a span {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  transition: 0.3s;
}
.gnb a span:nth-child(1) {
  top: 0;
  left: 0;
}
.gnb a span:nth-child(2) {
  top: 100%;
  left: 0;
  color: #45B649;
}
.gnb a:hover span:nth-child(1) {
  top: -100%;
}
.gnb a:hover span:nth-child(2) {
  top: 0;
}

사용자 정의 속성을 만들고 before, after의 content: attr();을 활용한 방법

예제보기

HTML

  <div class="gnb">
    <a href="javascript:viod(0)" data-link="메일"></a>
    <a href="javascript:viod(0)" data-link="카페"></a>
    <a href="javascript:viod(0)" data-link="블로그"></a>
    <a href="javascript:viod(0)" data-link="지식iN"></a>
    <a href="javascript:viod(0)" data-link="쇼핑"></a>
    <a href="javascript:viod(0)" data-link="Pay"></a>
    <a href="javascript:viod(0)" data-link="사전"></a>
    <a href="javascript:viod(0)" data-link="뉴스"></a>
  </div>

CSS

/* Google Web Fonts CDN */
@import url('https://fonts.googleapis.com/css?family=Noto+Sans+KR:300,400,500,700,900&display=swap');

body {
  font-family: 'Noto Sans KR', sans-serif;
  color: #222;
  line-height: 1.5em;
  margin: 0;
  font-weight: 300;
  background: linear-gradient(90deg, #DCE35B, #45B649);
  /* 수직 수평 중앙 */
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}
a {
  color: #222;
  text-decoration: none;
}

.gnb {
  background-color: #fff;
  padding: 15px;
  border-radius: 10px;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
  padding-bottom: 10px;
}
.gnb a {
  width: 80px;
  display: inline-block;
  height: 30px;
  line-height: 30px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.gnb a::before,
.gnb a::after {
  position: absolute;
  content: attr(data-link);
  width: 100%;
  transition: 0.3s;
}
.gnb a::before {
  top: 0;
  left: 0;
}
.gnb a::after {
  top: 100%;
  left: 0;
  color: #45B649;
}
.gnb a:hover::before {
  top: -100%;
}
.gnb a:hover::after {
  top: 0;
}
profile
프론트엔드 4년차

0개의 댓글