探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制
Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南
自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理
版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
在该篇博客中,将介绍和学习CSS的定位position。嗯哼,开始吧。
定位(position)的简介
相对于浮动(float)而言定位(position)就要稍微简单些了。定位(position)允许用户较为精确地定义元素出现的相对位置,这个位置可以是相对于其本身出现的位置,也可以是相对于其上级元素的位置,也可以是相对于其他元素的位置,亦可为相对于浏览器视窗左上角的位置。
定位(position)的语法
position:relative | absolute | static | fixed ;
top | right | bottom | left:Mpx ;
- 一般而言,定位(position)会与top、right、bottom、left属性联合使用
- 定位(position)有四种类型:static、absolute、relative、fixed
- 一般会为top、right、bottom、left属性设置具体的值,比如15px
现在分别介绍定位(position)的四种类型。
第一种定位(position):static
请看如下示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>static定位</title>
<style type="text/css">
*{
margin: 0;
padding:0;
}
div{
width: 510px;
height:200px;
border: 1px solid red;
background-color: greenyellow;
position: static;
left: 50px;
top: 80px;
}
</style>
</head>
<body>
<div>
</div>
</body>
</html>
运行后,效果如下图所示:
在该示例中,在标签选择器div里设置了position:static并且为left和top属性设置了具体的值,但是我们发现:<div></div>并没有像我们期待的那样发生位置的改变。这是为什么呢?
其实,这是由static类型的本身特点所决定的。position:static是CSS中默认的定位类型,在该类型下元素以标准流的显示方式,其位置不受top、bottom、left、right的影响。
第二种定位(position):absolute
请看如下示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>absolute定位</title>
<style type="text/css">
*{
margin: 0;
padding:0;
}
div{
width: 510px;
height:200px;
border: 1px solid red;
background-color: #7FFF00;
position: absolute;
left: 50px;
top: 80px;
}
</style>
</head>
<body>
<div>
<br>
<p>本文作者:谷哥的小弟</p>
<br>
<br>
<p>博客地址:http://blog.csdn.net/lfdfhl</p>
</div>
</body>
</html>
运行后,效果如下图所示:
在该示例中,在标签选择器div里设置了position:absolute并且为left和top属性设置了具体的值,程序运行后发现<div></div>的位置像我们期待的那样发生了移动。
在此,小结position:absolute的特点
- 当为一个单独的元素设置position:absolute,那么该元素会以浏览器左上角(<body></body>左上角)为基准设置定位。
- 当元素发生嵌套时,如果父元素没有设置定位或者position为static;此时,给子元素设置position:absolute;在该情况下:子元素的定位以浏览器左上角(<body></body>左上角)为基准。
- 当元素发生嵌套时,如果父元素没有设置定位(position为static除外);此时,给子元素设置position:absolute;在该情况下:子元素的定位以父元素的左上角为基准。
- 当为元素设置了position:absolute,那么该元素会脱离标准流(脱标),这一点和浮动很像。
- 为行内元素比如<span></span>设置position:absolute后该行内元素转化为了行内块元素
第三种定位(position):relative
请看如下示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>relative定位</title>
<style type="text/css">
*{
margin: 0;
padding:0;
}
.firstBox{
width: 510px;
height:200px;
border: 1px solid red;
background-color: #7FFF00;
position: relative;
top: 40px;
left: 90px;
}
.secondBox{
width: 510px;
height:200px;
border: 1px solid red;
background-color: #00FFFF;
}
</style>
</head>
<body>
<div class="firstBox">
<br>
<p>本文作者:谷哥的小弟</p>
<br>
<br>
<p>博客地址:http://blog.csdn.net/lfdfhl</p>
</div>
<div class="secondBox">
<br>
<p>有心课堂</p>
<br>
<br>
<p>http://www.stay4it.com/</p>
</div>
</body>
</html>
运行后,效果如下图所示:
在该示例中,在类选择器firstBox中设置了position:relative和left、top属性。从效果图中可以看到:使用了类选择器firstBox的<div></div>的位置发生了改变。
在此,小结position:relative的特点
- 元素设置position:relative后会根据top、right、bottom、left的值并以其原始位置为参照进行移动
- 元素设置position:relative后该元素不会脱离标准流
- 元素设置position:relative后不能进行元素的模式转换,比如:不能将行内元素<span></span>转换为行内块元素
- position:relative一种常见的用法:子绝父相,即子元素设置绝对定位position:absolute而父元素设置相对定位position:relative
第四种定位(position):fixed
请看如下示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>fixed定位</title>
<style type="text/css">
*{
margin: 0;
padding:0;
}
img{
position: fixed;
}
p{
width: 245px;
background-color: #7FFF00;
}
</style>
</head>
<body>
<img src="syxl.jpg" width="245px" height="300px">
<p>
杉原杏璃,是一名出身自日本广岛县的女艺人和泳衣女星,隶属于FITONE艺能公司,之前曾是ANIMAX及Stardust Promotion公司的旗下艺人。特征是巨乳及长舌,个人技为巴西战舞。2012年,杉原就任广岛县观光委员会秘书。杉原杏璃是日本泳装明星,身高163公分的她拥有89公分的胸围,是日本宅男心目中的女神。日本写真偶像杉原杏璃,于2012年12月1日在东京新宿地下街举行了2013年写真挂历的发卖会。韩国媒体票选出亚洲最美女神,排名第一的是少女时代成员林允儿;日本足球宝贝杉原杏璃排名第二;而中国上榜的女星也有两人,分别是范冰冰排名第四,杨幂排名第六。据报道,杉原杏璃虽然身着圣诞装登场,但难掩其丰满胸部。她表示:“新的写真挂历是穿着泳装拍摄的,比2016年显得成熟。”杉原此次推出的挂历写真主题为“成熟的杏璃”。写真挂历上贴满她身着超短泳装的照片,吸引了众多偶像前来观看。杉原杏璃,是一名出身自日本广岛县的女艺人和泳衣女星,隶属于FITONE艺能公司,之前曾是ANIMAX及Stardust Promotion公司的旗下艺人。特征是巨乳及长舌,个人技为巴西战舞。2012年,杉原就任广岛县观光委员会秘书。杉原杏璃是日本泳装明星,身高163公分的她拥有89公分的胸围,是日本宅男心目中的女神。日本写真偶像杉原杏璃,于2012年12月1日在东京新宿地下街举行了2013年写真挂历的发卖会。韩国媒体票选出亚洲最美女神,排名第一的是少女时代成员林允儿;日本足球宝贝杉原杏璃排名第二;而中国上榜的女星也有两人,分别是范冰冰排名第四,杨幂排名第六。据报道,杉原杏璃虽然身着圣诞装登场,但难掩其丰满胸部。她表示:“新的写真挂历是穿着泳装拍摄的,比2016年显得成熟。”杉原此次推出的挂历写真主题为“成熟的杏璃”。写真挂历上贴满她身着超短泳装的照片,吸引了众多偶像前来观看。
</p>
</body>
</html>
运行后,效果如下图所示:
在该示例中,在标签选择器img中设置了position:fixed;属性。从效果图中可以看到:图片一直固定在某个位置,当我们拖动滚动条时它的仍然保持不变
在此,小结position:fixed的特点
- 为元素设置position:fixed后该元素会固定定位且不占位置,脱离了标准流
- 可利用position:fixed将行内元素转化为行内块元素
- 在设置position:fixed后可通过z-index进行层次分级