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 一直用来布局我们的网页,但一 ...
随机推荐
- Qt5 添加右键菜单简单测试
1.在.h文件中包含相关头文件 #include <QMenu> #include <QContextMenuEvent> 2.在.h文件中定义动作对象 QAction *ed ...
- bold, big, blink
- Oracle执行语句跟踪(2)——使用10046事件实现语句追踪
接上篇博文Oracle执行语句跟踪(1)--使用sql trace实现语句追踪,一旦我们通过会话追踪获取到超时事物的执行语句,就可以使用10046事件对语句进行追踪. 启用10046事件追踪的方式 S ...
- MySQL数据库恢复的经历。
蛋疼,定时任务设置错误.把数据给删除了.还有一次是服务器时间不对,也把数据给删除了. 还好,开启了二进制日志,才算把数据找回,但是速度效率也太低. 痛定思变.在把一切交由电脑工作的时候,也要做好一定的 ...
- C++ struct 定义及初始化
1 定义: struct Book{ unsigned int bookNo; string name; }; 2 初始化 struct的初始化分为三种:逐一赋值,顺序赋值,乱序赋值 // 逐一 ...
- 转载:奇异值分解(SVD) --- 线性变换几何意义(下)
本文转载自他人: PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义.能在有限的篇幅把这个问题讲解的如此清晰,实属不易.原文举了一个简单的图像处理 ...
- 2016 Sichuan Province Programming Contest
2016 Sichuan Province Programming Contest 代码 2016 Sichuan Province Programming Contest A. Nearest Ne ...
- dedecms 忘记后台密码
找到admin表 dede_admin,把其pwd的值修改为 默认的 字符串:f297a57a5a743894a0e4, 之后,你的密码就被充值为 admin
- Make和Makefile编写(详见GCC手册)
Makefile和Make Rules 多模块软件.依赖树和Make 默认规则 Make使用程序对简单变量的支持 内建变量 虚目标 特殊目标 一般性语法错误及其纠正措施 命令行的使用和调试 Makef ...
- ssh命令:使用密钥文件进行登陆
在win上面可以使用XSHELL来登录类似于亚马逊这样的安全服务器,在mac上面就可以使用系统自带的命令工具来连接 1.使用命令 ssh -i key.pem [server] 如下: ssh -i ...