HTML之布局position理解
HTML中的布局,一个比较难以理解的概念,就是position了,W3C上的解释,position有如下几种:
1. static,默认值,也就是在样式中不指定position
2. fixed
3. absolute
4. relative
其中,static,fixed的相对好理解点,比较难一点的是absolute及relative。 我个人的理解,这里的position,都是要找一个参照层再来说位置的布局。没有参照层,布局其实就没有什么意义,至少生产环境下是这样子的,因为你放置一个HTML元素的时候,一定在设计的时候是有一个期望的,那就是你希望这个元素放在父层中的什么位置。也就是说你不会瞎放,若是想瞎放,那就不在这个话题范围内了!
其实,这个要是有切身的体会,还是不那么难理解的,若没有实际操作过,估计是比较难以搞明白。尤其absolute和relative。 还有,这position中,static下,top,left,bottom, right等属性将无效。 relative和absolute,通常要和top/left/bottom/right一起使用,他们也往往与margin一起实现布局中的位置调整。
理解上的东西,最好来个例子,会有助于接受概念上的东西。 下面的例子,是用来做web页面模块拖拽设计的一部分。需要的可以参考。
<style type="text/css">
#sub1,#sub2,#sub3{
position : relative;
height: 50px;
margin: 10px; }
#sub1p{
border: 1px solid blue;
margin: 20px;
position:;
top: 50px;
left: 50px;
right: 50px;
} #parentLeft{
border: 1px solid gray;
width: 34%;
position: relative;
float: left;
height:100%
}
#parentRight{
border: 1px solid gray;
width: 64%;
position: relative;
float: right;
height: 100%;
z-index: 1;
}
.ptop{
position: absolute;
width: 100%;
top: 0px;
height: 2px;
border: 1px solid green;
cursor: n-resize;
z-index: 1;
}
.pleft{
position: absolute;
width: 2px;
top: 0px;
left: 0px;
height: 100%;
border: 1px solid green;
cursor: e-resize;
z-index: 1;
}
.pright{
position: absolute;
width: 2px;
top: 0px;
right: -2px;
height: 100%;
border: 1px solid green;
cursor: e-resize;
z-index: 1;
}
.pbottom{
position: absolute;
width: 100%;
left: 0px;
bottom: -2px;
height: 2px;
border: 1px solid green;
cursor: n-resize;
z-index: 1;
}
.pboth{
position: absolute;
width: 10px;
right: -0px;
bottom: -0px;
height: 10px;
border: 2px solid pink;
cursor: nw-resize;
z-index: 2;
}
</style>
<div id="parentLeft">
<div id="sub1p">sub1p
<div id="sub1" style="border: 1px solid red;">
<div class="ptop"></div>
<div class="pleft"></div>
<div class="pright"></div>
<div class="pbottom"></div>
<div class="pboth"></div>
sub1
</div>
<div id="sub2" style="border: 1px solid red;">
<div class="ptop"></div>
<div class="pleft"></div>
<div class="pright"></div>
<div class="pbottom"></div>
<div class="pboth"></div>
sub2
</div>
<div id="sub3" style="border: 1px solid red;">
<div class="ptop"></div>
<div class="pleft"></div>
<div class="pright"></div>
<div class="pbottom"></div>
<div class="pboth"></div>
sub3
</div>
</div>
</div>
<div id="parentRight"> </div>
<script src="js/jquery-3.1.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var divs = $("div");
$.each(divs, function(i, div){
$(this).click(function(){
alert(this.id + ", " + $(this).css("position"));
});
});
});
</script>
这里,读者自己细心体会吧,例子中除了fixed没有用到,其他几个都有。fixed相对简单,使用的场景相对也简单,比如页面导航,或者页脚等。 例子中的position,感兴趣的话,可以修改一下试试,找点感觉,这样会对理解有帮助。
HTML之布局position理解的更多相关文章
- c++对象内存布局的理解
我对c++对象内存布局的理解 引言 结合网上的一些资料,通过自己的一番摸索,得出了一点个人见解.现在写下来,希望与各位同学共同探讨,共同进步. 以下所有代码均是在VS2012下测试. 一个普通的基 ...
- 学习CSS布局 - position例子
position例子 通过具体的例子可以帮助我们更好地理解“position”.下面是一个真正的页面布局. 结果: 代码如下: <!DOCTYPE html> <html lang= ...
- 布局 position
position : 设置定位方式 跟『定位』相关的有一些属性,最重要的一个是『position』,它主要是设置『定位方式』. 而定位方式最重要的是设置『参照物』. 配合 position 使用的有这 ...
- 学习CSS布局 - position
position 为了制作更多复杂的布局,我们需要讨论下 position 属性. 它有一大堆的值,名字还都特抽象,别提有多难记了. 让我们先一个个的过一遍,不过你最好还是把这页放到书签里. 先看下运 ...
- Web开发中常用的定位布局position
定位布局就是为开发提供了更好的布局方式,可以根据需求给相应的模块设定相应位置,从而使界面更佳丰富,代码更佳完美. position是CSS中非常重要的一个属性,通过position属性,我们可以让元素 ...
- 定位布局—position
1. position的属性 1.1position:static 默认位置,没有定位效果 1.2 position:relative 相对定位,不会脱离文档流,相对于原来位置的变化 <!DOC ...
- 我对c++对象内存布局的理解
引言 结合网上的一些资料,通过自己的一番摸索,得出了一点个人见解.现在写下来,希望与各位同学共同探讨,共同进步. 以下所有代码均是在VS2012下测试. 一个普通的基类 1: #include < ...
- 左侧固定,右侧自适应的布局方式理解margin负值理论
一.浮动布局 1.先让固定宽度的div浮动!使其脱离文档流.2.margin-left的值等于固定div的宽度相等. .aside{ float: left; width: 200px; backgr ...
- CSS 对于grid布局的理解,举例代码及解释
网格布局介绍: CSS Grid(网格) 布局(又称为 “Grid(网格)” ),是一个二维的基于网格的布局系统它的目标是完全改变我们基于网格的用户界面的布局方式.CSS 一直用来布局我们的网页,但一 ...
随机推荐
- Objective-C----MRC内存管理 、 自动释放池 、 面向对象三大特性及封装 、 继承 、 组合与聚合
1 MRC练习 1.1 问题 引用计数是Objective-C语言采用的一种内存管理技术,当一个对象被创建在堆上后,该对象的引用计数就自动设置为1,如果在其它对象中的对象成员需要持有这个对象时,则该对 ...
- ImportError: No module named 'commands'
/*********************************************************************** * ImportError: No module na ...
- Qt之qSetMessagePattern
简述 改变默认的消息处理输出. 允许改变qDebug().qWarning().qCritical().qFatal()的输出. 简述 占位符 示例 qSetMessagePattern QT_MES ...
- mysql 操作突然断网,MySQL: “lock wait timeout exceeded”
show processlist;//显示所有进程select * from information_schema.innodb_trx;//查询锁的进程-- kill 310;//杀掉锁进程
- 转:【Spring MVC Controller单例陷阱】
http://lavasoft.blog.51cto.com/62575/1394669/ Spring MVC Controller默认是单例的: 单例的原因有二:1.为了性能.2.不需要多例. 1 ...
- C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;
ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口: 2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...
- HDU 5234 Happy birthday --- 三维01背包
HDU 5234 题目大意:给定n,m,k,以及n*m(n行m列)个数,k为背包容量,从(1,1)开始只能往下走或往右走,求到达(m,n)时能获得的最大价值 解题思路:dp[i][j][k]表示在位置 ...
- poj2240 最短路判环
题意:与poj1680一样,有不同的换钱渠道,可以完成特定两种货币的交换,并且有汇率,只不过此题是单向边,然后问是否能使财富增加 与poj1680一样,建图之后直接spfa判增值的环即可 #inclu ...
- 越狱Season 1-Episode 2: Allen
Season 1, Episode 2: Allen [Previously, on Prison Break] previously: 以前(预先) 前情回顾 -Judge: I find it i ...
- 黑马程序员——JAVA基础之包,权限
------- android培训.java培训.期待与您交流! ---------- 包(package) 对类文件进行分类管理. 给类提供多层命名空间. 写在程序文件的第一行. 类名的全称的是:包 ...