CSS定位

css定位机制

文档流:元素按照在HTML中的位置决定排布的过程

块级元素是从上到下的,内联元素是从左到右的

浮动

position布局

position

css position属性用于指定一个元素在文档中的定位方式。toprightbottomleft属性则决定了该元素的最终位置。

属性值 描述
static 默认。静态定位, 指定元素使用正常的布局行为,即元素在文档常规流中当前的布局位置。此时 top, right, bottom, leftz-index属性无效。
relative 相对定位。 元素先放置在未添加定位时的位置,在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)
absolute 绝对定位。不为元素预留空间,通过指定元素相对于最近的非 static 定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margins),且不会与其他边距合并
fixed 固定定位。 不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变

relative

1.不脱离文档流

参考点

以原来的位置作为参考点,可以进行top,left,right,bottom进行位移

注意

由于相对的位置是原来的位置,坐标轴为第4象限,y轴是相反的

absolute

1.脱离文档流

2.层级提高

参考点

父标签的位置

static:

无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。

相对于最近的非static祖先元素定位,如果没有非static祖先元素,那么以页面左上角进行定位子绝父相

fixed

1.脱离文档流

参考点

html左上角为参考点

z-index

  1. z-index只应用在定位的元素,默认z-index:auto;
  2. z-index取值为整数,数值越大,它的层级越高
  3. 如果元素设置了定位,没有设置z-index,那么谁写在最后面的,表示谁的层级越高。
  4. 从父现象。通常布局方案我们采用子绝父相,比较的是父元素的z-index值,哪个父元素的z-index值越大,表示子元素的层级越高。

float浮动属性

加浮动的元素,会脱离文档流,会在父容器中靠左或者靠右显示,如果之前有浮动元素,就会挨着浮动的元素排列,如果父容器空间不足,他会自行调整浮动:css样式表中用float来表示

属性值 描述
none 表示不浮动,所有之前讲解的HTML标签默认不浮动
left 左浮动
right 右浮动
inherit 继承父元素的浮动属性

float注意点

1.只会影响后面的元素

2.内容默认提升半层,为1.5层,文档流的层为1,但是文字的层级为1.5,所以会出现文字环绕的现象

3.浮动元素的宽度是内容决定的

4.换行排列,父容器一行装不下了,会到下一行(这其中有很多不同的规则,注意下)

5.主要是给块级元素添加的,但是也可以给内联元素添加

常见作用

浮动实现布局

文字环绕

父盒子高度塌陷

父盒子的高度不能由浮动元素撑起来

清除浮动的方式

上下排序(上级元素浮动,对后面无影响)

clear属性:表示清除浮动,left、right、both

嵌套排列(子浮动元素,如何把父元素撑起来)

固定宽高:不推荐,把高度固定死,不适合做自适应的效果

父元素浮动:不推荐,因为父容器也会影响到后面的元素

overflow:hidden(BFC规范),如果子元素想溢出,那么会受到影响

display:inline-block(BFC规范),不推荐,父容器会影响到后面的元素。

设置空标签:不推荐,会多添加一个标签

after伪类:推荐,相当于空标签的加强版,大公司的做法(after默认添加的是一个内联,所有要把它转为块级,快级有clear属性)

伪元素清除法

		#a:after{
content: "";
display: block;
clear: both;
}

overflow:hidden

属性值 描述
visible 默认值。内容不会被修剪,会呈现在元素框之外
hidden 内容会被修剪,并且其余内容不可见
scroll 内容会被修剪,浏览器会显示滚动条以便查看其余内容
auto 由浏览器定夺,如果内容被修剪,就会显示滚动条
inherit 规定从父元素继承overflow属性的值

Block Formtting Context

BFC区域一条规则:计算BFC(块级盒子)的高度时,浮动元素也参与计算

BFC布局规则

1.内部的Box会在垂直方向,一个接一个地放置。

2.Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠

3.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。4.BFC的区域不会与float 元素重叠。

5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

6.计算BFC的高度时,浮动元素也参与计算

BFC产生条件

1、float的值不是none。

2、position的值不是static或者relative。

3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex

4、overflow的值不是visible

布局

行内元素水平居中

1

text-align:center
line-height:盒子高度

2

display:table-cell 转为单元格
vertical-align:middle

块级元素水平居中

1

position:absolute
margin:auto
left:0
right:0
top:0
bottom:0

2

display:table-cell
vertical-align:middle
text-align:center

display:inline-block

3

position:absolution
top:50%
left:50%
margin-left:-50px
margin-top:-50px

CSS浮动和各种定位的更多相关文章

  1. CSS 浮动(float)与定位(position)

    一.浮动 1.三个属性:left.right.none. 2.特点:容易造成父项塌陷,故在父项需要清除浮动 3.父项塌陷现象 4.父项塌陷解决方案(建议使用):清除浮动 .parent:after{ ...

  2. 44 CSS 浮动 模态框 定位

    一.浮动 float : 浮动的盒子不占原来的位置,其下方的盒子会上移 父盒子会发生塌陷现象.同一级盒子right浮动,同级左边的盒子需要左浮动,right浮动的盒子才能上来 由于浮动框不在文档的普通 ...

  3. CSS浮动、定位

    这几天有空,整理了关于CSS浮动和定位的一些知识点,有什么欠缺的地方,欢迎大家批评指正. 一.文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流,指的是元素排版布局过程中,元素会自动从左往右 ...

  4. 奇妙的CSS之布局与定位

    前言 关于布局与定位是Web前端开发里非常基础而又重要的部分.介绍相关知识的文章,很容易就可以找到.虽然,这方面的知识点不是很多,但我们如果不弄清楚,在运用时候往往会出现预料之外的布局,这些“意外”有 ...

  5. CSS有三种基本的定位机制

    CSS有三种基本的定位机制:普通流,浮动和绝对定位. 普通流:在普通流中元素框的位置由元素在html中的位置决定, 1.元素position属性为static或继承来的static时就会按照普通流定位 ...

  6. CSS盒模型和定位的类型

    此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...

  7. css浮动布局

    上次我们一起对盒子模型进行了一定的了解,今天我们就对css浮动布局做一下研究.首先我们来了解一下网页基本布局的三种形式. 首先我们来了解一下什么是网页布局: 网页的布局方式其实就是指浏览器是如何对网页 ...

  8. CSS浮动专题!

    在css中,浮动问题可能是很多刚入门的小白比较头疼的问题. 1,首先先来介绍一下两种浮动类型:左浮动和右浮动 1) float:left;左浮动,后面的内容会流向对象的右侧 2) float:righ ...

  9. css浮动(float)及清除浮动的几种实用方法

    CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...

随机推荐

  1. 在VMware下进行的使用ssh服务管理远程主机

    基于密钥的安全验证--sshd服务的配置文件解析(两台linux) 首先你有两台虚拟机  并且能够ping通(该实验的目的是通过客户端访问服务端) 打开终端进入到这个界面 看一下服务  如果有这三个服 ...

  2. Django学习day5——创建app

    app应用与project项目的区别 一个app实现某个功能,比如博客.公共档案数据库或者简单的投票系统 一个project是配置文件和多个app的集合,这些app组合成整个站点 一个project可 ...

  3. 敏捷宣言(Agile Manifesto)和敏捷开发十二原则

    敏捷宣言 The Agile Manifesto Individuals and interactions over Process and tools 个体与交互 重于 过程和工具 Working ...

  4. 如何在HTML中设置字体颜色,你知道这几种方式吗?

    color设置字体颜色 在color设置字体颜色之前,我们首先了解color在CSS中有几种取值方式,一共有4种方式,若有不全还请在评论区告知谢谢,4种方式如下: 十六进制.十进制. 英文单词.十六进 ...

  5. day5-字典专区

    # 字典# dict 1.fromkeys()根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["],123) print(v) {': 123} 2.get()根据 ...

  6. Md5实例

    MD5实例 我的md5源码 当我们对数据进行操作时,存储到数据库时,有时候不希望别人能够看到,通过md5能够实现对数据的加密. java代码 ```javaimport org.springframe ...

  7. 大宇java面试系列(一):jvm垃圾回收

    1. 说一下 JVM 有哪些垃圾回收算法? 标记-清除算法:标记无用对象,然后进行清除回收.缺点:效率不高,无法清除垃圾碎片. 标记-整理算法:标记无用对象,让所有存活的对象都向一端移动,然后直接清除 ...

  8. [Xilinx笔记] 《FPGA伴你玩转USB3.0与LVDS》 读书笔记

    2019年10月15日09:31:10 第一部分·哪些要看(优先级由高到低) 0.8.1   LVDS数据收发实例 8.2   带CRC校验的LVDS数据收发实例 1.3.6   USB3.0 控制器 ...

  9. Git常用命令(基础)

    Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库 # 在当前目录新建一个Git代码库 $ git in ...

  10. nyoj 47-过河问题 (贪心)

    47-过河问题 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:2 submit:5 题目描述: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的 ...