Как настроить таргетинг на один элемент с помощью: наведите курсор мыши на другой элемент - PullRequest
0 голосов
/ 03 марта 2020

Попытка hover над значком , который вызывает h4 для перехода margin, display и background.
. Это правильный способ выбрать один element:hover{} но влияет на другой элемент?

.nav_item i:hover h4

Пожалуйста, смотрите ссылку на кодовое перо ниже:

CodePen

ps Я поставил x и o вместо значков, font-awesome не будет загружаться.

css

.nav_item h4 {
      -webkit-transition: all 1s ease;
       transition: all 1s ease;
       width: 40rem;
       display: none;
    }

.nav_item i {
  width: 5rem;
}

.nav_item i:hover h4 {
  background-color: #b4fdd2;
  width: 20rem;
  display: block;
}

HTML

    <div class="nav_box">
        <div class="nav_ul">
            <div class="nav_item">
                <span class="d"><i class="fas fa-home">O</i></span>                    
                <h4 class="h4">Home</h4>
            </div>
            <div class="nav_item">
                <span class="d"><i class="fas fa-barcode">X</i></span>                    
                <h4 class="h4">Shop</h4>
            </div>
            <div class="nav_item">
                <span class="d"><i class="fas fa-book">O</i></span>                    
                <h4 class="h4">Learn</h4>
            </div>                                                             
            <div class="nav_item nav_down">
                <span class="d"><i class="fas fa-key">X</i></span>
                <h4 class="h4">Sign in</h4>
            </div>
        </div>
    </div>
</nav>

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Ну, так как вы переносите текст h4 и шрифт, вы можете использовать span: hover вместо i hover.

Обратите внимание, что если вы используете «+», это будет применяться только к первому тегу H4 рядом с span. используйте «~», это будет применяться к каждому тегу H4 рядом с span. Проверьте пример здесь https://jsfiddle.net/dkn6zch1/3/

<script src="https://kit.fontawesome.com/38d66fee78.js" crossorigin="anonymous"></script>
@import url("https://fonts.googleapis.com/css?family=Spartan&display=swap");
* {
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}

html {
  font-size: 62.5%;
  height: 100vh;
}

body {
  font-family: "Spartan";
}

a {
  text-decoration: none;
}

.nav {
  font-size: 4rem;
  background-color: lavender;
  height: 100vh;
  display: inline-block;
}

.nav_logo {
  width: 100%;
  height: 5rem;
}

.nav_box {
  display: inline-block;
  height: 95vh;
}

.nav_ul {
  display: inherit;
  height: auto;
}

.nav_item {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  text-align: center;
}

.nav_item:not(:last-child) {
  margin-top: 2rem;
}

.nav_item h4 {
  -webkit-transition: all 1s ease;
  transition: all 1s ease;
  width: 40rem;
  display: none;
}

.nav_item i {
  width: 5rem;
}

.nav_item span:hover ~ h4 {
  background-color: #b4fdd2;
  width: 20rem;
  display: block;
}

.nav_item i,
.nav_item h4 {
  text-align: center;
}
.nav_down {
  //margin-top: 64vh;
}
/*# sourceMappingURL=style.css.map */
<nav class="nav">
        <div class="nav_logo"></div>

        <div class="nav_box">
            <div class="nav_ul">
                <div class="nav_item">
                    <span class="d"><i class="fas fa-home">O</i></span>                    
                    <h4 class="h4">Home</h4>
                </div>
                <div class="nav_item">
                    <span class="d"><i class="fas fa-barcode">X</i></span>                    
                    <h4 class="h4">Shop</h4>
                </div>
                <div class="nav_item">
                    <span class="d"><i class="fas fa-book">O</i></span>                    
                    <h4 class="h4">Learn</h4>
                </div>                                                             
                <div class="nav_item nav_down">
                    <span class="d"><i class="fas fa-key">X</i></span>
                    <h4 class="h4">Sign in</h4>
                </div>
            </div>
        </div>
    </nav>

Пожалуйста, посмотрите на Как повлиять на другие элементы, когда один элемент находится при наведении

0 голосов
/ 03 марта 2020

Вы не можете получить доступ к предкам в CSS, но вы можете выбрать братьев и сестер с помощью селектора + (следующий брат). h4 - это следующий брат или сестра из span, который вы можете сделать:

.nav_item span:hover + h4 {
  background-color: #b4fdd2;
  width: 20rem;
  display: block;
}

Вам потребуется внести дополнительные изменения в код, чтобы он работал правильно.

...