理解 nth-child(an + b):CSS3 中带有公式的选择器?

2023-11-21

The <i>用于第一个图标和子元素<div>应该有一个大图标。任何其他<i>任何的孩子<div>(但不是第一个)应该有一个中等大小的图标:

<div class="row list-item">
       <div class="span1">
           <i class="icon-user"></i>
       </div>

       <div class="span3">
           <div>
               <a href="#">Main Link</a> <i class="icon-male"></i>
           </div>
           <i class="icon-mail"></i> <a href="#">Link 2</a>
           <i class="icon-mobile"></i> <a href="#">Link 3</a>
       </div>
</div>

相关CSS:

.list-item > div:first-child {
    text-align: center;
}

.list-item i[class^="icon-"], .list-item[class*=" icon-"] {
    text-shadow: 3px 1px 2px rgba(0, 0, 0, 0.2);
}

/* Only i with icon-* class, where div is first child */
.list-item > div:first-child > i[class^="icon-"],
    .list-item > div:first-child > i[class*=" icon-"] {
    font-size: 60px;
    line-height: 80px;
}

/* Any i with icon-* class, where div is not first child */
.list-item > div:nth-child(1n+1) > i[class^="icon-"], 
    .list-item > div:nth-child(1n+1) > i[class*=" icon-"] {
    vertical-align: middle;
    font-size: 24px;
    line-height: 24px;
}

所以我在公式中使用了偏移量nth-child(an + b), with b = 1。也就是说偏移量是 1 所以首先<div>应该被跳过。但第一个大图标与最后一条规则匹配。我缺少什么?


The n in :nth-child()实际上是从零开始计数,而不是从一开始。来自spec:

价值a可以是负值,但只能是正值an+b, for n≥0,可以代表文档树中的一个元素。

虽然它说的是 1 的第一个孩子的索引,确实如此,但它指的是公式的结果,而不是值n。换句话说,第一个孩子由以下函数表示n计算结果为 1,而不是通过函数n where n = 0 or n = 1(以从哪个开始计数为准)。

所以公式:nth-child(1n+1)(或代数上等价的:nth-child(n+1)) 评估为n = 0 as:

  1n + 1
= 1(0) + 1
= 0 + 1
= 1

这会导致你的第一个div正在匹配。

你需要从2为了使伪类表示法按预期工作:

.list-item > div:nth-child(1n+2) > i[class^="icon-"], 
.list-item > div:nth-child(1n+2) > i[class*=" icon-"]

或者为了让事情变得更简单,您可以选择通用兄弟组合器~和这个结合:first-child反而:

.list-item > div:first-child ~ div > i[class^="icon-"], 
.list-item > div:first-child ~ div > i[class*=" icon-"]

如果重要的话,这还有 IE7/IE8 支持的额外好处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解 nth-child(an + b):CSS3 中带有公式的选择器? 的相关文章

随机推荐

  • Hibernate多对多关联:左侧集合包含元素,但右侧集合为空

    我在持久层中遇到了多对多关联的问题 我的场景如下 一个用户可以拥有多个角色 一个角色可以附加多个用户 在测试过程中我遇到了一个奇怪的行为 我创建了角色对象和几个用户对象 该角色已设置给每个用户 此后 使用 DAO 保存用户 然后 在保存用户
  • 使用 SMTP 身份验证时通过 PEAR 发送 HTML 消息会返回错误

    我正在尝试在 PHP 中使用 SMTP 身份验证向 Gmail 发送 HTML 消息 这是我正在使用的脚本 require once Mail php require once Mail mime php from Some Name lt
  • 数据库未从资产文件夹复制到设备

    我的目录中有一个 db 文件assets文件夹 我已将其复制到data data
  • MPAndroidChart PieChart如何设置标签文本?

    得到以下代码 Legend legend mChart getLegend legend setLabels new String aaaaa bbbbb ccccc 此设置不生效 还有其他方法设置文本吗 我在 v3 0 0 中找不到方法
  • 委托/函数转换和误导性编译器错误消息

    我认为 F 函数和 System Func 之间的转换必须手动完成 但似乎存在编译器 有时 为您完成的情况 当出现错误时 错误消息不准确 module Foo let dict new System Collections Generic
  • 如何计算 MkMapview 中两点之间的距离?

    在 iPhone 应用程序中 如何计算两点之间的距离MKMapView如下图所示 第一个点将是地图视图中可见地图的中心点 第二个点将是地图视图的可见矩形的任何角 例如 这里我采用了左上角的点 我想以米为单位计算这个距离 我怎样才能做到这一点
  • 有权访问会话状态的 Global.asax 事件

    我正在尝试访问 global asax 中每个请求 页面 文档 PDF 等 的会话状态 我知道我不能在 Application BeginRequest 中执行此操作 并且我认为我可以在 Application AcquireRequest
  • SimpleForm 默认输入类

    我正在使用 SimpleForm Bootstrap 如何为所有属性添加属性type text 输入类 span12 输出类似这样的东西 div class controls div
  • 发送 HEAD 请求时 cURL 挂起 15 秒

    背景 我一直在使用 CLI 通过 CLI 对一些 HTTP 请求进行计时time和工具 例如wget and curl如下 usr bin time v wget spider http localhost index usr bin ti
  • Javascript 中带有负移位计数的左移

    我在 Javascript 中注意到的一件事 一个 Returns 0 when a even Returns 2147483648 when a odd 同样 当 1更改为其他一些 ve数字 有人可以解释一下幕后发生了什么位操作吗 或者行
  • Keras 中随时间变化的最大池化

    我正在使用 CNNKeras对于 NLP 任务 我尝试实现随时间推移的最大池化 而不是最大池化 关于如何实现这一目标有什么想法 技巧吗 我所说的最大随时间池化的意思是池化最高值 无论它们位于向量中的哪个位置 假设您的数据形状是 batch
  • 如何管理多个环境的 ASP.NET Core bundleconfig.json?

    使用 ASP NET Core 的最佳实践是什么bundleconfig json开发环境与生产环境 先前的捆绑器 捆绑集合 会注意 DEBUG 编译器指令 并且在调试时不会缩小脚本列表 看起来新的范式似乎是
  • Hg (Mercurial):有什么办法可以“留出”工作副本供以后使用吗?

    场景 在上次提交之后 您决定对代码库进行一些广泛的重构 一段时间后 您意识到花费的时间比预期的要长 您真的宁愿将重构推迟到另一时间 并致力于更紧迫的任务 但您不想丢失迄今为止所做的所有重构工作 那么 有没有办法 归档 或 分支 工作副本 本
  • 如何防止 PHP 中的 SQL 注入?

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 如果用户输入未经修改就插入到 SQL 查询中 则应用程序很容易受到攻击SQL注入 如以下示例所示 unsafe variable POST user input
  • Threejs:如何动态改变平面的宽度和高度?

    有没有办法轻松动态地改变平面的宽度和高度 下面的代码没有任何效果 plane geometry parameters width width plane geometry parameters height height 创建平面网格 va
  • 有人在同一个项目中使用过 Dojo 和 JQuery 吗?

    有人在同一个项目中使用过 Dojo 和 JQuery 吗 我需要一个 Dojo 面向对象的部分 仅此而已 和 JQuery 以便于演示 但我担心碰撞和名称冲突 是否可以在同一页面上使用两者 use jQuery noConflict 在编写
  • Unix 将月份名称转换为数字

    在 BASH shell 脚本或使用 gdate 中 给定像 2011 年 10 月 这样的日期 如何转换为年月数字格式 例如 输出应为 2011 10 mydate Oct 2011 date date printf 01 s mydat
  • ini 文件 - 从另一个 ini 文件引用变量

    如何从另一个 ini 文件解析变量 在下面的示例中 我想解析var a来自original configuration ini 并在 处使用它new configuration ini original configuration ini
  • 提取文件名 shell 脚本的一部分

    在 bash 中 我想提取许多文件名的一部分并将该输出保存到另一个文件中 这些文件的格式为 Coffee SOME NUMBERS I WANT freqdist bin sh for f in find name coffee freqd
  • 理解 nth-child(an + b):CSS3 中带有公式的选择器?

    The i 用于第一个图标和子元素 div 应该有一个大图标 任何其他 i 任何的孩子 div 但不是第一个 应该有一个中等大小的图标 div class row list item div class span1 i class icon