当前位置: 首页 > 面试题库 >

空或空白的CSS选择器

广乐邦
2023-03-14
问题内容

我们有一个选择器:empty,可以在元素 完全为空 时匹配它:

<p></p>

但我有一个条件,其中可能为空,或者可能包含换行符或空格:

<p>    </p>

我找到了Firefox的解决方案:-moz-only-whitespace

:empty { width: 300px; height: 15px; background: blue; }

:-moz-only-whitespace { width: 300px; height: 15px; background: orange; }


<p></p>

<p>    </p>

<p>This is paragraph three.</p>

其他浏览器有类似的解决方案吗?


问题答案:

很多人错过了这个问题的要点,在下面的博览会中我已经解决了这个问题,但是对于那些只想寻找答案的人,我在这里反映了最后一段:

选择器4现在重新定义
:empty为包括仅包含空格的元素。最初是作为单独的伪类提出的,:blank但是最近:empty确定在没有太多站点的情况下可以这样做是安全的,这取决于原始行为。:empty为了符合选择器4,浏览器将需要更新其实现。如果需要支持较旧的浏览器,则必须经历标记元素仅包含空格的麻烦,或者在事实之前或之后进行修剪。

虽然问题描述的<p>元素包含少数规则的空格字符,这似乎是一个疏忽,但在标记中元素仅包含空格的缩进和空白行的情况下,这种情况更为普遍,例如:

<ul class="items">
  <li class="item">
    <div>
      <!-- Some complex structure of elements -->
    </div>
  </li>
  <li class="item">
  </li> <!-- Empty, except for a single line break and
             indentation preceding the end tag -->
</ul>

某些元素(如<li>上述示例中的以及<p>)具有可选的结束标签,这些元素可能会在DOM处理以及元素间空白的存在下引起意外的副作用。例如,以下两个<ul>元素不会产生等效的节点树,特别是第一个元素不会li:empty在Selectors级别产生a

li:empty::before { content: '(empty)'; font-style: italic; color: #999; }


<ul>

  <li>

</ul>

<ul>

  <li></li>

</ul>

鉴于HTML认为元素间空格在设计上是透明的,因此使用CSS定位此类元素而不用诉诸于修改HTML或生成它的应用程序(尤其是如果最终必须实现和测试只是这样做)。为此,选择器4现在重新定义
:empty为包括仅包含空格的元素。最初是作为单独的伪类提出的,:blank但是最近:empty确定在没有太多站点的情况下可以这样做是安全的,这取决于原始行为。浏览器将需要更新其实现:empty为了符合选择器4。如果需要支持较旧的浏览器,则必须经历标记元素仅包含空格的麻烦,或在事实之前或之后修剪空格。



 类似资料:
  • 问题内容: 我有一个很奇怪的要求,其中要求我默认在HTML的下拉菜单中没有选择任何选项。然而, 我不能用这个 因为,为此,我将必须进行验证以处理第一个选项。有人可以在没有将第一个选项作为select标签的一部分的情况下帮助我实现此目标吗? 问题答案: 也许这会有所帮助 将默认显示。但是,如果您选择一个选项,则将无法再次选择它。 您也可以通过添加一个空白来隐藏它 因此它将不再显示在列表中。 选项2

  • 问题内容: 我想在下面的HTML片段中选择BONKERS。它的区别在于,它是单独存在的,而其所有兄弟姐妹都包含。是显而易见的选择,但由于文本节点而无法使用。我以为我知道这些东西,但这正驱使我疯狂。 我需要一个纯CSS解决方案(不能选择JS),并且无法控制源HTML。 ! 问题答案: 您可以按照这种方法。通过所需的CSS 设置元素的样式,然后重置可在样式中继承的CSS样式,即: CSS: 您可能不需

  • 如何从价格所在的表中进行选择 有没有办法动态格式化它,以删除空间并保持结果输出为原始?

  • 问题内容: 我正在使用Django 1.0.2。我已经写了一个由模型支持的ModelForm。此模型具有一个ForeignKey,其中blank = False。当Django为该表单生成HTML时,它会创建一个选择框,其中对ForeignKey引用的表中的每一行都有一个选项。它还在列表顶部创建一个没有值的选项,并显示为一系列破折号: 我想知道的是: 从选择框中删除此自动生成的选项的最干净的方法是

  • 本文向大家介绍怎么使用css选择空链接?相关面试题,主要包含被问及怎么使用css选择空链接?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我是AngularJS的新手。我进行了很多搜索,但是并不能解决我的问题。 我第一次在选择框中得到一个空白选项。 这是我的HTML代码 JS 但这似乎不起作用。我该如何解决?这是JSFiddle演示 问题答案: 当传递给的一组选项中不存在被引用的值时,将生成空值。这样做是为了防止意外选择模型:AngularJS可以看到初始模型是未定义的还是未在选项集中,并且不想自行决定模型的值。 简而言