Search code examples
htmlcssscrollclip

Clip for change button color when scroll


I am trying do it: CSS change color on scroll / cut text - overflow z-index It is use clip for change color of a button when somebody are scrolling. I want it changes when move from header to body, but it doesn't work for me.

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>		 

Why it doesn't work?


Solution

  • Here's the answer you needed, you just missed a few rules. Check the snippet below for comments...

    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>