带类的元素内的最后一个带类的元素的 CSS 选择器

Posted

技术标签:

【中文标题】带类的元素内的最后一个带类的元素的 CSS 选择器【英文标题】:CSS Selector For Last Element With Class Within Element With Class 【发布时间】:2020-01-21 08:52:53 【问题描述】:

我正在使用引导程序,并将我的输入放在他们自己的 .form-group 中。我所有的输入也都包含在一个带有 .well 类的 div 中。

我想删除引导程序为.form-group 设置的默认margin-bottom:15px,但前提是它的父级.well div 中的.form-group 的最后一个实例。

<div class="well">
<div class="form-group">
    <div class="col-md-6">
        <div class="form-group">
            <label class="m-b-none">Name</label>
            <div class="input-group">
                <input class="form-control" name="Name">
                <div class="input-group-addon"><i class="fa fa-check-circle"></i></div>
            </div>
        </div>
        <div class="form-group">
            <label class="m-b-none">Surname</label>
            <div class="input-group">
                <input class="form-control" name="Surname">
                <div class="input-group-addon"><i class="fa fa-check-circle"></i></div>
            </div>
        </div>
    </div>
</div>

所以我想在每个具有 well 类的元素中将最后一个 form-group 上的 margin-bottom 设置为 0px。

我尝试了下面的代码,但它只是将样式应用于所有 .form-groups

.well .form-group:last-of-type 
    margin-bottom: 0!important;

.well .form-group:last-of-type 
    margin-bottom: 0 !important;
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<div class="well">
  <div class="form-group">
    <input/>
  </div>
  <div class="form-group">
    <input/>
  </div>
</div>
<div class="well">
  <div class="form-group">
    <input/>
  </div>
  <div class="form-group">
    <input/>
  </div>
</div>

【问题讨论】:

您的代码似乎有效。可以发minimal reproducible example吗? 我正在抓取代码的精确副本,我想我可以看到它为什么不起作用。所有输入都包装在自己的表单组中,因此选择器会将其视为最后一个类型。 【参考方案1】:

解决方案是为此使用引导程序。 mb-0 是一个引导实用程序类,用于将 margin-bottom 设置为 0。

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<div class="well">
   <div class="form-group">
     <input/>
   </div>
   <div class="mb-0 form-group">
     <input/>
   </div>
</div>
<div class="well">
   <div class="form-group">
     <input/>
   </div>
   <div class="mb-0 form-group">
     <input/>
   </div>
</div>

更多关于mb-0:What is class=“mb-0” in Bootstrap 4?

【讨论】:

我知道我可以做到这一点,但我不想检查到目前为止我添加的每个输入并添加那个类。我只想使用一个 CSS 选择器来捕获整个项目。 这样做你会面临一连串的问题。养成编写函数式 CSS 的习惯:rangle.io/blog/styling-with-functional-css【参考方案2】:

我尝试的 CSS 选择器确实有效。 html 是使用一些 C# 扩展方法生成的,我没有意识到所有输入都被包装在 .form-group div 中。 CSS 选择器会将其视为last-of-type.well。一旦我删除了这个 div,选择器就起作用了。

.well .form-group:last-of-type 
    margin-bottom: 0!important;

【讨论】:

【参考方案3】:

如果您不想添加类,也可以直接使用:last-child 选择器进行此操作。

.well .form-group:last-child 
     margin-bottom: 0!important;


【讨论】:

【参考方案4】:

您可以使用&gt; 指定.well 类型为div 的下一个子级

.well > div.form-group:last-child margin-bottom: 0 !important;

【讨论】:

以上是关于带类的元素内的最后一个带类的元素的 CSS 选择器的主要内容,如果未能解决你的问题,请参考以下文章

带类的matlab - 将结构保存在空的双数组中

带类的Wordpress文本小部件

本周小贴士#86:带类的枚举

具有类的第一个元素的 CSS 选择器

如何选择页面上的所有表,除非它们包含具有特定类的行

SVG中嵌套类的CSS选择器