CSS元素定位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS元素定位相关的知识,希望对你有一定的参考价值。


1、块级元素、行内元素、文档流

通过对每个盒子的外边矩、边框、内边矩、内容、位置的精确控制,CSS可以实现复杂而精准的页面布局。

块级元素,这类元素默认有换行效果,典型的如div

行内元素,这类元素默认没有换行效果,典型的如span

文档流,html元素在页面上显示时,根据在源码中出现的顺序,按照从上到下、从左到右、块级元素独占一行、行内元素不换行的规则依次排列。在文档流中的元素会对后续元素的位置产生影响。


2、盒子定位


2.1、相对定位

元素在显示时,相对自己本来的位置向下或者向右偏移指定数值,但元素本身并不脱离文档流,也就是说后面的元素还认为此元素在原来的位置,所以会排列在此元素原本位置的后面(但会造成覆盖)


2.2、绝对定位

以最近的已经定位的祖先元素为基准进行偏移(如果没有这样的祖先元素,则以浏览器窗口为基准),元素本身脱离文档流,也就是说后面的元素认为此元素不存在,所以会占据此元素原来的位置(但会造成覆盖,脱离文档流后就不具有块级元素独占一行的性质了)


2.3、固定定位

和绝对定位类似,也会脱离文档流,但总是以浏览器窗口为基准,而且位置不会随着滚动条移动


3、定位使用的css属性

3.1、position

(1)absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

(2)fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

(3)relative 生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

(4)static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。


3.2、top,right,bottom,left

(1)auto

默认值。通过浏览器计算上边缘的位置。

(2)%

设置以包含元素的百分比计的上边位置。可使用负值。

(3)length

使用 px、cm 等单位设置元素的上边位置。可使用负值。


3.3、verflow

(1)visible

默认值。内容不会被修剪,会呈现在元素框之外。

(2)hidden

内容会被修剪,并且其余内容是不可见的。

(3)scroll

内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。

(4)auto

如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。


3.4、vertical-align

(1)baseline

默认。元素放置在父元素的基线上。

(2)top

把元素的顶端与行中最高元素的顶端对齐

(3)middle

把此元素放置在父元素的中部。

(4)bottom

把元素的顶端与行中最低的元素的顶端对齐。

(5)z-index

number 设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

注意:z-index只对进行了定位的元素有效,对于文档流中的元素无效

3.5、float浮动

(1)如果一个盒子向左浮动(float:left;):这个元素会成为行内元素;它后面的块级元素会失去一半的独占一行的特性,即左边紧靠在浮动元素后面,右边延伸到行尾。向右浮动和向左浮动效果类似

(2)可以使用clear:both;清除浮动效果对后面盒子的影响


如何获得元素在页面中的坐标

HTML所有的元素都具有下面这5个只读属性

offsetLeft

元素边框距页面左边界的距离

offsetTop

元素边框距页面上边界的距离

offsetWidth

元素的宽度(左右边框的跨度)

offsetHeight

元素的高度(上下边框的跨度)

offsetParent

返回已经定位的祖先元素,如果没有,则返回body或null。




以上是关于CSS元素定位的主要内容,如果未能解决你的问题,请参考以下文章

selenium之css定位小结

css position 定位详解

17 css定位

css定位,绝对定位的布局,元素层级

CSS样式当时 CSS定位 绝对定位

css如何避免绝对定位覆盖其他元素?