본문 바로가기
> 메모/SASS

[SCSS] & 기호 (2탄)

by 자몽주스 2024. 7. 20.
728x90
HTML
<!-- 카테고리 아이콘 -->
        <div class="category-wrapper">
          <div class="category-container">
            <div class="category-img">
              <div class="overlay-wrap">
                <div class="overlay">
                  <span>LIVING</span>
                </div>
              </div>
              <a href="#"><img src="img/category1.gif" /></a>
            </div>
            <div class="category-img">
              <div class="overlay-wrap">
                <div class="overlay">
                  <span>DIGITAL</span>
                </div>
              </div>
              <a href="#"><img src="img/category2.jpg" /></a>
            </div>
            <div class="category-img">
              <div class="overlay-wrap">
                <div class="overlay">
                  <span>OUTDOOR</span>
                </div>
              </div>
              <a href="#"><img src="img/category3.jpg" /></a>
            </div>
            <div class="category-img">
              <div class="overlay-wrap">
                <div class="overlay">
                  <span>KIDS</span>
                </div>
              </div>
              <a href="#"><img src="img/category4.gif" /></a>
            </div>
            <div class="category-img">
              <div class="overlay-wrap">
                <div class="overlay">
                  <span>FASHION</span>
                </div>
              </div>
              <a href="#"><img src="img/category5.jpg" /></a>
            </div>
            <div class="category-img">
              <div class="overlay-wrap">
                <div class="overlay">
                  <span>COLLABO</span>
                </div>
              </div>
              <a href="#"><img src="img/category6.gif" /></a>
            </div>
          </div>
        </div>
SCSS
// 카테고리 상품이미지
.category-wrapper {
  padding: 0 20px;
  .category-container {
    display: flex;
    justify-content: space-around;
    gap: 20px; /* 이미지들 사이에 간격 추가 */
    .category-img {
      position: relative; /* 부모 요소를 relative로 설정 */
      .overlay-wrap {
        position: absolute;
        top: 0;
        width: 100%;
        height: 100%;
        overflow: hidden;
        cursor: pointer;
        &:hover .overlay {
          margin-top: 50%;
        }
        .overlay {
          width: 100%;
          height: 100%;
          // background-color: rgba(0, 0, 0, 0.3);
          margin-top: 100%;
          transition: all 1s;
          display: flex;
          justify-content: center;
          span {
            font-size: 10px; /* 원하는 폰트 크기로 설정 */
            color: rgb(
              255,
              28,
              28
            ); /* 텍스트 색상도 설정해보세요, 필요에 따라 */
          }
        }
      }
      img {
        width: 100%;
      }
    }
  }
}

헷갈렸던 부분 

 .overlay {
          width: 100%;
          height: 100%;
          // background-color: rgba(0, 0, 0, 0.3);
          margin-top: 100%;
          transition: all 1s;
          display: flex;
          justify-content: center;
          span {
            font-size: 10px; /* 원하는 폰트 크기로 설정 */
            color: rgb(
              255,
              28,
              28
            ); /* 텍스트 색상도 설정해보세요, 필요에 따라 */
          }
        }

올바른 예시

  &:span {
          font-size: 10px; /* 원하는 폰트 크기로 설정 */
          color: rgb(255, 28, 28); /* 텍스트 색상도 설정해보세요, 필요에 따라 */
        }

고치기 전, 이렇게 썼더니 적용이 안됐다.

overlay span 을 표현하고 싶었음.


& 기호

 

SCSS(Sass)에서 & 기호는 현재 선택자를 참조하거나 결합할 때 사용됩니다.

이를 통해 CSS를 더 간결하게 작성할 수 있습니다. 예제를 통해 자세히 설명드리겠습니다.

부모 선택자 참조 예시

기본적으로 &는 현재 선택자를 참조합니다. 가장 일반적인 사용 예는 부모 선택자의 상태를 나타낼 때입니다.

.button {
  color: blue;
  &:hover {
    color: red;
  }
}
.button {
  color: blue;
  &:hover {
    color: red;
  }
}

부모 선택자 결합 예시

&를 사용하면 부모 선택자와 결합하여 특정 상황에 맞게 스타일을 정의할 수 있습니다.

예제 2: 부모 선택자 결합

.nav {
  &-item {
    color: blue;
  }
}
.nav-item {
  color: blue;
}

자식 선택자와의 차이

SCSS에서 자식 선택자를 나타내려면 & 기호를 사용하지 않고 그냥 자식 선택자를 작성합니다.

자식 선택자 스타일링

자식 선택자 스타일링은 부모 선택자의 자식 요소에 스타일을 적용하는 것입니다.

이 경우, & 기호를 사용하지 않고 선택자를 중첩하여 작성합니다.

예제 3: 자식 선택자

.card {
  .title {
    font-size: 16px;
  }
}
.card .title {
  font-size: 16px;
}

기서 .title은 .card의 자식 요소를 의미합니다. & 기호를 사용하지 않습니다.


근데 span 의 부모는 overlay 니까 & 써도 되지 않는지? 

 

span의 부모는 overlay입니다.

하지만 SCSS(Sass)에서 부모 선택자를 참조할 때 사용하는

& 기호는 현재 선택자에 상태클래스 이름을 결합할 때 주로 사용됩니다.

자식 요소의 스타일을 지정할 때는 & 기호를 사용하지 않고, 단순히 선택자를 중첩하여 작성합니다.

 

이 "현재 선택자"는 & 기호가 위치한 그 자리를 말합니다.

기본 개념

현재 선택자란?

현재 선택자는 & 기호가 위치한 선택자를 의미합니다.

예를 들어, .button 클래스 내부에서 &는 .button을 참조합니다.

상태나 클래스 이름을 결합할 때란?

상태나 클래스 이름을 결합할 때는 기존의 선택자에

새로운 상태(예: :hover)나 클래스 이름(예: -active)을 추가하는 것을 의미합니다.

잘못된 사용 예시

& 기호를 자식 선택자 스타일링에 사용하려고 하면 올바르게 동작하지 않습니다. 예를 들어:

.overlay {
  &:span {
    font-size: 10px;
    color: rgb(255, 28, 28);
  }
}

이 코드는 의미가 없습니다. &:span은 잘못된 사용법입니다.

올바른 사용법 요약

  1. 부모 선택자 참조: 현재 선택자의 상태나 클래스 이름을 결합할 때 & 기호를 사용합니다.
  2. 자식 선택자 스타일링: 자식 선택자를 스타일링할 때는 & 기호를 사용하지 않고, 선택자를 중첩하여 작성합니다.
.overlay {
  span {
    font-size: 10px;
    color: rgb(255, 28, 28);
  }
}
.overlay span {
  font-size: 10px;
  color: rgb(255, 28, 28);
}

결론

& 기호는 현재 선택자를 참조하거나 결합할 때 사용되며,

자식 요소의 스타일링을 위해서는 사용되지 않습니다.

자식 요소의 스타일링을 위해서는 단순히 선택자를 중첩하여 작성하면 됩니다.

 

이렇게 하면 overlay 요소의 자식인 span 요소에 스타일을 적용할 수 있습니다.

& 기호는 현재 선택자(부모 선택자)를 참조하거나 결합하는 용도로 사용됩니다.

자식 요소의 스타일링을 위해서는 사용되지 않습니다.


하단의 코드는 자식 선택자 스타일링인거 같은데, &을 사용한 거 같아서 헷갈려짐 
  li {
    font-weight: bold;
    margin-bottom: 16px;
    color: $sub_color;
    &:last-child {
      margin-bottom: 0;
    }
    &:hover {
      font-weight: bold;
      color: white; // 밑줄 생기게 꾸며주기
    }
  }

이 예제에서 &는 자식 선택자를 스타일링하는 것이 아니라,

현재 선택자의 상태를 스타일링하는 데 사용됩니다.

&의 사용 목적

& 기호는 현재 선택자를 참조하거나 결합할 때 사용됩니다.

따라서, 현재 선택자의 상태나 클래스 이름을 추가할 때 유용합니다.

예제 분석

현재 선택자의 상태 스타일링

li {
  font-weight: bold;
  margin-bottom: 16px;
  color: $sub_color;

  &:last-child {
    margin-bottom: 0;
  }

  &:hover {
    font-weight: bold;
    color: white; // 밑줄 생기게 꾸며주기
  }
}

위의 예제에서 &:last-child와 &:hover는 현재 선택자인 li 요소의 상태를 스타일링합니다.

다른 예제: 부모 선택자에 상태를 추가

예를 들어, .button 클래스에 hover 상태를 추가하는 경우를 생각해 보겠습니다.

.button {
  color: blue;
  &:hover {
    color: red;
  }
}

결론

  • & 기호는 현재 선택자를 참조하거나 결합하여 상태나 클래스를 추가할 때 사용됩니다.
  • 자식 선택자를 스타일링할 때는 & 기호를 사용하지 않고, 단순히 선택자를 중첩하여 작성합니다.

 

728x90

'> 메모 > SASS' 카테고리의 다른 글

[SASS] 태그 중첩 사용  (0) 2024.06.21
[SASS] _reset 파일과 SASS 문법  (0) 2024.06.19
[SASS] & 의 사용법  (0) 2024.05.05