Increment top position absolute on scroll - javascript

I have two elements, one positioned on the left and one on the right in absolute. I would like the right element, When it will disappear ((Exit the window), that it remains fixed (without using position: fixed).
I would like the value "top" to update but I can not do it and I can not find anything on the internet.
div.container{
position: relative;
}
article{
width: 50%;
margin-top: 50px;
}
aside{
position: absolute;
right: 0;
top: 0;
color: white;
height: 400px;
width: 300px;
background: blue;
}
<div class="container">
<article>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et dolor elementum, mollis ipsum eget, fermentum odio. Nunc pretium, dui ut posuere tristique, lacus lacus vestibulum dui, eu finibus dui mi quis felis. Sed nibh odio, ultrices vel dui eget, eleifend efficitur leo. Suspendisse dui metus, maximus quis lacus in, condimentum viverra mauris. Nunc finibus dui felis, sed egestas purus posuere et. Aliquam erat volutpat. Quisque luctus, erat vitae fermentum sodales, nisi diam congue augue, nec ultrices magna eros non mi. Nam semper sollicitudin quam, sit amet porta purus tristique vitae. Suspendisse suscipit, ipsum vel mattis pretium, urna erat imperdiet metus, at dictum est metus quis nisl. Duis rhoncus leo sed erat pulvinar, sit amet auctor est placerat. Duis tincidunt velit dolor, quis luctus felis venenatis quis. Sed odio urna, malesuada in mauris sit amet, lobortis hendrerit turpis. In fringilla metus diam, ut malesuada augue elementum ut. Donec id pharetra elit. Maecenas maximus vitae magna nec gravida. Morbi ac pellentesque mi.
Sed tristique fermentum metus in finibus. Sed commodo ultricies justo eu gravida. Nulla facilisi. Vestibulum mattis tortor sem, quis egestas augue tempus at. Curabitur molestie ut dui ac pretium. Donec vehicula enim ut quam ullamcorper sollicitudin. Donec pretium tristique sapien, id maximus nulla fermentum nec. Sed aliquet consectetur nisi, ut finibus erat vestibulum sit amet. Ut suscipit condimentum nisi.
Aenean eleifend tempus aliquam. Maecenas a fringilla arcu. Nunc leo mi, venenatis sit amet libero luctus, vulputate luctus erat. Fusce ex felis, auctor consequat imperdiet quis, finibus vel est. Morbi vitae pretium felis, id vulputate justo. Phasellus nunc enim, vestibulum ac velit in, finibus tincidunt diam. Cras posuere in metus quis volutpat. Cras posuere metus vitae turpis placerat laoreet. Quisque dignissim quam ut nisl euismod viverra. Aenean sed augue sed lectus congue accumsan. Quisque vel pellentesque enim, ut tincidunt tortor. Vestibulum vel ex nec velit facilisis posuere eget a elit. Phasellus non vulputate turpis, vel venenatis odio.
</p>
</article>
<aside>
My Aside
</aside>
</div>
FIDDLE
Thank you very much !

use position: fixed instead of absolute
aside{
position: fixed;
right: 0;
top: 0;
color: white;
height: 400px;
width: 300px;
background: blue;
}
https://jsfiddle.net/puxf496d/1/

I'm not sure I understand your question. You want your aside to stand in place when scrolling, right? I don't know why you want to do it like that, but you can use Javascript to increment the top property of your aside.
An example using JQuery.
$(window).scroll(function(){
var top = $(document).scrollTop();
$('.container aside').css('top',top);
});

Related

Show progress bar on scroll for a specific div

I want to display a progress bar while the user is scrolling, I want this progress bar to be based on a specific div, which means the progress bar should be 100% when the user scrolled to the end of the div.
Here is a fiddle: https://jsfiddle.net/tvmkf4ds/
Here is the code I use:
$(document).scroll(function () {
var scroll = $(this).scrollTop();
var $main = $('#scroll');
var offsetTop = $main.offset().top;
var offsetBottom = $main.offset().bottom;
var height = $main.height();
var percent = scroll - (offsetTop) / height * 100;
$("#progress-bar-value").css('width', percent);
});
The problem is the bar is not 100% filled when you scroll at the end of #scroll element, but only when you scroll until end of page.
I tried too:
var percent = scroll - (offsetTop - offsetBottom) / height * 100;
But I can't figure out the good calculation.
As far as I understood your problem this might be the solution:
If it is not displayed correctly here a quick fidddle for you: https://jsfiddle.net/zh76mybt/19/
$(document).scroll(function () {
const scroll = $(this).scrollTop();
const $main = $('#scroll');
const height = $main.height();
let percent = (scroll / height) * 1000;
$("#progress-bar-value").css('width', percent);
});
#progress-bar {
background: #eaeaea;
height: 12px;
position: fixed;
top: 0;
width: 100%;
z-index: 9;
left: 0;
}
#progress-bar-value {
background: #0A2D82;
border-radius: 0 10px 10px 0;
height: 12px;
transition: all 0.2s;
width: 0;
}
#header {
height: 200px;
padding: 40px;
background: red;
color: #fff;
}
#footer {
height: 200px;
padding: 40px;
background: green;
color: #fff;
}
#scroll {
margin: 40px 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="header">
HEADER
<div id="progress-bar">
<div id="progress-bar-value"></div>
</div>
</div>
<div id="scroll">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque sed mauris ac mi luctus eleifend porta ornare leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ultrices arcu et mauris sodales elementum. Vestibulum ornare metus vitae lorem pellentesque, id dictum nulla venenatis. Sed porttitor efficitur euismod. Integer vel est nec felis aliquam pulvinar quis sit amet dolor. In maximus ex quis odio congue imperdiet. Suspendisse id augue sapien.
Donec vehicula erat eget quam viverra sodales. Proin ex mauris, fringilla sed augue vel, volutpat mattis elit. Proin est eros, tempus eu euismod eget, facilisis in turpis. Ut molestie mauris quam, ut blandit odio ullamcorper sed. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vehicula libero id dignissim blandit. Pellentesque feugiat nisi dui, quis ultrices orci ultrices sed. Mauris et dictum ante. Integer pulvinar leo mi, ac mollis ligula dignissim quis. Morbi est dui, aliquet ac consequat semper, luctus at ipsum. Fusce sollicitudin neque non purus aliquet aliquet.
Fusce nec est lacus. Morbi ut mattis tortor. Maecenas dictum orci id nisl porttitor laoreet. Quisque quis euismod ligula, id aliquet orci. Ut rutrum arcu vel suscipit dapibus. Nullam elementum quis neque eget accumsan. Donec nec sodales lacus. Fusce volutpat sollicitudin nisi non viverra. Nunc vitae aliquet mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Aliquam vitae lorem at ante sollicitudin euismod. Fusce a lacus ac elit aliquet pretium. In libero lorem, rhoncus luctus arcu semper, vehicula porttitor nisl. Sed et lobortis est. Vivamus at tortor mauris. Ut vel leo eget massa lacinia bibendum. Cras elementum, nulla et varius aliquam, odio mi suscipit risus, a pellentesque lectus neque in urna. Suspendisse tempus, nisi sed finibus tempus, diam felis ultricies ante, eu tincidunt enim turpis ut purus. Sed luctus, mi eu dapibus ullamcorper, nulla diam posuere lorem, nec ornare libero justo vitae tellus. Duis purus ligula, tristique sed cursus sit amet, finibus a eros. Duis eget ipsum non enim congue vestibulum. Aliquam lobortis leo id nibh finibus, id pretium justo venenatis. Cras efficitur, ante vitae iaculis feugiat, purus sapien aliquet eros, quis feugiat orci nisi tempor lectus.
Curabitur nec cursus nisl, sed fringilla erat. In tincidunt justo eu vestibulum iaculis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse quis pharetra ante, at commodo risus. Sed tincidunt augue eu mattis scelerisque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur vitae lectus in sapien condimentum bibendum. Curabitur at venenatis nisl.
Donec vulputate molestie orci. Sed accumsan ullamcorper suscipit. Vestibulum scelerisque tellus sed augue condimentum, ut dictum tortor finibus. Integer suscipit elit turpis, quis ultrices enim vulputate sit amet. Nam imperdiet, velit id ullamcorper bibendum, diam massa ultricies sapien, sit amet efficitur velit sem ut urna. Cras rhoncus, elit eget ultrices pellentesque, mauris est bibendum dui, a rhoncus enim quam sed neque. In ut pulvinar urna, vel efficitur erat.
Fusce sit amet dictum nulla. Proin consequat nisi non elit rhoncus gravida. In ac lacus erat. Pellentesque sit amet elit id elit fermentum ullamcorper a quis sapien. Ut semper lorem sapien, ut pretium risus iaculis id. Ut semper est sed nibh consequat vulputate. Pellentesque ornare sem non dolor lobortis tincidunt. Curabitur laoreet ex id suscipit porttitor. Integer ultrices ipsum elit, quis maximus ante luctus id. Ut eleifend, diam et dignissim scelerisque, nulla tortor volutpat magna, sit amet tristique massa lacus in nunc. Praesent diam sapien, porttitor at turpis vitae, vehicula vestibulum mauris.
Proin consectetur cursus quam, nec suscipit justo mattis sit amet. Pellentesque lobortis maximus nisi sit amet auctor. In hac habitasse platea dictumst. Suspendisse a facilisis dui. Nulla erat nisi, finibus nec tempor in, aliquet eget enim. Integer egestas maximus pharetra. Nullam hendrerit id diam nec consequat. Praesent eleifend nisl quis magna ornare, facilisis elementum lacus congue. In hac habitasse platea dictumst. Curabitur gravida ornare congue. Nullam et consequat neque. Morbi eu odio sagittis, hendrerit dui quis, euismod nulla
Fusce sit amet dictum nulla. Proin consequat nisi non elit rhoncus gravida. In ac lacus erat. Pellentesque sit amet elit id elit fermentum ullamcorper a quis sapien. Ut semper lorem sapien, ut pretium risus iaculis id. Ut semper est sed nibh consequat vulputate. Pellentesque ornare sem non dolor lobortis tincidunt. Curabitur laoreet ex id suscipit porttitor. Integer ultrices ipsum elit, quis maximus ante luctus id. Ut eleifend, diam et dignissim scelerisque, nulla tortor volutpat magna, sit amet tristique massa lacus in nunc. Praesent diam sapien, porttitor at turpis vitae, vehicula vestibulum mauris.
</div>
<div id="footer">
FOOTER
</div>
I think the percent calculation is not correct.
$(document).scroll(function () {
...
var percent = (scroll - offsetTop) / height * 100;
$("#progress-bar-value").css('width', `${percent}%`);
}

Fixed position element contained inside of container div of variable height

I am trying to make an element(social links) 'fixed' inside of a container div(blog post) that varies in height and doesn't continue past the container. So relative to the container div, not the window itself. If the Footer/Header are 500px in height, the social links span can overflow the blog container div. I would like it to snap to the top or bottom of the container div, only scrolling within.
example: https://jsfiddle.net/j8ayod1v/6/
<header></header>
<div class="blog-container">
<span class="social-links"></span>
</div>
<footer></footer>
You could try setting the position as sticky or absolute on the element you want to remain "fixed" within the grey container depending on the behavior you're looking for.
I added both below:
header {
background: red;
height: 100px;
}
footer {
background: red;
height: 300px;
}
article {
position: relative;
background: grey;
}
h1 {
padding: 10px 40px;
}
p {
padding: 10px 40px;
}
span {
background: green;
top: 0;
}
.sticky {
position: -webkit-sticky;
position: sticky;
float: left;
}
.absolute {
position: absolute;
right: 0;
}
<header>
</header>
<article>
<span class="sticky">Fixed (sticky)</span>
<span class="absolute">Fixed (absolute)</span>
<h1>Blog Post</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean pulvinar finibus dolor, quis commodo lacus tristique in. Donec mattis massa volutpat, tristique lacus id, aliquam dolor. Mauris sed imperdiet lacus. Sed vitae cursus enim. Mauris lacinia lectus commodo nunc sodales pellentesque. Proin luctus commodo mi, vestibulum tempor elit. Praesent in dolor eleifend ante rutrum ultrices in eu nibh.
Nullam scelerisque lobortis diam, lobortis accumsan nunc molestie ac. Curabitur quis lorem id neque egestas scelerisque vitae id tellus. Morbi convallis, ante id viverra sagittis, lorem neque viverra eros, in finibus lorem purus id velit. Vivamus vitae nunc id nunc condimentum fringilla. Vivamus elementum semper mattis. Sed et porttitor lorem. Vivamus egestas hendrerit nisi, vitae sodales turpis molestie eget. Aliquam erat volutpat. Proin augue ante, dignissim ac nisi ac, blandit laoreet elit.
Donec feugiat leo suscipit diam pharetra efficitur. Curabitur augue sapien, pretium eu congue a, iaculis in tortor. Morbi nec sapien et elit venenatis pulvinar. Ut nec arcu egestas, dignissim enim sit amet, condimentum nulla. Morbi nisi nunc, interdum quis elementum id, vehicula vel risus. Sed eu sem ut eros euismod condimentum ac vel arcu. Duis gravida mattis sem, in porttitor ligula.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec maximus augue at nunc hendrerit, nec lobortis libero tincidunt. Mauris at viverra dolor. Praesent sed dolor ut nibh ultrices rutrum. Vestibulum aliquam, quam nec euismod dignissim, ipsum neque semper arcu, eu fringilla nibh velit ut tortor. Curabitur molestie enim vitae accumsan venenatis. Nullam sit amet turpis enim. In tincidunt nisl et nisi posuere, in semper massa fermentum. Phasellus sodales justo ac mauris malesuada, non aliquam mauris ultricies. Curabitur vel neque non augue pulvinar consequat. Duis quis elit sodales, tincidunt ipsum sed, ullamcorper tellus. Fusce sed felis euismod, aliquam lacus eget, blandit turpis. Vivamus sapien elit, gravida ac rhoncus eget, interdum nec velit. Praesent quis velit in ex aliquet cursus vitae sit amet metus. Aliquam molestie enim vitae mauris ornare, non ullamcorper augue lacinia.
Donec consectetur id justo quis aliquam. Fusce sollicitudin turpis ligula. Etiam vel viverra tellus. Curabitur eu cursus nisi. Morbi euismod maximus malesuada. Donec condimentum, orci quis fermentum tempor, turpis enim tincidunt enim, ac posuere nisl nisl non ipsum. Aliquam iaculis risus a urna molestie auctor. Suspendisse ac lorem dui. In hac habitasse platea dictumst. Quisque risus nisl, tempus et nunc id, dictum mattis erat. Nulla pulvinar lectus ac turpis sagittis porttitor. Duis sed bibendum est, ut tincidunt eros. Donec eleifend rutrum turpis nec luctus. Maecenas auctor, libero quis dictum dictum, odio lorem cursus metus, sed viverra nulla tortor ut lorem. Ut at mattis augue, sit amet consequat elit. Quisque vehicula nulla et suscipit facilisis.
</p>
</article>
<footer>
</footer>
Is this what you need?
header {
background: red;
height: 500px;
}
footer {
background: red;
height: 500px;
}
article {
position: relative;
background: grey;
}
h1 {
padding: 10px 40px;
}
p {
padding: 10px 40px;
}
span {
background: green;
position: sticky;
top:0;
}
<header>
</header>
<article>
<span>Fixed</span>
<h1>Blog Post</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean pulvinar finibus dolor, quis commodo lacus tristique in. Donec mattis massa volutpat, tristique lacus id, aliquam dolor. Mauris sed imperdiet lacus. Sed vitae cursus enim. Mauris lacinia lectus commodo nunc sodales pellentesque. Proin luctus commodo mi, vestibulum tempor elit. Praesent in dolor eleifend ante rutrum ultrices in eu nibh.
Nullam scelerisque lobortis diam, lobortis accumsan nunc molestie ac. Curabitur quis lorem id neque egestas scelerisque vitae id tellus. Morbi convallis, ante id viverra sagittis, lorem neque viverra eros, in finibus lorem purus id velit. Vivamus vitae nunc id nunc condimentum fringilla. Vivamus elementum semper mattis. Sed et porttitor lorem. Vivamus egestas hendrerit nisi, vitae sodales turpis molestie eget. Aliquam erat volutpat. Proin augue ante, dignissim ac nisi ac, blandit laoreet elit.
Donec feugiat leo suscipit diam pharetra efficitur. Curabitur augue sapien, pretium eu congue a, iaculis in tortor. Morbi nec sapien et elit venenatis pulvinar. Ut nec arcu egestas, dignissim enim sit amet, condimentum nulla. Morbi nisi nunc, interdum quis elementum id, vehicula vel risus. Sed eu sem ut eros euismod condimentum ac vel arcu. Duis gravida mattis sem, in porttitor ligula.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec maximus augue at nunc hendrerit, nec lobortis libero tincidunt. Mauris at viverra dolor. Praesent sed dolor ut nibh ultrices rutrum. Vestibulum aliquam, quam nec euismod dignissim, ipsum neque semper arcu, eu fringilla nibh velit ut tortor. Curabitur molestie enim vitae accumsan venenatis. Nullam sit amet turpis enim. In tincidunt nisl et nisi posuere, in semper massa fermentum. Phasellus sodales justo ac mauris malesuada, non aliquam mauris ultricies. Curabitur vel neque non augue pulvinar consequat. Duis quis elit sodales, tincidunt ipsum sed, ullamcorper tellus. Fusce sed felis euismod, aliquam lacus eget, blandit turpis. Vivamus sapien elit, gravida ac rhoncus eget, interdum nec velit. Praesent quis velit in ex aliquet cursus vitae sit amet metus. Aliquam molestie enim vitae mauris ornare, non ullamcorper augue lacinia.
Donec consectetur id justo quis aliquam. Fusce sollicitudin turpis ligula. Etiam vel viverra tellus. Curabitur eu cursus nisi. Morbi euismod maximus malesuada. Donec condimentum, orci quis fermentum tempor, turpis enim tincidunt enim, ac posuere nisl nisl non ipsum. Aliquam iaculis risus a urna molestie auctor. Suspendisse ac lorem dui. In hac habitasse platea dictumst. Quisque risus nisl, tempus et nunc id, dictum mattis erat. Nulla pulvinar lectus ac turpis sagittis porttitor. Duis sed bibendum est, ut tincidunt eros. Donec eleifend rutrum turpis nec luctus. Maecenas auctor, libero quis dictum dictum, odio lorem cursus metus, sed viverra nulla tortor ut lorem. Ut at mattis augue, sit amet consequat elit. Quisque vehicula nulla et suscipit facilisis.
</p>
</article>
<footer>
</footer>

Background blur on opening box

I'm trying to create a div which opens up on the center of the page and also blurs out everything behind the div. It should not blur the content of the div.
Most answers on this questions are the suggestion of using a background image.
The background should not be an image but whatever is behind at the moment the div is opened. Is there no attribute which blurs underlying content or an if statement I can use?
What you are looking for is to wrap the page contents with all else except your modal, and adding the class .blur from my attached code.
The modal should not be a child of the blurrable content therefore, when you open modal and add blur, you achieve the desired effect
.blur {
position: fixed;
top: 0; left: 0;
width: 100vw;
height: 100vh;
padding: 40px;
background: rgba(0,0,0,0.4);
filter: blur(5px);
}
.myModal {
position: fixed;
top: 50%;
left: 50%;
width: 400px;
height: 150px;
padding: 40px;
transform: translate(-50%, -50%);
background: beige;
}
<body>
<div class="blur">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed auctor congue enim a mattis. Etiam cursus a nisi quis feugiat. Duis pellentesque pharetra neque, at euismod augue bibendum vel. Mauris ornare mi placerat sapien facilisis dictum. Nam varius metus quis ultrices ultrices. Quisque gravida rhoncus turpis in viverra. Etiam sit amet orci malesuada magna vehicula interdum. Sed tellus ante, facilisis vel purus vitae, sodales mollis justo. Nullam vel libero sed diam luctus auctor ut ultricies tortor. Fusce porttitor volutpat venenatis. Curabitur a blandit erat. Duis mattis ornare nisl. Donec vestibulum quam sed consequat mollis. In eget aliquet metus. Sed imperdiet eros sit amet ullamcorper malesuada.
</p><p>
Fusce euismod sem a erat molestie, non mattis lorem dapibus. Donec tincidunt odio nec eleifend accumsan. Vestibulum quis justo sit amet lacus vehicula finibus nec in massa. Quisque ut luctus lacus. Proin eu elit laoreet, egestas neque at, tempus magna. Sed ac felis lacinia, luctus est at, iaculis mauris. Donec sit amet luctus lectus, nec cursus felis. Pellentesque pretium augue dui, tempor convallis dui placerat id. Donec vitae ex erat. Suspendisse non tincidunt ante. Vestibulum a risus vitae tortor vulputate placerat. Pellentesque pharetra bibendum lacus, in euismod dolor tempus eget. Donec imperdiet nisi sit amet mauris scelerisque laoreet. Pellentesque aliquet venenatis interdum. Aenean in augue diam.
</p><p>
Nullam tempus nec arcu vitae rutrum. Vivamus ipsum felis, finibus sit amet mauris ac, tempus dictum mi. Integer sollicitudin sollicitudin interdum. Nam semper sit amet felis eu viverra. Proin condimentum ante risus, at hendrerit urna elementum ac. Curabitur elementum, erat et sodales lobortis, dui tellus molestie urna, a molestie elit lorem at arcu. Ut nulla dui, vulputate ac ipsum sit amet, dignissim fringilla velit. Donec dignissim pretium dignissim. Nulla pulvinar faucibus velit. Ut commodo maximus velit, a hendrerit leo eleifend eget. Donec sed vestibulum diam, quis rhoncus tellus. Nunc nec congue orci, non semper nibh. Vivamus nec lorem lorem. Donec interdum egestas magna, non imperdiet nibh placerat ut.
</p><p>
Donec lacinia pretium imperdiet. Sed elementum pulvinar maximus. Nullam tempor mattis dapibus. Maecenas vitae erat lobortis, luctus est vel, finibus enim. Pellentesque varius feugiat volutpat. Ut sit amet consectetur elit, at mollis leo. Aenean et commodo libero. Curabitur ac elit lorem. Cras eget quam pretium, porta nisi at, sollicitudin est. Donec in mi vitae urna dignissim hendrerit. Mauris euismod nibh et risus blandit blandit. Suspendisse vitae varius nisi. Vestibulum sem lorem, dictum in ultricies ac, tincidunt eu ex. Fusce sed iaculis mi. Sed eu enim convallis, interdum est eu, mattis risus.
</p><p>
Morbi eget quam feugiat, porta ante ac, maximus mauris. Quisque iaculis risus urna, ut suscipit ipsum consequat sed. Nunc convallis vitae nulla non tempus. Praesent placerat velit a odio facilisis lacinia. Maecenas et auctor nunc. Ut eu libero eget lacus sollicitudin porttitor ac in velit. Nunc luctus vestibulum dignissim. Sed tristique est quis mi tempus dictum.
</p>
</div>
<div class="myModal">
Morbi eget quam feugiat, porta ante ac, maximus mauris. Quisque iaculis risus urna, ut suscipit ipsum consequat sed. Nunc convallis vitae nulla non tempus. Praesent placerat velit a odio facilisis lacinia. Maecenas et auctor nunc. Ut eu libero eget lacus sollicitudin porttitor ac in velit. Nunc luctus vestibulum dignissim. Sed tristique est quis mi tempus dictum.
</div>
</body>
Or can also be seen on CodePen https://codepen.io/ClayC90/pen/KexqLG
Although the Modal solution offered is better, here's a simplified solution, using jquery toggleClass function.
$('#first').click(function(){
$('#first').toggleClass("open");
$('#second').toggleClass("open");
})
body{
position:relative;
height:500px;
width:500px;
z-index: -2;
}
#first{
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background-color:blue;
filter: blur(6px);
z-index:-1;
}
#second{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100px;
height: 100px;
background-color: white;
}
#first.open{
filter: blur(0px);
}
#second.open{
display: none;
}
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<body>
<div class="open" id="first"></div>
<div class="open" id="second">
Not blurred
</div>
</body>

Overflow DIV to fit exactly inside browser

I am trying to set vertical scroll bar to the div2 to replace the default browser vertical scroll bar.
.div1 {
height: 200px;
}
.div2 {
overflow-y: auto;
height: 500px;
}
<div id='container' style="height:100%">
<div class='div1'>
div1 content
</div>
<div class='div2'>
div2 content
</div>
</div>
With the above style, document is left with blank space at the bottom since height of div2 is not exactly occupying the entire document height. How do I fix that?
The steps to achieve what you want are:
Set both html's and body's margin and padding to 0.
Set the header's height to the fixed height you want: in your case, 200px.
Set the .main's height to 100% of the viewport less the header height: calc(100vh - 200px).
Set the .main's overflow-y to auto.
Create a section into the .main, and set the margin you want to show your content (optional).
And then, we're done! Take a look at the example below (if you want to test it in a better way, click on the Full Page button, and then play with your window's resizing etc):
html,
body {
overflow: hidden;
padding: 0;
margin: 0;
}
header {
height: 120px;
background-color: blue;
}
div.main {
height: calc(100vh - 120px);
background-color: red;
overflow-y: auto;
}
div.main > section {
margin: 10px;
}
div.main > div > p {
text-align: justify;
}
<header>
</header>
<div class="main">
<section>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt enim sit amet diam bibendum, ut rhoncus est molestie. Ut vulputate egestas mauris, eget ultricies tellus aliquet nec. Mauris nec neque et lorem volutpat feugiat eget sit amet
erat. Nullam luctus ultricies augue ut cursus. Mauris pulvinar velit at venenatis semper. Quisque non dolor ante. Nulla tempus id turpis et placerat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vestibulum justo elit, rhoncus vitae
massa non, condimentum ornare quam. Duis sit amet orci a risus mollis gravida et quis augue. Donec sed felis ante. Vestibulum rutrum non dolor quis finibus. Vestibulum ultricies leo eget mi elementum, vel vestibulum felis maximus. Donec congue lorem
vel ante mattis, eu luctus magna finibus. Donec sit amet dui quam.
</p>
<p>
In ullamcorper, nibh eget venenatis imperdiet, augue ante porttitor mauris, nec scelerisque tortor nisi eu arcu. Phasellus libero ligula, eleifend a lobortis in, cursus in tellus. Morbi volutpat, sem a dignissim venenatis, velit nulla vehicula sem, ut
fermentum augue eros sit amet nisi. Vivamus eget ex id turpis scelerisque lobortis sed sed arcu. Nulla facilisi. Curabitur hendrerit iaculis justo, at iaculis est facilisis sit amet. Donec sem tellus, posuere et metus id, consectetur vehicula sapien.
Ut eros quam, tempor vitae quam sed, efficitur faucibus sapien. Mauris varius velit orci, sit amet fermentum neque auctor ac. Nullam pretium sed urna et pellentesque.
</p>
<p>
Nunc id odio ligula. Sed ut dolor vitae sem fringilla condimentum. Sed venenatis lacus a magna egestas, nec volutpat quam ullamcorper. Maecenas volutpat eu magna nec ultrices. In egestas, risus id porta condimentum, odio urna ultricies mi, ut elementum
magna tortor quis eros. Sed a hendrerit felis. Curabitur id sem consectetur, luctus velit in, sollicitudin elit. Proin ac commodo tortor. Proin imperdiet id massa at sollicitudin. Pellentesque enim arcu, venenatis ut dictum et, ornare at tortor.
Donec et urna nec metus rhoncus auctor. Nunc id nisi nec sem condimentum vehicula a in arcu.
</p>
<p>
Proin eleifend sem massa, at auctor eros porta congue. Aliquam nec aliquet justo, at cursus ipsum. Cras justo leo, varius vel accumsan eget, sagittis sit amet lorem. Donec pulvinar ante ut efficitur eleifend. Duis tincidunt metus non nunc accumsan, vel
accumsan velit rhoncus. Nunc arcu magna, sollicitudin non urna in, pellentesque dignissim eros. Nam placerat sodales rutrum. Sed quis placerat leo. Nunc porttitor nisi nunc, in feugiat dolor accumsan nec. Aliquam gravida diam ac tempor sodales.
Ut in sapien gravida odio molestie vehicula sed vel nulla. Integer sed ipsum semper, auctor massa eget, viverra justo. Nullam mattis suscipit lorem vel mattis. Morbi non aliquet nunc. In hac habitasse platea dictumst.
</p>
<p>
Pellentesque dapibus sapien quis congue porta. Maecenas faucibus ex nisi, in varius risus imperdiet ac. Aliquam tristique egestas ligula, sed vestibulum lacus mollis vel. Nunc non ante ut quam placerat suscipit. Lorem ipsum dolor sit amet, consectetur
adipiscing elit. In a viverra augue, a dignissim justo. Aliquam volutpat nibh ut tellus interdum suscipit. Praesent mi sem, mollis in libero vel, pretium accumsan ex. Nullam gravida diam quis semper faucibus. Nullam cursus felis dolor, sed egestas
ex lobortis et. Vivamus at maximus felis, vel posuere purus. Quisque pellentesque risus nec posuere suscipit. Aliquam eleifend tempus ante, vel vehicula nunc facilisis quis. Mauris lacinia, felis at ultrices luctus, lacus nisl molestie neque, et
varius urna velit at massa. Nulla facilisi.
</p>
</section>
</div>
I'm not absolutely sure what you're trying to do but try adding this to your css and see if it fixes it.
html, body { height: 100%; }
Try this. The border on div1 and div2 is just to show the height of the div. Feel free to remove it ;)
#container {
height: 100%;
position: absolute;
}
.div1 {
height: 200px;
position: relative;
border: 2px solid yellow;
}
.div2 {
overflow-y: auto;
position: relative;
height: 100%;
border: 2px solid red;
}
<div id='container' style="height:100%">
<div class='div1'>
div1 content
</div>
<div class='div2'>
div2 content
</div>
</div>

How can I make my sidebar fixed after a certain size?

I see this sample:
link
If you do come down ... you see the sidebar on the right becomes fixed after a certain size ... you actually get down to almost everything.
How it was made an event the example?
With JQuery?
This is the link to my site
I tried to do something similar but incomplete
CODE JS:
$(window).scroll(function() {
var height = $(window).scrollTop();
console.log(height);
if(height > 700) {
//alert("test");
//after a certain size should be fixed ... what code should be here?
}
});
Did you have any idea as an example?
Can you help me solve this problem please?
Thanks in advance!
Here the example of not smooth scrolling of div.
(function($) {
var element = $('.follow-scroll'),
originalY = element.offset().top;
// Space between element and top of screen (when scrolling)
var topMargin = 20;
// Should probably be set in CSS; but here just for emphasis
element.css('position', 'relative');
$(window).on('scroll', function(event) {
var scrollTop = $(window).scrollTop();
element.stop(false, false).animate({
top: scrollTop < originalY
? 0
: scrollTop - originalY + topMargin
}, 0);
});
})(jQuery);
html { box-sizing: border-box; }
*, *:before, *:after { box-sizing: inherit; }
.group:after { content: ""; display: table; clear: both; }
body { font: 15px/20px sans-serif; color: #444; }
p { margin-bottom: 30px; }
.wrapper { width: 100%; max-width: 700px; padding: 3%; }
.content, .sidebar { float: left; }
.content { width: 68%; margin-right: 5%; }
.sidebar { width: 27%; }
.box { background: #eee; border: 1px solid #ccc; padding: 10px; margin-bottom: 20px; }
<div class="wrapper group">
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam euismod arcu ut diam maximus auctor. Sed malesuada maximus tellus, dignissim volutpat urna hendrerit at. Cras nisi turpis, mattis vitae ornare ut, bibendum et massa. Nulla at tellus a arcu luctus ultrices ac non felis. Maecenas euismod efficitur ipsum vel vestibulum. Nam imperdiet ipsum nunc, sit amet varius felis maximus quis. Etiam efficitur, mauris placerat luctus facilisis, ligula sem pellentesque nunc, ac viverra tellus velit sit amet purus. Proin a nunc id quam tempor blandit vitae id orci. Cras lectus turpis, varius nec elementum venenatis, suscipit ut nisl.</p>
<p>Nulla condimentum est in leo mollis, sit amet varius erat pulvinar. Donec posuere turpis non est ultrices lobortis. Donec commodo aliquam sodales. Ut id finibus velit. Aenean tempus eget nulla at condimentum. Ut a arcu quis dui ultricies efficitur. Vestibulum suscipit diam ullamcorper velit tempor, in ullamcorper odio sollicitudin. Vestibulum congue nisl nibh, ut elementum quam tristique non. Nulla in sollicitudin dolor. Morbi ac justo nulla. Suspendisse massa neque, vestibulum id dolor non, congue rhoncus nibh.</p>
<p>Phasellus porta tellus vel ipsum vehicula, nec fermentum lectus porta. Aenean viverra magna eu risus lacinia malesuada. Sed molestie auctor pharetra. Aliquam erat volutpat. Vestibulum in mi a orci tincidunt pellentesque. Sed et lectus eros. Nam imperdiet neque eu dolor gravida, interdum pellentesque justo rhoncus. Morbi tincidunt, ex nec pellentesque pulvinar, dui nulla tempor ipsum, sed consequat est tortor at neque. Suspendisse sed consequat urna. Nullam luctus, sem convallis volutpat mollis, sapien odio finibus elit, vitae fringilla enim leo sed velit. Vivamus fringilla ante laoreet blandit porta. Sed condimentum ut erat nec dignissim.</p>
<p>Morbi ac scelerisque metus. Donec rhoncus diam urna, nec aliquet ex mollis ut. Sed a arcu ac risus semper pellentesque ut non nibh. Phasellus eu ullamcorper sem. Maecenas at tortor faucibus, consequat risus sed, egestas sapien. Suspendisse tortor lacus, congue sed velit vel, dictum sagittis eros. Proin eu nisl viverra, mattis velit vitae, tempor turpis. Ut sodales lacus in iaculis faucibus. Integer non metus non nulla malesuada rutrum ac non ipsum. Vivamus quam diam, suscipit sed velit vel, tincidunt imperdiet urna. Praesent dapibus augue a dignissim lacinia. Nullam pharetra volutpat ligula, quis aliquet mauris pharetra nec. Etiam finibus, neque in laoreet vehicula, lorem justo feugiat velit, ac accumsan neque lacus non tellus. Aliquam quis sagittis massa, a bibendum enim.</p>
<p>Morbi vel elementum libero, vitae viverra est. Pellentesque sollicitudin neque at ligula suscipit, vel faucibus mauris consequat. Donec quis pharetra nulla, at tristique lacus. Nunc vel magna ultricies, hendrerit purus et, rhoncus dolor. Aliquam erat volutpat. Phasellus auctor malesuada augue, a iaculis sem mattis quis. Nulla facilisi.</p>
</div>
<div class="sidebar">
<div class="box">
First box
</div>
<div class="box">
Second box
</div>
<div class="box follow-scroll">
Third box (follows screen)
</div>
</div>
</div>

Categories