在悬停时将css应用于兄弟元素

时间:2018-02-03 13:22:11

标签: html css sass

我有一个带标签的输入框。标签位于输入框内。当输入框被聚焦时,我希望标签在输入框上方移动。

我认为我需要使用input:focus~label来在选择输入框时聚焦标签,但我无法使其工作。

HTML:

<div class="search-container">
  <form [formGroup]="SearchForm" (ngSubmit)="getWeatherFromCity(SearchForm.value)" name="SearchForm">
      <div class='city-input'>
      <label for="searchCity">City </label>
      <input class="form-input" formControlName="searchCity" id="searchCity">
    </div>
      <button class="button" title="Search">Search
      </button>
  </form>
</div>

的CSS:

.search-container{
  font-family: 'Roboto', sans-serif;
  font-size: 20px;
  margin: 20px;

  .city-input{
    position: relative;
    display: inline;
    input{
      border-radius: 10px;
      height: 2em;
      width: 17.5em;
      &:focus ~ label {
      transform: translateY(-30px);
      color: red
      }
    }
      label{
      transition: transform 0.5s;
      position: absolute;
      padding: 10px;
    }
  }

请告知。

干杯。

1 个答案:

答案 0 :(得分:0)

你不能只用css afaik选择一个前一个元素

你可以使用jQuery,有点...... demo

$( ".form-input" ).focus(function() {
  $(".form-input").prev("label").addClass("the-class-to-handle-the-transition");
});                     
$( ".form-input" ).focusout(function() {
  $(".form-input").prev("label").removeClass("the-class-to-handle-the-transition");
});