什么是层模型?

什么是层布局模型?层布局模型就像是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧。但是在网页上局部使用层布局还是有其方便之处的。下面我们来学习一下html中的层布局。

如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作。CSS定义了一组定位(positioning)属性来支持层布局模型。

层模型有三种形式:

1、绝对定位(position: absolute)

2、相对定位(position: relative)

3、固定定位(position: fixed)

层模型--绝对定位

如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口

如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。

div{
width:200px;
height:200px;
border:2px red solid;
position:absolute;
left:100px;
top:50px;
}
<div id="div1"></div>

效果如下:

层模型--相对定位

如果想为元素设置层模型中的相对定位,需要设置position:relative(表示相对定位),它通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动。

如下代码实现相对于以前位置向下移动50px,向右移动100px;

#div1{
width:200px;
height:200px;
border:2px red solid;
position:relative;
left:100px;
top:50px;
} <div id="div1"></div>

效果图:

什么叫做“偏移前的位置保留不动”呢?

大家可以做一个实验,在右侧代码编辑器的19行div标签的后面加入一个span标签,在标并在span标签中写入一些文字。如下代码:

<body>
<div id="div1"></div><span>偏移前的位置还保留不动,覆盖不了前面的div没有偏移前的位置</span>
</body>

效果图:

从效果图中可以明显的看出,虽然div元素相对于以前的位置产生了偏移,但是div元素以前的位置还是保留着,所以后面的span元素是显示在了div元素以前位置的后面。

层模型--固定定位

fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响,这与background-attachment:fixed;属性功能相同。以下代码可以实现相对于浏览器视图向右移动100px,向下移动50px。并且拖动滚动条时位置固定不变。

#div1{
width:200px;
height:200px;
border:2px red solid;
position:fixed;
left:100px;
top:50px;
}
<p>文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。</p>

Relative与Absolute组合使用

position:absolute可以实现被设置元素相对于浏览器(body)设置定位,使用position:relative来帮忙,也可以实现相对于其它元素进行定位。

但是必须遵守下面规范:

1、参照定位的元素必须是相对定位元素的前辈元素:

<div id="box1"><!--参照定位的元素-->
<div id="box2">相对参照元素进行定位</div><!--相对定位元素-->
</div>

从上面代码可以看出box1是box2的父元素(父元素当然也是前辈元素了)。

2、参照定位的元素必须加入position:relative;

#box1{
width:200px;
height:200px;
position:relative;
}

3、定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。

#box2{
position:absolute;
top:20px;
left:30px;
}

这样box2就可以相对于父元素box1定位了(这里注意参照物就可以不是浏览器了,而可以自由设置了)。

最新文章

  1. JavaScript 之 页面跳转及Frame动态加载
  2. DirectSound学习(二)--流式缓冲区
  3. VB.NET中vbcr 是回车、vbcrlf 是回车和换行的结合、vblf 是换行
  4. Swift3 GCD队列优先级说明
  5. 在ASP.NET Core中如何支持每个租户数据存储策略的数据库
  6. 40K刚面完Java岗,这些技术必须掌握
  7. c语言操作文件函数大全
  8. 添加一个Android框架层的系统服务与实现服务的回调
  9. saltstack pillar
  10. SQL Server控制执行计划
  11. 清理SuperMap三维缓存
  12. java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法
  13. MySQL5.7 Group Replication (MGR)--Mysql的组复制之多主模式
  14. 【php增删改查实例】第十三节 - EasyUI列格式化
  15. C#中关于DataGridView行和列的背景色-前景色设置
  16. Unity3D笔记 模型和角色动画的输出设置
  17. windows server服务器上部署java+tomcat网站域名配置
  18. JavaScript中的arguments详解
  19. 各大IT公司 技术博客汇总
  20. html绘制三角形(兼容IE6)

热门文章

  1. NodeJs使用Mysql模块实现事务处理
  2. APK扩展文件及使用
  3. PostgreSQL中的AnyArray例子
  4. Immutable.js尝试(node.js勿入)
  5. 将博CMS安全分析报告-橘皮书
  6. 由实现JavaScript中的Map想到的
  7. Html游戏开发-画图
  8. javascript异步延时载入及推断是否已载入js/css文件
  9. cocos2d-x make: *** [clean-box2d_static-armeabi] Error 1
  10. 浏览器自动化工具-Selenium