Affix是BootStrap中的一个很有用的控件,他能够监视浏览器的滚动条的位置并让你的导航始终都在页面的可视区域。一开始的时候,导航在页面中是普通的流式布局,占有文档中固定的位置,当页面滚动的时候,导航就自动变成了固定布局(fixed),始终处于用户的视区,下面来说说他的用法。首先来看看他的实现原理。它是通过实时修改页面元素的class属性来实现的

  • 开始的时候应用affix的元素的class中会自动添加affxi-top属性

  • 当滚动条滚动以至于导航快要到页面顶部的时候这时候在元素的class中会将affix-top变为affix

  • 当拖动滚动条到页面底部的时候,affix又会自动变为affix-bottom

以上过程完全有控件自己实现,无须我们干预,我们只需要写好这些状态的css就可以了

如我们可以设置

.affix-top
{top:150px;
}
.affix
{top:20px;//通常用bootstrap构建的网站头部都有个导航条
}
.affix-bottom
{……
}

下面我们看看它的使用方法

1、通过data属性

你只需为需要监听的页面元素添加data-spy="affix"即可。然后使用偏移量来确定一个元素的开和关.

关键代码

<ul class="nav nav-tabs nav-stacked affix" data-spy="affix"data-offset-top="190"><li class="active"><a href="#one">Tutorial One</a></li><li><a href="#two">Tutorial Two</a></li><li><a href="#three">Tutorial Three</a></li>
</ul>

其中data-offset-top为处于affix-top状态元素距离页面顶端的位置。当滚动到页面顶端的使用我们可以设置".affix"的样式来重新设置其"top"值。

2、通过javascript调用

示例代码如下:

$('#myNav').affix({offset: {top: 100,//滚动中距离页面顶端的位置bottom: function () {//滚动完成时距离页面底部的位置return (this.bottom = $('.bs-footer').outerHeight(true))}}
})

HTML代码如下(只展示核心代码):

<ul class="nav nav-tabs nav-stacked affix" id="myNav"><li class="active"><a href="#one">Tutorial One</a></li><li><a href="#two">Tutorial Two</a></li><li><a href="#three">Tutorial Three</a></li>
</ul>
……
<div class="bs-footer">
</div>

以上似乎已经介绍完了bootstrap中affix的使用,但是在实际使用的过程中我们会发现,当拖动滚动条的时候使用了affix的页面元素的宽度会发生变化,从而导致页面布局的杂乱,所以我们在定义affix的css中最好写死它的宽度如:

.affix{width:250px;
}

这样在视窗足够大的时候是没有任何问题的,但是当拖动改变视窗的大小后会发现布局又变乱了,这个问题困扰了我许久,最后通过分析bootcss的源码我发现该网站在所有使用affix的元素的class中都添加了"hidden-print" "hidden-xs" "hidden-sm"这些属性,用于当屏幕不是符合要求的情况下可以隐藏affix,虽然影响了易用性,但是保证了布局无论在哪种情况下都是整齐的。

以上是个人使用的一些心得,如果您有什么困惑或者经验想分享可以通过评论的方式反馈给我

转载于:https://www.cnblogs.com/nerd/p/5650701.html

BootStrap中Affix控件的使用方法及如何保持布局的美观相关推荐

  1. c#中WebBrowser控件的使用方法

    首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的.如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第 ...

  2. asp.net中验证控件的使用方法

    用于检查是否有输入值 :RequiredFieldValidator(必须字段验证) 按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidat ...

  3. asp.net设置html控件,ASP.NET中 Panel 控件的使用方法

    Panel 控件在 ASP.NET 网页中提供一种容器控件,可以将它用作静态文本和其他控件的父控件. 一.常见 Panel 属性 属性 描述 HorizontalAlign 指定子控件在面板内的对齐方 ...

  4. android include 控件详解,Android开发中include控件用法分析

    本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面 ...

  5. Jquery中对常用控件赋值的方法

    场景 通过Jquery进行ajax请求数据后将返回的数据给页面中的 控件进行赋值. 实现 1.对input进行赋值$("#id").val("赋值");2.对l ...

  6. html asp textbox,ASP.NET中 TextBox 文本输入框控件的使用方法

    TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属性 说明 AutoPostBack 获 ...

  7. WPF遍历当前容器中某种控件的方法

    原文:WPF遍历当前容器中某种控件的方法 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/79 ...

  8. android获取自适应高度,Android中oncreate中获得控件高度或宽度的实现方法

    Android中oncreate中获得控件高度或宽度的实现方法 onCreate函数只是提供了数据初始化的机会,此时还没有正式绘制图形.在图形尚未渲染的情况下,getWidth()或getHeight ...

  9. asp.net findcontrol html控件,findcontrol-在ASP.NET中查找控件的更好方法

    findcontrol-在ASP.NET中查找控件的更好方法 我有一个复杂的asp.net表单,在一个表单中甚至有50到60个字段,例如FindControl(),在MultiView中我有GridV ...

最新文章

  1. src源代码生成html格式文档
  2. 《集体智慧编程》第五章 优化
  3. Oracle SQL中实现indexOf和lastIndexOf功能
  4. 多个相同参数表单提交
  5. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(2)
  6. 微软自带报ocienvcreate失败_微软推出的免费神器,治好了我的拖延症!
  7. C#之DotfuscatorCommunity
  8. 再看电商 - 黄若 摘录
  9. 听音扒谱app_掌握这些,你也可以轻松扒谱(下)
  10. MinDoc 权限的简单配置
  11. 软件需求,概要设计,详细设计(文档)怎么做,做什么?
  12. CodeForce Round#49 untitled (Hdu 5339)
  13. Day10--路由嵌套+项目前后台搭建
  14. 闲谈绩效考核——来自项目管理群的讨论[转]
  15. PhysX Setup
  16. Ubuntu burg
  17. 世界海洋日|TcaplusDB与你一同保护海洋生物多样性
  18. Max OS 打开 JD-GUI 报错
  19. 绿色专利数据集 1985-2020年上市公司绿色专利申请获得授权量数据 2011-2019地级市绿色专利数据
  20. 百度云资源下载链接获取

热门文章

  1. 麦马计算机科学 UBC工程,2020年UBC文书题目
  2. xbox360无线手柄接收器驱动_创新设计的多模手柄,北通宙斯T6精英机械游戏手柄体验点评...
  3. 根子在上面的问题_岳晓光_出问题的根子在价值投资上_中金博客_中金在线
  4. [Git]4.1 分支与合并
  5. 无废话Git——本地服务器提交撤销
  6. Jenkins使用及开发
  7. PHP定时抽奖怎么实现的,定时抽奖活动怎么做?
  8. matlab编写文件格式,MATLAB程序设计教程(4)——MATLAB文件操作
  9. android 动态contextmenu,Context-Menu.Android
  10. 服务器java 客户端c_Java客户端和C ++服务器通过TCP套接字发送和接收