Javascript 我可以做什么来模拟位置:粘性?
如果您不知道位置:sticky是什么,请观看此20秒长的视频: 这个CSS特性在W3中讨论过,我相信是在gecko中实现的。但这不是重点,重点是不是所有的浏览器都支持它,我真的想要这个功能Javascript 我可以做什么来模拟位置:粘性?,javascript,jquery,html,css,sticky,Javascript,Jquery,Html,Css,Sticky,如果您不知道位置:sticky是什么,请观看此20秒长的视频: 这个CSS特性在W3中讨论过,我相信是在gecko中实现的。但这不是重点,重点是不是所有的浏览器都支持它,我真的想要这个功能 有什么方法可以混合使用CSS和/或javascript和/或jquery来实现这一点吗?有一个简单的jquery插件用于此::有一个简单的jquery插件用于此::有一个简单的jquery插件用于此::为了避免使用插件,我使用jQuery1.8+创建了以下javascript方法 第一个参数是要设置的元素。
有什么方法可以混合使用CSS和/或javascript和/或jquery来实现这一点吗?有一个简单的jquery插件用于此::有一个简单的jquery插件用于此::有一个简单的jquery插件用于此::为了避免使用插件,我使用jQuery1.8+创建了以下javascript方法 第一个参数是要设置的元素。 第二个参数是optionnal,是一个布尔值,通过设置300ms的小超时来提高浏览器性能
function simulateSticky(elt, timeout) {
var move = function() {
var scrollTop = $(window).scrollTop();
var scrollBottom = $(document).height() - scrollTop - $(window).height();
var eltTop = elt.parent().offset().top;
var eltBottom = $(document).height() - eltTop - elt.parent().outerHeight();
if (scrollTop < eltTop) { // Top case
elt.css({
position: "absolute",
width: "100%",
top:"auto",
right: "0px",
bottom: "auto",
left: "0px",
});
}
else if (scrollTop >= eltTop && scrollBottom >= eltBottom) { // Middle case
elt.css({
position: "fixed",
width: elt.parent().outerWidth(),
top:"0px",
right: "auto",
bottom: "auto",
left: "auto",
});
}
else { // Bottom case
elt.css({
position: "absolute",
width: "100%",
top:"auto",
right: "0px",
bottom: "0px",
left: "0px",
});
}
};
// Use of a timeout for better performance
if (timeout) {
var timeoutId;
$(window).scroll(function() {
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
move();
}, 300);
});
}
else {
$(window).scroll(move);
}
// Initial call
move();
}
function simulateSticky(elt,超时){
var move=function(){
var scrollTop=$(窗口).scrollTop();
var scrollbooth=$(document.height()-scrollTop-$(window.height());
var eltTop=elt.parent().offset().top;
var eltBottom=$(document.height()-eltTop-elt.parent().outerHeight();
如果(滚动顶部<顶部){//顶部大小写
英语教学({
位置:“绝对”,
宽度:“100%”,
顶部:“自动”,
右:“0px”,
底部:“自动”,
左:“0px”,
});
}
如果(scrollTop>=eltTop&&scrollBottom>=eltBottom){//中间大小写
英语教学({
位置:“固定”,
宽度:elt.parent().outerWidth(),
顶部:“0px”,
右:“自动”,
底部:“自动”,
左:“自动”,
});
}
else{//底格
英语教学({
位置:“绝对”,
宽度:“100%”,
顶部:“自动”,
右:“0px”,
底部:“0px”,
左:“0px”,
});
}
};
//使用超时以获得更好的性能
如果(超时){
var-timeoutId;
$(窗口)。滚动(函数(){
clearTimeout(timeoutId);
timeoutId=setTimeout(函数(){
move();
}, 300);
});
}
否则{
$(窗口)。滚动(移动);
}
//初始呼叫
move();
}
为了避免使用插件,我使用jquery 1.8+创建了以下javascript方法
第一个参数是要设置的元素。
第二个参数是optionnal,是一个布尔值,通过设置300ms的小超时来提高浏览器性能
function simulateSticky(elt, timeout) {
var move = function() {
var scrollTop = $(window).scrollTop();
var scrollBottom = $(document).height() - scrollTop - $(window).height();
var eltTop = elt.parent().offset().top;
var eltBottom = $(document).height() - eltTop - elt.parent().outerHeight();
if (scrollTop < eltTop) { // Top case
elt.css({
position: "absolute",
width: "100%",
top:"auto",
right: "0px",
bottom: "auto",
left: "0px",
});
}
else if (scrollTop >= eltTop && scrollBottom >= eltBottom) { // Middle case
elt.css({
position: "fixed",
width: elt.parent().outerWidth(),
top:"0px",
right: "auto",
bottom: "auto",
left: "auto",
});
}
else { // Bottom case
elt.css({
position: "absolute",
width: "100%",
top:"auto",
right: "0px",
bottom: "0px",
left: "0px",
});
}
};
// Use of a timeout for better performance
if (timeout) {
var timeoutId;
$(window).scroll(function() {
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
move();
}, 300);
});
}
else {
$(window).scroll(move);
}
// Initial call
move();
}
function simulateSticky(elt,超时){
var move=function(){
var scrollTop=$(窗口).scrollTop();
var scrollbooth=$(document.height()-scrollTop-$(window.height());
var eltTop=elt.parent().offset().top;
var eltBottom=$(document.height()-eltTop-elt.parent().outerHeight();
如果(滚动顶部<顶部){//顶部大小写
英语教学({
位置:“绝对”,
宽度:“100%”,
顶部:“自动”,
右:“0px”,
底部:“自动”,
左:“0px”,
});
}
如果(scrollTop>=eltTop&&scrollBottom>=eltBottom){//中间大小写
英语教学({
位置:“固定”,
宽度:elt.parent().outerWidth(),
顶部:“0px”,
右:“自动”,
底部:“自动”,
左:“自动”,
});
}
else{//底格
英语教学({
位置:“绝对”,
宽度:“100%”,
顶部:“自动”,
右:“0px”,
底部:“0px”,
左:“0px”,
});
}
};
//使用超时以获得更好的性能
如果(超时){
var-timeoutId;
$(窗口)。滚动(函数(){
clearTimeout(timeoutId);
timeoutId=setTimeout(函数(){
move();
}, 300);
});
}
否则{
$(窗口)。滚动(移动);
}
//初始呼叫
move();
}
为了避免使用插件,我使用jquery 1.8+创建了以下javascript方法
第一个参数是要设置的元素。
第二个参数是optionnal,是一个布尔值,通过设置300ms的小超时来提高浏览器性能
function simulateSticky(elt, timeout) {
var move = function() {
var scrollTop = $(window).scrollTop();
var scrollBottom = $(document).height() - scrollTop - $(window).height();
var eltTop = elt.parent().offset().top;
var eltBottom = $(document).height() - eltTop - elt.parent().outerHeight();
if (scrollTop < eltTop) { // Top case
elt.css({
position: "absolute",
width: "100%",
top:"auto",
right: "0px",
bottom: "auto",
left: "0px",
});
}
else if (scrollTop >= eltTop && scrollBottom >= eltBottom) { // Middle case
elt.css({
position: "fixed",
width: elt.parent().outerWidth(),
top:"0px",
right: "auto",
bottom: "auto",
left: "auto",
});
}
else { // Bottom case
elt.css({
position: "absolute",
width: "100%",
top:"auto",
right: "0px",
bottom: "0px",
left: "0px",
});
}
};
// Use of a timeout for better performance
if (timeout) {
var timeoutId;
$(window).scroll(function() {
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
move();
}, 300);
});
}
else {
$(window).scroll(move);
}
// Initial call
move();
}
function simulateSticky(elt,超时){
var move=function(){
var scrollTop=$(窗口).scrollTop();
var scrollbooth=$(document.height()-scrollTop-$(window.height());
var eltTop=elt.parent().offset().top;
var eltBottom=$(document.height()-eltTop-elt.parent().outerHeight();
如果(滚动顶部<顶部){//顶部大小写
英语教学({
位置:“绝对”,
宽度:“100%”,
顶部:“自动”,
右:“0px”,
底部:“自动”,
左:“0px”,
});
}
如果(scrollTop>=eltTop&&scrollBottom>=eltBottom){//中间大小写
英语教学({
位置:“固定”,
宽度:elt.parent().outerWidth(),
顶部:“0px”,
右:“自动”,
底部:“自动”,
左:“自动”,
});
}
else{//底格
英语教学({
位置:“绝对”,
宽度:“100%”,
顶部:“自动”,
右:“0px”,
底部:“0px”,
左:“0px”,
});
}
};
//使用超时以获得更好的性能
如果(超时){
var-timeoutId;
$(窗口).sc