对于网页页面布局来说,使用定位进行布局十分的方便。

  绝对定位(使用绝对定位应当将父元素设置为相对定位,否则元素绝对定位的基准会一直寻找外层非静态定位元素):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box0{ width: 200px; height: 200px; position: relative;background: #cfa }
.box0-1,.box0-2{ width: 50px; height: 50px; }
.box0-1{ position:absolute; left: 50px; top: 50px; background: #567 }
.box0-2{ position:absolute; left: 50px; top: 50px; background: #5a2}
</style>
</head>
<body>
<div class="box0">
<div class="box0-1">0-1</div>
<div class="box0-2">0-2</div>
</div>
</body>
</html>

  结果如下:

0-1
0-2

  如果不使用定位,要实现这样的效果,需要使用CSS属性为:

.box0{  width: 200px; height: 200px;background: #cfa; overflow: hidden }
.box0-1,.box0-2{ width: 50px; height: 50px; }
.box0-1{ margin: 50px 0 0 50px; }
.box0-2{ margin: 0 50px 0 100px; }

  使用边距和浮动是一个计算的过程,需要把握好每一个像素之间的关系。而使用绝对定位就是单纯的找位置,只要量得住,那就找的准,直接粗暴。需要注意的是,绝对定位的元素脱离了标准文档流,其本身的位置并不会保留,所以不能和浮动同时使用。并且也不建议和margin一起使用。

  可以使用绝对定位将元素进行垂直方向的居中,需要配合CSS3的transform属性。

div {
width: 100%;
height: 100px;
position: absolute;
top: 50%;
left:;
transform: translateY(-50%);
}

  translateY函数是在元素Y方向上进行位移,使用百分比是是依照元素盒模型高度为100%的。这种定位可以用于元素高度不确定的情况,当然能使用弹性盒模型更加方便。

  对于相对定位来说,由于元素本身的位置并不会消失,所以配合浮动更加好用,否则使用绝对定位更方便。

  如下(便于观察,两个小块设置100的上外边距,此时原本位置应从下方3/4开始):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box1{ width: 200px; height: 200px; background: #abc }
.box1-1,.box1-2{ width: 50px; height: 50px; margin-top: 100px; float: left; position: relative; }
.box1-1{ top: 50px; left: 50px; background: #a2c; }
.box1-2{ bottom: 50px; right: 50px; background: #22c; }
</style>
</head>
<body>
<div class="box1">
<div class="box1-1">1-1</div>
<div class="box1-2">1-2</div>
</div>
</body>
</html>

  结果如下:

1-1
1-2

  相对定位的相对,就是指没有设置定位值,元素所在的位置,根据代码顺序,后者会对前者内容进行覆盖。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box2{ width: 200px; height: 200px; background: #ca9 }
.box2-1{ width: 50px; height: 50px; position: fixed; }
.box2-1{ top: 50px; left: 50px; background: #4b3; }
</style>
</head>
<body>
<div class="box2">
<div class="box2-1">我被固定了</div>
</div>
</body>
</html>

  结果自己找吧:

我被固定了

  结果不是根据父级元素定位的,显示不出(和上一篇的旋转一样)暂时不知道为什么。

  总之,不同的定位方式有不同的作用,使用定位的目的是让代码简洁直观,所以具体使用哪一种应当根据实际情况而定。

CSS定位使用方法的更多相关文章

  1. 【java + selenium3】窗口基本操作及8大定位元素方法总结(一)

    一.窗口基本操作 1. 关于窗口的设置都是由window对象提供的: 获取window的对象方法: driver.manage().window(); //1.获取 window 对象 Window ...

  2. 简单CSS定位瀑布流实现方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)

    Selenium下的Webdriver工具支持FireFox(geckodriver). IE(InternetExplorerDriver).Chrome(ChromeDriver). Opera( ...

  4. WebDriver定位元素方法

    如果把页面上的元素看作人的话,在现实世界如何找到某人呢?方法有三: 一.通过人本身的属性,例如他的姓名,手机号,身份证号,性别,这些可区别他人的属性.在web页面上的元素也有这些属性,例如,id.na ...

  5. CSS垂直水平居中方法整理

    CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transition ...

  6. 总结Selenium自动化测试方法(三)WebDriver定位元素方法

    三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls. ...

  7. CSS定位(postion)和移动(float)

    5.定位和移动:Positioning(定位)CSS定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么. 元素可以使用的顶部,底部,左侧和右侧 ...

  8. CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位

    其实前面的标准流和浮动流都很理解,就是定位不太好理解,特别是相对定位和绝对定位,很多刚开始学的同学不好区分.因此这里,小强老师和大家一起分享CSS定位的学习. 通过我们前面的学习,我们网页布局方法: ...

  9. CSS实现三角形方法一--rotate+relative

    方法说明:两个正方形,一个小的,一个大的,将大的正方向进行旋转,然后移动到小的正方形的合适位置,覆盖小正方形的一部分,使小正方形剩余部分为三角形,再把大正方形的背景色改为浏览器窗口的颜色. 用到知识: ...

随机推荐

  1. 使用Libgdx开发的FlappyBird(像素鸟、疯狂的小鸟)游戏源码

    本帖最后由 宋志辉 于 2014-10-21 15:06 编辑 点击进入下载地址 Flappy Bird(飞扬的小鸟)由一位来自越南河内的独立游戏开发者阮哈东开发,是一款形式简易但难度极高的休闲游戏. ...

  2. (NO.00001)iOS游戏SpeedBoy Lite成形记(十四)

    下面要启用场景的触摸功能,在GameScene.m的didLoadFromCCB方法里添加下面一行: self.userInteractionEnabled = YES; 然后还需要给GameScen ...

  3. Android 利用WebViewJavascriptBridge 实现js和java的交互(一)

    此文出自:http://blog.csdn.net/sk719887916/article/details/47189607,skay 按安卓开发目前现状来说,开发者大部分时间还是花在UI的屏幕适配上 ...

  4. Python学习笔记 - 切片

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- def fact(n): if n == 1: return 1 return n * fact(n - ...

  5. python的安装,IDLE基本操作

    §一.安装Python 1. 下载Active Python安装包 根据你机器型号download Python,32b选择for windows X86,64b选择for window 64b 2. ...

  6. 菜鸟玩云计算之二十:saltstack入门初步

    菜鸟玩云计算之二十 SaltStack 入门初步 0. saltstack 是什么 参考下面的文章: http://docs.saltstack.com/en/latest/topics/tutori ...

  7. 青年之锋文学网(&nbsp;www.xcqnzf…

    青年之锋文学网( www.xcqnzf.com )简介: 青年之锋文学网创建于2013年秋,是河南农业大学(应用科技学院)--青年之锋文学社的官方网站,网站以长篇写作和出版校刊为主题,短篇精彩丰富为中 ...

  8. Android不同系统版本依然能调用到正确的API方法Demo——Service调用startForeground举例

    private static final Class<?>[] mSetForegroundSignature = new Class[] { boolean.class}; privat ...

  9. 使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)

    使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Netw ...

  10. Android开发常用网站汇总

    1.eoe Android开发者论坛 目前国内最早的Android开发者社区,人气非常旺聚集了不少Android开发方面的高手,开发中遇到的问题大都能在这里获得解决,网站最大的特色是定期发布<e ...