谈起它们,想必大家都不陌生。relative,相对定位嘛;absolute,绝对定位嘛。但是它们到底是个啥东东呢?
看看w3c的定义,见下表
定位 | 含义 |
relative | 元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。 |
absolute | 元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。 |
我靠,说了这一啪啦,好像有点模糊啊。
不用怕,团结就是力量,让我们一起,一步一步来解析它们吧。
一、relative
针对上面w3c对relative的定义,我们首先来写个demo。
<!DOCTYPE html> <head> <title>ttt</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> * { margin:0; padding:0; } .ourRelative { border:1px solid #FF0000; position:relative; left:-10px; } </style> </head> <body> I'm <span class="ourRelative">relative</span>,I'm over! </body></html>
效果图如下:
结合代码,不知道大家发没发现我将”relative”通过设置它的定位后,向左移动了10像素,但是呢?它居然右边空出来的空间,没有被右边的” ,I’m over! ”挤过来。说明什么?
1、 相对定位后的元素仍然是在普通流中的;
2、 相对定位后的元素通过left,right,top, bottom属性,相对它原有的位置,进行相对偏移的;
3、 相对定位后的元素发生偏移后,它原来所占的空间仍然保留。
在上述代码中,不知道大家注意没有,我用的是这个元素包裹文本‘relative’的哦,乃行内元素,那有说明什么了呢?
猜测:position:relative不会改变元素的display。
是不是这样,我们在写个demo就湿了。
<!DOCTYPE html> <head> <title>ttt</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> * { margin:0; padding:0; } .ourRelative { /*将宽高设置为100px*/ width:100px; height:100px; border:1px solid #FF0000; position:relative; left:-10px; } </style> </head> <body> I'm <span class="ourRelative">relative</span>,I'm over! </body></html>
我将上述代码中添加了span元素的宽高,但是表现出来的还是行内元素的效果。
不服?
我再将上述代码改改,将span的display改成了inline-block,宽高任然设置为100像素,那么它表现出来的,也就是这样咯。
<!DOCTYPE html> <head> <title>ttt</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> * { margin:0; padding:0; } .ourRelative { /*将元素的span变为inline-block*/ display:inline-block; width:100px; height:100px; border:1px solid #FF0000; position:relative; left:-10px; } </style> </head> <body> I'm <span class="ourRelative">relative</span>,I'm over! </body></html>
说明position:relative是不会改变元素的display的哦。
二、absolute
针对上面w3c对absolute的定义,我们也来写个demo。不过就是将图一中的改为绝对定位,position:absolute。
<!DOCTYPE html> <head> <title>ttt</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> * { margin:0; padding:0; } .ourRelative { border:1px solid #FF0000; /*将position改为absolute*/ position:absolute; left:-10px; } </style> </head> <body> I'm <span class="ourRelative">relative</span>,I'm over! </body></html>
我靠,这是什么玩意。怎么会这样。稳住,我们拿标尺量一量,看看发生了什么。见下图:
图一
图二
图一为整个span元素的宽度,可以看出是80像素;图二为绝对定位后的裸露在页面的span元素的宽度,可以看出是70像素。
所以绝对定位,在这里是按着body的左上角进行的定位。
Why?
因为绝对定位是使用left,right,top, bottom属性相对于其最接近的一个最有定位设置的父级对象进行绝对定位,如果对象的父级没有设置定位属性,即还是遵循HTML定位规则的,则依据 body 对象左上角作为参考进行定位。
在这里因为就一个span元素嘛,它的父级元素就是body咯。所以才会呈现出这图案咯。
而且正如w3c所说的那样,绝对定位是脱离文档流的,所以绝对定位元素的右边文本” ,I’m over! ”就会当它不在了,占用它的位置。
咦,相对定位不会改变元素的display,那么绝对定位呢?
绝对定位是会改变元素的display的哦。将其统一变成block,块级元素的模式。
不信?那么我们一起将上述绝对定位的代码改进改进,给 span元素宽高各设100像素。
<!DOCTYPE html> <head> <title>ttt</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> * { margin:0; padding:0; } .ourRelative { border:1px solid #FF0000; /*将position改为absolute*/ position:absolute; /*为absolute添加width和height*/ width:100px; height:100px; left:-10px; } </style> </head> <body> I'm <span class="ourRelative">relative</span>,I'm over! </body></html>
效果图见下:
我靠,看来绝对定位是比较屌,直接改变了元素的display,将其统一变为了block。
小节:
1、 绝对定位后的元素,脱离了文档流了,原来所占的空间也随之不在;
2、 绝对定位后的元素,通过left,right,top, bottom属性,相对于其最接近的一个最有定位设置的父级对象进行绝对定位,如果对象的父级没有设置定位属性,即还是遵循HTML定位规则的,则依据 body 对象左上角作为参考进行定位;
3、 绝对定位后的元素,将改变元素的display为block。
另:
不管将元素设置为相对定位还是绝对定位,它们都将覆盖住其他的元素内容,什么意思呢?
以position:absolute为例
<!DOCTYPE html> <head> <title>ttt</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> * { margin:0; padding:0; } .normal { width:100px; height:100px; background:#FFC0CB; } .ourAbsolute { width:70px; height:70px; position:absolute; background:#008000; left:0; top:0; } </style> </head> <body> <div class="normal"></div> <div class="ourAbsolute"></div> </body></html>
请见下图
我将绿色框设置的是绝对定位且top、left皆为0,那么它以body为起点,将覆盖粉红色的框。如果我想让粉红色的框,覆盖住绝对定位的绿色框呢?很简单,将绝对定位的z-index设置为0就欧克啦。
相对定位请自行修改代码,测试哦。

HTML은 웹 페이지를 작성하는 데 사용되는 언어로, 태그 및 속성을 통해 웹 페이지 구조 및 컨텐츠를 정의합니다. 1) HTML과 같은 태그를 통해 문서 구조를 구성합니다. 2) 브라우저는 HTML을 구문 분석하여 DOM을 빌드하고 웹 페이지를 렌더링합니다. 3) 멀티미디어 기능을 향상시키는 HTML5의 새로운 기능. 4) 일반적인 오류에는 탈수 된 레이블과 인용되지 않은 속성 값이 포함됩니다. 5) 최적화 제안에는 시맨틱 태그 사용 및 파일 크기 감소가 포함됩니다.

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

HTML의 역할은 태그 및 속성을 통해 웹 페이지의 구조와 내용을 정의하는 것입니다. 1. HTML은 읽기 쉽고 이해하기 쉽게하는 태그를 통해 컨텐츠를 구성합니다. 2. 접근성 및 SEO와 같은 시맨틱 태그 등을 사용하십시오. 3. HTML 코드를 최적화하면 웹 페이지로드 속도 및 사용자 경험이 향상 될 수 있습니다.

"Code"는 "Code"BroadlyIncludeLugageslikeJavaScriptandPyThonforFunctureS (htMlisAspecificTypeofCodeFocudecturecturingWebContent)

HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
