说到position这个属性,确实是让刚入前端坑的我等小白瑟瑟发抖,大牛们一边告诉我们position如何万能,一边又让我们在这个坑里滚了一遍又一遍,着实让我们的头皮表面的毛囊扩张的更厉害了。在前端的画页面这个过程中,较常见的就是浮动布局,弹性布局,和定位布局。其中浮动布局float也是让人爱恨两难,它的bug真的是让人咬牙切齿。幸我大前端能人辈出,想出了万能清除法,于是我们悄咪咪的在后面加上一个cl就结束了与bug的斗智斗勇。弹性布局就比较人性化了,现在暂时就不以它为话题展开。那position这块璞玉究竟要怎样去雕琢,我也只能道出其中一星半点的内容,仅供参考。

  postion定位一共有四个属性值,常用的三个属性relative(相对),absolute(绝对),fixed(固定)。在物理学中,就有万事万物皆对象的说法。意思是,世界上所有的运动都是相对于某一个参照物而言的。

  position:relative也就是相对定位。这个定位就比较霸道了,它是常见的三个属性中唯一一个不脱离文档流的。什么叫不脱离文档流?简而言之,就是它会在你的页面上抢一个座位,即使它不在那坐着,那位置也是为它空出来的,别的元素绝对进不了它的这片领地。当你不给它任何辅助属性(即top,left,bottom,right)时,它就会在它原本的座位上坐着,加上辅助属性它就会相对于之前的位置发生偏移。

HTML代码

css代码

谷歌浏览器效果:

加了position:relative,以及它的辅助属性后:

css代码:

谷歌浏览器效果:

  可以发现,relative的对象即使离开了自己原来的位置,也依然保留之前的初始位置。重要的是加了辅助属性后,它的位置也没有对其他元素产生影响。这个效果,有的时候可被用作一种hover效果,也可以和margin或者transform一起实现垂直居中效果,用法很多,开开脑洞咯。

  position:absolute即绝对定位。其实它叫绝对定位也并不是完全的绝对,也就是说它依然需要一个参考元素。这个属性是个很有依赖性的小孩,它非常不喜欢独自一人去实现效果。因此使用它的时候,它必定会去找同样拥有定位属性的父级元素,当父级元素没有定位时,它就会继续向上找,直到找到一个具有定位的祖先级元素为止。如果祖先元素都没有定位的话,它就会直接相对于浏览器实现定位。当它实现定位的时候,它原有的位置就会被后面的元素取代,因此使用它也可以脱离文档流(即不占页面的位置)。

css代码:

谷歌效果图

(子元素没有加绝对定位时)

(子元素相对父元素实现绝对定位)

  当使用position:absolute时,我们一般会在它需要发生相对位移的祖先级元素上添加position(一般我们会加relative,因为该元素不会破坏文档流),两个定位配合使用。我们在实际运用上,二级菜单的移出效果使用的较多。

  position:fixed;这个属性就比较好解释了。它和absolute一样脱离文档流,并且它最显著的效果就是你常常看见的固定在浏览器某一侧,而你无论怎么滑动滚动条,它都会在浏览器某个位置稳如泰山的显示着。如某东侧边导航效果:

 

注意滚动条!

  fixed的使用比较简单易懂,应用也比较多,只要你需要一个元素在你的页面上固定不动,不随滚动条滚动都可以使用fixed属性。

  总之,position使用起来还是比较方便的,应用也很多,它还能实现的诸多效果就不一一在本文赘述了。内容不全,如有失误之处,欢迎指正,我一定积极修改的哈~~

强行画页面的position的更多相关文章

  1. 维护前面的position+主席树 Codeforces Round #406 (Div. 2) E

    http://codeforces.com/contest/787/problem/E 题目大意:给你n块,每个块都有一个颜色,定义一个k,表示在区间[l,r]中最多有k中不同的颜色.另k=1,2,3 ...

  2. 维护后面的position + 离线 + 线段树 bzoj 3585

    3585: mex Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 918  Solved: 481[Submit][Status][Discuss] ...

  3. 维护后面的position sg函数概念,离线+线段 bzoj 3339

    3339: Rmq Problem Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1160  Solved: 596[Submit][Status][ ...

  4. position:fixed和scroll实现div浮动【示例】

    前言 在自己建站的过程中,要实现一个div随滚动条浮动的效果,网上找了些示例不太好用,还是自己动手,丰衣足食,写的不好请大家谅解,毕竟我不是搞前端的,因为自己建站毕竟每一步都必须自己来,这边只是做个记 ...

  5. ListView addHeaderView 对 position 的影响

    1. 在 public View getView(int position, View convertView, ViewGroup parent) 中position 和 是否有headerView ...

  6. iframe子页面position的fixed

    前言: 首先说一说我昨天天的苦逼经历.中午吃饭时一同事跟我说,他做的项目嵌套iframe后,子页面的position设置fixed失效了. 经过反复询问,得知他用了两层iframe,再加上最外的父页面 ...

  7. js实现图片局部放大效果

    图片局部放大效果结合的知识点主要是DOM的操作,以及事件的应用,所以首先要对DOM的操作有一定了解,其次能对事件的应用有一定的累积. 如上图,可以看到,这是放大镜的基本效果,主要分成左右两个部分.左边 ...

  8. HTML/CSS/JS编码规范

    最近整理了一份HTML/CSS/JS编码规范,供大家参考.目录:一.HTML编码规范二.CSS编码规范三.JS编码规范 一.HTML编码规范 1. img标签要写alt属性 根据W3C标准,img标签 ...

  9. 转载 IO、文件、NIO【草案四】

    本章目录: 1.IO类相关内容 2.文件和目录 3.文件高级操作  NIO详解[1]——缓冲区(Buffer)[深入理解,总结自<Java-NIO>]: [*:下边的Buffer又指代抽象 ...

随机推荐

  1. Unity外包 UE4外包 项目案例平台开通通知

    长年承接Unity外包 UE4外包,大家好,本公司团队已将案例上传至专门的案例官网. 欢迎联系我们索取,谢谢! 有项目外包请联系QQ:372900288 索取案例.

  2. Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码

    Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible  script 的格式不对,应改成Unix编码 find . -name "*" | xargs do ...

  3. C#实现基于ffmpeg加虹软的人脸识别demo及开发分享

    对开发库的C#封装,屏蔽使用细节,可以快速安全的调用人脸识别相关API.具体见github地址.新增对.NET Core的支持,在Linux(Ubuntu下)测试通过.具体的使用例子和Demo详解,参 ...

  4. Java /C# 实现文件压缩

    纯粹为了记录. 参考了 https://www.cnblogs.com/zeng1994/p/7862288.html import java.util.List; import java.util. ...

  5. Gerapy 安装

    1下载: pip install gerapy 2. 在D盘中新建一个文件夹,该然后cd 到该文件夹中,执行: gerapy init # 初始化,可以在任意路径下进行 cd gerapy # 初始化 ...

  6. 手动脱壳—dump与重建输入表(转)

    文章中用到的demo下载地址: http://download.csdn.net/detail/ccnyou/4540254 附件中包含demo以及文章word原稿 用到工具: Ollydbg Lor ...

  7. C++标准模板库(STL)之Queue

    1.Queue的常用用法 queue:队列,实现的一个先进先出的容器. 1.1.queue的定义 使用queue,首先要加头文件#include<queue>和using namespac ...

  8. [转]axios的兼容性处理

    来源: https://www.cnblogs.com/leaf930814/p/6807318.html ---------------------------------------------- ...

  9. 网络传输数据序列化工具Protostuff

    一直在物色比较好用的网络传输数据序列化工具,看了诸如marshalling,protobuff等,但是均有一个共同特点,使用起来异常繁杂,有没有比较好用同时性能又不会太差的组件呢?答案当然是有的,那就 ...

  10. js插入HTML代码,渲染页面

    <style>td{border:solid 1px #000;}</style> <table><tr id="data_list"&g ...