带有 sub-class parent 的 LESS 选择器

LESS selector with sub-class parent

如何影响指定父子class 选择器的子选择器? 我用驼峰式命名我的 class 名字,所以我像这样构建我的 LESS 文件:

.popup {
    &Content {
        &Title {
            opacity: 0;
        }
    }
    &.active {
        &Content {
            &Title {
                opacity: 1;
            }
        }
    }
}

但这并不是我所需要的。它编译为

.popupContentTitle {
    opacity: 0;
}
.popup.activeContentTitle
    opacity: 1;
}

有没有正确编译的方法:

.popupContentTitle {
    opacity: 0;
}
.popup.active .popupContentTitle
    opacity: 1;
}

这可以通过在嵌套选择器后面附加 & 符号来完成:

.popup {
    &Content {
        &Title {
            opacity: 0;

            .popup.active & {
               opacity:1;  
            }
        }
    }
}

参见 parent selectors order。 例如:

.popup {
    &Content {
        &Title {
            opacity: 0;
            .popup.active & { 
                opacity: 1;
            }
        }
    }
}

请不要过度嵌套 - 如果它实际上是具有唯一一组属性的块,那么将 .popupContentTitle 分成三个单独的块是没有意义的。 IE。它真的应该只是:

.popupContentTitle {
    opacity: 0;
    .popup.active & { 
        opacity: 1;
    }
}

最后一个常见的问题:你真的有任何 .active .popupContentTitle 元素不是 .popup.active .popupContentTitle 吗? IE。第一个 .popup 很可能是冗余的。