• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > CSS的position属性完全解析

CSS的position属性完全解析

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含CSS,position等相关知识,佚名 希望在学习及工作中可以帮助到您

一、定位基本原理

对于前端开发工程师来说,编写CSS是前端开发工作中必不可少的一个内容,在CSS中的position属性又是非常重要的一个方面。顾名思义,所谓position,即是对HTML元素定位方式的一种设置。它是CSS定位技术的基石,看似很容易学习,很多的前端工程师也会说自己掌握得很好,但事实上是这样吗?作为一个在前端开发的道路上慢慢前行的新人,我不敢这么说,那么就通过这篇文章与大家一起,了解position的奥秘。

首先,既然是CSS中的属性之一,那么我们就有必要研究一下W3C的CSS文档,毕竟这才是对此属性说明最为详细的地方。在这里要插一句,目前市面上充斥着大量的教学书籍,网络上也有很多相关的学习资源,其中固然不乏精品,但是会花点时间,认真阅读官方文档的又有多少人呢,有的时候,最乏味的往往是最准确的。

好了,话不多说,官方文档中关于position属性的内容大致是这样的:

In CSS 2.1, a box may be laid out according to three positioning schemes:

1、Normal flow

2、Floats

3、Absolute positioning

1. 常规文档流。包括块级元素排版,行内元素排版以及对块级元素和行内元素相对位置的排版。

2. 浮动。在浮动模型中,元素先按照正常文档流定位,然后从文档流中移出,根据设置向左或者向右尽可能地移动。

3. 绝对定位。元素会完全从文档流中移出,再根据父元素进行定位。

一个元素如果是根元素,或者有浮动或绝对定位的话,那它就是在常规文档流之外的,其他情况都是在文档流之内。文档中有这么一句:The flow of an element A is the set consisting of A and all in-flow elements whose nearest out-of-flow ancestor is A. 有些绕,以我并不深厚的英语能力来翻译的话,应该是:元素A的flow是由元素A本身以及所有最近的文档流之外的父元素是A的流内元素所组成的。(翻译得太惨不忍睹了,求大神指点o(>﹏<)o)。

二、position属性详解

在CSS 2.1中,元素的定位方式是由position和display属性共同作用所决定的,我们先来看position属性

position属性的可取值:static | relative | absolute | fixed | inherit

默认值:static

每个值的意义:

static: 常规方式定位box,此时设置top, right, bottom, left属性是无效的。

relative: 元素本身的的位置的定位方式和static是一样的,但是实际位置会相对于原位置有所偏移,是通过top, right, bottom, left的设置实现的。注意:display设置为table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell和table-caption的元素是无法应用position: relative的,这也很好理解,这些表格类元素如果会相对于正常位置偏移的话不是很奇怪么!

absolute: 元素脱离文档流,“几乎”独立了。位置通过top, right, bottom, left来设置,当然,参照基点是包含元素的父元素~绝对定位的元素对相邻元素的定位没有任何影响,相互之间的层叠关系是通过z-index来设置的,同时,绝对定位元素的margin之间也不会发生折叠。

fixed: 这是个比较有趣的值。它的定位计算方式和绝对定位是一样的,但是也有不同。元素的位置一旦确定了,在屏幕显示器上,它会保持固定不动,在印刷媒体类型上,它会在每页出现在固定位置,在其他的媒体类型上,表现方式则没有定义。不过,如果希望一个box在屏幕和印刷媒体上的表现不同的话,可以使用@media rule的方式,例如:

  1. @media screen {   
  2.     h1#first { position: fixed; }   
  3. }   
  4. @media print {   
  5.     h1#first { position: static; }   
  6. }  

还有一个inherit值,不用多说,就是从父元素继承position值了。

三、定位方式:top, right, bottom, left

这四个属性其实可以放在一块儿说,其实是差不多的,只是定位的相对基线变了而已。文档上的说明有些啰嗦了,不过that's what official document is对吧?

可设定的值为:length, percentage, auto, inherit

不论设定的值为什么,意义都是元素的上右下左距离父元素的上右下左的边距。

这里要提一下auto值,对于非替换元素(non-replaced elements)和替换元素(replaced elements)auto的表现是不一样的,非替换元素指的是浏览器根据标签的元素和属性来判断具体显示的内容,如:

  1. <input type="text" />  

这是一个文本输入框,换成其他的属性的话,浏览器的显示就会不一样。

替换元素的例子:

  1. <p>I'm classicemi</p>  

(X)HTML的大多数元素都是非替换元素,他们将内容直接告诉浏览器,浏览器再显示出来。

下面回到auto上来,对于非替换元素,auto值的效果取决于哪些相关的属性同样具有auto值,比较难理解是吗,好的,我们给出下面的例子:

  1. <!DOCTYPE html>   
  2.  <html>   
  3.    <head>   
  4.      <title>A frame document with CSS 2.1</title>   
  5.      <style type="text/css" media="screen">   
  6.        body { height: 8.5in }   
  7.        #header {   
  8.          position: fixed;   
  9.          width: 100%;   
  10.          height: 15%;   
  11.          top: 0;   
  12.       

您可能想查找下面的文章:

  • css小技巧
  • 各大网站CSS初始化代码
  • css权重问题
  • CSS实现鼠标上移图标旋转效果
  • 使用CSS3制作一个简单的进度条(demo)
  • 用纯CSS实现饼状Loading等待图效果
  • 利用CSS3伪元素实现逐渐发光的方格边框
  • CSS3实现内凹圆角的实例代码
  • 利用HTML5+CSS3实现3D转换效果实例详解
  • css3+伪元素实现鼠标移入时下划线向两边展开的效果

相关文章

  • 2017-08-06最常见IE的Bug及其fix修复方法
  • 2017-08-06CSS的执行顺序和优先级问题示例探讨
  • 2017-08-06div+css布局中的alpha 不透明度使用说明
  • 2017-08-06css实现瀑布流空白处背景粉色背景块
  • 2017-08-06使用单div实现CSS 绘图方法汇总
  • 2017-08-06用CSS设置表格Table的细边框的比较好用的方法
  • 2017-08-06clear:both 的作用介绍
  • 2017-08-06纯CSS结合DIV实现的右侧底部简洁悬浮效果
  • 2017-08-06网站制作的切图技巧 网页设计中的切图技巧介绍(图文)
  • 2017-08-06CSS实现的灰色下拉菜单效果代码

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • css动画+照片清晰度动画的实现方法
    • 两个div如何并排一行具体该怎么实现
    • 纯css实现的下拉导航栏附html结构及css样式
    • !important用法使用介绍
    • 利用HTML5+CSS3实现3D转换效果实例详解
    • 可以测试wordpress主题跨浏览器兼容性的6款工具(图文)
    • CSS3属性background-size使用指南
    • Win7下Chrome字体渲染颜色太淡颜色不够黑的解决方法
    • 图片上添加文字的两种常用方式
    • inline-block空隙之css letter-spacing与字体大小/字体关系数据表

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有