Поменять стили при наведении на блок

357
11 января 2017, 00:04

Есть такой блок

<div class="top-bar">
</div>

Такие стили

.top-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  opacity:1;
  background-color: #fff;
  box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2);
  z-index: 99; 
}

Это Header. Он зафиксированный. Как сделать так что бы при скролле вниз, у него становилось свойство opcity:0.5, а при наведении на него opacity:1;

Answer 1

var scrollTop = $(window).scrollTop(), 
    e = $('.top-bar'); // кэшируем элемент, чтобы не искать его каждый раз, т.к. событие scroll отстреливает часто 
 
$(window).scroll(function() { 
  if(scrollTop < $(window).scrollTop()){ 
    e.addClass('current'); 
  }else if(scrollTop > $(window).scrollTop()){ 
    e.removeClass('current'); 
  }; 
  scrollTop = $(window).scrollTop(); 
});
body {height: 1000px} 
 
.top-bar { 
  position: fixed; 
  top: 0; 
  left: 0; 
  right: 0; 
  opacity: 1; 
  height:20px; /* Добавил, что бы наглядно было */ 
  background-color: #fff; 
  box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2); 
  z-index: 99; 
} 
.top-bar.current {opacity: 0.5} 
.top-bar.current:hover {opacity: 1}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="top-bar"> 
</div>

Answer 2

$(window).scroll(function() {     
    var scroll = $(window).scrollTop(); 
 
    if (scroll >= 100) { 
        $(".top-bar").addClass("top-bar-current"); 
    } else { 
        $(".top-bar").removeClass("top-bar-current"); 
    } 
});
body{ 
    min-height: 2000px; 
   background: #ddd; 
} 
 
.top-bar { 
    height: 60px; 
    position: fixed; 
    top: 0; 
    left: 0; 
    right: 0; 
    opacity: 1; 
    background-color: #fff; 
    box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2); 
    z-index: 99; 
} 
.top-bar-current{ 
    opacity: 0.5; 
    transition: 0.3s; 
} 
.top-bar-current:hover{ 
    opacity: 1; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<div class="top-bar"> 
</div>

Answer 3

Когда страница скролится, добавим класс, например, scrolled:

if ($(window).scrollTop() > 0) {
    $('.top-bar').addClass('scrolled')
}

Определим его в css:

.top-bar.scrolled {
  opacity: 0.5;
}

Но если наведено мышью, вернем обратно 1:

.top-bar:hover {
  opacity: 1;
}

Вот и все, тестим:

$(window).scroll(function() { 
 
  if ($(window).scrollTop() > 0) { 
    $('.top-bar').addClass('scrolled') 
  } else { 
    $('.top-bar').removeClass('scrolled') 
  } 
 
})
.top-bar { 
  position: fixed; 
  top: 0; 
  left: 0; 
  right: 0; 
  opacity: 1; 
  background-color: #ccc; 
  box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2); 
  z-index: 99; 
  height: 20px; 
} 
.top-bar.scrolled { 
  opacity: 0.5; 
} 
.top-bar:hover { 
  opacity: 1; 
} 
.content { 
  height: 2000px; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="top-bar"></div> 
<div class="content"></div>

READ ALSO
Смена картинки в зависимости от value select

Смена картинки в зависимости от value select

Ситуация такая: есть 2 селектa, в первом тип машины, во втором модель машиныЗначения во втором селекте меняются в зависимости от выбора в первом...

487
Сниппет ссылки в вк [требует правки]

Сниппет ссылки в вк [требует правки]

Подскажите, как настроить сниппеты для ссылок в Вконтакте<title> заполнен, <description> тоже, а ссылки не меняются, и выглядят:

367
Как сделать баннеры разных размеров? [требует правки]

Как сделать баннеры разных размеров? [требует правки]

ЗдравствуйтеЕсли вы сейчас зайдете на catalog

278
jquery не верная передача значения в контейнер select

jquery не верная передача значения в контейнер select

При инициализании списка автоматически задаю необходимый мне елемент списка как выбранный но иногда выбирается неверныйВот в чем соль

328