相对定位(relative):

先说相对定位:跟它的名一样,相对嘛,要有一个参照物,但这个参照不是别的,是它自己在原来文档流中的位置。相对定位之后的对象并没有完全从文档流中脱离,这个对象原来在文档中的位置保留着(站着茅坑不拉屎),偏移后的对象会把其它的层遮罩住。

将相对定位特征总结如下:

①相对定位的元素,在没有设置宽度的情况下,宽度是整个浏览器的宽度,或者是依赖于父元素的宽度。

②相对定位的块状元素相对于原来位置移动,移动后仍然占据文档流的位置,不影响其他元素的布局

下面通过代码进行验证

在浏览器中放置5个盒子,用不同的颜色来表示,代码如下

HTML代码

CSS代码

最初效果图

给第三个盒子设置相对定位

元素相对于原来位置偏移,宽高都没变,撑大了容器,还占据着原来在文档流中的位置,对其它元素的布局没有产生影响。

绝对定位(absolute):

被绝对定位的对象将从文档流中脱离,绝对定位的参照位置就不再是自己了,是哪个,就看它的上级或上上级有没有定位了,使用left,right,top, bottom等属性相对于其最接近的一个有相对或者绝对定位设置的父级对象进行绝对定位,如果父级没有设置定位属性,则会相对于html根元素进行定位,看了一些帖子发现有人认为如果父对象没有设置定位属性,则会相对于body进行定位,这个说法是不对的。

将绝对定位的特征总结如下:

①绝对定位的块状元素在没有设置宽度的情况下,宽度由元素里面的内容决定

②脱离后原来的位置相当于是空的,下面的元素会来占据位置

③绝对定位的对象相对于距离自己最近的设置了相对定位或者绝对定位的父对象进行定位

④如果父元素没有定位,则相对于html根元素定位

下边还是通过这五个盒子的偏移来验证

(1)块元素无偏移值

上边的5个盒子,只给box5一个绝对定位,无偏移值。此时块状元素只是漂浮在原来的位置,如果后边还有块状元素,将会占据他在文档流中的位置,我们在box5下边加上一个box6看一下效果。

说明:绝对定位的块状元素在没有定义宽度的情况下,宽度由元素里面的内容决定。

效果图如下

加一个box6的效果

从图中可以看出,box6已经占据了box5在文档流中的位置了。

(2)有偏移值

如果设置了偏移值而父元素没有设置相对定位或绝对定位的情况下,元素相对于根元素定位(即html元素,注意是相对于根元素,而不是相对于body)用box5的偏移来验证。

①给box5一个偏移量,父元素没有相对或者绝对定位

效果图如下

②给box5同样的偏移量,给body元素一个绝对定位(body元素设置为了absolute,绝对定位的块状元素的宽度由最长p决定,宽度变小了):

效果图如下

图片发自App

从上边的两张效果图明显发现相对于根元素的定位与相对于body的定位是不相同的,主要的区别在于有没有算进去body的margin值。

下面在五个盒子外边再嵌套三个父盒子,并给这三个父盒子一个定位,来验证是否是根据最近定位的父元素进行偏移。

代码如下

HTML代码

CSS代码

效果图

图片发自App

从上边很明显看的出来box5是相对于第三层容器也就是离它最近的容器进行的定位。有兴趣的可以试一试,把第三层容器的定位去掉,看看是不是就相对于第二层容器定位了,我已经验证过,就不放图了。

有同学会问,为什么要把最外层的盒子设置为绝对定位,其它两个设置为相对定位,这个定位的方法区别主要影响的是盒子的宽度,相对定位的块元素在没有设置宽度的情况下,它的宽度就是默认的浏览器的宽度,有父元素的情况下,则它的宽度由父元素决定,如果这个块元素的内容过多,则会把父元素也撑大。

,也就是说相对定位的块元素的宽度依赖于父元素,那么如果把这三个容器都设置为绝对定位会有什么效果呢,先来看一看效果图

图片发自App

从图中可以看出,第三层容器的宽度已经不再依赖于父元素,因为它从文档流中脱离出来了,他自己是独立的,而他的宽度只能由内容来决定。总结起来就是,绝对定位的块元素宽度由自己的内容决定,相对定位的块元素在没有设定宽度时,默认就是浏览器的宽度。但是不管宽度怎样,绝对定位的元素都会找到离自己最近定位(绝对或者相对定位)的父元素来进行定位。

总结:

relative:定位是相对于自身位置定位(设置偏移量的时候,会相对于自身所在的位置偏移)。设置了relative的元素仍然处在文档流中,元素的宽高不变,设置偏移量也不会影响其他元素的位置。最外层容器设置为relative定位,在没有设置宽度的情况下,宽度是整个浏览器的宽度。

absolute:定位是相对于离元素最近的设置了绝对或相对定位的父元素决定的,如果没有父元素设置绝对或相对定位,则元素相对于根元素即html元素定位。设置了absolute的元素脱离了文档流,元素在没有设置宽度的情况下,宽度由元素里面的内容决定。脱离后原来的位置相当于是空的,下面的元素会来占据位置。

说明:本文的实验结果是在父元素及子元素没有设置固定宽度的情况下得来的,如果父元素设置了固定的宽度,他的子元素无论是绝对定位还是相对定位的子元素都不能超过其父元素的宽度,父元素是老大哥,谁都不能超过他。

html设置相对定位代码怎么写,Web前端面试题第八道—绝对定位与相对定位相关推荐

  1. web前端面试题:20道做完信心嫉妒膨胀的测试题

    经常有前端的同学说去面试的时候被企业的面试题搞得很心伤,感觉自己什么都不会了!今天小千就带给大家20道能让你疯狂增加信心的面试题,废话不多说赶紧来做题吧~ 1.Vue框架的作者是谁? A.秦始皇 B. ...

  2. Web前端面试题集锦

    Web前端面试题集锦 前端开发面试知识点大纲: 注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5927180.html )作者:wangwen896 H ...

  3. 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上

    引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上 ...

  4. WEB前端面试题整理

    WEB前端面试题 文章目录 WEB前端面试题 一.html部分 1.Doctype有什么作用?标准模式与兼容模式有什么区别 2.标准模式与兼容模式(怪异模式)各有什么区别? div1和div2之间的距 ...

  5. 吐血熬夜整理!2020最全web前端面试题!!!你想要的我这都有!!!

    吐血总结了下web前端面试题,分享给大家,以后还会持续更新,有些题目有多种答案,本文只给出其中一种,哪里有问题的欢迎指出. Html&CSS 1.谈谈你对web标准的理解 web标准的理解 2 ...

  6. web前端面试题-css方面

    web前端面试题-css 1. display: none; 与 visibility: hidden; 的区别 2 link 与 @import 的区别 3 display,float,positi ...

  7. 史上最全的web前端面试题汇总及答案1

    小编推荐:Fundebug提供JS错误监控.微信小程序错误监控.微信小游戏错误监控,Node.j错误监控和Java错误监控.真的是一个很好用的错误监控费服务,众多大佬公司都在使用. 很早之前就在看we ...

  8. 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)下

    引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上 ...

  9. web前端面试题(附答案)

    web前端面试题 1.src和href的区别 ? href: Hypertext Reference的缩写,超文本引用,多数用于a link 标签 看下图 加载他们的时候 不会停止对当前页面的加载 浏 ...

最新文章

  1. java 外来类,外来的Matplotlib图(tkinter中的情节)
  2. 在 mac OS 中安装 xgboost python 包
  3. linux配置环境jdk
  4. MediaWiKi简明安装与配置笔记
  5. 前端 圆形进度图_CSS3+JS实现静态圆形进度条
  6. CSS3笔记之基础篇(二)颜色和渐变色彩
  7. Ros中Remap(话题重映射)的两种使用方法
  8. POJ2260 ZOJ1949 UVA541 Error Correction题解
  9. 大学mysql期末试题_大学期末考试综合实训试题一
  10. 带你了解锂电池保护板的工作原理
  11. typora设置标题自动编号
  12. 基于docker的redis4.0单机集群搭建
  13. Confluence 7.2 宏乱码解决办法
  14. Rust编译`Couldn‘t resolve host name (Could not resolve host: crates)` 错误的解决办法
  15. Element表格之表头合并、行合并和列合并
  16. java基于ssm的论坛贴子网站ssm论坛项目发帖子网站论坛系统论坛源码
  17. 击碎“基因决定论”和“1万小时理论”认知误区!这本书告诉你怎么快速成长!
  18. c语言程序设计概述总结,c语言程序设计总结.docx
  19. oracle数据库led显示屏,LED大屏幕设置软件
  20. Python 实现图片隐写术

热门文章

  1. 独家|不做“拼多多”做“严选”,团好货转向,王兴电商梦再进一步
  2. linux正确关机的方法
  3. Conflux杨光:PoW和PoS的全面比较 | 碳话第一期
  4. 儿童接种新冠疫苗的7个注意事项
  5. 软考学习---数据库系统
  6. 图形学笔记(五)光栅化——屏幕、像素、屏幕空间、视口变换、基础图元与三角形、采样、包围盒、锯齿或走样
  7. MTK修改长按Home键的操作
  8. 在SwiftUI 2.0和Xcode 12中使用CoreData
  9. Azure上部署的资源公网连通性测试工具-psping
  10. linux中fstab文件的作用,如何在Linux上写入fstab文件 | MOS86