CSS的positon属性的分析

这篇文章主要介绍了关于CSS的positon属性的分析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

position是CSS中非常重要的一个属性,通过position属性,我们可以让元素相对于其正常位置,父元素或者浏览器窗口进行偏移。postion也是初学者容易搞不清楚状况的一个属性,本文将从最基础的知识讲起,谈谈关于positon属性的一些理论与应用。

基础知识

postion属性我们成为定位,它有4个不同类型的定位,这些类型会影响元素的生成方式,下面我们详细说明position属性。

position四种类型

(1)static
static是position属性的默认值,默认情况下,块级元素和行内元素按照各自的特性进行显示
(2)relative
relative翻译成中文称相对定位,设置了这个属性后,元素会根据top,left,bottom,right进行偏移,关键点是它原本的空间仍然保留。我们看下面例子:
HTML代码

1 

2

3

CSS代码

1 p { background: #0094ff; width: 250px; height: 100px; }2         .relative { background: #ff6a00; position: relative; width: 200px; height: 100px; top: 20px; left: 50px; }

效果图

relative效果

relative效果

在这个例子中,p.relative相对定位,并且left设置为20px,left设置为50px,其相对于父元素进行偏移,并且原本的空间也占据着,下面的元素并不会顶替上去。

(3)absolute
元素设置成absolute后会脱离文档流,并且不占有原本的空间,后面的元素会顶替上去,而且不论元素是行内元素还是块级元素,都会生成一个块级框,也就是例如行内元素span设置了absolute后就可以设置height和width属性了。看下面例子:
HTML代码

1 2 3 

CSS代码

立即学习“前端免费学习笔记(深入)”;

1 p { background: #0094ff; width: 250px; height: 100px; }2         .absolute { background: #ff6a00; position: absolute; width: 200px; height: 100px; top: 20px; left: 50px; }

效果图

absolute效果

absolute效果

如图所示,span标签被设置成绝对定位,就可以设置height和width属性,而且不占有原本的空间,后面的p元素会顶替上去。

(4)fixed
fixed的表现方式类似于absolute,但是相比于absolute相对于不确定的父元素进行偏移,fixed就是相对于浏览器窗口进行偏移

包含块

在详解CSS float属性中我们提到包含块这个概念。对于position属性也有包含块这个属性,它要分几种情况来讨论:
1.根元素的包含块,根元素一般是html元素,有些浏览器会使用body作为根元素,大多数浏览器,初始包含块是一个视窗大小的矩形
2.非根元素的包含块,如果该元素的position是relative或static,它的包含块是最近的块级框,表的单元格或行内块的内容边界
我们举例进行说明,
HTML代码

1 

2 我是父级元素的内容 3

4 相对定位元素5

6

CSS代码

立即学习“前端免费学习笔记(深入)”;

p { background: #0094ff; width: 250px; height: 100px; }.relative { background: #ff6a00; position: relative; width: 200px; height: 100px; top: 20px; left: 50px; }

效果图

包含块

包含块

这是相对定位元素的包含块,为最近的块级框,表的单元格或行内块的内容边界,相对定位元素相对于其包含块进行偏移,我们可以简单理解为相对于其原来的位置进行偏移。

3.非根元素的包含块,如果该元素的position是absolute,则包含块为最近的position不是static的祖先元素。
简单来说,它的包含块会从父级元素一直向上查找,找到第一个position不是static的元素为止。

偏移属性

前面的例子中已经涉及到偏移属性,它指的是元素相对于其包含块的偏移,我们称其为偏移属性,分别是top,bottom,left,right,依次代表上下左右。他们的值可以是具体的数值,也可以是百分比。如果是百分比,top和bottom是相对于包含块高度的百分比,left和right是相对于宽度的百分比。它们也可以设置负值,即有可能将元素移动到包含块的外边。

绝对定位

接下来我们了解一下绝对定位的详细细节。

基本的绝对定位

一个元素被设置为绝对定位时,会脱离文档流,然后相对其包含块进行偏移。
一般来说,我们会将一个元素设置为relative来作为absolute元素的包含块,我们看看下面的例子:
HTML代码

 1     

2 相对于初始包含块定位 3

4
5
6
7
8
9
10

11

12 相对于最近relative祖先元素定位 13

14

CSS代码

立即学习“前端免费学习笔记(深入)”;

1 p { background: #0094ff; width: 250px; height: 100px; }2         .relative { background: #ff6a00; position: relative; width: 200px; height: 100px; top: 20px; left: 50px; }3         .absolute { background: #988c8c; position: absolute; width: 200px; height: 100px; top: 20px; left: 50px; }

效果图

基本的绝对定位

基本的绝对定位

如图所示,有两个绝对定位元素,第一个元素没有position不是static的祖先元素,所以它的包含块是body,根据body进行偏移,
第二个绝对定位元素设置了一个relative的父元素,它根据父元素进行偏移。

绝对定位的重叠问题

元素设置成绝对定位后会脱离文档流,并且失去占用的空间,而且如果偏移的位置接近,会造成重叠问题。看看下面的例子:
HTML代码

1 

2

3 相对于最近relative祖先元素定位14

5

6 相对于最近relative祖先元素定位27

8

CSS代码

立即学习“前端免费学习笔记(深入)”;

1 p { background: #0094ff; width: 250px; height: 100px; }2 .relative { background: #ff6a00; position: relative; width: 500px; height: 300px; top: 20px; left: 50px; }3 .absolute { background: #988c8c; position: absolute; width: 200px; height: 100px; top: 20px; left: 50px; }4 .light { background: #f3d6d6; top: 70px; left: 80px; }

效果图

绝对定位的重叠问题

绝对定位的重叠问题

我们可以看到,第二个绝对定位元素盖住了第一个元素,那怎么让第一个元素盖住第二个元素呢,这就要用到z-index属性,这个属性表示元素的叠加顺序,默认情况下,z-index为0,数值越高的元素层级越高,就可以盖住低于其层级的元素,我们设置第一个原色的z-index为10,结果如下
绝对定位的重叠问题

绝对定位的重叠问题

如果两个元素的层级相同,则越后面的元素会覆盖前面的元素,默认情况下,第二个元素就会盖住第一个元素。

固定定位

fixed定位很简单,类似与absoulte,但是它的包含块就是浏览器窗口,相对来说简单很多。常见的应用比如固定导航,回到顶部。在这里不再赘述,大家可以查找相关资料。

相对定位

relative定位的元素进行偏移后,不会脱离文档流,还有占据原本的空间。除此之外,我们还要注意一个细节:如果元素设置了margin为负值之后发生重叠的情况下,相对定位的元素会覆盖普通元素。我们看看下面的例子:
HTML代码

1 

2 未相对定位的元素3

4

5 负margin元素6

CSS代码

立即学习“前端免费学习笔记(深入)”;

1 p { background: #0094ff; width: 250px; height: 100px; }2 .no-relative { background: #ff6a00; width: 200px; height: 100px; }3 .relative { background: #ff6a00; width: 200px; height: 100px; position: relative; }4 .minus-margin { margin-top: -30px; }

效果图

未相对定位时没有覆盖

未相对定位时没有覆盖

默认情况下,两个元素都是正常的元素,设置了负的margin属性后,后面的元素会覆盖前面的元素,我们修改第一个元素的class为relative,可以看到效果如下:
相对定位时覆盖

相对定位时覆盖

添加了相对定位后,第一个元素就会覆盖其他正常的元素了。

relative属性最经常的一个应用应该是作为absolute元素的包含块了,为了限制absolute元素的偏移位置,常常设置其父元素为relative来作为其包含块。

应用举例

position的应用非常频繁,下面我来说说常见的一些场景:

产品标签

在电商网站中,我们常常可以看到产品的左上角或右上角有一些比如“新品”,“促销”,“热卖”等标签,比如下图:
产品标签

产品标签

这个是怎么实现的呢,我们来模拟一下:
HTML代码:

1     

2 我是产品3 4 热卖5 6

CSS代码:

1 .product { width: 150px; height: 150px; background: #0094ff; position: relative; }2    .hot { position: absolute; right: 10px; top: 10px; width: 40px; height: 20px; background: #ff6a00; text-align: center; }

效果如下:

产品标签

产品标签

如图所示,右上角有一个标签。原理很简单,就是设置父元素相对定位,标签元素绝对定位,然后相对于父元素偏移到右上角。

自动完成框

自动完成框是一个非常常见的应用,其生成的下拉菜单也是用到了position属性。我们先看看下面的效果:
自动完成输入框

自动完成输入框

这是一个很简单常见的下来自动完成框,我们来看看它的HTML和CSS代码:
HTML代码

1 2   
    3
  • position属性
  • 4
  • position应用
  • 5
  • position是什么
  • 6
  • position翻译
  • 7

CSS代码

立即学习“前端免费学习笔记(深入)”;

1 .search-box { border: 1px solid #ccc; width: 200px; padding: 5px; height: 24px; margin-left: 50px; }2 ul, li { list-style-type: none; }3 ul { border: 1px solid #ccc; width: 210px; position: absolute; }4 li { padding: 5px; }

这个原理也很简单,通过设置下拉菜单为绝对定位,然后设置其left属性与输入框对齐。

当然position的应用还有很多,比如布局,比如fixed可以用来做固定导航菜单,网页右下角的固定菜单等,有兴趣的同学可以自行查找相关资料进行学习。

总结

position属性是一个容易让初学者迷惑的属性,尤其是absolute和relative的应用。要用好它们,首先要从absolute和relative的基本特性开始了解,理解了他们的特性之后应用起来就得心应手了,了解基本原理后,多多写几个例子从实践中去体会它们的特性,慢慢的就会熟悉了。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于CSS的选择器问题

通过css设置placeholder的方法

关于css控制UL LI 的样式解析

以上就是CSS的positon属性的分析的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:13:14
下一篇 2025年12月24日 01:13:24

相关推荐

  • CSS样式的覆盖规则

    下面为大家带来一篇css样式覆盖规则全面了解。内容挺不错的,现在就分享给大家,也给大家做个参考。 大家都知道CSS的全称叫做“层叠样式表”,但估计很多人都不知道“层叠”二字的含义。其实,“层叠”指的就是样式的覆盖,当一个元素被运用上多种样式,并且出现重名的样式属性时,浏览器必须从中选择一个属性值,这…

    好文分享 2025年12月24日
    000
  • 提高css性能的方法

    这篇文章主要介绍了css性能优化提高css性能的方法,不规范的css会导致很多性能问题,所以学习掌握css性能优化技巧是非常必要的,对css性能优化知识感兴趣的朋友一起学习吧 不规范的css会导致很多性能问题,这些问题可能在一些小的项目中不够明显,但是在大型项目中就会显现出来。 css匹配原理 在优…

    好文分享 2025年12月24日
    000
  • 利用CSS自定义绿色复选框按钮的样式

    这篇文章主要介绍了关于CSS自定义绿色复选框按钮的样式,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 HTML自带的复选框或者单选框按钮样式都是比较简单的一种. 而有时候这些表单控制, 可能需要配合自己的主题样式. 需要去美化他们. 以前可能需要借助JS的实现. 现在CSS也可以完全…

    2025年12月24日
    000
  • 如何使用css transition属性实现带动画显隐的微信小程序部件

    这篇文章主要介绍了使用css transition属性实现一个带动画显隐的微信小程序部件的相关资料,需要的朋友可以参考下 我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说…

    2025年12月24日
    000
  • webpack混用css module的方法

    这篇文章主要介绍了webpack项目轻松混用css module的方法,内容挺不错的,现在分享给大家,也给大家做个参考。 前言 本文讲述css-loader开启css模块功能之后,如何与引用的npm包中样式文件不产生冲突。 比如antd-mobilenpm包的引入。在不做特殊处理的前提下,样式文件将…

    好文分享 2025年12月24日
    000
  • css中border属性之制作网页虚线

    这篇文章主要介绍了css制作网页中的虚线(border属性的使用方法),需要的朋友可以参考下 这里边框属性的虚线边框border控制虚线。以下配置的css 高度(css height)和css 宽度(css width)为350像素。 一、四边为虚线边框 border:1px dashed #000…

    好文分享 2025年12月24日
    000
  • 关于CSS中的before和:after伪元素的使用分析

    这篇文章主要介绍了css中的before和:after伪元素使用详解,包括对一些非文本内容的插入操作使用,需要的朋友可以参考下 如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注。特别是在Nicolas Gallagher的…

    2025年12月24日
    000
  • JS和CSS实现渐变背景特效的代码

    这篇文章主要介绍了js和css实现的漂亮渐变背景特效代码,包含6个渐变效果,涉及javascript针对页面元素属性动态操作的相关技巧,需要的朋友可以参考下 本文实例讲述了JS+CSS实现的漂亮渐变背景特效代码。分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: 立即学习“前端免费…

    2025年12月24日
    000
  • 如何解决CSS图片下面有间隙的问题

    这篇文章主要介绍了css图片下面有间隙的6种解决方案,需要的朋友可以参考下 在进行页面的p+CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对於 该问题的解决方法也是「见机行事」,根据原因的不同要用不同的解决方法,这里把解决直接把解…

    好文分享 2025年12月24日
    000
  • 如何用CSS实现带阴影效果的黑色导航菜单效果

    这篇文章主要为大家介绍了css实现带阴影效果的黑色导航菜单效果,通过css设置背景图片切换效果实现带阴影的导航菜单功能,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了CSS实现带阴影效果的黑色导航菜单效果。分享给大家供大家参考。具体如下: 这是一款CSS实现带阴影效果黑色导航菜单,有立体…

    2025年12月24日
    000
  • 如何设置CSS 文本字体颜色

    这篇文章主要介绍了css 文本字体颜色设置方法(css color),需要的朋友可以参考下 一、认识CSS 颜色(CSS color) 这里要介绍的是网页设置颜色包含有哪些;网页颜色规定规范。 1、常用颜色地方包含:字体颜色、超链接颜色、网页背景颜色、边框颜色2、颜色规范与颜色规定:网页使用RGB模…

    2025年12月24日
    000
  • DIV和CSS实现仿京东商城导航条效果

    这篇文章主要为大家介绍了p+css实现仿京东商城导航条效果,涉及页面p+css布局涉及结合onmouseout鼠标事件动态切换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了p+CSS实现仿京东商城导航条效果。分享给大家供大家参考。具体如下: 这里演示了p+CSS实现仿京东商城…

    2025年12月24日
    000
  • CSS中百分比的问题解析

    这篇文章主要介绍了浅谈css中的百分比,在定义css样式的时候经常会用的 “%”这个长度单位,但是这个百分比到底是相对于谁的百分比呢 本文介绍了浅谈CSS中的百分比,分享给大家,具体如下: 结论: 标准流中的元素,看其属性有没有继承性。对于width和margin-left,它是可以继承的,它会参照…

    2025年12月24日 好文分享
    000
  • CSS中层叠机制的解析

    这篇文章主要介绍了浅谈css层叠机制的相关资料,层叠机制可以解决作者(写代码的人),用户(浏览页面的人)和用户代理(一般指浏览器)的样式冲突,现在分享给大家,也给大家做个参考。 css中为什么要有层叠机制 因为在css中可能会有多个样式同时影响同一个元素的某个属性,层叠机制可以解决作者(写代码的人)…

    好文分享 2025年12月24日
    000
  • Html和css实现纯文字和带图标的按钮的代码

    这篇文章主要介绍了html和css实现纯文字和带图标按钮的方法,按钮有很多种外观,本文介绍了纯文字和带图标两种按钮,感兴趣的小伙伴们可以参考一下 本文总结一下一些基础页面元素的实现方式,后续陆续更新。首先我们遇到最多的可能是按钮的切图,按钮可能有很多种外观,但是一般可分为纯文字的和带图标的按钮,下面…

    2025年12月24日
    000
  • 如何实现css图标与文字对齐

    下面为大家带来一篇css图标与文字对齐的两种实现方法。内容挺不错的,现在就分享给大家,也给的大家做个参考。 在平时写页面的过程中,常遇到要把小图标与文字对齐的情况。比如:                                                                 …

    2025年12月24日
    000
  • HTML和CSS实现动态背景登录页面

    这篇文章主要介绍了html+css实现动态背景登录页面的相关资料,需要的朋友可以参考下 1. 实现背景图片的动态变换 首先在HTML页面body板块中,添加图片p,代码如下: 再对图片进行css设计。你要对图片进行大小定位,那么以下代码肯定要首先编写: 立即学习“前端免费学习笔记(深入)”; `.b…

    2025年12月24日
    000
  • 如何使用CSS实现圈人效果(CSS Sprites)

    圈人效果(CSS Sprites)  css sprites body{font-size:14px;}#imgmap{position:relative; width:350px; height:263px; background:url(‘office.jpg’) no-repeat;}#img…

    2025年12月24日
    000
  • 关于css前端的知识点总结

    下面为大家带来一篇css前端知识点总结。内容挺不错的,现在就分享给大家,也给大家做个参考。 1、css的概念:(CascadingStyleSheet级联样式表) 优点:1.内容与表现分离。(用网页的内容xhtml就可以与表象分开) 2.表象统一 3.丰富的样式 立即学习“前端免费学习笔记(深入)”…

    好文分享 2025年12月24日
    000
  • 关于CSS文本超出div或者span时用省略号代替的代码

    在项目中我们经常需要在文本过长时显示,将文本超出的部分内容用省略号代替,基于css代码是怎么实现的呢?下面本站小编通过分析本文给大家详解,感兴趣的朋友一起学习吧 在项目中我们经常需要在文本过长时显示,将文本超出的部分内容用省略号代替: 思想为: 首先设置宽度,然后让超出的部分隐藏 如果有超出则在最后…

    好文分享 2025年12月24日
    000

发表回复

登录后才能评论
关注微信