`
clxy
  • 浏览: 79929 次
社区版块
存档分类
最新评论

Bootstrap笔记之Affix

阅读更多
  升级Bootstrap 3时,顺便玩了下Affix——通常用在侧边导航条——这个控件,下面是一些坎坷和心得。(详细的官方文档

★:Top
  首先就是Top——高度,由于我页面上有固定的顶导航条(用Bootstrap的通常都会有),所以必须调整Top高度。
  通用的代码如下
var navHeight = $('.navbar').outerHeight(true) + 10;
$sideBar.affix({
	offset: {
		top: navHeight
	}
});

  加上10px的余量是为了顶导航条和下面内容之间的间隙。其实也可以自动计算,只是太麻烦偷个懒。另外如果还用scrollspy的话(通常也都会用),也需要用上面的navHeight设置偏移量——offset。
$body.scrollspy({
	target: '.bs-sidebar',
	offset: navHeight
});


  到这都OK,下面都是麻烦事。

★:Link点击后的位置偏移
  点击侧导航条时,页面上指定的Link会滚动过高,被顶导航条遮住。这个貌似不是Affix的问题,而是顶导航条固定位置的原因。需要用如下方式hack掉——copy自官方网站的css。
/* Janky fix for preventing navbar from overlapping */
h1[id] {
  padding-top: 80px;
  margin-top: -45px;
}

  原理是比如想要35px的间隙,不能直接写35px。需要
  1. top padding设置成80px,防止顶导航条遮挡。
  2. 然后再设置top margin为-45px,以达到35px的效果。
折腾吧?

★:滚动页面时尺寸会改变
  还有个问题就是滚动页面,当侧边导航条浮起时会改变尺寸。
  参考了官网的源码,最终也没有找到理想的解决办法。我猜测原因在于官网是两边留余白的方式,这种方式下,affix的宽度只有在页面尺寸变化到达BS3的screen阈值时才会跟着变化,相对稳定。我自己的则是100%伸展的布局。
  我找到折衷的办法是写死affix尺寸,让它和浮起时尺寸相同。但这样就导致affix无法响应页面宽度细微的变化!
/* Show and affix the side nav when space allows it */
@media screen and (min-width: 992px) {
	...
	/* Widen the fixed sidebar */
	.bs-sidebar,.bs-sidebar.affix,.bs-sidebar.affix-bottom {
		width: 223px;
	}
	...
}

@media screen and (min-width: 1200px) {
	/* Widen the fixed sidebar again */
	.bs-sidebar,.bs-sidebar.affix-bottom,.bs-sidebar.affix {
		width: 299px;
	}
}

“.bs-sidebar,”是追加的内容,即affix的非浮起状态尺寸。

  如果有哪位知道更好的解决方案,还望赐教。
1
0
分享到:
评论
1 楼 GavinNie 2015-11-08  
博主你好,我也同样遇到了滚动页面时尺寸会改变的问题,一开始的办法也是像博主那样写死了宽度,但是我觉得这个做法不太合理,万一affix的内发生改变导致其宽度变化呢...
所以我现在的做法是,在页面加载完成(dom ready)后,获取affix的标签的宽度wd,然后监听winwod的滚动事件,强制让宽度为wd,效果还算可以....


var wd = $(".col-md-4").width();
jQuery(window).scroll(function() {
$("#content-right").css("width", wd);
});

相关推荐

    Bootstrap-affix

    Bootstrap Affix 是一个基于 Twitter Bootstrap 框架的插件,用于实现页面元素的固定定位效果。这个插件允许开发者创建在用户滚动页面时能够固定在屏幕特定位置的元素,如侧边栏导航、顶部固定菜单等。通过利用 ...

    bootstrap笔记

    bootstrap笔记Bootstrap 移动设备优先。 所有列默认都是左浮动 为确保适当的绘制和触屏缩放,加入下面的meta标签

    bootstrap-affix

    Bootstrap Affix 是一个流行的前端开发框架 Bootstrap 中的一个插件,用于创建固定定位的元素。这个插件允许元素在页面滚动时根据预设的阈值改变其定位方式,从而实现如侧边栏导航、固定顶部或底部元素等效果。在本...

    李炎恢Bootstrap讲义笔记

    这个“李炎恢Bootstrap讲义笔记”很可能包含了李炎恢老师关于Bootstrap的深入讲解和实践指导,帮助学习者掌握这一强大的工具。 Bootstrap的核心特性包括一套丰富的预定义的CSS样式、JavaScript组件和字体图标,这些...

    Bootstrap笔记特殊场景代码编写可复制

    bootstrap,Bootstrap笔记,Bootstrap笔记特殊场景代码编写可复制,感兴趣的同学可以下载研究

    李炎恢Bootstrap讲义pdf笔记

    Bootstrap是世界上最受欢迎的前端开发框架之一,由Twitter的开发者创建并开源。这个框架极大地简化了网页设计和响应式布局的工作,让开发者能够快速构建美观且跨设备兼容的网站。李炎恢老师的Bootstrap讲义深入浅出...

    bootstrap学习笔记

    ### Bootstrap 学习笔记知识点详解 #### 一、Bootstrap简介 Bootstrap是一款非常流行的前端开发框架,它基于HTML、CSS及JavaScript构建,旨在帮助开发者快速搭建响应式的网站和应用。通过预定义的样式和布局,...

    bootstrap学习笔记-html5

    Bootstrap是世界上最受欢迎的前端开发框架之一,用于构建响应式、移动优先的网页项目。这个“bootstrap学习笔记-html5”压缩包文件显然包含了有关如何使用Bootstrap和HTML5进行网页设计的资料,非常适合初学者入门。...

    bootstrap笔记(每一个知识点都有单独的示例)非常全

    Bootstrap是世界上最受欢迎的前端开发框架之一,由Twitter的开发者创建,用于快速构建响应式和移动优先的网站。这个“bootstrap笔记”压缩包包含了全面的学习资料,每个知识点都配以独立的示例,使得学习过程更加...

    bootstrap 笔记2.docx

    ### Bootstrap 笔记知识点梳理 #### 一、Bootstrap 概述 - **定义与来源**:Bootstrap 是由 Twitter 公司的两位工程师 Mark Otto 和 Jacob Thornton 开发的一款免费开源前端框架。它基于 HTML、CSS、JavaScript,...

    bootstrap 教程,带笔记

    Bootstrap是一个流行的前端框架,它为开发者提供了一套简洁、直观和强大的工具,以便于快速和容易地开发网页。它利用HTML、CSS和JavaScript编写,特别强调移动设备优先的设计,适用于需要响应式设计的项目。...

    bootstrap笔记总结

    Bootstrap 笔记总结 Bootstrap 是一个流行的前端框架,用于快速构建响应式的 web 应用程序。下面是 Bootstrap 相关的知识点总结: Base CSS * Bootstrap 提供了一个基本的 CSS 框架,使得开发者可以快速构建响应...

    李炎恢bootstrap 讲义笔记代码全套

    李炎恢bootstrap 讲义笔记代码全套,李炎恢 bootstrap 讲义 代码

    李炎恢Bootstrap讲义笔记解压.zip

    根据提供的文件信息,“李炎恢Bootstrap讲义笔记解压.zip”这一资料主要涉及的是Bootstrap框架的相关内容,由李炎恢老师讲解。考虑到该文件被标记为“讲义笔记”,我们可以推测这是一份针对Bootstrap框架的教学材料...

    bootstrap一些笔记

    在提供的代码片段中,我们可以看到Bootstrap的一些核心组件的使用,包括导航栏(navbar)、按钮(button)、下拉菜单(dropdown)和提示控件(tooltip)。 1. **导航栏(Navbar)**:Bootstrap的导航栏是一个强大的...

Global site tag (gtag.js) - Google Analytics