我有一个功能,我想横向滚动我的网页,我有以下情况在Chrome
中运行良好只有当我来Firefox
和Internet Explorer
进行测试时它才会发生故障。任何人都可以在我的语法中看到任何明显的错误吗?
/* Navigtion */
$('nav ol li a').click(function(e){
e.preventDefault();
$('nav').find('.active').removeClass('active');
$(this).addClass('active');
if( $(this).hasClass('sectionOne') ){
scrollTo = $('.section-one').position().left;
$('body').animate({'scrollLeft': scrollTo}, 800);
} else if( $(this).hasClass('sectionTwo') ){
scrollTo = $('.section-two').position().left;
$('body').animate({'scrollLeft': scrollTo}, 800);
} else if( $(this).hasClass('sectionThree') ){
scrollTo = $('.section-three').position().left;
$('body').animate({'scrollLeft': scrollTo}, 800);
} else if( $(this).hasClass('sectionFour') ){
scrollTo = $('.section-four').position().left;
$('body').animate({'scrollLeft': scrollTo}, 800);
} else if( $(this).hasClass('sectionFive') ){
scrollTo = $('.section-five').position().left;
$('body').animate({'scrollLeft': scrollTo}, 800);
} else if( $(this).hasClass('sectionSix') ){
scrollTo = $('.section-six').position().left;
$('body').animate({'scrollLeft': scrollTo}, 800);
} else if( $(this).hasClass('sectionSeven') ){
scrollTo = $('.section-seven').position().left;
$('body').animate({'scrollLeft': scrollTo}, 800);
}
});
答案 0 :(得分:4)
不同的浏览器将滚动条附加到不同的元素,您必须这样做
$('html, body').animate({'scrollLeft': scrollTo}, 800);
尝试找出比所有if / else语句更好的方法,这里是一个例子。
向锚点添加数据属性
<nav>
<ol>
<li>
<a data-section="section-one" ....
你可以删除所有的if / else疯狂并用两行做同样的事情
var scrollTo = $('.' + $(this).data('section')).position().left;
$('html, body').animate({'scrollLeft': scrollTo}, 800);
答案 1 :(得分:0)
尝试:
$('body').animate({'scrollLeft': scrollTo}, 800);
$('html').animate({'scrollLeft': scrollTo}, 800);
有些浏览器使用&#39; html&#39;并且有些人使用&#39; body&#39;