【问题标题】:Change Font Awesome Icon Color When Input Is Clicked单击输入时更改字体真棒图标颜色
【发布时间】:2018-05-06 19:01:48
【问题描述】:

我想在点击输入字段时更改字体真棒图标的颜色。到目前为止,我只设法在单击时更改输入边框颜色,但不知道如何更改图标。不知道为什么input:focus i 不起作用。我也试过input:focus .fa,但什么也没有。任何建议将不胜感激,谢谢!

* {
    margin: 0;
    padding: 0;
    outline: 0;
    box-sizing: border-box;
}

#signInForm .input-icons {
    position: relative;
    display: inline-block;
}

#signInForm .input-icons input {
    width: 300px;
    font-size: .9rem;
    text-indent: 20px;
    padding: .1rem;
    border: 0;
    border-bottom: solid 2px #999;
    background-color: transparent;
}

#signInForm .input-icons i {
    color: #999;
    position: absolute;
    top: .15rem;
    left: .3rem;
}

#signInForm .input-icons input:focus {
    border-color: #00aef0;
}

#signInForm .input-icons input:focus i {
    color: #00aef0;
}
<!-- Font Awesome CDN -->
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.12/css/all.css" integrity="sha384-G0fIWCsCzJIMAVNQPfjH08cyYaUtMwjJwqiRKxxE/rx96Uroj1BtIQ6MLJuheaO9" crossorigin="anonymous">
    
<div id="signInForm">
  <form>
    <div class="input-icons">
      <i class="fas fa-user"></i>
      <input type="text" placeholder="Name" required>
    </div>
    <div class="input-icons">
      <i class="fas fa-lock"></i>
      <input type="password" placeholder="Password" required>
    </div>
  </form>
</div>

【问题讨论】:

  • 分享你的完整代码
  • 我的错,我发帖时忘记包含它。刚刚用代码更新了帖子。

标签: css input colors focus font-awesome


【解决方案1】:

由于您的元素有position:absolute,并且没有先前的选择器,您可以更改图标使其在输入之后并能够使用+ selector

* {
    margin: 0;
    padding: 0;
    outline: 0;
    box-sizing: border-box;
}

#signInForm .input-icons {
    position: relative;
    display: inline-block;
}

#signInForm .input-icons input {
    width: 300px;
    font-size: .9rem;
    text-indent: 20px;
    padding: .1rem;
    border: 0;
    border-bottom: solid 2px #999;
    background-color: transparent;
}

#signInForm .input-icons i {
    color: #999;
    position: absolute;
    top: .15rem;
    left: .3rem;
}

#signInForm .input-icons input:focus {
    border-color: #00aef0;
}

#signInForm .input-icons input:focus + i {
    color: #00aef0;
}
<!-- Font Awesome CDN -->
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.12/css/all.css" integrity="sha384-G0fIWCsCzJIMAVNQPfjH08cyYaUtMwjJwqiRKxxE/rx96Uroj1BtIQ6MLJuheaO9" crossorigin="anonymous">
    
<div id="signInForm">
  <form>
    <div class="input-icons">
      <input type="text" placeholder="Name" required>
      <i class="fas fa-user"></i>
    </div>
    <div class="input-icons">
      <input type="password" placeholder="Password" required>
      <i class="fas fa-lock"></i>
    </div>
  </form>
</div>

【讨论】:

  • 所以我所要做的就是改变顺序!?哇非常感谢!我永远不会猜到这一点。谢谢!!
  • @eric 不仅是顺序 :) 我在最后一个选择器中添加了 + ...顺便说一下,因为元素是绝对位置,所以顺序无关紧要,所以将元素放在允许之后你考虑下一个兄弟选择器,因为没有前一个选择器
  • 干得好!我实际上尝试过做同样的事情,但首先只使用+,然后更改元素的顺序,但不能同时更改两者,所以它不起作用。
猜你喜欢
  • 1970-01-01
  • 2021-04-20
  • 2014-11-04
  • 2018-09-26
  • 2017-04-23
  • 2017-02-19
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多