搜索
首页web前端css教程CSS 定位:元素放置的终极指南

CSS Positioning: Your Ultimate Guide to Element Placement

大家好,欢迎回到我的博客! ?

无论您是经验丰富的开发人员还是刚刚接触 CSS,本文都会为您提供一些额外的知识和示例!

CSS 定位简介

CSS 定位决定了元素将出现在文档流中的位置。默认情况下,所有元素都遵循自然流从左到右、从上到下,这称为静态定位

。然而,CSS 提供了四种其他定位模式,允许对元素放置进行更多创造性的控制。

静态定位 - 默认行为

当元素具有position: static(默认)时,它会根据页面的正常流程*进行定位。将其视为一个接一个排列的元素,无需特别注意它们在自然文档结构之外的位置。

示例:

.static-element { position: static;}

正常流程:元素按照从左到右、从上到下的顺序依次布局,除非通过浮动、弹性盒或网格进行修改。

?很高兴知道

  • 块元素

    :它们垂直堆叠,每个新元素从最后一个元素下方开始。
  • 内联元素

    :它们水平流动,仅占用其内容所需的宽度。

相对定位 - 视角的转变

相对定位

相对于其正常位置移动元素,而不改变其周围的布局。这就像将元素稍微偏离其原始位置,但在文档流中保留其空间。

示例:

.relative-element {
    position: relative;
    top: 10px; /* Moves the element down by 10 pixels */
    left: 20px; /* Moves the element to the right by 20 pixels */
}

?很高兴知道

:相对定位很简单,但经常被误解:
  • 保留空间

    :保留元素在布局中的原始空间。
  • 偏移

    :使用上、右、下、左将其从正常位置移动。

绝对定位-自由精神

绝对定位

从文档流中完全删除元素。然后,它将其相对于其最近的定位祖先进行定位,或者,如果没有,则相对于初始包含块(通常是 元素)。

示例:

.absolute-element {
    position: absolute;
    top: 50px;
    left: 50px;
}

?很高兴知道:

<script> // Detect dark theme var iframe = document.getElementById('tweet-1848997429565149264-1'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1848997429565149264&theme=dark" } </script>
  • 从 Flow 中移除:不影响其他元素的位置。
  • 相对于定位祖先:如果没有定位祖先,则它与初始包含块(通常是)相关。

固定位置 - 固定到屏幕

具有固定定位的元素相对于视口定位。当页面滚动时它们不会移动,这使得它们非常适合导航栏或弹出窗口等元素。

示例:

.static-element { position: static;}

?很高兴知道:

  • 不滚动:它们保持在原位,忽略滚动位置,这对于标题或通知来说非常有用。

粘性定位 - 适应用户滚动

粘性定位 开始时像静态一样流动,但在满足滚动阈值时可以变得固定。它非常适合您希望在滚动时保持在视图中的标题。

示例:

.relative-element {
    position: relative;
    top: 10px; /* Moves the element down by 10 pixels */
    left: 20px; /* Moves the element to the right by 20 pixels */
}

?很高兴知道:

  • 开始静态:直到达到阈值,然后变得固定。

常见误解和提示

  • 过度使用绝对:虽然功能强大,但过度使用绝对定位可能会导致布局问题,尤其是在内容调整大小或元素意外重叠时。
  • 带有定位的 Z-Index:记住,定位元素可以使用 z-index 来控制堆叠顺序,但 z-index 只适用于定位元素。
  • 固定元素的性能:太多固定元素会影响性能,尤其是在固定元素可能无法正确重排的移动设备上。
  • 滚动和固定元素:谨慎使用可能覆盖内容的固定元素。始终为用户提供一种与这些元素背后的页面交互的方式。

一个实际例子

让我们创建一个布局来演示每种定位类型。

?也可以在 CodePen 上找到示例。

.absolute-element {
    position: absolute;
    top: 50px;
    left: 50px;
}
.fixed-element {
    position: fixed;
    bottom: 0;
    right: 0;
}

此示例展示了每种定位方法的实际应用。当您滚动或调整窗口大小时,您会注意到元素的行为有何不同。

先进技术和注意事项

  • Z-Index:虽然我们提到了它,但让我们更深入地探讨一下。 Z-index 仅适用于定位元素(相对、绝对、固定),并且堆叠上下文可能使其行为变得复杂。
  • 组合位置:有时,一个元素可能需要相对和绝对定位来实现不同的目的
  • 响应式设计:考虑不同位置在屏幕尺寸上的表现。已修复可能会覆盖较小屏幕上的重要内容。

  • 辅助功能:确保固定或粘性元素不会阻碍屏幕阅读器或键盘导航。

使用实际应用进行练习

如果你想练习你的技能,你可以尝试构建这些:

  • 导航元素:固定或粘性页眉或页脚。
  • 工具提示或模态:相对于父容器绝对定位。
  • 视差效果:将固定位置的背景与滚动内容相结合。

粘性标题及更多 ~ 示例

这是一个演示导航元素(固定页眉、粘性页脚)、工具提示(绝对定位)和简单视差效果的示例:

?找到完整代码并在Codepen上查看结果。

CSS 定位技术 ~ 示例

您可以在下面看到的示例演示了使用 HTML 和 CSS 的不同 CSS 定位技术。

?找到完整代码并在Codepen上查看结果。

.static-element { position: static;}
  • 固定标题 :

    演示位置:固定,无论滚动如何,标题都会保持在视口的顶部。

  • 静态元素 :

    显示元素在正常文档流中出现的默认位置。

  • 相对和绝对元素 :

    相对盒是一个相对定位的容器,里面有一个绝对定位的元素。此结构演示了绝对元素如何相对于其最近的定位祖先(在本例中为相对框)定位自身。

  • 粘性元素 :

    使用position:sticky,它开始时是静态的,但当达到一定的滚动阈值时会变得固定。

.relative-element {
    position: relative;
    top: 10px; /* Moves the element down by 10 pixels */
    left: 20px; /* Moves the element to the right by 20 pixels */
}
  • Body:设置较高的高度以允许滚动,这是演示不同定位类型的效果所必需的。

  • 固定标题:样式始终保持在顶部,并带有蓝色背景以提高可见性。

  • 容器:为其中的定位元素提供一些上下文。

  • 静态、相对、绝对、粘性元素:每个元素都有不同的样式,以在视觉上区分其定位行为:

  • 正常文档流中仍存在静态。

  • 相对从其正常位置移动,但仍占据布局中的原始空间。

  • 绝对相对于相对框定位,这演示了绝对定位如何在已定位的父级中工作。

  • 粘性开始于静态位置,但一旦滚动超过其定义的阈值,就会“粘住”。

结论

给你了!您现在已经掌握了精确定位元素的知识,将您的网页设计从基本变为令人惊叹。请记住,熟能生巧,所以深入到您的项目中并开始尝试 CSS 定位。快乐编码!


?大家好,我是 Eleftheria,社区经理、 开发人员、公共演讲者和内容创建者。

?如果您喜欢这篇文章,请考虑分享。

所有链接 | X | 领英

以上是CSS 定位:元素放置的终极指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
@KeyFrames vs CSS过渡:有什么区别?@KeyFrames vs CSS过渡:有什么区别?May 14, 2025 am 12:01 AM

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

使用页面CMS进行静态站点内容管理使用页面CMS进行静态站点内容管理May 13, 2025 am 09:24 AM

我知道,我知道:有大量的内容管理系统选项可用,而我进行了几个测试,但实际上没有一个是一个,y&#039;知道吗?怪异的定价模型,艰难的自定义,有些甚至最终成为整个&

链接HTML中CSS文件的最终指南链接HTML中CSS文件的最终指南May 13, 2025 am 12:02 AM

链接CSS文件到HTML可以通过在HTML的部分使用元素实现。1)使用标签链接本地CSS文件。2)多个CSS文件可通过添加多个标签实现。3)外部CSS文件使用绝对URL链接,如。4)确保正确使用文件路径和CSS文件加载顺序,优化性能可使用CSS预处理器合并文件。

CSS Flexbox与网格:全面评论CSS Flexbox与网格:全面评论May 12, 2025 am 12:01 AM

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

如何包括CSS文件:方法和最佳实践如何包括CSS文件:方法和最佳实践May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

Flexbox vs Grid:我应该学习两者吗?Flexbox vs Grid:我应该学习两者吗?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

轨道力学(或我如何优化CSS KeyFrames动画)轨道力学(或我如何优化CSS KeyFrames动画)May 09, 2025 am 09:57 AM

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSS动画:很难创建它们吗?CSS动画:很难创建它们吗?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具