Bootstrap插件Affix问题解决
2017-02-17 00:00
316 查看
最近使用bootstrap affix插件,结果发现有几个小bug:
1. 当浏览器大小发生变化时, affix侧边导航栏的位置和高度不能很好的适应;
2. 当浏览器的大小发生改变时,affix侧边栏的宽度不能自适应,一般解决方法时固定宽度;
3. 当浏览器滚动条拉到底部时,affix侧边栏会和底部的footer发生干涉;
针对以上问题进行解决:采用jquery 的reszie事件和scroll事件进行响应编程,
里面的技巧是:先计算事件后后affix的位置和宽度,再通过.affix('checkPosition')更新affix位置,
由于resize和scroll事件的响应事件太快,浏览器实际上触发了多次,因此需要加上延迟处理。
保证事件发生后才进行计算更新affix位置。具体代码如下:
var timer=0;
//resize事件响应
$(window).resize(function(){
if(timer){
clearTimeout(timer);
timer=0;
}
timer=setTimeout(function(){
var $affixElement = $('ul[data-spy="affix"]');
$affixElement.width($affixElement.parent().width());
$('#nav').affix({
offset: {
top: $('#nav').offset().top,
bottom: ($('#footer').outerHeight(true)) + 40
}
});
$('#nav').affix('checkPosition');
/*alert("resize event");*/
},10);
$('#nav').affix('checkPosition');
});
//scroll事件响应
$(window).scroll(function(){
if(timer){
clearTimeout(timer);
timer=0;
}
timer=setTimeout(function(){
var $affixElement = $('ul[data-spy="affix"]');
$affixElement.width($affixElement.parent().width());
$('#nav').affix({
offset: {
top: $('#nav').offset().top,
bottom: ($('#footer').outerHeight(true)) + 40
}
});
$('#nav').affix('checkPosition');
/*alert("resize event");*/
},10);
$('#nav').affix('checkPosition');
});
如果觉得我的文章能帮你节省时间,就打个赏呗:)
版权所有,转载请注明出处!
1. 当浏览器大小发生变化时, affix侧边导航栏的位置和高度不能很好的适应;
2. 当浏览器的大小发生改变时,affix侧边栏的宽度不能自适应,一般解决方法时固定宽度;
3. 当浏览器滚动条拉到底部时,affix侧边栏会和底部的footer发生干涉;
针对以上问题进行解决:采用jquery 的reszie事件和scroll事件进行响应编程,
里面的技巧是:先计算事件后后affix的位置和宽度,再通过.affix('checkPosition')更新affix位置,
由于resize和scroll事件的响应事件太快,浏览器实际上触发了多次,因此需要加上延迟处理。
保证事件发生后才进行计算更新affix位置。具体代码如下:
var timer=0;
//resize事件响应
$(window).resize(function(){
if(timer){
clearTimeout(timer);
timer=0;
}
timer=setTimeout(function(){
var $affixElement = $('ul[data-spy="affix"]');
$affixElement.width($affixElement.parent().width());
$('#nav').affix({
offset: {
top: $('#nav').offset().top,
bottom: ($('#footer').outerHeight(true)) + 40
}
});
$('#nav').affix('checkPosition');
/*alert("resize event");*/
},10);
$('#nav').affix('checkPosition');
});
//scroll事件响应
$(window).scroll(function(){
if(timer){
clearTimeout(timer);
timer=0;
}
timer=setTimeout(function(){
var $affixElement = $('ul[data-spy="affix"]');
$affixElement.width($affixElement.parent().width());
$('#nav').affix({
offset: {
top: $('#nav').offset().top,
bottom: ($('#footer').outerHeight(true)) + 40
}
});
$('#nav').affix('checkPosition');
/*alert("resize event");*/
},10);
$('#nav').affix('checkPosition');
});
如果觉得我的文章能帮你节省时间,就打个赏呗:)
版权所有,转载请注明出处!
相关文章推荐
- 使用bootstrap之轮播插件不自动播放的问题和播放时间间隔的问题解决方法
- 解决Bootstrap 标签页(Tab)插件切换echarts不显示问题
- 使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
- 解决Bootstrap 附加导航(Affix)的问题和使用时若干注意事项
- 解决Bootstrap日期插件Date Range Picker清空的问题
- Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
- 解决bootstrap的tooltip插件不能自动定位不是相对于浏览器窗口定位的问题
- 解决bootstrap中轮播插件支持手机上的手势滑动的问题
- bootstrap jasny fileinput插件冲突问题解决
- 使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
- bootstrap-datetimepicker日期插件月份bug问题解决
- 解决在Eclipse中配置JBoss、Tomcat等插件时遇到的问题
- 解决在Eclipse中配置JBoss、Tomcat等插件时遇到的问题
- 【已解决,看后文】使用BlogEngine.net的扩展插件Silverlight Player Extension遇到的问题
- 解决eclipse安装maven插件后启动出现警告的问题
- 解决在Eclipse中配置JBoss、Tomcat等插件时遇到的问题
- pligg9.7beta的后HTML编辑器插件的安装(tinymce_2_1_1_1)(以及使用中遇到的点滴问题解决办法)
- Eclipse安装MyEclipse后,新插件无法识别问题解决
- 解决在Eclipse中配置JBoss、Tomcat等插件时遇到的问题
- Poperties Editor 插件------自动解决ApplicationResources.properties中汉字乱码问题