【问题标题】:CSS Forms/Input ManiuplationCSS 表单/输入操作
【发布时间】:2012-07-11 15:04:13
【问题描述】:
input:required{
    background-color:#f00;
}

input:required label{
   color: #FF3434;
}

我的表单目前有上述 CSS 代码,

我希望能够在需要该字段时将标签设为红色。我的输入字段是:

<label for="frmComTelephone">Telephone</label>  
<input type="number" name="Telephone" id="frmComTelephone"/>

<label for="frmIn1IncinTime">Time</label>   
<input type="text" name="Incident Time" id="frmIn1IncinTime" required="required"/><br>

但是那个 CSS 不起作用,我该如何解决这个问题?

第二个问题是我有以下 CSS:

input:focus 
{ 
    background-color:yellow;
}

input[type="text"], input[type="date"],input[type="time"],input[type="number"],textarea,select
{
border-radius:5px;
border-width: 1px;
border-style: solid;
border-color: #C6C6C6; 
height:41px;
background-color: #FF3434;
width: 100%;

}

但是,如果我删除“背景颜色:#FF3434;”,则当项目聚焦时它不会变为黄色对焦时变黄?

我正在做的事情无法完成吗?还是我做错了?

谢谢

【问题讨论】:

  • 你用的是什么浏览器?我不相信:required 是跨浏览器兼容的,至少现在是这样
  • Chrome 用于测试和发布到 blackberry webworks ,需要的地方,也感谢您指出这一点
  • 至第一:我在您的 html 代码中看不到任何必需的属性。
  • 你好,我有另一个编辑过的字段

标签: html css forms input focus


【解决方案1】:

问题 1:

input:required label{
   color: #FF3434;
}

这不起作用,因为label 不是input 的子代。他们是兄弟姐妹。要解决这个问题,您必须创建一个类并将其附加到您的标签上:

label.required { color: #FF3434; }
<label for="frmComTelephone" class="required">Telephone</label>  

问题 2:

试试这个:

input:focus,
textarea:focus,
select:focus
{ background-color: yellow !important; }

...

更新

如果您在不使用!important 的情况下更舒服,那么试试这个:

input[type="text"]:focus, 
input[type="date"]:focus,
input[type="time"]:focus,
input[type="number"]:focus,
textarea:focus,
select:focus
{ background-color: yellow }

如果您的表单上有id,这也可以使用

#formID input:focus,
#formID textarea:focus,
#formID select:focus
{ background-color: yellow }

【讨论】:

  • 请不要使用!important,请改正规格/顺序。
  • @pixelistik 我认为使用!important 并不总是一种糟糕的做法,但在没有它的情况下使用可能的解决方案更新了你的观点
【解决方案2】:

您需要将input:focus 规则放在input[type="number"] 规则后面或使用input[type="number"]:focus

否则它会被input[type="number"] 覆盖,因为它更具体。

【讨论】:

  • textarea:focus,select:focus 这似乎在你所说的地方不起作用,并且所需的定义如下 textarea:required{background-color:#f00;} select:required {背景色:#f00;}
  • 我的 CSS 排序错误,您的正确它工作正常,而且您专注于我的复选框它对它们没有任何作用我将如何解决这个问题?
【解决方案3】:

问题2:

按属性划分的 CSS 选择器,如 input[type="number"] 和像 :focus 这样的伪元素具有相同的特异性。这意味着您的 input:focus 规则将被以下 input[type="number"] 背景覆盖。

有两种方法可以解决这个问题:

第一个选择器中更高的特异性:
form input:focus 
{ 
    background-color:yellow;
}

input[type="text"]
{
    background-color: #FF3434;
}
更好:正确的规则顺序,更重要的是其次
input[type="text"]
{
    background-color: #FF3434;
}

form input:focus 
{ 
    background-color:yellow;
}

CSS 的特殊性似乎很难,但正确理解它是值得的。有很多关于它的资源,试试这个介绍:http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

【讨论】:

  • 谢谢,您知道在焦点上设置复选框的最佳方法吗?因为似乎没有什么好做的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2011-06-14
  • 2017-07-01
  • 2012-02-09
  • 2017-11-22
  • 1970-01-01
相关资源
最近更新 更多