I have been making changes to make my site more responsive and, in general, this has gone well. However, I have run into one problem:
Before, I always used height and width attributes on img elements in order to reserve space in the layout for the images while the browser loads them in. This prevents the layout from jerking around while the browser loads and calculates the needed space for the image.
After making my images more responsive, however, by using max-width: 100% and taking out the height and width attributes, the browser no longer reserves space for the image (because it no longer knows how tall or wide the image is going to be in advance since I couldn't explicitly tell it)
My goal is to have responsive images that also take up their appropriate space in the page layout upon its initial load. Does anyone know of a solution for this?
*EDIT (SOLUTION) - this is the best article I have found on the topic. Nice approach!
The correct answer here is to prevent the vertical reflow by using the "padding-bottom trick". To make this technique work, you must know the proportions of the image in advance.
Thanks to Anders M. Anderson for posting an excellent article on the topic: http://andmag.se/2012/10/responsive-images-how-to-prevent-reflow/
Here is a way to do it. It's not awesome, but works. http://jsfiddle.net/78Lvc/11/
I changed the image tag to look like this:
<img src="http://fitzgeraldmedia.net/images/range1.jpg" id="img" imgWidth="467" imgHeight="700" onload="fixMyWidth()"/>
You'll notice that I have added some attributes and an onload. You will have to add the attributes in code or by hand. The reason that you need the height and width is because you need to know the height of the image to calculate the space required in JS.
Then inline, I have this code:
<script>
//get the width of the browser right now
var containerWidth = document.body.offsetWidth;
//get the attributes that we have specified for this image
var imgWidth = document.getElementById("img").getAttribute("imgWidth");
var imgHeight = document.getElementById("img").getAttribute("imgHeight");
//since the img is to be 50% of the container width
var widthRatio = containerWidth / imgWidth / 2 ;
//now set the height of the image
document.getElementById("img").style.height = (imgHeight * widthRatio) + "px";
//once the image has actually loaded, run this
function fixMyWidth(){
//this will make it 'responsive' again
document.getElementById("img").style.height = "";
document.getElementById("img").style.width = "";
}
</script>
The question said:
by using max-width: 100% and taking out the height and width attributes, the browser no longer reserves space for the image ...
I think the questioner did not use the meta name="viewport" in his "html" codes. Here is the code of a html file that have an img tag with height and width attributes that is also responsive:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>img responsive</title>
<style>
.img {
display: block;
max-width: 100%;
margin: 0 auto;
height: auto;
}
</style>
</head>
<body>
<img src="https://hamid-davodi.com/img/images/portfolio-preview.png" id="myImg" width="1441" height="758" alt="My Image" class="img">
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum ipsa enim, magni asperiores officiis adipisci! Alias vero at nostrum tempore facilis temporibus provident quae quo illo, error eligendi in, odit, ducimus? Harum incidunt enim blanditiis veritatis tenetur, quam provident quae. Nulla in incidunt libero atque nemo, pariatur dolore perspiciatis ut vero maiores praesentium iste fuga quis possimus repellendus a placeat, repudiandae officiis fugiat! Facere necessitatibus a aspernatur assumenda aliquam nisi et suscipit nemo reiciendis enim! Ipsa quos illo atque? Repellat iusto officia expedita harum odio consequatur sequi eos quas eum delectus molestias nulla ut impedit rem temporibus neque, provident. In alias, repellendus repellat culpa officiis accusamus enim perspiciatis non nihil omnis necessitatibus obcaecati provident unde odit ipsa impedit corporis, numquam, adipisci nisi porro, fugiat consectetur et aspernatur similique. Similique beatae vel deleniti voluptatum ratione pariatur nihil numquam dolores soluta tempora incidunt magni nobis ipsum non minus quo, necessitatibus modi temporibus saepe harum, iure iste animi fugit! Natus maxime aliquam qui. Esse nisi, rem. Vitae, illo, ratione. Fugit, nesciunt ratione modi minima itaque ipsum obcaecati magnam laboriosam amet quae suscipit optio reprehenderit aperiam dolore! Vel necessitatibus odit, molestiae ea perferendis dicta recusandae quibusdam maxime, natus autem voluptatum, iusto alias distinctio vero in sint, incidunt. Unde, esse nemo voluptatum ab est blanditiis expedita consectetur itaque repellat eveniet. Porro placeat harum, tenetur nam sed ipsa, est, maxime tempore obcaecati dolores possimus magni deleniti illum facere pariatur nostrum? Ipsa nemo officia ipsam pariatur neque sed suscipit ducimus dolores temporibus, aperiam perspiciatis soluta quibusdam sequi cum, illo totam labore hic nesciunt laborum odit. Eius rem saepe delectus necessitatibus eligendi, beatae officiis placeat quaerat illo! Laboriosam eaque, repudiandae consequatur repellat blanditiis recusandae adipisci amet iste aperiam alias magnam itaque dicta illum praesentium eum totam fugit atque ad ducimus soluta voluptatibus odio nostrum beatae dolorum? Assumenda tempore officia facilis fugit earum unde, illo ab dolorem nulla quos temporibus cumque rerum sed deserunt quaerat molestiae aut soluta, iste, doloremque distinctio! Id optio, dolorem perspiciatis, corporis distinctio eos enim perferendis. Cum sint placeat sequi cupiditate quas sunt saepe beatae aut molestias quod modi sit temporibus consequuntur ab repudiandae ut eius dolores aliquam iusto quibusdam ea dolore exercitationem, recusandae perferendis. Repellendus molestiae eum, iste, commodi explicabo officia adipisci enim cumque exercitationem minus veniam optio numquam, alias doloribus modi voluptates consequatur eius. Quia ut incidunt reprehenderit cupiditate repudiandae tempore nam dicta, quo iure exercitationem odio sapiente laboriosam non ducimus dolore quis labore dolores, odit eius quam nesciunt, voluptas a laudantium magnam veritatis. Reprehenderit magnam veniam, voluptatum facere a blanditiis, soluta cumque sint, corporis eligendi, neque quod. Nemo odio repudiandae non vel sapiente. Fugiat ipsum soluta consequatur, sunt nulla placeat quis, in quia a iure commodi est, maxime libero cum laborum magnam deserunt nihil. Obcaecati, rerum ducimus dolor esse expedita doloremque impedit voluptas blanditiis soluta officiis provident placeat, beatae, sint reiciendis. Aut ratione atque, tempore officia eligendi magnam obcaecati quis quia, soluta excepturi facere iure autem explicabo assumenda fuga a sequi suscipit! Praesentium, aspernatur nulla asperiores incidunt numquam eum eos dolor accusantium.
</p>
</body>
</html>
You can test it also in this codepen.
I wouldn't take height and width attributes out, just try setting them to auto.
Related
I want to create something like this:
https://www.gymshark.com/products/gymshark-vital-seamless-2-0-light-t-shirt-chilli-red-marl-ss22
You see, when on desktop you scroll down, the product details on right stay fixed while the images on the left scroll down until they reach the end and then the product details get scrolled as well.
Can you please tell me how can I create this effect with HTML, CSS or JavaScript?
its all happening with css
position : sticky;
top : 0
here in this example left div is 200vh and right is 100vh
so applying those two css to shorter div will keep it sticky while scrolling for the rest of the container and then as soon as container reach the end it will start scoll again
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Experiment</title>
</head>
<body>
<div class="header p-5 bg-green-500 text-white text-2xl text-center">this is header</div>
<div class="scrollBody flex items-start">
<div class="each overflow-hidden p-5 w-[70%] h-[200vh] bg-green-200">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Amet, nam assumenda numquam corporis repellendus
rem esse itaque non vitae molestias aperiam ratione debitis quas hic sit iste quos dolore quo.
Alias a veritatis repellat tenetur quo dolore voluptas, odit porro iure eum quia error quisquam quas
delectus quibusdam totam velit sapiente similique quidem ex omnis exercitationem. Ratione minima architecto
sint.
Ipsum quibusdam rerum architecto asperiores itaque, maiores corrupti. Doloremque inventore, totam aliquam
unde reprehenderit eos! Cupiditate deleniti voluptatum fuga totam vero, nulla a provident quam illum quas
tempore impedit error.
Nostrum sapiente veritatis consequatur exercitationem. Veniam accusantium dolor facilis ad quis sequi ullam
aut unde blanditiis rem velit doloremque ducimus, voluptatibus consequuntur delectus, laboriosam possimus
quas. Eligendi accusantium reprehenderit porro!
Optio, eveniet! Qui quos tempora dolorem nihil, odit, perferendis laborum distinctio, id illo magni eaque
labore corporis accusamus placeat quam aspernatur doloremque. Eaque accusantium maiores suscipit voluptatum
expedita perspiciatis architecto!
Sed laudantium modi fugit numquam dolorum repellendus, ex veniam saepe iure nobis! Animi tempore quo nulla,
eveniet, architecto voluptatum, odio dignissimos temporibus molestias et sit. Dolor, illo. Recusandae, magni
exercitationem.
Autem quaerat soluta voluptatum quibusdam quas incidunt ducimus accusamus dolorum sed tempore nesciunt a
possimus nostrum ullam delectus dolore consequuntur fugit voluptatem aspernatur, numquam rerum dignissimos
quasi aliquid quae! Aliquid.
</div>
<div class="each overflow-hidden p-5 w-[30%] h-[100vh] bg-green-400 sticky top-0">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Architecto pariatur ratione voluptates porro, nemo
aut cumque, aliquam assumenda libero placeat laboriosam modi harum doloremque ullam labore voluptatum? Et,
nam saepe.
</div>
</div>
<div class="each overflow-hidden p-5 w-[100%] h-[200vh] bg-purple-500">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Amet, nam assumenda numquam corporis repellendus rem
esse itaque non vitae molestias aperiam ratione debitis quas hic sit iste quos dolore quo.
Alias a veritatis repellat tenetur quo dolore voluptas, odit porro iure eum quia error quisquam quas delectus
quibusdam totam velit sapiente similique quidem ex omnis exercitationem. Ratione minima architecto sint.
Ipsum quibusdam rerum architecto asperiores itaque, maiores corrupti. Doloremque inventore, totam aliquam unde
reprehenderit eos! Cupiditate deleniti voluptatum fuga totam vero, nulla a provident quam illum quas tempore
impedit error.
Nostrum sapiente veritatis consequatur exercitationem. Veniam accusantium dolor facilis ad quis sequi ullam aut
unde blanditiis rem velit doloremque ducimus, voluptatibus consequuntur delectus, laboriosam possimus quas.
Eligendi accusantium reprehenderit porro!
Optio, eveniet! Qui quos tempora dolorem nihil, odit, perferendis laborum distinctio, id illo magni eaque labore
corporis accusamus placeat quam aspernatur doloremque. Eaque accusantium maiores suscipit voluptatum expedita
perspiciatis architecto!
Sed laudantium modi fugit numquam dolorum repellendus, ex veniam saepe iure nobis! Animi tempore quo nulla,
eveniet, architecto voluptatum, odio dignissimos temporibus molestias et sit. Dolor, illo. Recusandae, magni
exercitationem.
Autem quaerat soluta voluptatum quibusdam quas incidunt ducimus accusamus dolorum sed tempore nesciunt a
possimus nostrum ullam delectus dolore consequuntur fugit voluptatem aspernatur, numquam rerum dignissimos quasi
aliquid quae! Aliquid.
</div>
</body>
<link rel="stylesheet" href="./styles.css">
<script type="module" src="./main.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
</html>
I implemented the tool as per the instructions at https://pixelcog.github.io/parallax.js/ (also watched a YouTube tutorial on it before that). It works perfectly on desktop sites (and shows graceful degradation on iOS devices as expected). However, it does not display the parallax effect on Android devices even after I add the attribute and value data-android-fix="false" to the relevant div element. What could be the reason? (See the table on the page linked above for explanation of how this flag works).
I have tested this on a Nokia 2.2 Android device. Some online emulators of other Android devices also seem to show the same problem. Sharing a code snippet below, please scroll to see the effect. Look forward to your responses!
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/parallax.js/1.4.2/parallax.min.js"></script>
<style>
.parallax-window {
min-height: 150px;
background: transparent;
display: flex;
flex-direction: column;
justify-content: center;
color: yellow;
border: red 2px solid;
text-align: center;
}
.overlay-text {
z-index: 2;
position: relative;
background: black;
width: 80vh;
margin: auto;
}
</style>
</head>
<body>
<section id="mySection" class="bg-light">
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint repellat cum incidunt unde assumenda libero accusantium eveniet adipisci quod cupiditate ea eum delectus earum sunt vitae voluptate quae fugiat, velit voluptas laborum! Maiores libero commodi
tenetur, cum quidem placeat nisi modi iste amet molestias consequuntur hic earum, beatae dolores distinctio qui dignissimos. Obcaecati et temporibus repellat undeplaceat blanditiis! Quasi obcaecati ab ipsum omnis porro, assumenda fuga aperiam molestias
recusandae quis sequi earum quam excepturi minima consequatur quaerat optio rem. Veritatis sapiente, modi dolore quas quam libero consequatur! Natus explicabo qui alias animi eum! Hic sunt nemo eius veniam debitis illo saepe natus dolorem odit amet
omnis inventore similique necessitatibus maiores et iure obcaecati, ut perspiciatis quia! Eveniet iusto fuga eius temporibus, impedit molestias iure pariatur at laborum error, voluptates omnis ad rerum dicta expedita. Culpa facilis, nam aperiam
optio neque possimus in aliquam eveniet id odio, modi ab magni sequi velit dicta nisi sint corporis cum, quae similique natus quod sunt. Et labore necessitatibus praesentium accusamus, voluptatibus aliquam
</p>
<div class="parallax-window" data-parallax="scroll" data-image-src="https://upload.wikimedia.org/wikipedia/commons/7/76/Mapamundi_en_blanco.png" data-z-index="1" data-speed="0.5" data-android-fix="false">
<h1 class="overlay-text">
Text over the parallax image
</h1>
</div>
<p>
voluptatum. Exercitationem dignissimos ratione assumenda nemo quaerat, non dolore doloribus esse et numquam ut nihil aliquid id similique inventore tenetur corporis amet. Expedita ipsam quas sed officiis libero maiores possimus corporis illo doloribus
dolores nihil quasi minima dolorem quia eveniet similique iste, iusto, non aliquid tempore ipsa ratione? Iusto sapiente voluptate, aut, dignissimos enim optio exercitationem ipsum minima earum assumenda consectetur, in minus hic deserunt? Commodi
officiis vero eligendi similique veniam? Dolorem illo veniam eius dolore vero doloremque, debitis excepturi earum, perferendis, aspernatur inventore. Aliquam, voluptates fugit tenetur facilis voluptatibus facere vero quidem perferendis voluptate,
temporibus nesciunt, sunt debitis fuga? Dolor libero commodi in deserunt pariatur veniam ad fugiat temporibus architecto corrupti hic maiores totam repellat repudiandae dolore cumque explicabo voluptatibus vitae quis, consectetur blanditiis quae
adipisci. Maxime, nobis voluptate quaerat similique culpa obcaecati laborum accusantium illum! Ullam molestias doloribus quasi repudiandae eveniet beatae totam maiores maxime accusamus laborum nobis, dolore debitis ea dolorem fugiat, iusto delectus
quia odio minima, voluptates sapiente! Praesentium unde saepe facere consectetur corrupti veritatis autem. Ipsa voluptas debitis dicta esse unde ipsum aut explicabo tempora recusandae quas quod delectus exercitationem dolores odit itaque deserunt,
beatae perferendis aspernatur animi excepturi consectetur. Nihil, voluptas vitae fugit blanditiis voluptatum non iste porro obcaecati accusamus explicabo beatae! Facilis maxime vero ducimus doloremque officia dolor, ad unde quae aliquam? Quos rem
rerum debitis cumque error. Maiores, cum quas consectetur culpa debitis error facere, ipsa quo rerum pariatur ab libero magni sint autem totam hic velit magnam odit atque? Quos optio porro, nulla assumenda quisquam repellat maiores. Quisquam sequi
modi, iure totam nam eligendi in corrupti officia quibusdam cumque ducimus assumenda illo sint rem fugiat quae harum quod odit at minus similique iusto iste vitae. Animi dolorem ab ipsum sint id vero tempore, earum culpa itaque officia. Vero voluptatem
expedita, quae illum iure autem architecto impedit in distinctio nulla possimus nesciunt molestiae ad amet assumenda rerum, consequuntur vel ullam deserunt aut velit distinctio tempore repellat commodi eius harum quas est reiciendis blanditiis quidem
molestias fugiat natus totam nulla itaque sed illo at. Consequatur illo, ipsam accusamus at porro eius tenetur repellendus! Nostrum facere saepe repellat, animi quibusdam voluptates laudantium corporis officiis temporibus ipsam corrupti numquam
modi atque eos, delectus tenetur necessitatibus vitae unde magnam possimus quos harum voluptatum! Excepturi nesciunt voluptatum impedit rem distinctio nobis sit modi pariatur quos illum quis, reiciendis iure obcaecati explicabo! Eum consequuntur,
assumenda aspernatur corrupti error quod modi. Debitis rem officia corporis beatae necessitatibus voluptatibus quas optio harum quibusdam accusantium commodi dolorem ad, velit, recusandae quia incidunt ab libero minus totam aperiam? Quas repellat
eveniet dolores culpa ipsa, doloremque voluptate ad velit, quam, excepturi laboriosam? Assumenda facilis, veniam laudantium voluptatibus vitae explicabo dolorem hic nostrum officiis, exercitationem nulla recusandae soluta maxime commodi perferendis
ipsam placeat accusantium! Doloremque consequuntur facere porro eum officiis? Cum repellendus qui iusto ducimus reiciendis ipsam! Porro, voluptates numquam temporibus perferendis ex explicabo, esse ab maiores illo molestias accusamus unde itaque
voluptate laborum beatae. Aperiam quia, provident error repudiandae impedit, explicabo minus, corrupti neque odit vel maxime officia ducimus commodi voluptates quo facere dolores. Pariatur, fuga soluta illo laborum modi consequatur reiciendis aperiam
explicabo recusandae illum itaque nobis corrupti magnam ea voluptatibus, ratione nesciunt ipsa voluptate minus labore nemo, ipsam officia. Quasi, ipsam iusto. Pariatur omnis eius non doloremque error praesentium architecto dolorem ex id nam quia
tenetur beatae nemo eos numquam officiis, modi magni aut. Tempore libero porro accusamus quas ipsa repellat, eligendi dolor possimus sunt id odit excepturi minus quae, animi placeat. Quasi, iste? Quos fugiat et sapiente, voluptates debitis quaerat!
Omnis magnam assumenda quam laborum dolorem deserunt qui sequi quis error adipisci voluptate reprehenderit voluptas, aut animi harum! Facilis harum laudantium praesentium repellat ducimus esse molestias cupiditate blanditiis enim aliquam, fugit
expedita velit maxime at cum sequi
</p>
</section>
</body>
</html>
.parallax-window {
min-height: 150px;
background: transparent":>
flex-direction: column;
justify-content: center;
color: yellow;
border: red 2px solid;
text-align: center;
}
.over(text)
z-index: 2;
position: relative}
width: 80vh;
margin: auto;
<html>
<head>
<script sec="httpd://Libraries/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script arc="HTTP://cdn.jsdelivr.net/parallax.js/1.4.2/parallax.min.js"></script> use a version range instead of a specific version
https://cdn.jsdelivr.net/npm/jquery#3.2/dist/jquery.min.js
https://cdn.jsdelivr.net/npm/jquery#3/dist/jquery.min.js
</head>
<body>
<section id="my-section" class="g-light">
<div class="parallax-window" data-parallax="scroll" data-image-sec="HTTP://Wikimedia/Wikipedia/commons/7/76/Mandamus_en_blancmange" data-z-index="1" data-speed="0.5" data-iPhone-fix="false">
<1 class="overlay-<text>
Text over the parallax image
</h>
</div>
</section>
</body>
</html>
I was able to find a fix that works at this link: https://github.com/pixelcog/parallax.js/issues/184#issuecomment-451162802
Basically, in your parallax.js (or parallax.min.js) file (assuming you have it in your project file system and are not linking to it from a cdn), search for instances of navigator.userAgent.match, and then replace the Android next to it with something like Android123 to break the code which disables the parallax functionality. Refer to the link above for more.
I'm trying to display pages with autofocus elements, but have the pages display starting at the very top of the page. However, the autofocus seems to focus after the onload event fires. The following snippet of code demonstrates this behavior. Is there a way to trigger the scrolling after the autofocus scroll?
I don't have a lot of control over the html, so I'm limited in my ability to edit it, but I can inject js into it. My backup is to use js to query the page for elements with autofocus, strip the autofocus from the element, and then do a element.focus({preventScroll: true}) on load.
<!DOCTYPE html><html>
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>demo</title>
</head>
<body><article class="markdown-body">
<!-- This next line should scroll to the top of the page on load, but the page still autofocuses on the button after load -->
<script>
function scrollToTopOfPage() {window.scrollTo(0,0);}
window.onload=scrollToTopOfPage()
</script>
<h1 id="lorem-ipsum">Lorem Ipsum<a class="headerlink" href="#lorem-ipsum" title="Permanent link"></a></h1>
<p>Quis sit adipisci unde tempore corporis fugit. Ad commodi illo numquam nam adipisci nihil. Totam debitis quia quos eius et. Quo dolor consequatur itaque temporibus fugit qui.</p>
<p>Ratione quos nesciunt quas consequuntur consequatur. Sit cupiditate veniam soluta tempora eum in sequi modi. Consequatur animi consequatur est omnis sint. Sunt in omnis amet et ut distinctio et quia. Non repellendus ut aut aliquam vitae esse dolores non.</p>
<p>Id aut quo repellendus est quasi esse sunt ipsum. Vitae quo cupiditate voluptas ut quis error quibusdam eveniet. Totam quaerat ipsam voluptas. Necessitatibus molestias aut ex non. Similique et iusto aperiam eveniet debitis quas quis fuga. Debitis sapiente eius est dolorem.</p>
<p>Laudantium eum expedita et. Hic voluptatem ut nulla magni quae. Non tempore vel sapiente enim aut. Molestiae qui rerum reiciendis fugit quasi enim. Atque ipsum et sint omnis fugiat facere assumenda.</p>
<p>Quidem qui in neque itaque praesentium rerum molestias exercitationem. Veritatis ipsam in expedita magni quibusdam maxime. Consectetur aut nesciunt reiciendis maxime quia dolorem. Fuga tempore et veritatis aut.</p>
<p>Asperiores dicta sit consectetur. Id omnis rem et qui ullam nesciunt. Et officiis amet deleniti aut sint sunt nemo. Ullam recusandae et debitis eaque rem itaque et pariatur. Beatae at aut fugiat tempora aliquid suscipit. Incidunt sapiente ut sed debitis.</p>
<p>Incidunt magni earum voluptatum dolorem. Amet ducimus harum possimus doloremque aut. Consequatur consequuntur tempora omnis tempora rem ea. Eaque ut ea illum sed eligendi autem quae. Ipsam occaecati dolor dolorem ea est. Modi vitae in eaque voluptatem.</p>
<p>Consequatur sit suscipit dolorum velit sit voluptatem quo. Porro ut inventore veniam cumque et in voluptas. Cum ipsa dicta dolorum aut. Pariatur vitae atque eum et provident id officia ducimus. Non et a molestias consequatur.</p>
<p>Quo nulla praesentium at neque iste alias animi placeat. Quas numquam aut illum vel facere dignissimos rerum. Id laboriosam expedita est maxime ullam sint.</p>
<p>Culpa sapiente est nostrum pariatur modi numquam distinctio sed. Eaque amet vitae nemo enim ea qui. Quibusdam in quas quasi suscipit rerum dolores consequatur. Sapiente minus dolorem sint. Est quos ipsa mollitia qui.</p>
<h1 id="buttons">Buttons<a class="headerlink" href="#buttons" title="Permanent link"></a></h1>
<p>
<button autofocus>Ok</button>
<button>Cancel</button>
<button onclick=scrollToTopOfPage()>Scroll to top of page</button>
</p>
</article></body>
</html>
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
Is it possible to make an overlay scrollbar?
Basically, I have a parent div with child divs inside. I'd like to make the vertical scrollbar overlay on top of the child divs instead of the scrollbar occupying space in the parent div and pushing the child divs to the left.
I'm planning to make the scrollbar transparent and only show it when the parent div gets hovered.
Is that possible with just css or does it need javascript? Please help thanks
I've a solution for you. Give a try to the code given below. And don't forget to put the simplescrollbar.js script in your code using this tag. <script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/simple-scrollbar.js"></script>
let scrollDiv = document.querySelector(".area");
SimpleScrollbar.initEl(scrollDiv);
body {
padding: 2rem;
background: #eee;
}
.area {
position: relative;
background: white;
height: 250px;
overflow: hidden;
}
.ss-wrapper {
overflow : hidden;
height : 100%;
position : relative;
z-index : 1;
float: left;
}
.ss-content {
height : 100%;
width : 100%;
position : relative;
right : -18px;
overflow : auto;
-moz-box-sizing : border-box;
box-sizing : border-box;
}
.ss-scroll {
position : relative;
background : rgba(0, 0, 0, .1);
width : 9px;
border-radius : 4px;
top : 0;
z-index : 2;
cursor : pointer;
opacity: 0;
transition: opacity 0.25s linear;
}
.ss-container:hover .ss-scroll {
opacity: 1;
}
.ss-grabbed {
user-select: none;
-o-user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
}
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/simple-scrollbar.js"></script>
<div class="area" ss-container>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sed cum quisquam sapiente ab consequatur natus ducimus obcaecati minus rerum adipisci laudantium debitis, perferendis pariatur iste provident dolorum ratione voluptate, repudiandae placeat inventore amet quasi ea facere? Delectus numquam vel inventore quasi excepturi. Minus nulla dolore ad animi pariatur provident assumenda dolorum voluptatem porro harum quo aspernatur error placeat sapiente, magnam, atque id molestiae dignissimos corrupti nobis doloremque iure. Voluptate nulla itaque vitae provident, voluptatem numquam sequi suscipit ducimus similique quidem, neque minima architecto tempore asperiores, nihil quae ratione dicta quia unde consectetur tenetur! Aspernatur eveniet dolorem nesciunt sint et eligendi enim quidem blanditiis tenetur! Blanditiis non modi amet, quaerat, vitae consectetur placeat porro dicta, ipsum natus ea possimus. Odio magni possimus modi nemo doloribus corrupti tempora. Aliquid eos error modi non repudiandae illum atque voluptatibus? Odio quod placeat facere sed eligendi, adipisci commodi natus magni soluta dignissimos, aperiam fuga magnam saepe itaque voluptas optio fugiat veritatis velit architecto dolore animi cum sequi quas accusantium! Vel iusto autem sit rerum maxime. Blanditiis libero natus at necessitatibus, odio sed perspiciatis exercitationem quisquam, officiis impedit, a nobis. Exercitationem hic reprehenderit illo, laboriosam ab eaque error sequi, ea expedita rem possimus repellendus numquam delectus est cum maiores neque nihil natus eius. Expedita esse quae, minus, est aspernatur ratione sed aliquid odio ut architecto nostrum provident neque placeat tempora, ipsum natus eum repellendus debitis alias nobis dolorem doloremque laboriosam voluptatem similique. Quisquam rerum molestias ab voluptas voluptatum sit, tenetur odio. Quidem nesciunt assumenda molestias velit harum deserunt culpa vitae beatae veritatis, eum, soluta mollitia numquam cumque! Facilis, dolores sunt aperiam sint molestias iure quidem architecto provident natus quae ab, quia labore tempore minima aliquid voluptatem earum optio tempora. Optio placeat eligendi praesentium quos atque. Similique aliquid neque nisi aliquam molestiae natus, recusandae ullam tempora et minus cum repellat cupiditate fugiat dolorem blanditiis consectetur ea commodi, maxime, odit voluptate hic non ab eaque? Eos exercitationem cumque quas harum aut deserunt ipsam cupiditate doloribus dolorum non doloremque adipisci est, explicabo mollitia voluptates laboriosam molestiae sapiente at ex laborum id? Voluptatem nostrum dicta, tempore eaque quibusdam praesentium fugiat laborum odio nemo adipisci, impedit porro iste, aut sunt consectetur soluta quia nisi repudiandae voluptatibus expedita ab rem iure. Dolorem nemo eaque architecto atque nihil, consequatur voluptates? Consequuntur vero a repudiandae molestias repellat provident minima facilis placeat, perferendis quo laudantium quisquam tenetur fugiat! Vitae repellat ducimus officia. Similique quod sunt quaerat, eum at esse iste. Pariatur sit animi mollitia! Molestiae, quia voluptatum? Expedita, voluptas explicabo. Rerum soluta dolorem expedita optio nostrum ex placeat laudantium minima voluptate, cum neque beatae, pariatur dicta error rem eum aliquam a deleniti quidem doloremque iure aperiam illo atque animi! Soluta facilis eligendi iure magnam. Quasi, quam numquam explicabo quas aliquam cum natus quod iusto, eligendi tenetur ex facilis, modi ut accusantium quibusdam nostrum labore! Provident laborum dolore ipsa sit. Dolore totam tempore quisquam adipisci iste tenetur ducimus saepe quae asperiores quibusdam possimus, maxime voluptatibus non eum praesentium quas dolores similique fugiat placeat numquam illum omnis autem voluptatum! Impedit exercitationem quam quisquam nisi consectetur minima optio dolore dicta! Maxime qui fugiat, beatae possimus modi fuga, unde, adipisci culpa magnam eum a velit. Voluptas libero eos dolores consequuntur nisi corrupti vel rem doloremque ut consequatur, odit magni esse aliquid aperiam possimus eveniet, magnam quaerat exercitationem. Maiores cum officiis reprehenderit ea nam, iure magni esse quos velit praesentium eius unde, laudantium fugit vitae quasi temporibus. Iste fuga iure numquam velit culpa exercitationem officia quis beatae? Deserunt sint eum accusantium, blanditiis fugit harum ex omnis qui officiis magnam nobis eius voluptatibus tenetur, rem dignissimos aut et tempore ipsum cumque commodi laudantium? Maxime praesentium, alias dolores, eos veritatis velit ex ut aliquam tempore est corporis dolorem. Odio, rem ratione. Numquam repellat cum rerum libero sapiente itaque corrupti in ut nihil culpa vitae, laborum molestias nostrum repudiandae eligendi sequi quo officia quibusdam modi commodi consequuntur nisi nobis vero voluptates. Praesentium officia rerum a incidunt ratione, odio quaerat alias, optio repellendus doloremque natus vero quae debitis dolores dignissimos voluptas labore accusantium aliquam asperiores ut eius dolorem. Dolor assumenda at deserunt numquam atque delectus labore, eum, aut dolorem ex, et hic vel rerum fugit! Et tempore harum natus illum dicta maxime magnam delectus ad praesentium reprehenderit nihil nulla aliquid error, fuga ratione dignissimos cumque temporibus blanditiis. Eum doloribus sed odit exercitationem quia quibusdam vero impedit id harum molestias! Distinctio iusto aspernatur quaerat tempora pariatur iste eaque corrupti, vel magnam temporibus recusandae possimus perspiciatis itaque repellat mollitia reprehenderit hic autem quis ex maxime laborum exercitationem placeat ab. Saepe provident incidunt, modi porro aut magni ducimus odit ut minima perferendis, itaque nobis rem explicabo dolor. Voluptates dicta in error nulla vitae corporis fugiat optio. Blanditiis voluptatem sunt nihil? Nihil, dicta excepturi explicabo repellendus enim odio sed totam, fugit error nulla provident omnis saepe illum iste animi? Consequatur, veniam! Voluptates voluptatem veritatis reiciendis. Illo, veritatis pariatur ratione id minima cupiditate. Quibusdam quod deserunt alias ipsam culpa et modi fuga aut id autem. Minima neque nesciunt eligendi accusamus quam deserunt repellendus sequi culpa, cumque quaerat beatae mollitia doloribus? Nisi quibusdam quisquam temporibus. Quas laudantium pariatur totam, voluptas tempora, ad culpa dignissimos blanditiis ut, explicabo voluptatem repellat saepe tempore ipsam? Qui adipisci labore mollitia at, id facere unde aspernatur? Quis numquam a reiciendis vero possimus ut autem. Voluptatibus quas, officiis hic mollitia vero unde iste dolores delectus molestias. Perspiciatis, sit dicta officiis facere minus voluptatem qui iusto est nulla neque perferendis non ipsum minima ipsa quidem consequatur delectus. Ducimus qui quaerat nostrum nulla quis veritatis! Labore quod illo, debitis necessitatibus, repellendus omnis vitae voluptas sequi quia consequuntur velit asperiores sint porro fuga facilis vel voluptatum magni quibusdam delectus quis distinctio? Excepturi tenetur doloremque dolor. Nostrum voluptates harum quis quidem hic odit magni atque repudiandae illum, repellat et explicabo a possimus nesciunt tempore rerum sequi, blanditiis officiis. Error ullam quae labore veritatis eaque reiciendis tempore doloremque quod dignissimos optio tempora perspiciatis, voluptatum non? Animi mollitia dolorem quae impedit quos laudantium perferendis, dolore ut consectetur deserunt veritatis deleniti ipsa excepturi!
</div>
1. Summary
If I use gemini-scrollbar instead of native scrollbar, I can't make, that my sidebar don't scroll.
2. Data
my sidebar in aside tag,
content of my article in main tag.
My minimal example code (see also in Codepen):
<html lang="en">
<head>
<meta charset="utf-8">
<title>Sticky demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.jsdelivr.net/npm/gemini-scrollbar/index.js" defer></script>
<script>
window.onload = function() {
var scrollbar = new GeminiScrollbar({
element: document.querySelector("body"),
autoshow: true,
forceGemini: true,
}).create();
};
</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gemini-scrollbar/gemini-scrollbar.css">
<style>
html,
body {
height: 100%;
/*overflow: hidden;*/
}
body {
margin: 0;
padding: 0;
}
aside {
background-size: cover;
height: 100%;
background-image: url("https://kristinita.ru/theme/images/aside/SashaGreenSweater.jpg");
float: left;
}
#media screen and (orientation: portrait) {
aside {
width: 100%;
}
}
#media screen and (orientation: landscape) {
aside {
width: 35%;
position: fixed;
}
main {
width: 65%;
float: right;
}
}
</style>
</head>
<body>
<aside>
</aside>
<main>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente officia ipsum ut harum voluptates, esse unde nam nobis minus nemo cumque, rerum odit aliquam vitae dicta, aliquid eveniet veritatis totam.</div>
<div>Magnam eos esse reprehenderit saepe, natus, placeat quas alias eum facilis, unde explicabo velit eaque dicta nostrum recusandae iste culpa. Quidem nisi architecto ratione atque recusandae ea sequi adipisci incidunt.</div>
<div>Recusandae pariatur ex, a quisquam! Aperiam blanditiis quisquam, officia aut vel, minima laboriosam quam, cumque in maiores enim id unde, deserunt numquam! Vel eligendi qui sunt reprehenderit hic, numquam dolorum.</div>
<div>Sunt quas iste autem accusantium, illo non praesentium quam accusamus impedit repudiandae voluptate harum maiores tenetur dolorem corrupti dolore magnam, a. Magni error eligendi reiciendis repudiandae quod autem nesciunt magnam.</div>
<div>Ullam assumenda velit ad amet totam nemo molestiae expedita temporibus, aliquam. Unde maxime, totam laborum eligendi minima consequatur, sequi voluptate cumque eveniet, beatae libero eius quis omnis ut, repellendus porro.</div>
<div>Cumque nostrum natus omnis temporibus minima unde, similique explicabo provident possimus assumenda molestiae aperiam accusantium odio, non, beatae saepe magnam fugit. Fuga incidunt quae id quisquam expedita sequi, nesciunt ullam.</div>
<div>Temporibus commodi a numquam soluta tempore, facilis voluptate. Dolore ut, harum, aperiam maxime distinctio quisquam aliquid officiis, laudantium voluptates repudiandae eveniet voluptas laborum debitis autem rem earum soluta temporibus iste!</div>
<div>Sed quia excepturi dolorem dolores. Quaerat nisi blanditiis sequi atque deleniti eligendi aliquam ad ipsam culpa natus, impedit numquam dolor maiores quisquam repellat officia voluptate omnis ex doloremque sed sint!</div>
<div>Tenetur consequatur eligendi excepturi nihil, deleniti aliquam. Ut aliquam, laudantium, nostrum necessitatibus, maiores ad neque praesentium illo enim atque repellat amet totam vero cumque aut nemo pariatur perspiciatis iusto id.</div>
<div>Fuga optio eligendi quaerat facere sint nesciunt corrupti necessitatibus! Ea impedit, quasi veniam hic recusandae ipsum incidunt vitae cum, voluptates modi repellat provident beatae quo doloremque rerum illo. Esse, consectetur.</div>
<div>Sunt beatae ex ab, cum dignissimos, eligendi doloribus provident! Adipisci itaque voluptate numquam est quae nisi ut dolor repudiandae modi tempora doloribus reiciendis corporis, blanditiis sed dolore ratione! Voluptatum, placeat.</div>
<div>Natus nobis nisi alias, facilis quae porro. Error doloremque quidem harum obcaecati quasi animi molestiae itaque accusamus, et eligendi. Sapiente quisquam mollitia fugiat quos voluptatibus assumenda. Consectetur ratione, officiis eos.</div>
<div>Commodi obcaecati, nemo. Repellendus voluptatem, voluptatibus vero, assumenda molestias dolorem maiores dolore delectus odit magnam numquam corrupti possimus quibusdam error quae repudiandae in est quod tempora accusantium odio hic quaerat.</div>
<div>Ea eligendi, dolor nostrum necessitatibus porro hic qui repellat soluta veniam similique, ab quae vero, ipsam obcaecati error accusamus. Fugiat temporibus sed magnam repudiandae totam nam minus obcaecati enim, voluptatibus!</div>
<div>Autem dignissimos voluptatem velit molestias recusandae id minima, provident accusantium consequatur, aut temporibus corrupti quaerat quasi quis adipisci numquam minus in rerum dolorum, optio delectus atque ex aspernatur perspiciatis expedita.</div>
<div>Repellat aspernatur sequi, ad veniam veritatis rerum necessitatibus hic voluptatibus delectus dolore eaque quasi in quaerat deserunt, sunt. Recusandae praesentium quibusdam nihil sapiente magni eum iusto iste esse ex a!</div>
<div>Obcaecati omnis adipisci laboriosam temporibus, delectus enim debitis earum voluptatibus, culpa impedit quia et eaque nesciunt. Quos, incidunt debitis. Veniam quaerat nihil maxime numquam eaque beatae delectus, quo ex harum.</div>
<div>Enim illum non, accusantium quas sed quisquam minus aut illo, expedita voluptatum? Odio iure sequi, maiores repellendus quasi ratione distinctio consequatur quaerat perferendis. Iusto eum tempora nostrum necessitatibus, reiciendis aperiam.</div>
<div>Beatae doloribus, officia repellat illo provident temporibus numquam accusamus. Excepturi, tempora unde alias officiis architecto ex odio voluptatum autem adipisci, voluptas sed quos, praesentium pariatur quia tenetur sequi veniam fuga!</div>
<div>Harum quibusdam sequi repudiandae culpa voluptas reprehenderit quod eaque earum odio. Earum vitae non reprehenderit incidunt, eveniet error eum nihil iure sapiente cum, nesciunt, fuga accusamus nulla natus. Obcaecati, quaerat.</div>
<div>Autem dicta recusandae, esse saepe? Expedita consectetur ipsa vitae at esse provident, accusantium molestias, labore, neque totam ullam blanditiis autem perspiciatis minima deleniti iure veniam! Numquam veritatis saepe molestias tempora.</div>
<div>Nesciunt esse similique unde laudantium deleniti. Debitis dignissimos magni exercitationem nulla eius pariatur ducimus minima reiciendis! Eligendi saepe aspernatur laudantium necessitatibus ipsam sed, maxime a. Inventore velit itaque, obcaecati magni.</div>
<div>Repudiandae nam dolores perspiciatis totam minus incidunt, error nihil itaque facere alias, perferendis sit vel! Culpa delectus, maiores assumenda accusamus amet maxime dolores, rerum! Accusantium ipsum distinctio numquam aperiam dolore.</div>
<div>Officiis tempore quae sint iste facere corporis eius ea quos sapiente, et, quo dolore repellat commodi magni quam reprehenderit quisquam perspiciatis nihil ducimus nisi maiores necessitatibus. Non minus, fugiat tempore.</div>
<div>Aspernatur maxime veniam reiciendis quo animi perspiciatis magnam, quidem quos itaque consectetur ratione eius. A, repudiandae consequatur quam doloribus suscipit harum, commodi numquam, in fugit et nostrum quo sunt ex!</div>
</main>
</body>
</html>
3. Expected behavior
If I use native browser scrollbar, position: fixed help me:
4. Actual behavior
If I use gemini-scrollbar, aside scroll with main:
5. Not helped
For example:
5.1. Theia Sticky Sidebar
<script src="https://cdn.jsdelivr.net/npm/jquery#3.3.1/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/resize-sensor/ResizeSensor.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/theia-sticky-sidebar/dist/theia-sticky-sidebar.min.js"></script>
<script>
jQuery(document).ready(function() {
jQuery('main, aside').theiaStickySidebar({
additionalMarginTop: 0
});
});
</script>
Result.
5.2. Sticky sidebar
<script src="https://cdn.jsdelivr.net/npm/jquery#3.3.1/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sticky-sidebar/dist/jquery.sticky-sidebar.min.js"></script>
<script>
$('aside').stickySidebar({
topSpacing: 60,
bottomSpacing: 60
});
</script>
Result.
6. Do not offer
Please, do not offer:
6.1. “Don't use gemini-scrollbar”
I don't know another custom scrollbar, that:
replace native body scrollbar,
works without critical bugs,
open source,
active maintained.
6.2. “Use document.querySelector("main") instead of document.querySelector("body")”
I have some problems in my site, if document.querySelector("main") in landscape orientation.
For example, user open anchor of any page of my real site → user resize screen from landscape to portrait or conversely → scrollbar move to begin of my page. I don't know, how I can fix this bug.
1. Summary
As answered plugin owner, I need to add:
.gm-scrollbar-container .gm-scroll-view {
transform: initial;
}
2. Demonstration
Codepen:
Sources
Demo page
Stack Overflow:
<html lang="en">
<head>
<meta charset="utf-8">
<title>Sticky demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.jsdelivr.net/npm/gemini-scrollbar/index.js" defer></script>
<script>
window.onload = function() {
var scrollbar = new GeminiScrollbar({
element: document.querySelector("body"),
autoshow: true,
forceGemini: true,
}).create();
};
</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gemini-scrollbar/gemini-scrollbar.css">
<style>
html,
body {
height: 100%;
/*overflow: hidden;*/
}
body {
margin: 0;
padding: 0;
}
aside {
background-size: cover;
height: 100%;
background-image: url("https://kristinita.ru/theme/images/aside/SashaGreenSweater.jpg");
float: left;
}
#media screen and (orientation: portrait) {
aside {
width: 100%;
}
}
#media screen and (orientation: landscape) {
aside {
width: 35%;
position: fixed;
}
main {
width: 65%;
float: right;
}
}
.gm-scrollbar-container .gm-scroll-view {
transform: initial;
}
</style>
</head>
<body>
<aside>
</aside>
<!-- Content -->
<main>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente officia ipsum ut harum voluptates, esse unde nam nobis minus nemo cumque, rerum odit aliquam vitae dicta, aliquid eveniet veritatis totam.</div>
<div>Magnam eos esse reprehenderit saepe, natus, placeat quas alias eum facilis, unde explicabo velit eaque dicta nostrum recusandae iste culpa. Quidem nisi architecto ratione atque recusandae ea sequi adipisci incidunt.</div>
<div>Recusandae pariatur ex, a quisquam! Aperiam blanditiis quisquam, officia aut vel, minima laboriosam quam, cumque in maiores enim id unde, deserunt numquam! Vel eligendi qui sunt reprehenderit hic, numquam dolorum.</div>
<div>Sunt quas iste autem accusantium, illo non praesentium quam accusamus impedit repudiandae voluptate harum maiores tenetur dolorem corrupti dolore magnam, a. Magni error eligendi reiciendis repudiandae quod autem nesciunt magnam.</div>
<div>Ullam assumenda velit ad amet totam nemo molestiae expedita temporibus, aliquam. Unde maxime, totam laborum eligendi minima consequatur, sequi voluptate cumque eveniet, beatae libero eius quis omnis ut, repellendus porro.</div>
<div>Cumque nostrum natus omnis temporibus minima unde, similique explicabo provident possimus assumenda molestiae aperiam accusantium odio, non, beatae saepe magnam fugit. Fuga incidunt quae id quisquam expedita sequi, nesciunt ullam.</div>
<div>Temporibus commodi a numquam soluta tempore, facilis voluptate. Dolore ut, harum, aperiam maxime distinctio quisquam aliquid officiis, laudantium voluptates repudiandae eveniet voluptas laborum debitis autem rem earum soluta temporibus iste!</div>
<div>Sed quia excepturi dolorem dolores. Quaerat nisi blanditiis sequi atque deleniti eligendi aliquam ad ipsam culpa natus, impedit numquam dolor maiores quisquam repellat officia voluptate omnis ex doloremque sed sint!</div>
<div>Tenetur consequatur eligendi excepturi nihil, deleniti aliquam. Ut aliquam, laudantium, nostrum necessitatibus, maiores ad neque praesentium illo enim atque repellat amet totam vero cumque aut nemo pariatur perspiciatis iusto id.</div>
<div>Fuga optio eligendi quaerat facere sint nesciunt corrupti necessitatibus! Ea impedit, quasi veniam hic recusandae ipsum incidunt vitae cum, voluptates modi repellat provident beatae quo doloremque rerum illo. Esse, consectetur.</div>
<div>Sunt beatae ex ab, cum dignissimos, eligendi doloribus provident! Adipisci itaque voluptate numquam est quae nisi ut dolor repudiandae modi tempora doloribus reiciendis corporis, blanditiis sed dolore ratione! Voluptatum, placeat.</div>
<div>Natus nobis nisi alias, facilis quae porro. Error doloremque quidem harum obcaecati quasi animi molestiae itaque accusamus, et eligendi. Sapiente quisquam mollitia fugiat quos voluptatibus assumenda. Consectetur ratione, officiis eos.</div>
<div>Commodi obcaecati, nemo. Repellendus voluptatem, voluptatibus vero, assumenda molestias dolorem maiores dolore delectus odit magnam numquam corrupti possimus quibusdam error quae repudiandae in est quod tempora accusantium odio hic quaerat.</div>
<div>Ea eligendi, dolor nostrum necessitatibus porro hic qui repellat soluta veniam similique, ab quae vero, ipsam obcaecati error accusamus. Fugiat temporibus sed magnam repudiandae totam nam minus obcaecati enim, voluptatibus!</div>
<div>Autem dignissimos voluptatem velit molestias recusandae id minima, provident accusantium consequatur, aut temporibus corrupti quaerat quasi quis adipisci numquam minus in rerum dolorum, optio delectus atque ex aspernatur perspiciatis expedita.</div>
<div>Repellat aspernatur sequi, ad veniam veritatis rerum necessitatibus hic voluptatibus delectus dolore eaque quasi in quaerat deserunt, sunt. Recusandae praesentium quibusdam nihil sapiente magni eum iusto iste esse ex a!</div>
<div>Obcaecati omnis adipisci laboriosam temporibus, delectus enim debitis earum voluptatibus, culpa impedit quia et eaque nesciunt. Quos, incidunt debitis. Veniam quaerat nihil maxime numquam eaque beatae delectus, quo ex harum.</div>
<div>Enim illum non, accusantium quas sed quisquam minus aut illo, expedita voluptatum? Odio iure sequi, maiores repellendus quasi ratione distinctio consequatur quaerat perferendis. Iusto eum tempora nostrum necessitatibus, reiciendis aperiam.</div>
<div>Beatae doloribus, officia repellat illo provident temporibus numquam accusamus. Excepturi, tempora unde alias officiis architecto ex odio voluptatum autem adipisci, voluptas sed quos, praesentium pariatur quia tenetur sequi veniam fuga!</div>
<div>Harum quibusdam sequi repudiandae culpa voluptas reprehenderit quod eaque earum odio. Earum vitae non reprehenderit incidunt, eveniet error eum nihil iure sapiente cum, nesciunt, fuga accusamus nulla natus. Obcaecati, quaerat.</div>
<div>Autem dicta recusandae, esse saepe? Expedita consectetur ipsa vitae at esse provident, accusantium molestias, labore, neque totam ullam blanditiis autem perspiciatis minima deleniti iure veniam! Numquam veritatis saepe molestias tempora.</div>
<div>Nesciunt esse similique unde laudantium deleniti. Debitis dignissimos magni exercitationem nulla eius pariatur ducimus minima reiciendis! Eligendi saepe aspernatur laudantium necessitatibus ipsam sed, maxime a. Inventore velit itaque, obcaecati magni.</div>
<div>Repudiandae nam dolores perspiciatis totam minus incidunt, error nihil itaque facere alias, perferendis sit vel! Culpa delectus, maiores assumenda accusamus amet maxime dolores, rerum! Accusantium ipsum distinctio numquam aperiam dolore.</div>
<div>Officiis tempore quae sint iste facere corporis eius ea quos sapiente, et, quo dolore repellat commodi magni quam reprehenderit quisquam perspiciatis nihil ducimus nisi maiores necessitatibus. Non minus, fugiat tempore.</div>
<div>Aspernatur maxime veniam reiciendis quo animi perspiciatis magnam, quidem quos itaque consectetur ratione eius. A, repudiandae consequatur quam doloribus suscipit harum, commodi numquam, in fugit et nostrum quo sunt ex!</div>
</main>
</body>
</html>
3. Explanation
transform property in gemini-scrollbar.css: 1, 2.
transform create a new local coordinate system.
The initial keyword is used to set a CSS property to its default value.
4. Additional links
CSS initial Keyword
CSS transform Property