htmlcssless

On input focus change color of label. How?


On input focus I want to change the color of the label element. How can I achieve this in less?

.control-label {
  color: @gray-light;
}

.controls {

  input,
  textarea {
    background-color: red;

    &:focus {
      .control-label & {
        color: red; //HERE
      }

    }
  }
<div class="control-group">
  <label class="control-label" for="inputEmail">Firstname</label>
  <div class="controls">
    <input type="text" id="inputEmail" placeholder="Firstname">
  </div>
</div>


Solution

  • I don't think you can without changing your HTML, see also: Is there any way to hover over one element and affect a different element?, your elements should be direct siblings. (LESS don't help to solve your problem here, LESS generate CSS and it seems impossible to do in CSS)

    Possible suggestion:

    input:focus + .control-label
    {
        background-color:purple;
        color: red;
    }
    .controls > input
    {
        float:right;
    }	
    <div class="controls">
        <input type="text" id="inputEmail" placeholder="Firstname">
        <label class="control-label" for="inputEmail">Firstname</label>
    </div>

    Or solve your problem with javascript: https://stackoverflow.com/a/20226218/1596547