Клип для изменения цвета кнопки при прокрутке
Я пытаюсь сделать это: CSS изменить цвет прокрутки / вырезать текст - переполнение z-index Это использовать клип для изменения цвета кнопки, когда кто-то прокручивает. Я хочу, чтобы он менялся при переходе от заголовка к телу, но он не работает для меня.
body {
background:#F7FE2E;
margin: 0;
}
#header{
padding:200px 50px;
background-color: #6495ED;
}
/*HERE IS THE HEADER AND BODY CLIP*/
#header,
#content {
clip: rect(auto, auto, auto, auto);
box-sizing: border-box;
}
/********** MENU ***********/
.menu{
top: 15px;
right: 40px;
font-size: 16px;
position:fixed;
}
.black {
color: #000000;
}
.white {
color: #FFFFFF;
}
<div id="wrapper">
<div id="header">
<!--HERE IS THE FIXED MENU WHITE-->
<div class="menu white">MENU</div>
</div>
<div id="content">
<!--HERE IS THE FIXED MENU BLACK-->
<div class="menu black">MENU</div>
CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>
</div>
</div>
Почему это не работает?
2 ответа
Решение
Вот ответ, который вам нужен, вы просто пропустили несколько правил. Проверьте фрагмент ниже для комментариев...
body {
background: some-arbitrary-color; /* clipping doesn't use THIS color => */
margin: 0;
}
#header {
top: 0; /* [OPTIONAL] add */
padding: 200px 50px;
background-color: #6495ED;
}
/* [MANDATORY] add */
#content {
top: 400px; /* (2 x 200px) px, vw, %, whatever works best*/
background-color: #F7FE2E; /* => but NEEDS this bg-color to mix */
}
/*******************/
/*HERE IS THE HEADER AND BODY CLIP*/
#header,
#content {
position: absolute; /* [MANDATORY] add, clipping needs absolute positioning */
width: 100%; /* [MANDATORY] add, and position needs width */
clip: rect(auto, auto, auto, auto);
box-sizing: border-box;
}
/********** MENU ***********/
.menu {
top: 15px;
right: 40px;
font-size: 16px;
position: fixed;
}
.black {
color: #000000;
}
.white {
color: #FFFFFF;
}
<div id="header">
<!--HERE IS THE FIXED MENU WHITE-->
<div class="menu white">MENU</div>
</div>
<div id="content">
<!--HERE IS THE FIXED MENU BLACK-->
<div class="menu black">MENU</div>
CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>CONTENT
<br>
</div>
</div>
Вы должны использовать jquery, чтобы изменить цвет меню при прокрутке, как показано ниже:
$(window).scroll(function() {
if ($(this).scrollTop() > 380) {
$(".menu").removeClass("white").addClass("black");
} else {
$(".menu").removeClass("black").addClass("white");
}
});
body {
background: #F7FE2E;
margin: 0;
}
#header {
padding: 200px 50px;
background-color: #6495ED;
}
/*HERE IS THE HEADER AND BODY CLIP*/
#header,
#content {
clip: rect(auto, auto, auto, auto);
box-sizing: border-box;
}
/********** MENU ***********/
.menu {
top: 15px;
right: 40px;
font-size: 16px;
position: fixed;
}
.black {
color: #000000;
}
.white {
color: #FFFFFF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<div id="header">
<!--HERE IS THE FIXED MENU WHITE-->
<div class="menu white">MENU</div>
</div>
<div id="content">
CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>CONTENT<br>
</div>
</div>