Div的定位
2015-12-09 22:22
253 查看
css的定位是很多人容易困惑的地方,自己以前也是,随着时间慢慢的学习,自己有一些领悟,可以一起分享。
css的定位有四种,static,relative,absolute,fixed。对于static就是正常的文档流,没有什么特别的。对与fixed总是以body为定位时的对象,总是根据浏览器的窗口来进行元素的定位,通过"left"、 "top"、 "right"、 "bottom" 属性进行定位。
在文档流中,每个块元素都会被安排到流中的一个位置,我们可以通过CSS中的定位属性来重新安排它的位置。定位分为相对定位和绝对定位,相对定位是相对于该块元素在文档流中的位置的,比如,我们可以使用相对定位把div2放到div1的右侧,CSS代码如下:#div1 {
border: 1px solid #000099;
height: 60px;
width: 200px;
margin:2px;
}
#div2 {
border: 1px solid #000099;
height: 60px;
width: 200px;
margin:2px;
position: relative;
top: -64px;
left: 204px;
}
#div3 {
border: 1px solid #000099;
height: 60px;
width: 200px;
margin:2px;
relative就是相对定位,第一:它总是相对于上一级的父元素定位。第二:他即使不在原来的文档流里但是还是占据原来的空间。
absolute就是绝对定位,第一:它是以浏览器窗口或者有相对定位或者绝对定位的上一级或者几级父元素而定位。第二:它并不在原来的文档流里占据空间。详细的请看转载的精华:
1、relative。定位为relative的元素脱离正常的文本流中,但其在文本流中的位置依然存在。如图1:
图1
***背景的层定位为relative,红色边框区域为其在正常流中的位置。在通过top、left对其定位后,从灰色背景层的位置可以看出其正常位置依然存在。
2、absolute。定位为absolute的层脱离正常文本流,但与relative的区别是其在正常流中的位置不在存在。如图2:
图2
可以看到,在将***背景层定位为absolute后,灰色背景层自动补上。
3、relative与absolute的主要区别:
首先,是上面已经提到过的在正常流中的位置存在与否。
其次,relative定位的层总是相对于其最近的父元素,无论其父元素是何种定位方式。如图3:
图3
图中,红色背景层为relative定位,其直接父元素绿色背景层为默认的static定位。红色背景层的位置为相对绿色背景层top、left个20元素。而如果红色背景层定位为absolute,则情形如图4:
图4
可以看到,红色背景层依然定义top:20px;left:20px;但其相对的元素变为定位方式为absolute或relative的***背景
层。因此,对于absolute定位的层总是相对于其最近的定义为absolute或relative的父层,而这个父层并不一定是其直接父层。如果其父
层中都未定义absolute或relative,则其将相对body进行定位,如图5:
图5
除top、left、right、bottom定位外,margin属性值的定义也符合上述规则。
css的定位有四种,static,relative,absolute,fixed。对于static就是正常的文档流,没有什么特别的。对与fixed总是以body为定位时的对象,总是根据浏览器的窗口来进行元素的定位,通过"left"、 "top"、 "right"、 "bottom" 属性进行定位。
在文档流中,每个块元素都会被安排到流中的一个位置,我们可以通过CSS中的定位属性来重新安排它的位置。定位分为相对定位和绝对定位,相对定位是相对于该块元素在文档流中的位置的,比如,我们可以使用相对定位把div2放到div1的右侧,CSS代码如下:#div1 {
border: 1px solid #000099;
height: 60px;
width: 200px;
margin:2px;
}
#div2 {
border: 1px solid #000099;
height: 60px;
width: 200px;
margin:2px;
position: relative;
top: -64px;
left: 204px;
}
#div3 {
border: 1px solid #000099;
height: 60px;
width: 200px;
margin:2px;
relative就是相对定位,第一:它总是相对于上一级的父元素定位。第二:他即使不在原来的文档流里但是还是占据原来的空间。
absolute就是绝对定位,第一:它是以浏览器窗口或者有相对定位或者绝对定位的上一级或者几级父元素而定位。第二:它并不在原来的文档流里占据空间。详细的请看转载的精华:
1、relative。定位为relative的元素脱离正常的文本流中,但其在文本流中的位置依然存在。如图1:
图1
***背景的层定位为relative,红色边框区域为其在正常流中的位置。在通过top、left对其定位后,从灰色背景层的位置可以看出其正常位置依然存在。
2、absolute。定位为absolute的层脱离正常文本流,但与relative的区别是其在正常流中的位置不在存在。如图2:
图2
可以看到,在将***背景层定位为absolute后,灰色背景层自动补上。
3、relative与absolute的主要区别:
首先,是上面已经提到过的在正常流中的位置存在与否。
其次,relative定位的层总是相对于其最近的父元素,无论其父元素是何种定位方式。如图3:
图3
图中,红色背景层为relative定位,其直接父元素绿色背景层为默认的static定位。红色背景层的位置为相对绿色背景层top、left个20元素。而如果红色背景层定位为absolute,则情形如图4:
图4
可以看到,红色背景层依然定义top:20px;left:20px;但其相对的元素变为定位方式为absolute或relative的***背景
层。因此,对于absolute定位的层总是相对于其最近的定义为absolute或relative的父层,而这个父层并不一定是其直接父层。如果其父
层中都未定义absolute或relative,则其将相对body进行定位,如图5:
图5
除top、left、right、bottom定位外,margin属性值的定义也符合上述规则。
相关文章推荐
- GUI - Web前端开发框架
- 如何优雅地处理前端异常?
- WEB前端开发都应知道的jquery小技巧及jquery三个简写
- 前端开发过程中浏览器版本的两种判定方法
- Bootstrap每天必学之前端开发框架
- 直接拿来用的15个jQuery代码片段
- 10个很棒的jQuery代码片段
- 前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
- 前端开发必须知道的JS之闭包及应用
- 18个非常棒的jQuery代码片段
- 深入解析 ES6 系列(二)
- [前端百科]UI设计师与前端工程师的区别
- 编程狂人第三十三期,程序员必读的技术周刊
- 招聘正在进行时,315晚会使用的高科技产品,难道你们不知道嘛<( ̄︶ ̄)↗[GO!]
- 前端开发-学习资料库
- 前端开发文档(参考手册,开源书籍)
- 1.html的基本概念的学习
- angular.js双向数据绑定实现动画特效
- 前端开发工程师必备技能
- Zepto源码分析(1)——类型判断函数