CSS定位使用方法
对于网页页面布局来说,使用定位进行布局十分的方便。
绝对定位(使用绝对定位应当将父元素设置为相对定位,否则元素绝对定位的基准会一直寻找外层非静态定位元素):
<!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>
结果如下:
如果不使用定位,要实现这样的效果,需要使用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>
结果如下:
相对定位的相对,就是指没有设置定位值,元素所在的位置,根据代码顺序,后者会对前者内容进行覆盖。
<!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定位使用方法的更多相关文章
- 【java + selenium3】窗口基本操作及8大定位元素方法总结(一)
一.窗口基本操作 1. 关于窗口的设置都是由window对象提供的: 获取window的对象方法: driver.manage().window(); //1.获取 window 对象 Window ...
- 简单CSS定位瀑布流实现方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)
Selenium下的Webdriver工具支持FireFox(geckodriver). IE(InternetExplorerDriver).Chrome(ChromeDriver). Opera( ...
- WebDriver定位元素方法
如果把页面上的元素看作人的话,在现实世界如何找到某人呢?方法有三: 一.通过人本身的属性,例如他的姓名,手机号,身份证号,性别,这些可区别他人的属性.在web页面上的元素也有这些属性,例如,id.na ...
- CSS垂直水平居中方法整理
CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transition ...
- 总结Selenium自动化测试方法(三)WebDriver定位元素方法
三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls. ...
- CSS定位(postion)和移动(float)
5.定位和移动:Positioning(定位)CSS定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么. 元素可以使用的顶部,底部,左侧和右侧 ...
- CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位
其实前面的标准流和浮动流都很理解,就是定位不太好理解,特别是相对定位和绝对定位,很多刚开始学的同学不好区分.因此这里,小强老师和大家一起分享CSS定位的学习. 通过我们前面的学习,我们网页布局方法: ...
- CSS实现三角形方法一--rotate+relative
方法说明:两个正方形,一个小的,一个大的,将大的正方向进行旋转,然后移动到小的正方形的合适位置,覆盖小正方形的一部分,使小正方形剩余部分为三角形,再把大正方形的背景色改为浏览器窗口的颜色. 用到知识: ...
随机推荐
- Linux进程模型
----原文链接:http://www.cnblogs.com/biyeymyhjob/archive/2012/08/01/2617884.html------ Linux进程通过一个task_st ...
- 网站开发进阶(二十九)HTML特殊转义字符
HTML特殊转义字符 参考文献 http://tool.oschina.net/commons?type=2 美文美图
- 高德地图SDK使用经验
下文说的是高德地图 Android SDK版本,详细版本如下: 2D地图:v2.3.1 定位:v1.3.0 导航:v1.1.1 发现的问题如下,其中一些疑是地图BUG,一些是需要你自己小心的地方: 1 ...
- android自定义view之---组合view
最近工作比较轻松,没有什么事情干,于是进入高产模式(呃....高产似xx). 应该很多童鞋对自定义view这个东西比较抵触,可能是听网上说view比较难吧,其实自定义view并没有很难 自定义view ...
- SpriteBuilder中的粒子系统属性
一个粒子发射器可以有2种模式,放射状和重力的(radial or gravity) 放射状模式允许你去使用发射器创建粒子旋涡状环绕在指定位置的效果. 当启用重力效果,你可以使得粒子在任何方向任意飞行, ...
- Java泛型和通配符那点事
泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法 ...
- FFmpeg 2.1 试用(新版支持HEVC,VP9)
前两天帮一位老师转码图像的时候,无意间发现新版FFmpeg竟然支持了下一代编码标准HEVC,以及Google提出的下一代编码标准VP9.真心没想到FFmpeg对下一代的编码标准支持的是如此之快.我还以 ...
- C++中重载、覆盖与隐藏的区别(转)
本文摘自林锐博士的<高质量C++/C编程指南>. 成员函数的重载.覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防. 1.重载与覆盖 成员函数被重 ...
- Mahout SlopOne
关于推荐引擎 如今的互联网中,无论是电子商务还是社交网络,对数据挖掘的需求都越来越大了,而推荐引擎正是数据挖掘完美体现:通过分析用户历史行为,将他可能喜欢内容推送给他,能产生相当好的用户体验,这就是推 ...
- Mina源码阅读笔记(四)—Mina的连接IoConnector2
接着Mina源码阅读笔记(四)-Mina的连接IoConnector1,,我们继续: AbstractIoAcceptor: 001 package org.apache.mina.core.rewr ...