CSS——定位
什么是定位?
定位就是将盒子定在某一个位置,按照定位的方式来移动、摆放盒子。
什么情况下使用定位?
1.某个元素可以自由的在一个盒子内移动位置,并且会压住其他盒子。
2.在滚动窗口时,盒子固定在屏幕的某个位置,并且会压住其他盒子。
定位的组成是什么?
定位=定位模式+边偏移
边偏移
边偏移决定了元素在文档中的的最终位置,有 top、bottom、left、right 四个属性。
属性 | 示例 | 描述 |
top | top:80px; | 顶端偏移量,定义元素相对于其父元素上边线的距离 |
bottom | bottom:80px; | 底部偏移量,定义元素相对于其父元素下边线的距离 |
left | left:80px; | 左侧偏移量,定义元素相对于其父元素左边线的距离 |
right | right:80px; | 右侧偏移量,定义元素相对于其父元素右边线的距离 |
定位模式
定位模式决定了一个元素在文档中的定位方式,通过CSS的position属性来设置,其值分为4个:
值 | 语义 |
static | 静态定位 |
relative | 相对定位 |
absolute | 绝对定位 |
fixed | 固定定位 |
静态定位 static(了解)
静态定位:是元素的默认定位方式,无定位的意思。
语法:
选择器{position:static;}
- 静态定位的元素没有脱离标准流,拥有标准流的所有特性(即还是按照标准流的特性摆放位置),也没有边偏移。
- 静态定位在布局时很少用到。
可以理解为:静态定位等同于标准流。
相对定位 relative(重要)
相对定位:在移动元素时参照的是自己原来的位置。
语法:{position:relative}
- 元素先放置在未添加相对定位时的位置添加定位模式的元素添加边偏移后,原来在标准流的位置继续占有(不脱标),因此会在此元素未添加定位时所在位置留下空白。
代码示例:
不加相对定位的两个正方形:
1 <div class="box1">box1</div> 2 <div class="box2">box2</div>
.box1, .box2 { width: 50px; height: 50px; } .box1{ /*position:relative;*/ left: 25px; top: 25px; background-color: #9bceea; } .box2{ background-color: #ff7c2d;
产生的效果如下:
有相对定位的两个正方形:
1 <div class="box1">box1</div> 2 <div class="box2">box2</div>
.box1, .box2 {
position: relative; width: 50px; height: 50px; } .box1{ position: relative; left: 25px; top: 25px; background-color: #9bceea; } .box2{ background-color: #ff7c2d;
产生的效果如下:
绝对定位 absolute(重要)
绝对定位:在元素移动位置的时候,是相对于它的祖先元素来说的。
语法:
选择器:{position:absolute;}
- 如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位。
- 如果祖先元素有定位(相对定位、绝对定位、固定定位),则以最近一级的有定位的祖先元素为参考点移动位置。
- 绝对定位不再占有原先的位置。(脱标)
- 在实际布局中,使用“子绝父相”的布局方式比较多。
- margin:auto;对绝对定位的元素不起作用。
绝对定位的盒子水平居中的方法
绝对定位的盒子在浏览器中水平垂直居中分为四步:
- 先让绝对定位的盒子left:50%; 移动父容器宽度的一半。
- 再让绝对定位的盒子margin-left:-自己盒子宽度的一半。
- 接着让绝对定位的盒子top:50%; 移动父容器高度的一半。
- 最后让绝对定位的盒子margin-top:-自己盒子高度的一半。
该方法的好处:不管放大还是缩小浏览器窗口,该方法始终让盒子在浏览器的可视区域水平垂直居中。
固定定位 fixed(重要)
固定定位:是元素固定于浏览器可视区的位置。
主要使用场景:浏览器页面滚动时,元素的位置不改变。
语法:
选择器{position:fixed;}
- 固定定位的元素以浏览器的可视窗口为参照点进行移动。
- 固定定位的元素跟父元素没有任何关系。
- 固定定位的元素不随滚动条滚动。
- 固定定位脱离标准流,不再占有原先的位置。(可以把固定定位看作是一种特殊的绝对定位)
把元素固定在版心右侧的方法
把元素固定在版心右侧的方法分为两步:
- 先让固定定位的盒子left:50%; 移动到浏览器可视区一半的位置。
- 然后让固定定位的盒子margin-left:版心宽度的一半; 移动到版心右侧。
粘性定位 sticky(了解)
语法:
选择器{position:sticky; top:10px;}
- 以浏览器的可视窗口为参照点移动元素。(固定定位的特点)
- 粘性定位占有原先的位置。(相对定位的特点)
- 必须添加top、bottom、left、right其中一个才有效。如果不添加边偏移,就会按照普通的相对定位来处理。
粘性定位和页面滚动搭配使用,兼容性较差,IE不支持。
定位的叠放顺序
在使用定位布局时,可能会出现盒子重叠的情况。这时候可以用z-index(z是z轴的意思)来控制盒子的前后次序。
语法:
选择器{z-index:1;}
- 属性值可以是正整数、负整数或者是0。默认是auto,数值越大,盒子越靠上。
- 如果没有z-index属性(默认为z-index的值为auto)或者z-index的属性值相同,那么按照书写顺序,后来者居上。
- 属性值不能加单位。
- 只有定位的盒子才有index属性。
- 如果两个定位元素的z-index分别为:z-index:0;和z-index:auto;那么按照书写顺序,后来者居上。区别是z-index:0 会创建一个新的叠层上下文,而z-index:auto不会创建。示例代码如下:
<div class="red">red</div> <div class="blue">blue</div>
.red,.blue{ position: absolute; width: 200px; height:200px;} .red { z-index: 0; top: 100px; left: 100px;; background: red; } .blue { z-index: auto; top: 40px; left: 40px;; background: blue; }
产生的效果如下:
如果把红色盒子的z-index设置为:z-index:auto; 把蓝色盒子的z-index设置为:z-index:0;,效果不变,依然为上图所示。
定位的特殊特性
行内元素添加固定定位或者是绝对定位可以直接设置高度或者宽度。
块级元素添加绝对定位或者是固定定位后,如果不给宽度和高度,默认大小是内容的大小。
绝对定位和固定定位的盒子脱离标准流,不会触发外边距合并的问题。
浮动的元素会压住下面标准流的盒子,但是不会压住下面标准流的文字或者是图片,这是因为浮动的初衷是做文字环绕效果。但是定位会压住下面标准流的所有内容。
原文地址:https://www.cnblogs.com/audery/p/_position.html
- SSH免密登录,RSA认证登录
- Zookeeper安装部署调试命令
- Facebook 直播是如何承受海量压力的?
- 将 Redis 作为图数据库
- 爬取 Stackoverflow 100 万条问答并简单分析
- Python: 早点知道这些就不会这样了
- 第一个参数:initScans(job)
- Mysql 高可用 InnoDB Cluster 多节点搭建过程
- 用MapReduce分析Hbase将结果插入mysql中
- 敲敲级简单的鉴别H图片的小程序
- processArgs方法解读
- Python分布式微博爬虫(源码分享)
- NewInstallUserMapper.class阅读笔记
- TimeUtil类所有方法
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- Fiddler Everywhere工具答疑
- Groovy重载操作符(终极版)
- HTTP异步连接池和多线程实践
- 测试仓库推介(上)
- 测试仓库推介(下)
- 如何进行数据标注(1)
- 百度黄埔学院:交通枢纽高密人流下的防疫筛查解决方案技术理解(1)
- 百度黄埔学院:交通枢纽高密人流下的防疫筛查解决方案技术理解(2)
- 百度黄埔学院:十行代码高效完成深度学习POC
- 【数据相关】目标检测中的数据标注及格式转换代码
- 科学与艺术的融合:遗传算法绘制蒙娜丽莎
- “工业听诊”中多声源事件检测与定位
- 工业党福利:使用PaddleX高效实现指针型表计读取系列文章(2)
- 【三维点云系列】PCL点云库之数据文件与IO操作
- Jvm故障处理工具