Reputation: 1495
I'm trying to remove the bounce when scrolling in chrome. You'll notice the top white black is fixed and behind the second yellow block as desired.
What I need to do is remove the scroll to reveal the grey background in the browser without preventing the scroll over the top white block. Hope it makes sense
HTML
<div class="project">
</div>
<div id="content">
<div class="warface">
</div><!-- END warface -->
</div><!-- END content -->
Upvotes: 53
Views: 71433
Reputation: 1
/* Prevent overscroll, scroll bounce, page overflow, */
html,
body {
/* Added to prevent overflow and scroll bounce
*/
height: 100%;
width: 100% !important;
overflow: hidden;
overscroll-behavior: none;
overflow-behavior: contain;
}
body {
/* LAYOUT */
margin: 0 auto;
min-height: 100vh;
/** Prevent overflowing the page */
top: 0;
left: 0;
right: 0;
bottom: 0;
position: absolute;
overflow-y: auto;
overflow-x: hidden;
max-width: 100vw !important;
-webkit-scrollbar {
display: auto;
background: transparent !important;
}
scroll-snap-type: y mandatory;
scroll-snap-align: start;
scroll-behavior: smooth;
}
/* Scrollbar */
body::-webkit-scrollbar {
color: currentcolor;
background: transparent;
height: calc(100% - 5px);
display: auto;
width: 5px;
}
body::-webkit-scrollbar-track {
background: transparent !important;
height: calc(100% - 5px);
visibility: hidden;
}
body::-webkit-scrollbar-thumb {
border-right: none;
border-left: none;
}
body::-webkit-scrollbar-track-piece:end {
background: transparent;
margin-bottom: 10px;
}
body::-webkit-scrollbar-track-piece:start {
background: transparent;
margin-top: 10px;
}
Upvotes: 0
Reputation: 15794
Please see Unknown's answer for a better solution.
The following is left here for historical purposes:
Bounce scroll in the browser is a feature of some versions of iOS / macOS.
To prevent it from happening on a website we can use the following:
CSS
html, body {
height: 100%;
overflow: hidden;
}
#main-container {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: auto;
}
HTML
<body>
<div id="main-container">
...
</div>
</body>
Upvotes: 61
Reputation: 855
Placing this rule on the body
tag doesn't work in Firefox on MacOS for me, but placing it on the html
tag does.
html {
overscroll-behavior: none;
}
Upvotes: 3
Reputation: 134
Just use this property on the body tag:
body{
overscroll-behavior: none;
}
<html>
<body>
<div>
<h1>Lorem ipsum dolor.</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi recusandae assumenda veritatis dolorum minima deleniti accusantium optio incidunt excepturi ipsum? Recusandae praesentium ullam minima autem minus necessitatibus aperiam neque. Non sequi quibusdam perferendis magnam ab dicta omnis. Reiciendis earum ipsum adipisci voluptas ipsa rerum ipsam dignissimos vitae tempore enim saepe pariatur dicta officia odio a quasi amet magni id hic.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi recusandae assumenda veritatis dolorum minima deleniti accusantium optio incidunt excepturi ipsum? Recusandae praesentium ullam minima autem minus necessitatibus aperiam neque. Non sequi quibusdam perferendis magnam ab dicta omnis. Reiciendis earum ipsum adipisci voluptas ipsa rerum ipsam dignissimos vitae tempore enim saepe pariatur dicta officia odio a quasi amet magni id hic.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi recusandae assumenda veritatis dolorum minima deleniti accusantium optio incidunt excepturi ipsum? Recusandae praesentium ullam minima autem minus necessitatibus aperiam neque. Non sequi quibusdam perferendis magnam ab dicta omnis. Reiciendis earum ipsum adipisci voluptas ipsa rerum ipsam dignissimos vitae tempore enim saepe pariatur dicta officia odio a quasi amet magni id hic.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi recusandae assumenda veritatis dolorum minima deleniti accusantium optio incidunt excepturi ipsum? Recusandae praesentium ullam minima autem minus necessitatibus aperiam neque. Non sequi quibusdam perferendis magnam ab dicta omnis. Reiciendis earum ipsum adipisci voluptas ipsa rerum ipsam dignissimos vitae tempore enim saepe pariatur dicta officia odio a quasi amet magni id hic.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi recusandae assumenda veritatis dolorum minima deleniti accusantium optio incidunt excepturi ipsum? Recusandae praesentium ullam minima autem minus necessitatibus aperiam neque. Non sequi quibusdam perferendis magnam ab dicta omnis. Reiciendis earum ipsum adipisci voluptas ipsa rerum ipsam dignissimos vitae tempore enim saepe pariatur dicta officia odio a quasi amet magni id hic.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi recusandae assumenda veritatis dolorum minima deleniti accusantium optio incidunt excepturi ipsum? Recusandae praesentium ullam minima autem minus necessitatibus aperiam neque. Non sequi quibusdam perferendis magnam ab dicta omnis. Reiciendis earum ipsum adipisci voluptas ipsa rerum ipsam dignissimos vitae tempore enim saepe pariatur dicta officia odio a quasi amet magni id hic.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi recusandae assumenda veritatis dolorum minima deleniti accusantium optio incidunt excepturi ipsum? Recusandae praesentium ullam minima autem minus necessitatibus aperiam neque. Non sequi quibusdam perferendis magnam ab dicta omnis. Reiciendis earum ipsum adipisci voluptas ipsa rerum ipsam dignissimos vitae tempore enim saepe pariatur dicta officia odio a quasi amet magni id hic.</p>
</div>
</body>
</html>
Upvotes: 6
Reputation: 919
While the accepted answer works. Here is a simpler and updated version.
body {
overscroll-behavior-y: none;
}
It does however not work for IE and Safari which is unfortunate. Here is the browser support.
Upvotes: 58
Reputation: 41
Modified the solution to not create a new div in the page
html {
height: 100%;
overflow: hidden;
}
body {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: auto;
}
Worked for me but I didn't know if it's a good way to do
Upvotes: 3
Reputation: 34513
There's a simpler answer suggested here for a related question: OSX - disable inertia scroll for "single-page" webapp
body {
overflow: hidden;
}
Upvotes: 4