css - Chrome 和 Safari 中相邻的 CSS 选择器出现问题

标签 css google-chrome safari css-selectors

考虑以下内容(在此处找到 Fiddle http://jsfiddle.net/burninromz/YDuzC/8/)

应该发生的是当您单击复选框时,应该出现适当的标签。这不适用于 Safari 和 Chrome,但适用于 IE、Firefox 和 Opera。当您检查 chrome 和 safari 中的元素时,您会发现样式实际上已应用于元素,但未正确呈现。知道这是为什么吗?

见下文。

html

<div>
    <input type="checkbox"></input>
    <span>Unchecked</span>
    <span>Unchecked</span>

CSS

    input[type="checkbox"]:checked + span {
      display:none  
    }

    input[type="checkbox"] + span {
      display:block  
    }

    input[type="checkbox"]:checked + span + span {
      display:block  
    }

    input[type="checkbox"] + span + span {
      display:none  
    }

这个选择器不起作用

input[type="checkbox"]:checked + span + span {
  display:block  
}

最佳答案

您可以尝试使用兄弟组合器。 ~ 类似于 +,但是没有那么严格。虽然相邻选择器只会选择前一个选择器紧接之前的第一个元素,但这个选择器更通用。它会选择任何元素,只要它们跟在树中的前一个选择器之后。

所以,你的 CSS 看起来像这样......

input[type="checkbox"]:checked + span {
  display:none  
}

input[type="checkbox"] + span {
  display:block  
}

input[type="checkbox"]:checked ~ span ~ span {
  display:block  
}

input[type="checkbox"] + span + span {
  display:none  
}

这是一个工作示例,由 @Adrift 提供,使用上面的代码:jsfiddle.net/YDuzC/10

关于css - Chrome 和 Safari 中相邻的 CSS 选择器出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18601095/

相关文章:

javascript - 在保持文本插入光标的同时防止移动默认键盘

google-chrome - Webkit 浏览器根据 colspan 呈现表

javascript - 移动 safari - 防止 body 滚动(不使用固定位置)

javascript - Chrome 扩展程序可重定向到带参数的 URL

javascript - Chrome 中未删除 session cookie 的解决方法

iphone - Vimeo 视频无法在 Safari 中的 Mac、ipad 或 iPhone 上运行

html - 旋转 div 在 IE 上产生黑色背景,我该如何删除它?

javascript - 如何根据条件更改输入类型 ="range"=> 步长值?

javascript - 从 jQuery/Js 添加类到谷歌标记

python - 使用 Selenium 和 Python 从头开始​​使用 while 循环连接超时