第4章 高度な機能を覚えてSassを使いこなそう

4-3 ネストしているセレクタをルートに戻せる @at-root

@at-root の基本的な使い方

.block {
    .element-A {
        width: 80%;
    }
    @at-root .element-B {
        width: 100%;
    }
}
.block .element-A {
  width: 80%;
}

.element-B {
  width: 100%;
}

複数のルールセットに@at-root を適用する

.block {
    .element-A {
        width: 80%;
    }
    @at-root {
        .element-B {
            width: 100%;
        }
        .element-C {
            width: 50%;
        }
    }
}
.block .element-A {
  width: 80%;
}
.element-B {
  width: 100%;
}

.element-C {
  width: 50%;
}

@at-root をメディアクエリ内で使った場合

.block {
    width: 50%;
    @media (max-width: 640px) {
       width: 100%;
        @at-root {
            .item {
                margin-bottom: 30px;
            }
        }
    }
}
.block {
  width: 50%;
}

@media (max-width: 640px) {
  .block {
    width: 100%;
  }
  .item {
    margin-bottom: 30px;
  }
}

@at-root のオプション @at-root(without:...)

.block {
    width: 50%;
    @media (max-width: 640px) {
        width: 100%;
        @at-root (without: media) {
            .item {
                margin-bottom: 30px;
            }
        }
    }
}
.block {
  width: 50%;
}
@media (max-width: 640px) {
  .block {
    width: 100%;
  }
}
.block .item {
  margin-bottom: 30px;
}
.block {
    width: 50%;
    @media (max-width: 640px) {
        width: 100%;
        @at-root (without: media rule) {
            .item {
                margin-bottom: 30px;
            }
        }
    }
}
.block {
  width: 50%;
}
@media (max-width: 640px) {
  .block {
    width: 100%;
  }
}
.item {
  margin-bottom: 30px;
}

@at-root のオプション @at-root (with:...)

.block {
    width: 50%;
    @media (max-width: 640px) {
        width: 100%;
        @at-root (with: media) {
            .item {
                margin-bottom: 30px;
            }
        }
    }
}
.block {
  width: 50%;
}
@media (max-width: 640px) {
  .block {
    width: 100%;
  }
  .item {
    margin-bottom: 30px;
  }
}