GVKun编程网logo

CSS选择器,涉及伪类的第一个孩子和dropcap(css伪类选择器顺序)

11

本文将分享CSS选择器,涉及伪类的第一个孩子和dropcap的详细内容,并且还将对css伪类选择器顺序进行详尽解释,此外,我们还将为大家带来关于css–Flexbox中的第一个孩子全宽、css–为什么

本文将分享CSS选择器,涉及伪类的第一个孩子和dropcap的详细内容,并且还将对css伪类选择器顺序进行详尽解释,此外,我们还将为大家带来关于css – Flexbox中的第一个孩子全宽、css – 为什么:nth-child(2)选择器能够满足我的期望:第一个孩子?、css – 为什么:第一个孩子选择所有孩子?、css – 如何在混合容器中选择班级的第一个孩子/最后一个孩子?的相关知识,希望对你有所帮助。

本文目录一览:

CSS选择器,涉及伪类的第一个孩子和dropcap(css伪类选择器顺序)

CSS选择器,涉及伪类的第一个孩子和dropcap(css伪类选择器顺序)

我需要格式化类似于下面的HTML。基本上,引号是 可选的 ,我需要删除正文段落的首字母。

<article> <p> <!-- quote is optional -->   Genius begins great works; labor alone finishes them.-- Joseph Joubert </p> <p> <!-- "L" is a dropcap -->  Life is like a box of chocolates. </p> <p>...</p> <p>...</p></article>

我的CSS看起来像这样:

article > p:first-child:first-letter{ float: left; font-family: Georgia, serif; font-size: 360%; line-height: 0.85em; margin-right: 0.05em;}p.quote { font-weight: bold;}

引入报价后,该功能目前不起作用。AFAIK我无法选择不是“
quote”类的文章的第一个子项P。如果无法弄清楚,我将使用jQuery,但现在我正在寻找一种仅使用CSS的方法。

提前致谢!

答案1

小编典典

如果可以使用CSS3选择器,请尝试使用这些选择器(组合在一起):

/* Select the first child if it''s not a .quote */article > p:not(.quote):first-child:first-letter, /* Or, if the first child is a .quote, select the following one instead */article > p.quote:first-child + p:first-letter{ float: left; font-family: Georgia, serif; font-size: 360%; line-height: 0.85em; margin-right: 0.05em;}

否则,我认为您必须进行一些替代才能获得所需的效果。

一些解释

所述否定伪类:not()总是处理独立地在化合物选择所有其他类型,ID和类和伪类。不管您如何与其他选择器一起安排它。

换句话说,您不能使用:not()从简单选择器其余部分匹配的选择中删除或过滤出与否定条件匹配的元素。这也意味着与:*-child():*-of-type()伪类匹配的元素集不受的影响:not()

所以上面的第一个选择器

article > p:not(.quote):first-child:first-letter

大致是这样的:

  1. 找到每个p元素。

    • 如果找不到,请忽略。
  2. 如果找到,请检查是否p:first-child 如果为:not(.quote)

    • 如果不是第一个孩子,请忽略。
    • 如果具有quote该类,请忽略。
  3. 如果它与两个伪类都匹配,请检查这是否p是的子类article

    • 如果没有,请忽略。
  4. 如果是这样,请抓住它:first-letter

  5. 应用规则。

另一方面,第二个选择器相对简单:

article > p.quote:first-child + p:first-letter

它所要做的p就是将第一个孩子之后的,article如果它是a p.quote,然后对其应用规则:first-letter

css – Flexbox中的第一个孩子全宽

css – Flexbox中的第一个孩子全宽

如何在flexBox全宽度中设置first-child,并将所有其他子设置为flex:1(对于拆分空间)?

喜欢这个:

解决方法

您可以将:first-child设置为100%的宽度,其余的子项:not(:first-child)设置为flex:1。要将它们放在多行上,请使用flex-wrap:wrap on the container:
.container {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  background: #e2eaf4;
  padding: 10px;
}

.child {
  display: inline-block;
  font-family: "Open Sans",Arial;
  font-size: 20px;
  color: #FFF;
  text-align: center;
  background: #3794fe;
  border-radius: 6px;
  padding: 20px;
  margin: 12px;
}

.child:first-child {
  width: 100%;
}

.child:not(:first-child) {
  flex: 1;
}
<div>
  <div>Child</div>
  <div>Child</div>
  <div>Child</div>
</div>

css – 为什么:nth-child(2)选择器能够满足我的期望:第一个孩子?

css – 为什么:nth-child(2)选择器能够满足我的期望:第一个孩子?

我有一个 example我想问的问题.

我经常使用这种格式.我希望能够用fieldset div选择第一个div:first-child {}但似乎它只被第二个子选择器抓住了.我希望“场1”是红色而不是蓝色.在语义上(至少对我来说)更有意义地说“像这样设置字段集中的第一个div”,而不是说第二个.

为什么会发生这种情况,有没有办法达到我想要的效果(能够调用div:first-child)?

解决方法

:nth-​​child选择器忽略元素类型. div:nth-​​child(2)选择< div>这是第二个孩子.

如果要选择第一个div,请使用:nth-of-type(1):first-of-type选择器.

演示:http://jsfiddle.net/Z3Bcq/1/

css – 为什么:第一个孩子选择所有孩子?

css – 为什么:第一个孩子选择所有孩子?

我想只选择“下拉菜单”中的第一个链接(带有“ONE”文本的链接),但是:first-child选择所有链接.

链接:

http://jsfiddle.net/773Xd/1/

很抱歉HTML部分的混乱,但我正在定制wordpress主题,它产生了很多类和ID.

最重要的是CSS文件的末尾.

解决方法

将CSS选择器更改为此…
#page-navigation ul li .sub-menu li:first-child a

(即把假类:第一个孩子放在li上,而不是a).

See it on jsfiddle.net

旧选择器不起作用,因为a始终是li元素的第一个子元素.

但是在新选择器中,li是ul元素的第一个子元素.

css – 如何在混合容器中选择班级的第一个孩子/最后一个孩子?

css – 如何在混合容器中选择班级的第一个孩子/最后一个孩子?

我可以在一个有不同类别孩子的div中选择一个班级的第一个和最后一个孩子吗?

例如:

<div>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
</div>

我想选择.black的第一个孩子和最后一个孩子.那可能吗?

解决方法

nth-childnth-of-type与类选择器结合使用.

Live Example

.main .black:nth-child(2n) {
    color: yellow;
}

或者,如果你想让它们分开

This demo

.main .black:nth-child(5n - 6) {
    color: yellow;
}
.main .black:nth-child(5n - 4) {
    color:purple;
}

该函数使用n =元素类型计算,因此:nth-​​child(n)将选择每个元素,:nth-​​child(2n)选择所有奇数元素,:nth-​​child(2n-1)选择所有偶数元素,并且等等.你只需要提出一个能够获得你想要的元素的函数

另一个选项可能是将另一个类添加到类的第一个和/或最后一个元素

您可以通过组合两个选择器来选择具有动态数量的元素的第一个子类,如Jonathan所说(我更喜欢div:not(.black)div.black).但是,选择具有动态数量的元素的类的最后一个元素的唯一方法是没有先前的兄弟选择器是使用Javascript或类似jQuery的库,如下所示:

使用Javascript

var blackElems = document.getElementsByClassName('black');
blackElems[blackElems.length - 1].style.color = 'purple';

jQuery的

$('.main .black:last').css({ 'color' : 'purple' });

今天的关于CSS选择器,涉及伪类的第一个孩子和dropcapcss伪类选择器顺序的分享已经结束,谢谢您的关注,如果想了解更多关于css – Flexbox中的第一个孩子全宽、css – 为什么:nth-child(2)选择器能够满足我的期望:第一个孩子?、css – 为什么:第一个孩子选择所有孩子?、css – 如何在混合容器中选择班级的第一个孩子/最后一个孩子?的相关知识,请在本站进行查询。

本文标签: