【问题标题】:Select Label by Input type按输入类型选择标签
【发布时间】:2012-10-24 15:59:03
【问题描述】:

有没有办法通过输入类型排除或选择标签,类似于输入字段?

label:not([type=checkbox])
label[type=checkbox] 

【问题讨论】:

  • 你的问题究竟是什么?你想知道其他输入类型是什么吗……看不清楚……改写……
  • 第二个肯定有效。 [attribute=value] css 选择器适用于任何东西,而不仅仅是输入。 (你可以获得类名,如果它被禁用等)虽然这在某些旧版本的 IE 中可能不起作用。我之前没有见过 :not 选择器,所以我无法评论它。
  • @Vinay 的问题是,如何在 CSS 中选择或排除输入 fieldtype=checkbox 的标签?
  • 哦,等等,您要根据标签的for 属性来定位标签吗?我想我误解了你原来的问题。
  • @TheWaxMann 是的,这就是问题 :)

标签: css css-selectors label


【解决方案1】:

如果你给你的复选框指定了所有以相同的东西开头的特定 id,你可以执行以下操作:

HTML

<input type="checkbox" id="chkTerms" />
<label for="chkTerms">Read terms & conditions</label>

CSS

label[for*="chk"], label[htmlfor*="chk"]
{
css here
}

可能只有现代浏览器。 编辑:我刚刚尝试了一个小提琴:link,它适用于 chrome 和 IE 8 & 9,但不适用于 7。我没有在 FF 中尝试过。

EDIT2:只是为了解释这里发生的事情,方括号会查找所需的属性。 asterix 将 equals 的行为从普通的 equals 更改为包含 - 只要 for 属性包含“chk”,它将应用该样式。您可以将 * 替换为 ^,它会将其更改为以开头而不是包含。

EDIT3:BoltClock 在评论中提供了针对 IE7 的修复,我已经更新了答案以包含它。

【讨论】:

  • 这正是我所寻找的
  • 是的,IE7 的属性选择器有问题,for 是一个著名的例子,你需要使用 htmlFor 来代替。
  • @BoltClock 我不知道 htmlfor 选择器。谢谢 :-) 我会更新我的帖子以包含修复 IE7 的内容。
【解决方案2】:

input[type=checkbox] + label { /*label style here*/ } 怎么样?如果文本就在输入元素之后,它可能会起作用。我没有测试过。

【讨论】:

  • 可以修改html吗?例如,您可以为这些标签添加类。或者使用 jQuery 遍历所有标签并检查它们的输入类型。
  • 如果标签在输入之前,那么你可以修改html代码,使标签在输入之后,然后修改css以在输入之前定位标签。
  • 是的,这可以解决,然后text-indent:-100px 将其移动到复选框前面
【解决方案3】:

您可以将您的复选框与基本数据属性参考一起使用..

<input type="checkbox" name="checkbox-1" id="checkbox-0" class="custom" />
<label for="checkbox-0">Whatever</label>

如果你没想到……请告诉我们……

【讨论】:

  • 我知道我可以使用 id 或 class,我问是否可以不使用 label {style},然后用 #checkbox-0 {style} 覆盖它
猜你喜欢
  • 2012-08-14
  • 2010-11-07
  • 2016-06-09
  • 2012-04-14
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 2021-10-24
相关资源
最近更新 更多