6

我在一个article和一个sectionHTML5 标记上使用了一个类。

在家里:

<article class="exit">
    <a href="exit.php">
        <figure class="box">
            <img src="assets/img/projects/exit-m.jpg" alt="">
            <figcaption>…&lt;/figcaption>
        </figure>
    </a>
</article>

在项目页面上:

<section class="page project exit">
    <div class="corner nw intro">
        <figure class="box">
            <img src="assets/img/projects/exit.jpg" alt="">
            <figcaption>…&lt;/figcaption>
        </figure>
   </div>
   …

每个带有类出口的元素内部都有一个figureHTML5 元素。有了 Less,我使用这段代码来做我想做的事。

article.exit{width:260px; height:200px; top:315px; left:505px;
    figure{background-color:@exit-bg;}
    .box:hover{.perspective-box(se, 10, @exit-shadow);}
}
section.exit{
    .box:hover{.perspective-box(nw, 10, @exit-shadow);}
    .intro figcaption:hover{background:@exit-hover;}
}

但我必须指定它是一个article还是一个section!我有很多这样的课程,这有点烦人……</p>

有没有办法做这样的事情?会很酷……</p>

.exit{
    &article{
        width:260px; height:200px; top:315px; left:505px;
        figure{background-color:@exit-bg;}
        .box:hover{.perspective-box(se, 10, @exit-shadow);}
    }
    &section{
        .box:hover{.perspective-box(nw, 10, @exit-shadow);}
        .intro figcaption:hover{background:@exit-hover;}
    }
}
4

2 回答 2

16

exit如果这两个规则在课堂上不共享任何共同的样式,我觉得尝试嵌套这两个规则没有多大意义。

也就是说,如果您仍想嵌套它们,请记住在选择器中,元素名称始终位于其他简单选择器之前。尝试在元素名称之后放置&,看看它是否有效:

.exit{
    article&{
        width:260px; height:200px; top:315px; left:505px;
        figure{background-color:@exit-bg;}
        .box:hover{.perspective-box(se, 10, @exit-shadow);}
    }
    section&{
        .box:hover{.perspective-box(nw, 10, @exit-shadow);}
        .intro figcaption:hover{background:@exit-hover;}
    }
}
于 2012-09-24T04:01:35.460 回答
0

我也有同样的疑问并来到这里,但发现了一个有趣的怪癖可能会有所帮助。我更喜欢根据我在使用 LESS 时编写的 HTML 来嵌套样式。

例如,如果我的 HTML 看起来像这样:

<div id="content">
  .....
  <div class="form-container">
    <input type="text" class="form-control"....>
    <textarea class="form-control"></textarea>
    ......
  </diV
</div>

我的样式表看起来像这样:

#content{
  .form-container{
     color: red;
     .form-control{
       border: 1px solid black;
     }
  }
}

现在,我想对输入元素和文本区域进行不同的编码。当我查看上面的答案时,我尝试了这个:

#content{
  .form-container{
     color: red;
     .form-control{
       border: 1px solid black;
       input&{
         height: 40px;
       }
       textarea&{
         height: 100px;
       }
     }
  }
}

input&部分 ( 和)textarea&编译为:

input#content .form-container .form-control {
  height: 20px;
}

所以这是一个需要牢记的警告。要解决此问题,只需将 .form-control 部分从嵌套部分中提取出来。

于 2021-07-19T07:46:00.547 回答