How do I make a div move up and down when I'm scrolling the page?
You want to apply the fixed property to the position style of the element.
position: fixed;
What browser are you working with? Not all browsers support the fixed property. Read more about who supports it, who doesn't and some work around here
http://webreflection.blogspot.com/2009/09/css-position-fixed-solution.html
Force div element to stay in same place, when page is scrolled
Change position:absolute
to position:fixed;
.
Example can be found in this jsFiddle.
how to move div up & down on window scroll
You should be using 'position: absolute' and 'top' and 'left' instead of margins.
By using margins you are pushing them off each other making them make the page massive.
$(window).scroll(function() {
$(".mydiv").css({
"top": ($(window).scrollTop()) + "px",
"left": ($(window).scrollLeft()) + "px"
});
});
See this codepen - http://codepen.io/dmoojunk/pen/JXBaXm
How can I make a div stick to the top of the screen once it's been scrolled to?
You could use simply css, positioning your element as fixed:
.fixedElement {
background-color: #c0c0c0;
position:fixed;
top:0;
width:100%;
z-index:100;
}
Edit: You should have the element with position absolute, once the scroll offset has reached the element, it should be changed to fixed, and the top position should be set to zero.
You can detect the top scroll offset of the document with the scrollTop function:
$(window).scroll(function(e){
var $el = $('.fixedElement');
var isPositionFixed = ($el.css('position') == 'fixed');
if ($(this).scrollTop() > 200 && !isPositionFixed){
$el.css({'position': 'fixed', 'top': '0px'});
}
if ($(this).scrollTop() < 200 && isPositionFixed){
$el.css({'position': 'static', 'top': '0px'});
}
});
When the scroll offset reached 200, the element will stick to the top of the browser window, because is placed as fixed.
How to make div fixed after you scroll to that div?
This is now possible with CSS only, see https://stackoverflow.com/a/53832799/1482443
In case anyone needs jQuery approach, below is the original answer as it was posted years ago:
I know this is tagged html/css only, but you can't do that with css only. Easiest way will be using some jQuery.
var fixmeTop = $('.fixme').offset().top; // get initial position of the element
$(window).scroll(function() { // assign scroll event listener
var currentScroll = $(window).scrollTop(); // get current position
if (currentScroll >= fixmeTop) { // apply position: fixed if you
$('.fixme').css({ // scroll to that element or below it
position: 'fixed',
top: '0',
left: '0'
});
} else { // apply position: static
$('.fixme').css({ // if you scroll above it
position: 'static'
});
}
});
http://jsfiddle.net/5n5MA/2/
Related Topics
Uncaught Typeerror: Cannot Read Property 'Top' of Undefined
What's the Difference Between Putting Script in Head and Body
Embed an External Page Without an Iframe
How to Create a Responsive Image That Also Scales Up in Bootstrap 3
React: How to Load and Render External HTML File
<Script> Tag VS <Script Type = 'Text/Javascript'> Tag
Css3-Animate Elements If Visible in Viewport (Page Scroll)
Removing Page Title and Date When Printing Web Page (With CSS)
How to Convert HTML Table to Excel with Multiple Sheet
Accessing Localstorage from a Webworker
How to Abort Image <Img> Load Requests Without Using Window.Stop()
JavaScript on the Bottom of the Page
How to Use Google.Maps.Event.Trigger(Map, 'Resize')
Creating Drop Down Menu on Click CSS
Increment a Number in a String in with Regex