Correct set of intersection observer - javascript

currently I'm stuck on correct setting of Intersection observer. I would say it's working like on half, but it still doesn't have desired behavior.
My goal is to make interactive menu which responds to section, which is currently observed. I would like to fire callback function (highlight specific link in menu) as soon as the new section is visible, even if it was small piece, like 1cm.
For now It works until I enlarge font, for example to 25px. You can try to remove this style. Tt also stops working when there is too much text in one section.
section{
font-size:25px;
}
I think, this is the place where the problem is.. threshold value or condition itself.
const myObserver = new IntersectionObserver(elements => {
if (elements[0].intersectionRatio == 1) {
highlight(elements[0].target);
}
}, {threshold: 1.0})
If anybody know what is the problem, please help me. I'm stuck on this all day. Thank you !
Codepen here
//Get all sections
const sections = document.querySelectorAll('section');
//Get all links in menu
const menu = document.querySelector('.menu');
const links = menu.querySelectorAll('a');
//Callback function
function highlight(target){
links.forEach(link => {
link.classList.remove('active')
if(link.getAttribute('href') === '#'+target.id){
link.classList.add('active');
}
})
}
const myObserver = new IntersectionObserver(elements => {
if (elements[0].intersectionRatio == 1) {
highlight(elements[0].target);
}
}, {threshold: 1.0})
//Observe every function
sections.forEach(el => myObserver.observe(el));
.menu{
position:fixed;
top:0;
left:0;
width:30%;
background:grey;
height:100%;
}
ul{
list-style:none;
}
a{
text-decoration:none;
color:black;
font-size:20px;
}
main{
width:70%;
margin-left:30%;
}
/*Try to remove this font-size style, to see what I was explaining*/
section{
font-size:25px;
}
.active{
color:red;
}
<div class="menu">
<ul>
<li>Section 1</li>
<li>Section 2</li>
<li>Section 3</li>
</ul>
</div>
<main>
<section id="1">
<h1>Section 1</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra est elit, eu eleifend dolor elementum non. Nunc imperdiet sagittis augue ac varius. Donec condimentum id erat sed ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi suscipit lectus id purus bibendum, a cursus metus mollis. Mauris elementum malesuada massa non lobortis. Quisque molestie convallis dictum. Curabitur sodales erat finibus nunc mattis congue. Morbi eleifend sed lectus id ultrices. Vivamus varius felis viverra turpis eleifend auctor. Duis aliquet magna ut diam lacinia, non iaculis nulla sagittis. Praesent fringilla ex augue, quis hendrerit arcu facilisis a. Fusce iaculis bibendum orci eu efficitur. Praesent tincidunt nisl a urna posuere, venenatis dapibus leo ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Donec pretium tristique enim in molestie. Fusce lacinia, enim nec bibendum dignissim, nibh nulla laoreet nisl, eget finibus augue eros eu urna. Suspendisse accumsan velit orci, non semper lacus aliquam at. Morbi semper porta eros, sed dignissim nunc auctor et. Vivamus mattis fringilla enim. Nulla pretium at neque at feugiat. Pellentesque dictum id massa nec accumsan. Etiam lectus elit, elementum at velit sit amet, tristique pellentesque sapien. Aliquam eu nisl ac est posuere imperdiet. Proin eu enim quis arcu aliquam consequat a vitae purus. Sed finibus scelerisque risus pretium faucibus. Integer eget nisl eu magna sodales rutrum.
In hac habitasse platea dictumst. Duis eget fringilla tortor. Aliquam eget magna rutrum ex pharetra vulputate. Integer in ex est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed consectetur urna odio, sit amet pretium tortor sodales et. Donec molestie bibendum diam, a volutpat urna bibendum sit amet. Fusce congue est imperdiet, lacinia diam non, tempor dui. Integer iaculis lobortis neque id malesuada. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Phasellus vestibulum diam fringilla turpis tempor interdum. Maecenas egestas fringilla risus id elementum. Cras condimentum turpis et elit lobortis dignissim.
adipiscing elit. Nunc viverra est elit, eu eleifend dolor elementum non. Nunc imperdiet sagittis augue ac varius. Donec condimentum id erat sed ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi suscipit lectus id purus bibendum, a cursus metus mollis. Mauris elementum malesuada massa non lobortis. Quisque molestie convallis dictum. Curabitur sodales erat finibus nunc mattis congue. Morbi eleifend sed lectus id ultrices. Vivamus varius felis viverra turpis eleifend auctor. Duis aliquet magna ut diam lacinia, non iaculis nulla sagittis. Praesent fringilla ex augue, quis hendrerit arcu facilisis a. Fusce iaculis bibendum orci eu efficitur. Praesent tincidunt nisl a urna posuere, venenatis dapibus leo ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Donec pretium tristique enim in molestie. Fusce lacinia, enim nec bibendum dignissim, nibh nulla laoreet nisl, eget finibus augue eros eu urna. Suspendisse accumsan velit orci, non semper lacus aliquam at. Morbi semper porta eros, sed dignissim nunc auctor et. Vivamus mattis fringilla enim. Nulla pretium at neque at feugiat. Pellentesque dictum id massa nec accumsan. Etiam lectus elit, elementum at velit sit amet, tristique pellentesque sapien. Aliquam eu nisl ac est posuere imperdiet. Proin eu enim quis arcu aliquam consequat a vitae purus. Sed finibus scelerisque risus pretium faucibus. Integer eget nisl eu magna sodales rutrum.
In hac habitasse platea dictumst. Duis eget fringilla tortor. Aliquam eget magna rutrum ex pharetra vulputate. Integer in ex est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed consectetur urna odio, sit amet pretium tortor sodales et. Donec molestie bibendum diam, a volutpat urna bibendum sit amet. Fusce congue est imperdiet, lacinia diam non, tempor dui. Integer iaculis lobortis neque id malesuada. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Phasellus vestibulum diam fringilla turpis tempor interdum. Maecenas egestas fringilla risus id elementum. Cras condimentum turpis et elit lobortis dignissim.</p>
</section>
<section id="2">
<h1>Section 2</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra est elit, eu eleifend dolor elementum non. Nunc imperdiet sagittis augue ac varius. Donec condimentum id erat sed ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi suscipit lectus id purus bibendum, a cursus metus mollis. Mauris elementum malesuada massa non lobortis. Quisque molestie convallis dictum. Curabitur sodales erat finibus nunc mattis congue. Morbi eleifend sed lectus id ultrices. Vivamus varius felis viverra turpis eleifend auctor. Duis aliquet magna ut diam lacinia, non iaculis nulla sagittis. Praesent fringilla ex augue, quis hendrerit arcu facilisis a. Fusce iaculis bibendum orci eu efficitur. Praesent tincidunt nisl a urna posuere, venenatis dapibus leo ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Donec pretium tristique enim in molestie. Fusce lacinia, enim nec bibendum dignissim, nibh nulla laoreet nisl, eget finibus augue eros eu urna. Suspendisse accumsan velit orci, non semper lacus aliquam at. Morbi semper porta eros, sed dignissim nunc auctor et. Vivamus mattis fringilla enim. Nulla pretium at neque at feugiat. Pellentesque dictum id massa nec accumsan. Etiam lectus elit, elementum at velit sit amet, tristique pellentesque sapien. Aliquam eu nisl ac est posuere imperdiet. Proin eu enim quis arcu aliquam consequat a vitae purus. Sed finibus scelerisque risus pretium faucibus. Integer eget nisl eu magna sodales rutrum.
In hac habitasse platea dictumst. Duis eget fringilla tortor. Aliquam eget magna rutrum ex pharetra vulputate. Integer in ex est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed consectetur urna odio, sit amet pretium tortor sodales et. Donec molestie bibendum diam, a volutpat urna bibendum sit amet. Fusce congue est imperdiet, lacinia diam non, tempor dui. Integer iaculis lobortis neque id malesuada. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Phasellus vestibulum diam fringilla turpis tempor interdum. Maecenas egestas fringilla risus id elementum. Cras condimentum turpis et elit lobortis dignissim.
adipiscing elit. Nunc viverra est elit, eu eleifend dolor elementum non. Nunc imperdiet sagittis augue ac varius. Donec condimentum id erat sed ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi suscipit lectus id purus bibendum, a cursus metus mollis. Mauris elementum malesuada massa non lobortis. Quisque molestie convallis dictum. Curabitur sodales erat finibus nunc mattis congue. Morbi eleifend sed lectus id ultrices. Vivamus varius felis viverra turpis eleifend auctor. Duis aliquet magna ut diam lacinia, non iaculis nulla sagittis. Praesent fringilla ex augue, quis hendrerit arcu facilisis a. Fusce iaculis bibendum orci eu efficitur. Praesent tincidunt nisl a urna posuere, venenatis dapibus leo ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Donec pretium tristique enim in molestie. Fusce lacinia, enim nec bibendum dignissim, nibh nulla laoreet nisl, eget finibus augue eros eu urna. Suspendisse accumsan velit orci, non semper lacus aliquam at. Morbi semper porta eros, sed dignissim nunc auctor et. Vivamus mattis fringilla enim. Nulla pretium at neque at feugiat. Pellentesque dictum id massa nec accumsan. Etiam lectus elit, elementum at velit sit amet, tristique pellentesque sapien. Aliquam eu nisl ac est posuere imperdiet. Proin eu enim quis arcu aliquam consequat a vitae purus. Sed finibus scelerisque risus pretium faucibus. Integer eget nisl eu magna sodales rutrum.
In hac habitasse platea dictumst. Duis eget fringilla tortor. Aliquam eget magna rutrum ex pharetra vulputate. Integer in ex est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed consectetur urna odio, sit amet pretium tortor sodales et. Donec molestie bibendum diam, a volutpat urna bibendum sit amet. Fusce congue est imperdiet, lacinia diam non, tempor dui. Integer iaculis lobortis neque id malesuada. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Phasellus vestibulum diam fringilla turpis tempor interdum. Maecenas egestas fringilla risus id elementum. Cras condimentum turpis et elit lobortis dignissim.</p>
</section>
<section id="3">
<h1>Section 3</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra est elit, eu eleifend dolor elementum non. Nunc imperdiet sagittis augue ac varius. Donec condimentum id erat sed ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi suscipit lectus id purus bibendum, a cursus metus mollis. Mauris elementum malesuada massa non lobortis. Quisque molestie convallis dictum. Curabitur sodales erat finibus nunc mattis congue. Morbi eleifend sed lectus id ultrices. Vivamus varius felis viverra turpis eleifend auctor. Duis aliquet magna ut diam lacinia, non iaculis nulla sagittis. Praesent fringilla ex augue, quis hendrerit arcu facilisis a. Fusce iaculis bibendum orci eu efficitur. Praesent tincidunt nisl a urna posuere, venenatis dapibus leo ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Donec pretium tristique enim in molestie. Fusce lacinia, enim nec bibendum dignissim, nibh nulla laoreet nisl, eget finibus augue eros eu urna. Suspendisse accumsan velit orci, non semper lacus aliquam at. Morbi semper porta eros, sed dignissim nunc auctor et. Vivamus mattis fringilla enim. Nulla pretium at neque at feugiat. Pellentesque dictum id massa nec accumsan. Etiam lectus elit, elementum at velit sit amet, tristique pellentesque sapien. Aliquam eu nisl ac est posuere imperdiet. Proin eu enim quis arcu aliquam consequat a vitae purus. Sed finibus scelerisque risus pretium faucibus. Integer eget nisl eu magna sodales rutrum.
In hac habitasse platea dictumst. Duis eget fringilla tortor. Aliquam eget magna rutrum ex pharetra vulputate. Integer in ex est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed consectetur urna odio, sit amet pretium tortor sodales et. Donec molestie bibendum diam, a volutpat urna bibendum sit amet. Fusce congue est imperdiet, lacinia diam non, tempor dui. Integer iaculis lobortis neque id malesuada. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Phasellus vestibulum diam fringilla turpis tempor interdum. Maecenas egestas fringilla risus id elementum. Cras condimentum turpis et elit lobortis dignissim.
adipiscing elit. Nunc viverra est elit, eu eleifend dolor elementum non. Nunc imperdiet sagittis augue ac varius. Donec condimentum id erat sed ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi suscipit lectus id purus bibendum, a cursus metus mollis. Mauris elementum malesuada massa non lobortis. Quisque molestie convallis dictum. Curabitur sodales erat finibus nunc mattis congue. Morbi eleifend sed lectus id ultrices. Vivamus varius felis viverra turpis eleifend auctor. Duis aliquet magna ut diam lacinia, non iaculis nulla sagittis. Praesent fringilla ex augue, quis hendrerit arcu facilisis a. Fusce iaculis bibendum orci eu efficitur. Praesent tincidunt nisl a urna posuere, venenatis dapibus leo ullamcorper. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Donec pretium tristique enim in molestie. Fusce lacinia, enim nec bibendum dignissim, nibh nulla laoreet nisl, eget finibus augue eros eu urna. Suspendisse accumsan velit orci, non semper lacus aliquam at. Morbi semper porta eros, sed dignissim nunc auctor et. Vivamus mattis fringilla enim. Nulla pretium at neque at feugiat. Pellentesque dictum id massa nec accumsan. Etiam lectus elit, elementum at velit sit amet, tristique pellentesque sapien. Aliquam eu nisl ac est posuere imperdiet. Proin eu enim quis arcu aliquam consequat a vitae purus. Sed finibus scelerisque risus pretium faucibus. Integer eget nisl eu magna sodales rutrum.
In hac habitasse platea dictumst. Duis eget fringilla tortor. Aliquam eget magna rutrum ex pharetra vulputate. Integer in ex est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed consectetur urna odio, sit amet pretium tortor sodales et. Donec molestie bibendum diam, a volutpat urna bibendum sit amet. Fusce congue est imperdiet, lacinia diam non, tempor dui. Integer iaculis lobortis neque id malesuada. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Phasellus vestibulum diam fringilla turpis tempor interdum. Maecenas egestas fringilla risus id elementum. Cras condimentum turpis et elit lobortis dignissim.</p>
</section>
</main>

The goal is to highlight the menu item when at least part of its related section is visible.
MDN gives this:
The degree of intersection between the target element and its root is the intersection ratio. This is a representation of the percentage of the target element which is visible as a value between 0.0 and 1.0.
In the given code however, the threshold is set to 1
const myObserver = new IntersectionObserver(elements => {
if (elements[0].intersectionRatio == 1) {
highlight(elements[0].target);
}
}, {threshold: 1.0})
meaning all of the section must be visible for the observation to take place. When the font size is increased, or there is a lot of text in the section, this wont happen so the observation doesn't occur.
If no threshold option is set the observation will occur as soon as the section comes into view which would seem closer to what is desired. So the first thing to try is this code instead:
const myObserver = new IntersectionObserver(elements => {
if (elements[0].intersectionRatio == 1) {
highlight(elements[0].target);
}
})
There also needs to be thought given to what is required when two or more sections are partially in view, and what if two observations fire at once? The above code would be more robust if all the elements that are observed (i.e. are in that elements collection) are dealt with, and in particular to check whether they have an intersection or not. I imagine you'd want to clear the highlighting of their menu item if they aren't in view and set it if there is an intersection.
See https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API for a fuller explanation and a snippet of code which steps through all the observed elements.

Related

Side help which follows and collapses to a tab (JQuery/Bootstrap)

I am trying to add a help box at the right hand side of my page. I want it to stay in the same place as the user scrolls and I want it to collapse to a tab at the right hand side, when they close it.
A bit like this:
https://www.elated.com/articles/css3-floating-follow-tab-with-rollover-effects/
but it needs to expand and collapse.
I can't see any examples of how to do this anywhere.
I'm sure you'll find much better implementations of this, however this is one way to do it. I just threw it together, I would google around to find something that may be a bit better but this should give you an idea of how it could be done.
Note this is with a jquery library you could use vanilla javascript as well. In order to have something happen on click you will need to use javascript. If you want it to happen on hover this can be done with just css.
$(document).ready(function(){
$(document).on('click', "#helpbar span", function(){
if($(this).parent().hasClass('closed')){
$(this).parent().removeClass('closed').addClass('open');
$(this).find('p').text('CLOSE');
}else if($(this).parent().hasClass('open')){
$(this).parent().removeClass('open').addClass('closed');
$(this).find('p').text('HELP');
}
});
});
#content{width:400px;}
.closed{
width:0px;
}
.open{
width:200px;
}
#helpbar{
position: fixed;
right:0;
height:500px;
border:1px solid black;
top: 50px;
}
#helpbar span{
width:100px;
height: 100px;
margin-left:-100px;
border:1px solid black;
display:inline-block;
}
#helpbar span p{
width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ornare vel dui eget viverra. Aliquam ac hendrerit ex, pulvinar dictum nisl. Quisque vitae ullamcorper augue. Donec congue rhoncus augue, eu faucibus erat bibendum a. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla facilisi. Quisque vehicula ex ut arcu convallis molestie. Nunc sed mi eget purus aliquet consectetur in eget ex. Cras commodo arcu augue. Duis at nulla ligula. Donec id erat non ante viverra sollicitudin sodales vitae velit. Mauris vitae fermentum nulla, eget laoreet erat. Donec in eleifend ligula. Phasellus in pretium enim. Vestibulum ultricies ligula arcu, sed faucibus risus vulputate vitae.
Integer ut erat magna. Sed imperdiet est vitae est rhoncus lacinia. Proin molestie tristique neque ut condimentum. Duis consectetur varius aliquam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam at iaculis ipsum. Integer enim lacus, suscipit mollis consequat nec, lobortis sed magna. Cras ut ultricies arcu. Nulla aliquam magna nulla, ac venenatis nibh tincidunt in. Nulla tristique mauris orci, et sagittis dolor volutpat ut. Aliquam erat volutpat. Nam lectus magna, bibendum eu mauris in, lobortis dictum ipsum. Donec molestie imperdiet feugiat. Pellentesque consequat laoreet ipsum, ac rutrum nunc tempus sit amet. Integer et cursus ex.
Morbi suscipit vitae leo ut consectetur. Maecenas vehicula libero ante, et pharetra ligula varius sed. Integer in lacinia augue. Cras tincidunt justo metus, vitae laoreet orci sollicitudin et. Quisque eu lobortis nisi, vel congue purus. Maecenas malesuada feugiat euismod. Etiam eu justo sed orci semper elementum. Cras et enim gravida, cursus sapien in, consectetur ante. Praesent maximus semper convallis. Praesent sit amet massa sagittis, interdum elit pulvinar, varius erat. Vestibulum ornare, ex id porttitor luctus, odio turpis imperdiet lectus, ac vulputate ipsum metus a dolor. Curabitur et leo nunc. Quisque in nulla ac lectus tempor tempus in quis ipsum.
Cras turpis lectus, volutpat vitae hendrerit vel, sollicitudin sed massa. Suspendisse non sagittis turpis. Quisque a lacus quam. Aenean laoreet lorem at ante viverra viverra. Duis volutpat eros a lacus posuere, non faucibus massa ultrices. Ut imperdiet mi in neque porttitor finibus ac eget arcu. Aliquam quis pharetra nibh, non sagittis neque. Curabitur arcu mauris, euismod ut libero ac, facilisis malesuada sapien. Maecenas ex lectus, suscipit eget nulla molestie, placerat varius leo. Pellentesque eu sapien fringilla, blandit nisi hendrerit, lobortis nunc. Cras ac felis ullamcorper, suscipit metus nec, semper diam. Vivamus quis mauris eget metus condimentum luctus eu non est.
In viverra turpis lacus, id porttitor nibh aliquam euismod. Sed a massa dolor. Aliquam ut commodo quam. Mauris a rutrum quam, non convallis enim. Suspendisse non turpis ultrices, congue nisl eu, fringilla mauris. Donec sed libero felis. Morbi vel lorem nibh. Pellentesque vitae accumsan nisi. Vivamus ut nulla sapien. Donec at diam laoreet mauris gravida mollis. Nullam tortor ante, auctor dignissim molestie ut, tempor nec urna. Vestibulum suscipit ultrices turpis vel tristique. Curabitur fringilla magna vel tortor finibus, ac commodo ipsum accumsan. In rhoncus eleifend enim, eu malesuada ex laoreet ut. Integer elementum sem sed aliquet gravida. Aenean auctor a justo vel ultrices.
Proin accumsan, ex eget hendrerit sodales, urna leo auctor nunc, sed imperdiet tellus sem nec sem. Proin vitae enim ut ipsum blandit dapibus. Fusce tellus tortor, ultricies vel lobortis et, iaculis ut massa. Quisque ullamcorper nulla urna, sit amet sodales risus facilisis a. Nulla in augue at urna pulvinar iaculis a ut nibh. Mauris ornare magna et gravida mattis. Maecenas euismod semper dictum. Maecenas nec risus justo. Proin id iaculis felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent fermentum vestibulum dui et pellentesque. Duis gravida risus rhoncus, dapibus orci a, finibus leo. Vestibulum maximus sagittis nibh non lacinia.
Nulla sodales odio at orci lobortis luctus. Nulla condimentum a libero at ullamcorper. Etiam in tincidunt ex. Donec non dolor nec augue tincidunt pretium vitae a odio. Aenean fringilla massa erat, in molestie mauris tincidunt eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed tincidunt turpis eu justo condimentum fermentum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce mi mauris, ullamcorper at euismod a, mattis et purus.
Proin pharetra arcu ut maximus condimentum. Nullam sit amet vestibulum massa, at vulputate ipsum. Curabitur pretium ultrices sem. Pellentesque ullamcorper orci quis nisi finibus posuere. Aliquam erat volutpat. Donec porttitor justo eget mi lobortis, iaculis gravida libero gravida. Donec in tempus nulla.
Curabitur suscipit ligula sit amet mi pharetra ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla facilisi. Duis quis lectus vitae arcu mattis fermentum at non lacus. Praesent ullamcorper nibh eu ante aliquam, sed fringilla tellus vehicula. Praesent ut mollis risus. Nullam nec dictum orci. Nullam egestas, erat eget vestibulum viverra, felis arcu facilisis massa, ac rutrum tortor est vel libero. Sed fermentum lacus sed massa pellentesque, a ornare orci interdum. Morbi in turpis risus. Donec ullamcorper, quam et blandit varius, quam lorem vulputate turpis, in viverra lectus tortor efficitur ipsum. Suspendisse dictum convallis est, quis bibendum dolor aliquam ut. Aenean hendrerit sapien fermentum dapibus gravida. Morbi eu pulvinar urna. Morbi scelerisque fermentum luctus. Sed ac tortor bibendum, pretium dui tempor, facilisis risus.
Mauris a lorem tristique, euismod lorem quis, varius risus. Donec bibendum nisi sit amet lorem auctor tempus. Nullam maximus erat quis lacus tristique, non aliquet neque semper. Aliquam erat volutpat. Duis elementum, dui in euismod fermentum, mi nisi suscipit erat, vel tincidunt neque felis id felis. Suspendisse tempor mi quam, sed posuere nisl fringilla vel. Mauris vitae diam vehicula urna feugiat facilisis cursus sed ligula. Cras iaculis luctus nisi, quis dictum lacus venenatis ut. Nulla facilisi. Phasellus sit amet lacus diam.
Duis sem libero, pellentesque sed porta hendrerit, elementum commodo dui. Suspendisse felis metus, semper at urna sed, egestas ullamcorper dolor. Fusce eleifend, libero nec euismod posuere, sapien dui maximus est, ut congue lacus diam sed mi. In vitae est sed augue sodales pharetra. Donec sit amet sem magna. Integer ultricies in leo ut mollis. Vestibulum mattis varius erat, sed tempus augue finibus et. Donec feugiat accumsan diam eu efficitur. Nulla eu enim nec urna vehicula vehicula ac euismod dolor. Ut lacinia elit eget aliquam laoreet. Nullam dapibus imperdiet sem et pharetra. Nulla sed quam id turpis porta varius. Mauris dictum a tortor cursus scelerisque. Morbi eu mattis ante. Vestibulum efficitur accumsan diam et ultricies. Nullam pharetra nulla ut augue gravida, sed tincidunt dolor porttitor.
Sed molestie, massa sed mattis tincidunt, sapien velit bibendum lorem, in feugiat risus dui eu mauris. Quisque iaculis laoreet tellus, eget fringilla neque tincidunt et. Fusce metus tellus, euismod nec ornare nec, eleifend vel nunc. Donec et aliquet metus, sed tristique est. Mauris non aliquet urna, eget rutrum enim. Etiam posuere felis eget lacus pellentesque, ut dapibus dui vehicula. Proin vel fermentum ligula. Suspendisse accumsan a velit lacinia mollis. Fusce imperdiet id nisi quis maximus. Curabitur convallis eros nec hendrerit volutpat. Suspendisse vestibulum nibh urna, sed cursus odio euismod vitae. Morbi ornare tempor eros ut scelerisque.</p>
<div id="helpbar" class="closed">
<span><p>HELP</p></span>
<div>
<p>This is where the help is</p>
</div>
</div>
</div>

How to mask parent div with child div?

There's a continuous background tile in the parent, like so:
#parent{
background: url('tile-bg-under-menu.png') repeat-x center 32px;
height: 151px;
width: 100%;
background-attachment: fixed;
}
Then, I have the child, that is above the parent with another image, like so:
#parent .child {
background: url('menu-bg.png') no-repeat 50% 0px;
padding-top: 0px;
height: 170px;
margin-top: -20px;
}
So, I would like to hide the exact portion of the #parent div that is behind the .child div in the width and height of the #parent div.
I'm looking for something like the inverse of clip or anything that would work the same (masking the parent with the child).
The reason for the question:
The reason I ask this is because: the .child div has a semitransparent background, that has a portion that is overlapping #parent "horizontal tile" which is also semitransparent; so when they meet, their semitransparent portions cover/intersect each over at that part, which is ugly, and that is not part of the graphical plan.
EDIT: I can't use jpg, because the divs are floated above a "dynamic" content.
I tried to:
make a ::before and ::after work-around, outside them, but I couldn't get the content (background tile) to reach to the ends of the browser window.
make a png that is 4k in width and empty exactly at the portion where the .child is present. This was not as bad idea as it sounds, but with this there is a pixel movment to the left or to the right according to differing browsers.
The solution can be either with CSS or JavaScript - it doesen't matter.
It seems that there is no equivalent to an inverse clipping: Is there an inverse to the CSS "Clip" property; hide the clipped area?
Clarification:
The div part looks something like this:
[(#parent)tile part]{[-here curve down.child overlapping part]here curve up-}[(#parent)tile part]
The demo fiddle: https://jsfiddle.net/iorgu/13k2hn9y/
And the snippet:
header{
position: fixed
}
/*#masthead */
/*top: 25px;*/
#parent {
background: url('https://ladyfx.ae/wp-content/uploads/2018/01/upper-menu-bg.png') repeat-x center 8px;
height: 151px;
width: 100%;
background-attachment: fixed;
}
/*.header-wrap*/
#parent .child {
background: url('https://ladyfx.ae/wp-content/uploads/2018/03/menu-bg.png') no-repeat 50% 0px;
padding-top: 0px;
height: 170px;
}
#parent, #parent .child{
pointer-events: none;
}
#parent .child .container{
pointer-events: all;
}
<div id="page" class="hfeed site">
<header id="parent" class="site-header" role="banner">
<div class="child"><!-- .header-wrap -->
</div>
</header><!-- #masthead -->
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi at dui in quam placerat aliquet. In semper lectus sed lectus iaculis blandit. Etiam egestas ex ac rhoncus commodo. Praesent sagittis eget ante nec interdum. Suspendisse tempus est ac libero rhoncus, laoreet pulvinar mi sagittis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent quis tincidunt ipsum. Mauris nec arcu mollis, pellentesque nisi vitae, gravida sem. Duis vel velit vel lectus rhoncus luctus a vitae nulla. Nunc nec enim sapien. Quisque tempus dolor at viverra pharetra. Vivamus molestie bibendum sapien, vitae iaculis nisl fringilla euismod. Integer quis tincidunt ligula, at vulputate risus.
In vitae purus nec massa viverra mattis quis id lacus. Pellentesque cursus sapien nec tortor faucibus, sit amet sodales tortor faucibus. Aliquam pulvinar sollicitudin urna, ac suscipit sapien venenatis quis. Morbi eu risus in massa pretium molestie. Fusce rhoncus orci in ornare consectetur. Sed volutpat tristique nibh congue finibus. Integer semper sagittis sem vitae varius. Sed sit amet tellus in justo dictum fringilla. Pellentesque dignissim congue nulla non tincidunt. Etiam tempor ante metus, vel pretium est dapibus at.
Etiam eu consequat leo, sit amet placerat ex. Nullam sit amet lectus turpis. Curabitur ac euismod mauris, quis semper ex. Proin efficitur, odio nec tempus blandit, mauris nisl commodo turpis, a tempor lectus purus quis ex. Aliquam id ipsum risus. Mauris quis massa ut dui porttitor pharetra. Nulla aliquam tellus vitae odio rutrum efficitur. Vivamus accumsan iaculis augue, sit amet dignissim turpis aliquam sed.
Quisque finibus fringilla est vitae lobortis. Duis quis egestas nunc, vel ultricies velit. Sed blandit dolor erat, eu placerat tellus ornare dictum. Suspendisse suscipit, tortor ut auctor facilisis, lacus nisl tempor nunc, non mollis nibh velit ut elit. Duis vel laoreet quam, sit amet egestas diam. Fusce aliquam dignissim ante id bibendum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus gravida, augue at consequat mattis, diam nisl porta enim, in gravida dui tortor et tortor. Phasellus elit lacus, luctus sit amet neque id, lobortis placerat est. Donec ac tristique mi. Nulla facilisi. Aenean interdum dictum turpis laoreet vestibulum.
Morbi scelerisque, eros auctor euismod consectetur, justo diam dapibus est, id placerat neque dui ut lorem. Fusce in orci egestas, semper libero id, porta tortor. Etiam nec quam et mauris commodo posuere. Duis gravida, libero nec hendrerit venenatis, lacus felis congue ante, eget rutrum justo turpis quis massa. Donec eget magna vitae dui consequat bibendum. Morbi porta dignissim urna, eget mattis lacus commodo vel. Nunc ligula ex, suscipit in accumsan ut, laoreet eu felis. Morbi sem felis, luctus at lorem a, lobortis vulputate nulla. Duis cursus mi eget arcu placerat consequat. Curabitur venenatis consectetur varius. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam dapibus id ex id commodo.
Donec pretium leo magna, eu viverra lacus vehicula quis. Vivamus vel risus in ligula tristique feugiat ac eu erat. Nulla commodo augue a tortor iaculis varius. Maecenas id facilisis libero. Sed semper, lorem at vulputate tristique, odio ipsum condimentum mi, a volutpat dolor nisi vel risus. Pellentesque at gravida nisi, in vehicula orci. Sed vestibulum aliquam vestibulum. Ut mattis ligula in dolor eleifend, id ultrices sapien lobortis. Suspendisse sed blandit augue. Phasellus et efficitur mauris. In ac urna auctor, hendrerit mauris sed, dictum tortor. Duis nec diam interdum, hendrerit nisi ac, interdum diam. Vivamus fringilla risus nec lacus ullamcorper rutrum. Proin ac pellentesque risus.
Nunc interdum pretium feugiat. Fusce id bibendum turpis, tincidunt iaculis neque. Vestibulum at enim lobortis, venenatis magna eget, commodo est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec ipsum eget tellus efficitur auctor vitae eu augue. Etiam nec diam velit. Morbi vel pretium sapien. Suspendisse tempus faucibus orci, ut rutrum sem tincidunt a. Mauris at lorem tellus.
Nunc est velit, tristique suscipit interdum at, mollis non arcu. Sed imperdiet leo quis eleifend laoreet. Pellentesque dapibus at massa pulvinar eleifend. Suspendisse potenti. Etiam elementum placerat est nec dapibus. Nulla libero erat, mattis sed rutrum eget, molestie posuere nibh. Etiam in ex ut lorem auctor pretium. Curabitur eget scelerisque libero, a scelerisque libero. Fusce vel rutrum mauris, in elementum ligula. Vestibulum nisi lectus, blandit quis risus vitae, aliquet lobortis orci.
Pellentesque vel est vitae tellus porta sodales. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer vulputate eleifend pellentesque. Integer vel vehicula tellus. Etiam ut euismod orci, vel venenatis massa. Quisque sit amet ipsum vitae metus mollis cursus hendrerit at neque. Nunc cursus eu urna vitae efficitur. Praesent et accumsan felis. Integer maximus condimentum mi eget consequat. Nulla in nulla ullamcorper, vestibulum sem in, ultricies dolor. Vivamus eleifend auctor magna quis varius. Cras lacinia ornare volutpat. Proin porttitor lacus eget convallis mattis. Cras at urna libero. Donec est nisl, commodo in enim ut, dictum molestie neque.
Vivamus sit amet sagittis diam. Sed finibus laoreet lectus, eu rutrum tortor ullamcorper nec. Mauris finibus justo eu tellus pharetra, vel mollis diam venenatis. Aliquam hendrerit nec dolor eget blandit. Nullam id velit ac mauris malesuada dictum quis a dui. Proin nec molestie lectus. Aenean blandit tempus nisl eget scelerisque. Etiam aliquam lorem id quam pretium, quis ullamcorper ex finibus. Donec vulputate condimentum eleifend. Aenean ac consectetur sem. Aenean id eleifend diam. Suspendisse imperdiet sodales tincidunt.
Proin venenatis, tellus sed volutpat interdum, lacus mauris elementum nibh, id commodo lectus lorem vitae sem. Curabitur eget mauris massa. Curabitur viverra egestas consectetur. Donec enim ex, pharetra vitae justo nec, blandit accumsan ipsum. In ac mauris non magna imperdiet facilisis eu a leo. Nunc ipsum lacus, sollicitudin a ipsum non, commodo sagittis nibh. Cras pharetra vehicula enim at consequat.
Ut efficitur mollis erat a placerat. In feugiat mauris eu maximus tincidunt. Donec ut neque a erat vulputate aliquam in et elit. Sed eu est eu mauris rutrum auctor nec et odio. Etiam sapien purus, cursus et hendrerit vitae, fermentum non quam. Aenean a nibh eget tellus rutrum ornare. Etiam imperdiet massa convallis, commodo neque vel, tincidunt elit. Sed et varius turpis, vitae malesuada sem. Nam eu sollicitudin est. Phasellus semper sem at congue vestibulum. Phasellus nisi mi, facilisis vitae lorem et, placerat volutpat sem. Sed feugiat sapien malesuada purus sodales, sit amet faucibus dolor feugiat. Aenean nulla risus, elementum id magna a, pulvinar efficitur felis.
Proin imperdiet enim massa, at sollicitudin libero laoreet vel. Fusce euismod libero at aliquam commodo. Donec tempus enim a pretium consequat. Mauris nec fringilla purus. Aliquam in interdum augue, sed efficitur massa. Vivamus vel erat accumsan, rhoncus urna posuere, feugiat nibh. Sed efficitur magna neque, id tincidunt mauris iaculis sit amet. Nunc maximus auctor est, vitae tristique metus. Integer dapibus risus ligula, nec volutpat est maximus gravida. Praesent tempus consequat augue, et pharetra libero placerat eleifend. Curabitur congue dictum ipsum. In vitae lorem vitae orci vulputate molestie.
Mauris id elit accumsan, molestie elit et, mollis ipsum. Fusce dapibus nisi eget vestibulum pellentesque. Fusce vel tortor at mauris aliquet placerat eu non lacus. Sed vestibulum auctor ligula, sed posuere urna congue ut. Integer et molestie elit. Curabitur aliquam suscipit dui eu elementum. Fusce sollicitudin, sem ut finibus finibus, turpis enim efficitur urna, nec aliquam urna elit vitae justo. Morbi nec lectus neque. Integer aliquet est eget pharetra blandit. Maecenas tortor quam, porta vel egestas ac, consequat in lectus. Cras lacinia lectus tellus, quis varius metus molestie sed. Quisque gravida eleifend sem cursus tincidunt. Sed eget orci non nisi tempor tempus sit amet vel felis. Pellentesque quis ex sed mi ultricies tincidunt a eget velit. Phasellus finibus eget massa eleifend posuere.
Vestibulum pellentesque tellus vel bibendum eleifend. Phasellus vitae mauris leo. Nunc ut orci fringilla, maximus urna nec, cursus quam. Etiam egestas, tortor sit amet ornare dignissim, augue ante imperdiet metus, sed volutpat lacus orci congue felis. Etiam convallis mi quis ex laoreet tincidunt. Phasellus vitae turpis id magna posuere ornare. Duis et malesuada mauris, in ultricies nunc. Phasellus non felis mollis, pretium lectus id, sagittis nisi. Nullam volutpat leo ut turpis aliquet blandit. Quisque ut felis mi.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas hendrerit eros vel ipsum placerat maximus. Nunc sed vestibulum risus, quis porta est. Phasellus consequat fringilla quam, ac elementum ligula mollis a. Maecenas facilisis lectus et ornare sodales. Nullam sed rutrum urna, nec volutpat quam. Etiam iaculis a sapien eu euismod. Morbi tempus, ligula ac facilisis scelerisque, quam purus consectetur mauris, vitae iaculis quam purus ut felis. Suspendisse consectetur lobortis velit, sed ultricies purus. Curabitur erat leo, volutpat non dapibus id, pretium at lorem. Quisque accumsan purus sit amet volutpat dapibus. Vestibulum malesuada ipsum in ipsum consectetur blandit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer in est tincidunt, lobortis odio et, ultrices ligula. Suspendisse tempus quis nisl in efficitur. Nunc in leo cursus, interdum sapien ut, porta est.
Morbi a arcu quis libero pretium lobortis. In nisl tortor, ullamcorper fermentum elit ut, vestibulum vestibulum tortor. Maecenas vitae libero a lorem commodo blandit eget id erat. Mauris ac ultrices dolor. Mauris volutpat magna sit amet diam consequat, in lacinia lorem iaculis. Phasellus et urna augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
Vestibulum at risus sit amet sem elementum efficitur in eu lectus. Curabitur at turpis at ante sagittis dapibus id nec turpis. Pellentesque placerat lectus eget mauris tincidunt, ut porta velit faucibus. Nunc sed malesuada ex, in mattis dolor. Nam ac purus laoreet, aliquet lorem quis, posuere libero. In suscipit est ornare congue auctor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus nec eleifend justo. Nam ut dapibus mi, quis scelerisque velit. Sed nec lectus egestas, sollicitudin ante ac, bibendum massa. Curabitur nec volutpat purus.
Cras sed ligula ut ipsum tincidunt mollis. Sed egestas tellus erat, vel porta nulla facilisis eu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla tempor lorem et neque auctor euismod. Nam ac interdum turpis. Vivamus placerat ipsum nec nibh laoreet efficitur. Curabitur fringilla vestibulum nibh ut euismod. In suscipit rutrum aliquet. Vivamus non euismod velit, sit amet cursus elit. Cras ultricies velit sed tellus ullamcorper, eu auctor leo euismod. Donec at ultrices est. Cras mollis justo eu interdum suscipit.
Vivamus eleifend justo id diam posuere dictum. Aliquam posuere, orci dapibus lacinia eleifend, tellus neque consequat diam, eu laoreet sem lacus quis libero. Curabitur rhoncus at sem non feugiat. Maecenas blandit imperdiet leo sit amet euismod. Vivamus rutrum eleifend lectus sit amet pellentesque. Pellentesque sodales nunc a odio faucibus pretium gravida eu ligula. Suspendisse pharetra ipsum vel ultricies malesuada. Aenean eget lobortis justo, in posuere enim. Praesent rutrum porta metus, sollicitudin maximus risus semper eu. Sed volutpat tincidunt lectus, ac scelerisque massa rhoncus in. Mauris eget augue venenatis, ultricies turpis ac, finibus odio. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas lobortis vehicula dolor, vitae congue ligula ultrices id. Integer vitae lacus in mauris finibus varius nec sed est.
</div>
</div>
You can achieve this with display flex, see code below
I moved the background image for the parent to the 2 spacer children. With the logo being the child in the middle. I set the spacers to flex-grow: 1 so they will expand the width.
Your logo image currently, needs to be properly centered (edit the image so it is symmetrical)
If you want to learn more about flex read https://css-tricks.com/snippets/css/a-guide-to-flexbox/
header{
position: fixed
}
/*#masthead */
/*top: 25px;*/
#parent {
display: flex;
height: 151px;
width: 100%;
}
/*.header-wrap*/
#parent .child {
background: url('https://ladyfx.ae/wp-content/uploads/2018/03/menu-bg.png') no-repeat 50% 0px;
padding-top: 0px;
height: 170px;
width: 553px;
}
#parent, #parent .child{
pointer-events: none;
}
#parent .child .container{
pointer-events: all;
}
.spacer {
background: url('https://ladyfx.ae/wp-content/uploads/2018/01/upper-menu-bg.png') repeat-x center 8px;
height: 151px;
background-attachment: fixed;
flex-grow: 1;
}
<div id="page" class="hfeed site">
<header id="parent" class="site-header" role="banner">
<div class="spacer">
</div>
<div class="child"><!-- .header-wrap -->
</div>
<div class="spacer">
</div>
</header><!-- #masthead -->
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi at dui in quam placerat aliquet. In semper lectus sed lectus iaculis blandit. Etiam egestas ex ac rhoncus commodo. Praesent sagittis eget ante nec interdum. Suspendisse tempus est ac libero rhoncus, laoreet pulvinar mi sagittis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent quis tincidunt ipsum. Mauris nec arcu mollis, pellentesque nisi vitae, gravida sem. Duis vel velit vel lectus rhoncus luctus a vitae nulla. Nunc nec enim sapien. Quisque tempus dolor at viverra pharetra. Vivamus molestie bibendum sapien, vitae iaculis nisl fringilla euismod. Integer quis tincidunt ligula, at vulputate risus.
In vitae purus nec massa viverra mattis quis id lacus. Pellentesque cursus sapien nec tortor faucibus, sit amet sodales tortor faucibus. Aliquam pulvinar sollicitudin urna, ac suscipit sapien venenatis quis. Morbi eu risus in massa pretium molestie. Fusce rhoncus orci in ornare consectetur. Sed volutpat tristique nibh congue finibus. Integer semper sagittis sem vitae varius. Sed sit amet tellus in justo dictum fringilla. Pellentesque dignissim congue nulla non tincidunt. Etiam tempor ante metus, vel pretium est dapibus at.
Etiam eu consequat leo, sit amet placerat ex. Nullam sit amet lectus turpis. Curabitur ac euismod mauris, quis semper ex. Proin efficitur, odio nec tempus blandit, mauris nisl commodo turpis, a tempor lectus purus quis ex. Aliquam id ipsum risus. Mauris quis massa ut dui porttitor pharetra. Nulla aliquam tellus vitae odio rutrum efficitur. Vivamus accumsan iaculis augue, sit amet dignissim turpis aliquam sed.
Quisque finibus fringilla est vitae lobortis. Duis quis egestas nunc, vel ultricies velit. Sed blandit dolor erat, eu placerat tellus ornare dictum. Suspendisse suscipit, tortor ut auctor facilisis, lacus nisl tempor nunc, non mollis nibh velit ut elit. Duis vel laoreet quam, sit amet egestas diam. Fusce aliquam dignissim ante id bibendum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus gravida, augue at consequat mattis, diam nisl porta enim, in gravida dui tortor et tortor. Phasellus elit lacus, luctus sit amet neque id, lobortis placerat est. Donec ac tristique mi. Nulla facilisi. Aenean interdum dictum turpis laoreet vestibulum.
Morbi scelerisque, eros auctor euismod consectetur, justo diam dapibus est, id placerat neque dui ut lorem. Fusce in orci egestas, semper libero id, porta tortor. Etiam nec quam et mauris commodo posuere. Duis gravida, libero nec hendrerit venenatis, lacus felis congue ante, eget rutrum justo turpis quis massa. Donec eget magna vitae dui consequat bibendum. Morbi porta dignissim urna, eget mattis lacus commodo vel. Nunc ligula ex, suscipit in accumsan ut, laoreet eu felis. Morbi sem felis, luctus at lorem a, lobortis vulputate nulla. Duis cursus mi eget arcu placerat consequat. Curabitur venenatis consectetur varius. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam dapibus id ex id commodo.
Donec pretium leo magna, eu viverra lacus vehicula quis. Vivamus vel risus in ligula tristique feugiat ac eu erat. Nulla commodo augue a tortor iaculis varius. Maecenas id facilisis libero. Sed semper, lorem at vulputate tristique, odio ipsum condimentum mi, a volutpat dolor nisi vel risus. Pellentesque at gravida nisi, in vehicula orci. Sed vestibulum aliquam vestibulum. Ut mattis ligula in dolor eleifend, id ultrices sapien lobortis. Suspendisse sed blandit augue. Phasellus et efficitur mauris. In ac urna auctor, hendrerit mauris sed, dictum tortor. Duis nec diam interdum, hendrerit nisi ac, interdum diam. Vivamus fringilla risus nec lacus ullamcorper rutrum. Proin ac pellentesque risus.
Nunc interdum pretium feugiat. Fusce id bibendum turpis, tincidunt iaculis neque. Vestibulum at enim lobortis, venenatis magna eget, commodo est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec ipsum eget tellus efficitur auctor vitae eu augue. Etiam nec diam velit. Morbi vel pretium sapien. Suspendisse tempus faucibus orci, ut rutrum sem tincidunt a. Mauris at lorem tellus.
Nunc est velit, tristique suscipit interdum at, mollis non arcu. Sed imperdiet leo quis eleifend laoreet. Pellentesque dapibus at massa pulvinar eleifend. Suspendisse potenti. Etiam elementum placerat est nec dapibus. Nulla libero erat, mattis sed rutrum eget, molestie posuere nibh. Etiam in ex ut lorem auctor pretium. Curabitur eget scelerisque libero, a scelerisque libero. Fusce vel rutrum mauris, in elementum ligula. Vestibulum nisi lectus, blandit quis risus vitae, aliquet lobortis orci.
Pellentesque vel est vitae tellus porta sodales. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer vulputate eleifend pellentesque. Integer vel vehicula tellus. Etiam ut euismod orci, vel venenatis massa. Quisque sit amet ipsum vitae metus mollis cursus hendrerit at neque. Nunc cursus eu urna vitae efficitur. Praesent et accumsan felis. Integer maximus condimentum mi eget consequat. Nulla in nulla ullamcorper, vestibulum sem in, ultricies dolor. Vivamus eleifend auctor magna quis varius. Cras lacinia ornare volutpat. Proin porttitor lacus eget convallis mattis. Cras at urna libero. Donec est nisl, commodo in enim ut, dictum molestie neque.
Vivamus sit amet sagittis diam. Sed finibus laoreet lectus, eu rutrum tortor ullamcorper nec. Mauris finibus justo eu tellus pharetra, vel mollis diam venenatis. Aliquam hendrerit nec dolor eget blandit. Nullam id velit ac mauris malesuada dictum quis a dui. Proin nec molestie lectus. Aenean blandit tempus nisl eget scelerisque. Etiam aliquam lorem id quam pretium, quis ullamcorper ex finibus. Donec vulputate condimentum eleifend. Aenean ac consectetur sem. Aenean id eleifend diam. Suspendisse imperdiet sodales tincidunt.
Proin venenatis, tellus sed volutpat interdum, lacus mauris elementum nibh, id commodo lectus lorem vitae sem. Curabitur eget mauris massa. Curabitur viverra egestas consectetur. Donec enim ex, pharetra vitae justo nec, blandit accumsan ipsum. In ac mauris non magna imperdiet facilisis eu a leo. Nunc ipsum lacus, sollicitudin a ipsum non, commodo sagittis nibh. Cras pharetra vehicula enim at consequat.
Ut efficitur mollis erat a placerat. In feugiat mauris eu maximus tincidunt. Donec ut neque a erat vulputate aliquam in et elit. Sed eu est eu mauris rutrum auctor nec et odio. Etiam sapien purus, cursus et hendrerit vitae, fermentum non quam. Aenean a nibh eget tellus rutrum ornare. Etiam imperdiet massa convallis, commodo neque vel, tincidunt elit. Sed et varius turpis, vitae malesuada sem. Nam eu sollicitudin est. Phasellus semper sem at congue vestibulum. Phasellus nisi mi, facilisis vitae lorem et, placerat volutpat sem. Sed feugiat sapien malesuada purus sodales, sit amet faucibus dolor feugiat. Aenean nulla risus, elementum id magna a, pulvinar efficitur felis.
Proin imperdiet enim massa, at sollicitudin libero laoreet vel. Fusce euismod libero at aliquam commodo. Donec tempus enim a pretium consequat. Mauris nec fringilla purus. Aliquam in interdum augue, sed efficitur massa. Vivamus vel erat accumsan, rhoncus urna posuere, feugiat nibh. Sed efficitur magna neque, id tincidunt mauris iaculis sit amet. Nunc maximus auctor est, vitae tristique metus. Integer dapibus risus ligula, nec volutpat est maximus gravida. Praesent tempus consequat augue, et pharetra libero placerat eleifend. Curabitur congue dictum ipsum. In vitae lorem vitae orci vulputate molestie.
Mauris id elit accumsan, molestie elit et, mollis ipsum. Fusce dapibus nisi eget vestibulum pellentesque. Fusce vel tortor at mauris aliquet placerat eu non lacus. Sed vestibulum auctor ligula, sed posuere urna congue ut. Integer et molestie elit. Curabitur aliquam suscipit dui eu elementum. Fusce sollicitudin, sem ut finibus finibus, turpis enim efficitur urna, nec aliquam urna elit vitae justo. Morbi nec lectus neque. Integer aliquet est eget pharetra blandit. Maecenas tortor quam, porta vel egestas ac, consequat in lectus. Cras lacinia lectus tellus, quis varius metus molestie sed. Quisque gravida eleifend sem cursus tincidunt. Sed eget orci non nisi tempor tempus sit amet vel felis. Pellentesque quis ex sed mi ultricies tincidunt a eget velit. Phasellus finibus eget massa eleifend posuere.
Vestibulum pellentesque tellus vel bibendum eleifend. Phasellus vitae mauris leo. Nunc ut orci fringilla, maximus urna nec, cursus quam. Etiam egestas, tortor sit amet ornare dignissim, augue ante imperdiet metus, sed volutpat lacus orci congue felis. Etiam convallis mi quis ex laoreet tincidunt. Phasellus vitae turpis id magna posuere ornare. Duis et malesuada mauris, in ultricies nunc. Phasellus non felis mollis, pretium lectus id, sagittis nisi. Nullam volutpat leo ut turpis aliquet blandit. Quisque ut felis mi.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas hendrerit eros vel ipsum placerat maximus. Nunc sed vestibulum risus, quis porta est. Phasellus consequat fringilla quam, ac elementum ligula mollis a. Maecenas facilisis lectus et ornare sodales. Nullam sed rutrum urna, nec volutpat quam. Etiam iaculis a sapien eu euismod. Morbi tempus, ligula ac facilisis scelerisque, quam purus consectetur mauris, vitae iaculis quam purus ut felis. Suspendisse consectetur lobortis velit, sed ultricies purus. Curabitur erat leo, volutpat non dapibus id, pretium at lorem. Quisque accumsan purus sit amet volutpat dapibus. Vestibulum malesuada ipsum in ipsum consectetur blandit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer in est tincidunt, lobortis odio et, ultrices ligula. Suspendisse tempus quis nisl in efficitur. Nunc in leo cursus, interdum sapien ut, porta est.
Morbi a arcu quis libero pretium lobortis. In nisl tortor, ullamcorper fermentum elit ut, vestibulum vestibulum tortor. Maecenas vitae libero a lorem commodo blandit eget id erat. Mauris ac ultrices dolor. Mauris volutpat magna sit amet diam consequat, in lacinia lorem iaculis. Phasellus et urna augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
Vestibulum at risus sit amet sem elementum efficitur in eu lectus. Curabitur at turpis at ante sagittis dapibus id nec turpis. Pellentesque placerat lectus eget mauris tincidunt, ut porta velit faucibus. Nunc sed malesuada ex, in mattis dolor. Nam ac purus laoreet, aliquet lorem quis, posuere libero. In suscipit est ornare congue auctor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus nec eleifend justo. Nam ut dapibus mi, quis scelerisque velit. Sed nec lectus egestas, sollicitudin ante ac, bibendum massa. Curabitur nec volutpat purus.
Cras sed ligula ut ipsum tincidunt mollis. Sed egestas tellus erat, vel porta nulla facilisis eu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla tempor lorem et neque auctor euismod. Nam ac interdum turpis. Vivamus placerat ipsum nec nibh laoreet efficitur. Curabitur fringilla vestibulum nibh ut euismod. In suscipit rutrum aliquet. Vivamus non euismod velit, sit amet cursus elit. Cras ultricies velit sed tellus ullamcorper, eu auctor leo euismod. Donec at ultrices est. Cras mollis justo eu interdum suscipit.
Vivamus eleifend justo id diam posuere dictum. Aliquam posuere, orci dapibus lacinia eleifend, tellus neque consequat diam, eu laoreet sem lacus quis libero. Curabitur rhoncus at sem non feugiat. Maecenas blandit imperdiet leo sit amet euismod. Vivamus rutrum eleifend lectus sit amet pellentesque. Pellentesque sodales nunc a odio faucibus pretium gravida eu ligula. Suspendisse pharetra ipsum vel ultricies malesuada. Aenean eget lobortis justo, in posuere enim. Praesent rutrum porta metus, sollicitudin maximus risus semper eu. Sed volutpat tincidunt lectus, ac scelerisque massa rhoncus in. Mauris eget augue venenatis, ultricies turpis ac, finibus odio. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas lobortis vehicula dolor, vitae congue ligula ultrices id. Integer vitae lacus in mauris finibus varius nec sed est.
</div>
</div>
i think this is what you need. utilizing css position property
.parent {
height: 200px;
background: red;
background-image: url('src-to-image');
position: relative;
}
.overlay {
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 100px;
background: rgba(0, 0, 0, 0.5);
}
.overlay > img {
position: relative;
/**use top and left property to even cover more specify areas**/
display: inline-block;
/**set width, height property to specify coverage dimensions*/
}
<div class="parent">
<div class="overlay">
<img src="" alt="" />
</div>
</div>

Javascript- Background scrolling slower when there is more content on the webpage on different screen resolutions

I made a webpage and wanted to have the background move slower when scrolling, so that the whole background image is fully visible. When I add content to that webpage the total scrolling height changes. So I made a calculation that slows down the scrolling speed when there is more content.
It works when I tested it on my 1920x1080 screen.
When I tested it on different screen resolutions it did not work properly anymore. The background repeated itself on the top causing a weird transition. I tried to make changes to the calculations but I did not get it to work.
How can I prevent that transition from happening on other screen resolutions?
function calcParallax(tileheight, speedratio, scrollposition)
{
return ((tileheight) - (Math.floor(scrollposition / speedratio) % (tileheight+1)));
}
window.onload = function() {
window.onscroll = function() {
var posY = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : window.pageYOffset;
var ground = document.getElementById('ground');
var body = document.body,
html = document.documentElement;
var webheight = Math.max( body.scrollHeight, body.offsetHeight,
html.clientHeight, html.scrollHeight, html.offsetHeight );
//10001 is the scroll length of page where you need a speedratio of 5.7 to see the full background image.
//This only works on 1920x1080
var speedratio = webheight * 5.7 / 10001;
//2670 is the height of the background image.
var groundparallax = calcParallax(2670, speedratio, posY);
ground.style.backgroundPosition = "0 " + groundparallax + "px";
};
};
body
{
height: 100%;
background-repeat: no-repeat;
background-size: cover;
}
#ground {
background-repeat: repeat;
background-attachment: fixed;
}
.pageContentBox
{
margin-left: 170px;
margin-right: 170px;
background-color: rgba(57, 57, 57, 0.5);
}
.pageContent
{
margin-left: 50px;
margin-right: 50px;
color: white;
}
<body id='ground' background="https://i.imgur.com/Yljakhv.jpg">
<div class= pageContentBox align="centre">
<div class= pageContent align="centre">
<h1>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et urna ultrices felis sagittis bibendum. Proin mattis faucibus augue. Aliquam eu erat ac orci pretium tempor sit amet eget ex. Fusce eget pharetra turpis. Ut tristique aliquet ligula, quis iaculis sem. Phasellus tempus imperdiet felis. Donec sit amet lacinia purus. In vitae tincidunt ante, nec feugiat odio. Integer ultrices sem sed finibus porttitor. Vestibulum egestas vehicula ultricies. Morbi vehicula urna ut ipsum sodales porta. Mauris turpis nisi, imperdiet eget feugiat vitae, hendrerit eu massa. Vestibulum luctus sit amet turpis at condimentum. Suspendisse in est ultrices, facilisis nisl vestibulum, sollicitudin justo. Curabitur ultricies malesuada purus eu viverra. Phasellus interdum venenatis porttitor.
Mauris fringilla vulputate iaculis. Nunc urna lectus, varius quis pharetra at, fringilla a erat. Maecenas mollis orci sed enim sagittis, sit amet dignissim nibh pellentesque. Vivamus laoreet ultrices urna, ut blandit enim. Ut volutpat arcu interdum mi placerat tempor. Sed placerat lacus lectus, vitae placerat neque scelerisque vitae. Morbi semper lobortis eros. Maecenas semper, magna ac fringilla rhoncus, est urna suscipit ante, bibendum sodales urna lectus id turpis. Vivamus semper justo sed ligula dictum, non scelerisque tortor consectetur. Integer metus tellus, posuere eget nisl ac, fermentum sodales diam. Nunc tincidunt laoreet mauris, sed pharetra nulla ultrices at. Curabitur vel est massa.
Donec eu imperdiet nulla. Pellentesque tristique semper congue. Pellentesque iaculis ut ligula quis efficitur. Fusce nec nisi pulvinar nisl suscipit pharetra. Nunc ac varius augue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sem augue, euismod a leo in, laoreet imperdiet magna. Etiam pellentesque eros magna, quis viverra nunc laoreet in.
Donec ut varius ante. Nunc tristique, tellus feugiat fringilla mattis, ante augue vehicula mi, at elementum massa nibh nec erat. Phasellus euismod, metus non vulputate imperdiet, ante lacus laoreet augue, ut condimentum tortor enim at augue. Donec congue et dolor vel maximus. Sed volutpat orci eget dui blandit, at laoreet nisl dapibus. Nunc vitae interdum dui. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ipsum dui, bibendum ac faucibus mattis, pharetra id enim. Morbi faucibus ante id lacus consectetur, ut commodo neque molestie.
Pellentesque convallis blandit accumsan. Quisque non nunc ac massa venenatis blandit nec a nisl. Ut iaculis sagittis lectus. Donec ut porta nisi. Integer eget venenatis nibh. Nulla et interdum augue. Mauris non gravida nisi, et imperdiet ante. Cras convallis aliquam ullamcorper. Cras malesuada scelerisque justo, pretium sagittis quam dignissim quis. Curabitur tempus porta hendrerit. Morbi at varius risus. Proin elementum, erat nec auctor maximus, elit mauris accumsan dolor, et hendrerit nulla diam vitae quam. Aliquam malesuada sollicitudin arcu eu porta. Suspendisse eget massa massa. Curabitur et urna placerat, molestie justo in, mollis dolor.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et urna ultrices felis sagittis bibendum. Proin mattis faucibus augue. Aliquam eu erat ac orci pretium tempor sit amet eget ex. Fusce eget pharetra turpis. Ut tristique aliquet ligula, quis iaculis sem. Phasellus tempus imperdiet felis. Donec sit amet lacinia purus. In vitae tincidunt ante, nec feugiat odio. Integer ultrices sem sed finibus porttitor. Vestibulum egestas vehicula ultricies. Morbi vehicula urna ut ipsum sodales porta. Mauris turpis nisi, imperdiet eget feugiat vitae, hendrerit eu massa. Vestibulum luctus sit amet turpis at condimentum. Suspendisse in est ultrices, facilisis nisl vestibulum, sollicitudin justo. Curabitur ultricies malesuada purus eu viverra. Phasellus interdum venenatis porttitor.
Mauris fringilla vulputate iaculis. Nunc urna lectus, varius quis pharetra at, fringilla a erat. Maecenas mollis orci sed enim sagittis, sit amet dignissim nibh pellentesque. Vivamus laoreet ultrices urna, ut blandit enim. Ut volutpat arcu interdum mi placerat tempor. Sed placerat lacus lectus, vitae placerat neque scelerisque vitae. Morbi semper lobortis eros. Maecenas semper, magna ac fringilla rhoncus, est urna suscipit ante, bibendum sodales urna lectus id turpis. Vivamus semper justo sed ligula dictum, non scelerisque tortor consectetur. Integer metus tellus, posuere eget nisl ac, fermentum sodales diam. Nunc tincidunt laoreet mauris, sed pharetra nulla ultrices at. Curabitur vel est massa.
Donec eu imperdiet nulla. Pellentesque tristique semper congue. Pellentesque iaculis ut ligula quis efficitur. Fusce nec nisi pulvinar nisl suscipit pharetra. Nunc ac varius augue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sem augue, euismod a leo in, laoreet imperdiet magna. Etiam pellentesque eros magna, quis viverra nunc laoreet in.
Donec ut varius ante. Nunc tristique, tellus feugiat fringilla mattis, ante augue vehicula mi, at elementum massa nibh nec erat. Phasellus euismod, metus non vulputate imperdiet, ante lacus laoreet augue, ut condimentum tortor enim at augue. Donec congue et dolor vel maximus. Sed volutpat orci eget dui blandit, at laoreet nisl dapibus. Nunc vitae interdum dui. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ipsum dui, bibendum ac faucibus mattis, pharetra id enim. Morbi faucibus ante id lacus consectetur, ut commodo neque molestie.
Pellentesque convallis blandit accumsan. Quisque non nunc ac massa venenatis blandit nec a nisl. Ut iaculis sagittis lectus. Donec ut porta nisi. Integer eget venenatis nibh. Nulla et interdum augue. Mauris non gravida nisi, et imperdiet ante. Cras convallis aliquam ullamcorper. Cras malesuada scelerisque justo, pretium sagittis quam dignissim quis. Curabitur tempus porta hendrerit. Morbi at varius risus. Proin elementum, erat nec auctor maximus, elit mauris accumsan dolor, et hendrerit nulla diam vitae quam. Aliquam malesuada sollicitudin arcu eu porta. Suspendisse eget massa massa. Curabitur et urna placerat, molestie justo in, mollis dolor.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et urna ultrices felis sagittis bibendum. Proin mattis faucibus augue. Aliquam eu erat ac orci pretium tempor sit amet eget ex. Fusce eget pharetra turpis. Ut tristique aliquet ligula, quis iaculis sem. Phasellus tempus imperdiet felis. Donec sit amet lacinia purus. In vitae tincidunt ante, nec feugiat odio. Integer ultrices sem sed finibus porttitor. Vestibulum egestas vehicula ultricies. Morbi vehicula urna ut ipsum sodales porta. Mauris turpis nisi, imperdiet eget feugiat vitae, hendrerit eu massa. Vestibulum luctus sit amet turpis at condimentum. Suspendisse in est ultrices, facilisis nisl vestibulum, sollicitudin justo. Curabitur ultricies malesuada purus eu viverra. Phasellus interdum venenatis porttitor.
Mauris fringilla vulputate iaculis. Nunc urna lectus, varius quis pharetra at, fringilla a erat. Maecenas mollis orci sed enim sagittis, sit amet dignissim nibh pellentesque. Vivamus laoreet ultrices urna, ut blandit enim. Ut volutpat arcu interdum mi placerat tempor. Sed placerat lacus lectus, vitae placerat neque scelerisque vitae. Morbi semper lobortis eros. Maecenas semper, magna ac fringilla rhoncus, est urna suscipit ante, bibendum sodales urna lectus id turpis. Vivamus semper justo sed ligula dictum, non scelerisque tortor consectetur. Integer metus tellus, posuere eget nisl ac, fermentum sodales diam. Nunc tincidunt laoreet mauris, sed pharetra nulla ultrices at. Curabitur vel est massa.
Donec eu imperdiet nulla. Pellentesque tristique semper congue. Pellentesque iaculis ut ligula quis efficitur. Fusce nec nisi pulvinar nisl suscipit pharetra. Nunc ac varius augue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sem augue, euismod a leo in, laoreet imperdiet magna. Etiam pellentesque eros magna, quis viverra nunc laoreet in.
Donec ut varius ante. Nunc tristique, tellus feugiat fringilla mattis, ante augue vehicula mi, at elementum massa nibh nec erat. Phasellus euismod, metus non vulputate imperdiet, ante lacus laoreet augue, ut condimentum tortor enim at augue. Donec congue et dolor vel maximus. Sed volutpat orci eget dui blandit, at laoreet nisl dapibus. Nunc vitae interdum dui. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ipsum dui, bibendum ac faucibus mattis, pharetra id enim. Morbi faucibus ante id lacus consectetur, ut commodo neque molestie.
Pellentesque convallis blandit accumsan. Quisque non nunc ac massa venenatis blandit nec a nisl. Ut iaculis sagittis lectus. Donec ut porta nisi. Integer eget venenatis nibh. Nulla et interdum augue. Mauris non gravida nisi, et imperdiet ante. Cras convallis aliquam ullamcorper. Cras malesuada scelerisque justo, pretium sagittis quam dignissim quis. Curabitur tempus porta hendrerit. Morbi at varius risus. Proin elementum, erat nec auctor maximus, elit mauris accumsan dolor, et hendrerit nulla diam vitae quam. Aliquam malesuada sollicitudin arcu eu porta. Suspendisse eget massa massa. Curabitur et urna placerat, molestie justo in, mollis dolor.
</h1>
</div>
</div>
In browser all html rendering and executing javascript is running on main-thread so animation performance will degraded
(if you are using animation property that running on main-thread , also scrolling is affected by main-thread activity)
Always use animation property that are running on compositor-thread e.g transform, opacity so animation not will affected by main-thread, result in smooth animation effect.
see which property will running on compositor-thread or on main-thread cssTrigger
Read below articles before start working on animation.
Css-vs-Javascript
Animations-and-Performance
The-basics-of-Easing
Animating-between-Views

toggleClass not working in IE or Edge

I have a piece of jquery which expands a hidden selection of text when clicked it also changes the drop down arrow to face the other way when clicked.
Here is an example -
$(document).ready(function(){
$(".toggle-1").click(function(){
$("#div-1").toggle(1000);
$("#arrow-1").toggleClass("up");
});
});
$(document).ready(function(){
$(".toggle-2").click(function(){
$("#div-2").toggle(1000);
$("#arrow-2").toggleClass("up");
});
});
body {text-align:center}
p {text-align:left}
a.toggle-1 {font-size:1.5em;font-weight:bold;text-decoration:none;}
a.toggle-1:hover {font-size:1.5em;font-weight:bold;text-decoration:underline;}
a.toggle-2 {font-size:1.5em;font-weight:bold;text-decoration:none;}
a.toggle-2:hover {font-size:1.5em;font-weight:bold;text-decoration:underline;}
.arrow:after {font-weight:bold; content:" ⮛";}
.arrow.up:after {font-weight:bold; content:" ⮙";}
#div-1 {display:none}
#div-2 {display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Welcome</h2>
<a class="toggle-1" href="javascript:void(0)">Click Here<span id="arrow-1" class="arrow"></span></a>
<div id="div-1">
<p>Proin ultricies dolor dapibus, ornare dolor sed, commodo lectus. Suspendisse aliquet placerat ante et elementum. Fusce eleifend erat sit amet massa sollicitudin sodales. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed vitae diam eget nisi fringilla vehicula. Integer ac ipsum tincidunt, imperdiet risus et, viverra sem. Suspendisse urna erat, interdum sed justo vitae, aliquet viverra arcu. Curabitur in vulputate dolor. Proin neque nunc, condimentum id sollicitudin ac, vehicula eu neque. Morbi pharetra sagittis erat non pellentesque. Nullam quis blandit ex, vitae dapibus nibh. Nullam porttitor velit nisi, at dictum tortor dictum a.</p>
</div>
<div style="clear:left;margin-top:50px;margin-bottom:50px"></div>
<a class="toggle-2" href="javascript:void(0)">Click Here too!<span id="arrow-2" class="arrow"></span></a>
<div id="div-2">
<p>Morbi ut rhoncus mauris, nec vestibulum eros. Aenean tincidunt consectetur lacus at ultrices. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur quis accumsan leo. Nam in leo ex. Quisque quis porttitor quam, non porttitor lacus. Proin eget nisl libero. Suspendisse efficitur pretium neque sed rhoncus. Proin hendrerit efficitur mi vitae ullamcorper. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur nec lorem pretium, venenatis tortor id, imperdiet lorem. Praesent maximus ipsum ante, scelerisque malesuada mauris cursus ut. Pellentesque nunc massa, varius vel egestas sed, mollis eget lorem. Etiam tempor luctus faucibus. Phasellus fringilla vel augue ornare gravida.</p>
</div>
The code seems to work fine, but only if I use Firefox or Chrome.
Every time I try using Microsoft Edge or IE, the div expands, but the class toggle does not work, is there something I am missing here?
You need to define content in such a way that both values doesn't have the same pattern:
For example:
.arrow:after {content:"⮛";}
.arrow.up:after {content:" ⮙";}
Add an empty space character before content value in any of the above will make it work in IE browsers as well.
In your code you have spaces before in both cases so because of same number of spaces (similar pattern) its not working.
I'm not sure about the reason behind such behavior of IE. May be its a bug or something else however doing so will make it working in IE browsers.
$(document).ready(function(){
$(".toggle-1").click(function(){
$("#div-1").toggle(1000);
$("#arrow-1").toggleClass("up");
});
});
$(document).ready(function(){
$(".toggle-2").click(function(){
$("#div-2").toggle(1000);
$("#arrow-2").toggleClass("up");
});
});
body {text-align:center}
p {text-align:left}
a.toggle-1 {font-size:1.5em;font-weight:bold;text-decoration:none;}
a.toggle-1:hover {font-size:1.5em;font-weight:bold;text-decoration:underline;}
a.toggle-2 {font-size:1.5em;font-weight:bold;text-decoration:none;}
a.toggle-2:hover {font-size:1.5em;font-weight:bold;text-decoration:underline;}
.arrow:after {font-weight:bold; content:"⮛";}
.arrow.up:after {font-weight:bold; content:" ⮙";}
#div-1 {display:none}
#div-2 {display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Welcome</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut porttitor felis dui, nec hendrerit erat condimentum non. Sed orci eros, volutpat vitae nisi et, auctor sodales libero. Maecenas dignissim augue eget orci euismod, eu maximus felis vehicula. Etiam ut elit pharetra, gravida metus at, lacinia sapien. Aliquam non est ut dui dictum hendrerit. Cras condimentum ante purus. Vivamus volutpat vel mauris vel molestie. Nulla nec fringilla enim. Nunc sed mi eleifend, viverra mi at, pretium nibh. Aliquam erat volutpat. Ut at dapibus mauris. Morbi volutpat vitae lacus ut tempor. Aliquam erat volutpat. Nullam et lectus feugiat, tempor nunc et, aliquam augue.</p>
<a class="toggle-1" href="javascript:void(0)">Click Here<span id="arrow-1" class="arrow"></span></a>
<div id="div-1">
<p> Proin ultricies dolor dapibus, ornare dolor sed, commodo lectus. Suspendisse aliquet placerat ante et elementum. Fusce eleifend erat sit amet massa sollicitudin sodales. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed vitae diam eget nisi fringilla vehicula. Integer ac ipsum tincidunt, imperdiet risus et, viverra sem. Suspendisse urna erat, interdum sed justo vitae, aliquet viverra arcu. Curabitur in vulputate dolor. Proin neque nunc, condimentum id sollicitudin ac, vehicula eu neque. Morbi pharetra sagittis erat non pellentesque. Nullam quis blandit ex, vitae dapibus nibh. Nullam porttitor velit nisi, at dictum tortor dictum a.
Donec eu consequat ex, eu dapibus lectus. Suspendisse sit amet sapien sed quam mollis condimentum. Maecenas ullamcorper volutpat facilisis. Sed eget porta purus, ac fermentum erat. Cras tincidunt, mi vel scelerisque consectetur, ligula urna scelerisque justo, quis commodo tellus purus sit amet velit. Nam accumsan, odio ut ullamcorper luctus, nisi risus iaculis massa, a mollis ante eros vel nibh. Sed et orci tincidunt, suscipit erat non, rutrum urna. </p>
</div>
<div style="clear:left;margin-top:50px;margin-bottom:50px"></div>
<a class="toggle-2" href="javascript:void(0)">Click Here too!<span id="arrow-2" class="arrow"></span></a>
<div id="div-2">
<p> Morbi ut rhoncus mauris, nec vestibulum eros. Aenean tincidunt consectetur lacus at ultrices. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur quis accumsan leo. Nam in leo ex. Quisque quis porttitor quam, non porttitor lacus. Proin eget nisl libero. Suspendisse efficitur pretium neque sed rhoncus. Proin hendrerit efficitur mi vitae ullamcorper. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur nec lorem pretium, venenatis tortor id, imperdiet lorem. Praesent maximus ipsum ante, scelerisque malesuada mauris cursus ut. Pellentesque nunc massa, varius vel egestas sed, mollis eget lorem. Etiam tempor luctus faucibus. Phasellus fringilla vel augue ornare gravida.
Praesent lobortis in lacus at bibendum. Sed sed condimentum nibh, vitae molestie velit. Ut convallis ex leo, non congue mauris faucibus vel. Morbi dictum aliquam purus, at blandit magna commodo nec. Mauris euismod ipsum magna, sit amet tempor sem interdum vitae. Maecenas ac urna enim. Aliquam elementum velit quis tortor ornare, eget eleifend sapien facilisis. Mauris euismod lectus a placerat dictum. Ut pellentesque imperdiet magna eget ultrices. Duis auctor lorem at nulla ultricies finibus. Mauris sagittis placerat est et lobortis. Nulla placerat convallis erat, in consequat est dignissim vel.
Ut aliquet nisi quam, et pretium sem tempor hendrerit. Nam venenatis sapien in porttitor molestie. Curabitur vel massa vel tellus euismod gravida in ornare urna. Morbi hendrerit nisi ut odio ultrices, eget lobortis mauris euismod. Maecenas rhoncus finibus dictum. Donec quis augue sed elit aliquam varius. Vestibulum placerat feugiat risus at porttitor. Phasellus vel imperdiet massa, et porta justo. Nunc interdum justo at vehicula vehicula.
Proin ut turpis imperdiet, luctus orci a, convallis turpis. Morbi pellentesque metus a mi volutpat, faucibus accumsan turpis congue. Proin rutrum, libero non lacinia eleifend, neque eros aliquet ex, eu sagittis augue purus eget nulla. Quisque placerat lacus vitae libero pretium, nec ultrices quam efficitur. Sed lobortis risus id semper aliquam. Sed finibus nibh maximus, lobortis neque fermentum, pulvinar ex. Cras finibus metus a nunc pellentesque venenatis vel bibendum sapien. Vestibulum laoreet est a arcu tempor pellentesque. Quisque sit amet quam felis.
Phasellus lacus sapien, pulvinar vel vulputate sed, molestie non turpis. Donec at placerat leo, vel auctor enim. Maecenas accumsan ex in neque sodales, pretium malesuada nunc ullamcorper. Donec pharetra, diam ac congue ultrices, nibh tellus fringilla magna, sed vehicula eros ligula sed mauris. Nam elementum scelerisque vehicula. Curabitur condimentum mi ut velit auctor, id cursus ante condimentum. Cras iaculis mattis dignissim. Nullam fringilla imperdiet ante, at luctus ipsum accumsan vel. In pharetra odio et dapibus consectetur. Donec vel euismod tortor. Maecenas vitae facilisis orci. Curabitur orci turpis, pulvinar sit amet justo accumsan, vulputate lacinia dolor. </p>

How come dynamically assigning a name using javascript fails?

I am trying to dynamically assign a name attribute to a level 2 header using jQuery.
http://jsfiddle.net/8ZTEb/
Here is my javascript:
$(function() {
$("h2").each(function() {
$(this).attr("name", $(this).html().toLowerCase());
});
});​
Here is my long, but simple HTML.
Bar
<h2>Foo</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eu sollicitudin urna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In tincidunt magna vel quam auctor sit amet tincidunt lacus euismod. Praesent bibendum odio nec nisl tempus dictum. Cras aliquet condimentum est luctus accumsan. Aenean lectus lacus, malesuada eu dictum eu, euismod ac purus. Aliquam ultrices egestas elit, nec scelerisque lorem suscipit in. In auctor bibendum ullamcorper. Aenean lectus arcu, fermentum sed aliquet quis, tristique vestibulum est. In nisi ligula, consequat non semper vitae, pharetra vel risus. Nulla odio augue, tincidunt quis bibendum id, ullamcorper vel eros. Proin feugiat imperdiet tellus, ut porttitor massa eleifend in. Praesent sed nisl sed dui vestibulum auctor. Maecenas viverra feugiat erat adipiscing porttitor. Aenean mattis tincidunt placerat.
</p>
<p>
Fusce aliquam, dui a facilisis porttitor, nisi dolor semper dolor, ac vestibulum elit lorem id lorem. Nam ut odio eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse consequat tempor volutpat. Vestibulum cursus purus et nulla dignissim suscipit. Cras convallis dolor nec dolor volutpat vel rutrum magna eleifend. Nullam eget lorem orci. Vestibulum vel aliquam ligula.
</p>
<p>
Aliquam in tellus odio, ut gravida ante. Vestibulum vitae diam elementum dui ultricies hendrerit quis vitae ante. Vestibulum vel metus metus. Nulla in nulla et risus dictum lobortis at ac ligula. Nunc in dolor id sapien facilisis porttitor id vitae magna. Integer pretium faucibus felis, vitae tristique est condimentum egestas. Suspendisse potenti. Duis auctor molestie sapien, sed vestibulum dolor ornare in. Praesent lacus purus, luctus non suscipit eget, aliquet in nunc. Etiam bibendum, erat ut blandit vehicula, augue diam vestibulum ipsum, ut imperdiet libero est sit amet tortor. Quisque gravida porttitor augue, eu hendrerit libero ullamcorper eget. Sed at tortor nisi, a luctus nunc. Curabitur in fringilla velit. Nulla elementum hendrerit ante ac faucibus. Mauris ultrices pretium erat sit amet scelerisque.
</p>
<p>
Integer dictum diam vel orci laoreet vehicula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec eu commodo dui. Quisque a diam mauris. Curabitur ornare sollicitudin ligula, in fringilla ligula porttitor et. Proin bibendum tincidunt orci, eget iaculis sem venenatis et. Integer eu eros magna, sed placerat augue. Cras eget est purus. Duis convallis gravida tempus. Curabitur a dolor ut nisl sodales rutrum. Maecenas eget diam quis turpis scelerisque mattis eget ac sapien. Sed commodo mattis tellus, sit amet tempor ligula placerat at.
</p>
<p>
Sed ornare faucibus tincidunt. Sed suscipit metus a massa feugiat dignissim. Maecenas auctor vulputate placerat. Vivamus pulvinar pharetra tincidunt. Nunc tempus ornare interdum. Vestibulum vitae magna lorem, quis luctus augue. Phasellus quam leo, dignissim vitae semper a, iaculis et lacus. Sed elit nunc, interdum sit amet dictum vitae, fermentum eget lorem. Phasellus nisi dui, varius ut lacinia et, condimentum sed tortor. Fusce eu orci et justo rutrum varius sit amet quis enim. Suspendisse id urna eget odio pellentesque lacinia in ut neque. Vestibulum ante lectus, placerat ac mattis vitae, tincidunt quis tortor. Morbi vel sem ut quam dignissim faucibus ut eu lorem. Aliquam laoreet arcu nec urna eleifend consectetur. Suspendisse potenti.
</p>
<h2>Bar</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eu sollicitudin urna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In tincidunt magna vel quam auctor sit amet tincidunt lacus euismod. Praesent bibendum odio nec nisl tempus dictum. Cras aliquet condimentum est luctus accumsan. Aenean lectus lacus, malesuada eu dictum eu, euismod ac purus. Aliquam ultrices egestas elit, nec scelerisque lorem suscipit in. In auctor bibendum ullamcorper. Aenean lectus arcu, fermentum sed aliquet quis, tristique vestibulum est. In nisi ligula, consequat non semper vitae, pharetra vel risus. Nulla odio augue, tincidunt quis bibendum id, ullamcorper vel eros. Proin feugiat imperdiet tellus, ut porttitor massa eleifend in. Praesent sed nisl sed dui vestibulum auctor. Maecenas viverra feugiat erat adipiscing porttitor. Aenean mattis tincidunt placerat.
</p>
<p>
Fusce aliquam, dui a facilisis porttitor, nisi dolor semper dolor, ac vestibulum elit lorem id lorem. Nam ut odio eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse consequat tempor volutpat. Vestibulum cursus purus et nulla dignissim suscipit. Cras convallis dolor nec dolor volutpat vel rutrum magna eleifend. Nullam eget lorem orci. Vestibulum vel aliquam ligula.
</p>
<p>
Aliquam in tellus odio, ut gravida ante. Vestibulum vitae diam elementum dui ultricies hendrerit quis vitae ante. Vestibulum vel metus metus. Nulla in nulla et risus dictum lobortis at ac ligula. Nunc in dolor id sapien facilisis porttitor id vitae magna. Integer pretium faucibus felis, vitae tristique est condimentum egestas. Suspendisse potenti. Duis auctor molestie sapien, sed vestibulum dolor ornare in. Praesent lacus purus, luctus non suscipit eget, aliquet in nunc. Etiam bibendum, erat ut blandit vehicula, augue diam vestibulum ipsum, ut imperdiet libero est sit amet tortor. Quisque gravida porttitor augue, eu hendrerit libero ullamcorper eget. Sed at tortor nisi, a luctus nunc. Curabitur in fringilla velit. Nulla elementum hendrerit ante ac faucibus. Mauris ultrices pretium erat sit amet scelerisque.
</p>
<p>
Integer dictum diam vel orci laoreet vehicula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec eu commodo dui. Quisque a diam mauris. Curabitur ornare sollicitudin ligula, in fringilla ligula porttitor et. Proin bibendum tincidunt orci, eget iaculis sem venenatis et. Integer eu eros magna, sed placerat augue. Cras eget est purus. Duis convallis gravida tempus. Curabitur a dolor ut nisl sodales rutrum. Maecenas eget diam quis turpis scelerisque mattis eget ac sapien. Sed commodo mattis tellus, sit amet tempor ligula placerat at.
</p>
<p>
Sed ornare faucibus tincidunt. Sed suscipit metus a massa feugiat dignissim. Maecenas auctor vulputate placerat. Vivamus pulvinar pharetra tincidunt. Nunc tempus ornare interdum. Vestibulum vitae magna lorem, quis luctus augue. Phasellus quam leo, dignissim vitae semper a, iaculis et lacus. Sed elit nunc, interdum sit amet dictum vitae, fermentum eget lorem. Phasellus nisi dui, varius ut lacinia et, condimentum sed tortor. Fusce eu orci et justo rutrum varius sit amet quis enim. Suspendisse id urna eget odio pellentesque lacinia in ut neque. Vestibulum ante lectus, placerat ac mattis vitae, tincidunt quis tortor. Morbi vel sem ut quam dignissim faucibus ut eu lorem. Aliquam laoreet arcu nec urna eleifend consectetur. Suspendisse potenti.
</p>​
Why does clicking on the inline anchor labeled "Bar" not go anywhere on the page?
Your link is looking for an element with the name "bar" not "foo".
Bar would find your H2 if the H2 was <h2 name="bar">Foo</h2> and not <h2 name="foo">Foo</h2> as it is now. You're assigning the html of the H2 element (foo) as the H2's name attribute when you want it to be "bar" which is the html of the anchor.
You can either change your link to Bar or change your jQuery.
Update: Your code should work for most elements, however for the greatest compatibility you might also want to make sure the element has the same ID and name value.
The HTML5 standard suggests using the ID attribute instead of the name attribute for specifying the name of an anchor. Using the ID attribute should work for HTML4 in all modern browsers.
See also: http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 and http://www.w3.org/TR/html5/links.html#hyperlink
It sounds like you instead want to scroll based on the element's position on the page. You should instead find the offset of a specific element (which you can do via jQuery), and then call window.scrollTo(offset) like so:
Bar
$('.scrollableLink').click(function()
{
// Some syntax might not be correct on the selector, but you get the general idea
var offset = $('[name=' + $(this).text() + '").prop('offsetTop');
window.scrollTo(offset);
});
The <a name=''><h2>Lorem Ipsum</h2></a> is the syntax your looking for. I use the wrap function of jQuery to add the correct anchor references. fiddle for your thoughts
javascript
$(function() {
$("h2").each(function(index,elem) {
$(this).wrap("<a name='"+$(this).text().toLowerCase()+"'></a>");
});
});​

Categories