CSS中的定位布局

CSS浮动与定位技巧及其在网页布局中的应用 本文探讨了CSS中浮动和定位技巧,特别是如何解决父元素塌陷问题以及如何使用浮动来创建首字下沉和引述框。详细介绍了清除浮动的“clearfix”方法,浮动元素在布局中的实际应用案例,以及如何通过CSS的position属性进行更精细的元素定位。 阅读详情

工作好几个月了,我真的是羞于写这些基础性的博客,但是我觉得我不去系统地写一篇,我就永远只是知道表层的一点东西,定位布局,入门的同学也能随口报个fixed、abosulte和relative,这个东西说来简单,几句话就能说完,用的效果也能有个大差不差。但是。。。真的神坑!工作中用到了,你会发现页面很多不知名的错误都是这货引起的。先把我看到的基础总结一下。

基础

实例

<html>      
    <head>
        <style type="text/css">
            div{
                border-radius:5px;
                margin:5px;
            }
            #example {
                width: 410px;
            }
            #example p {
                margin: 0 0.25em;
                padding: 0.25em 0;
            }
            #div-1 {
                width: 400px;
                background-color: #2578b5;
                color: #fff;
                <!-- position:relative; -->
            }
            #div-1-padding {
                padding: 10px;
            }
            #div-1a {
                background-color: #d33;
                color: #fff;
                <!-- position:absolute;
                top:0;
                right:0;
                width:200px; -->    
            }
            #div-1b {
                background-color: #666;
                color: #fff;
                <!-- position:absolute;
                top:0;
                left:0;
                width:200px; -->
            }
            #div-1c {
                background-color: #303030;
                color: #fff;
            }
        </style>
    </head>
    <body>
        <div id="example">
            <div id="div-1">
                <div id="div-1-padding">
                    <p>id = div-1</p>
                    <div id="div-1a">
                        <p>id = div-1a</p>
                        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p>
                    </div>
                    <div id="div-1b">
                        <p>id = div-1b</p>
                        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p>
                    </div>
                    <div id="div-1c">
                        <p>id = div-1c</p>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html> 

这里写图片描述

1.position:static

static是position的默认值,一般情况下不会用到,只有但你的定位不想被其它元素定位所影响时需要声明一下让其回到默认状态。目前没怎么用过。

2.position:relative

相对定位需要明确:
1.不是相对于前一个元素,也不是相对于父元素,而是相对于自己原来的位置。
2.元素移动后原来所占的空间并不会塌陷
3.相对定位元素位置的改变不会影响其他相邻元素

这里写图片描述

3.position:absolute

这个定位和相对定位就有本质性的差别了,一个元素一旦被附上绝对定位的属性,立刻跳出整个页面文档流,原来所占的空间瞬间塌陷,就好像这个元素跳到第二层了,这一层没有其它元素阻拦,你给它定位在哪里它就在哪里。其实它相对的是整个html元素来进行定位。

这里写图片描述

4.relative和absolute结合

但是。。。相对于整个html元素定位是针对其父元素中没有relative定位的属性。如果具有absolute属性定位的元素其父元素中有relative属性,那么该元素就是相对于其最近的relative属性的父元素进行定位。
也就是这个relative元素给absolute元素画了个框框,要求它只能在自己的内部跳。
其实这是一个很实用的场景,当我们想然某个元素脱离文档流定位,但同时我们又想控制它的相对性,不让它跳出某个界限,这就用起来很方便。

这里写图片描述

5.position:fixed

CSS的另一个绝对定位fixed,它们连个的区别在于:
absolute相对页面绝对定位,也就是页面滚动,这个元素也会跟着滚动的;
fixed相对浏览器窗口绝对定位,页面滚动,这个元素并不会动。
所以当我们想要做个永远在页面顶部的悬浮窗是,就需要用到fixed属性。

6.position:sticky

最后这种布局叫做粘性布局,在我没有实际用到的时候我貌似没有见过它,又或许我选择性忽略了它。它做到的效果是什么:
在元素没有离开页面事,元素是相对定位,随页面滚动,一旦元素即将离开窗口可视范围,它就会fixed定位在我们要求的位置。

.sticky {
position: -webkit-sticky;
position: sticky;
top: 0;
}

这里写图片描述

这个玩意儿的兼容性实在是差,工作中不是万不得已肯定不会用它,但是这个万不得已的情况恰巧被我碰上了。

fixed和sticky实现粘性布局

要实现一个所有移动端浏览器支持的浏览器没有我一开始想的那么简单:
思路: 用fixed布局和默认布局相结合,监控滚动条位置,当滚动条位置到达元素的起始位置,也就是元素到了浏览器窗口顶端,立刻让元素进行top:0的fixed定位,完美!
打脸: 关于滚动的效果,我发现在ios浏览器中并没有流畅的惯性回弹效果,所以,页面滑动就会很卡,所以就需要使用 -webkit-overflow-scrolling : touch这个属性,可以完美的实现效果。
打脸: 这个属性神坑的地方在于ios使用了这个属性,内部的fixed属性会失效。。。,所以元素就不会有粘附效果。根据上面的sticky兼容性我们会发现解决这个问题的方法就是安卓端采用原方案,ios端采用粘性布局,这下就完美了。
再打: sticky这个属性很容易失效的!

position:sticky的生效条件

首先,设置了postion:sticky的元素要生效必须要至少设置 top , bottom , left , right 中的一个,而且 top 和 bottom 同时设置时, top 生效的优先级高, left 和 right 同时设置时, left 生效的优先级高;其次,sticky元素生效与否有两个临界条件:

一个是元素自身在文档流中的位置

以 top:10px 为例,当页面滚动到sticky在文档流中位置元素离viewport顶端的距离<=10px时,sticky元素就开始固定了,当sticky元素在文档流中位置离viewport顶端的距离>10px时,元素就不再固定。

另一个是该元素的父容器的边缘

当sticky元素碰到父容器的底部时,就会跟随父元素一起滚动了。 所以如果你单纯给sticky元素加一个父容器,但是却不能使父容器的高度大于sticky元素的高度,这样并不会看到元素固定的效果的,因为一开始sticky元素就到达了父元素的边缘,它会跟着父元素滚动。
另外,一旦离sticky元素最近的祖先元素的 overflow 属性不是默认的 visible ,那么sticky元素固定的位置将是相对于该祖先元素,所以当改变sticky元素的父容器的 overflow 默认值时,sticky元素的固定的位置就是相对于它父容器。如设置属性 overflow:hidden 的父容器,父容器根本就不能滚动,所以sticky元素也不会有滚动然后固定的情况。

所以想要sticky生效,父元素的overflow要重新设置,设置成什么,我设置成auto是解决了,具体情况具体分析。

总结

position的坑我以后还会碰到的,现在我们能做的就是尽量详尽的掌握position的基础,以不变应万变,减少不必要的时间浪费。

CSS布局中的定位与溢出处理技巧 本文深入探讨了CSS中的定位技术,包括如何使用min-max属性来限制元素的宽度和高度,以及处理内容溢出的多种方法。文章通过具体的样式示例,说明了如何通过CSS控制元素的最小和最大尺寸,以及如何处理元素内容超出容器边界的情况。 阅读详情

相关推荐

Modbus TCP 通信(C#)

【代码】Modbus TCP 通信(C#)

weixin_56229359的博客 1150

css如何让子元素行高于父元素一致的方法:

非,常,简,单 前提: 父子元素都设置了定位,比如: 父元素: style="position:relative " 子元素: style="position: absolute;" 只要设置子元素的top和bottom值为0就可以了。 成品: <div style="position:relative "> <div style="position: absolute;top: 0px;bottom: 0px;"></div...

weixin_42229373的博客 1754

PyTorch、Torchvision、Torchaudio历史版本whl文件下载地址、版本对应关系与离线安装全攻略

本文详细解析了PyTorch、Torchvision和Torchaudio历史版本whl文件的下载地址、版本对应关系及离线安装全攻略。针对无网络环境下的安装挑战,提供了官方whl文件获取路径、版本匹配技巧和完整安装流程,帮助开发者高效解决兼容性问题,确保深度学习环境的稳定部署。

weixin_31960565的博客 378

【CSS】position 定位 和 z-index 层级

position概述相对定位:relative绝对定位:absolute固定定位:fixed粘性定位:sticky 概述 position属性用于指定一个元素在文档中的定位方式。 top,right,bottom 和 left 属性则决定了该元素的最终位置。 语法: position:static/absolute/relative/fixed/sticky; 说明: static(默认值): 元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父

qq_45677671的博客 3615

直升机空气动力学基础--005翼型的升阻比和气动力矩

焦点与翼型有关,总升力矩可以视为附加升力与零升力迎角升力的合成,对于对称翼型,零升力力矩为0,附加升力就是总升力,其焦点就是其压力中心。对于对称翼型,零升力力矩为0,对于非对称翼型,零升力力矩存在,与不对称度成正比。对于不对称翼型,升力对焦点的力矩保持不变。

ygf666的博客 4132

高斯-约当(Gauss-Jordan)消元法——c++代码实现

具体算法的详细原理请参照此篇博客:高斯-约当(Gauss-Jordan)消元法下面是具体c++代码,不保证程序最优化,提供一个可行的程序,供大家改进,同时感谢大家提意见。——大神勿喷呀,我是一个小菜鸟~void Guss_Jordan(int n,double *a)//阶数n 系数矩阵a { double*a_temp = new double[n*n * 2];//a与单位矩阵的组合

zwz的学习之路 6873

CSS 定位

目录一相对定位 二绝对定位三固定定位四粘滞定位五绝对定位元素布局定位: 更加高级的布局手段 - 定位指的就是将指定的元素摆放到页面的任意位置 通过定位可以任意的摆放元素 - 通过position属性来设置元素的定位 -可选值: static: ['stætik] 默认值,元素没有开启定位 relative: ['relətiv] 开启元素的相对定位 absolute: ['æbsəlju:t]

豆子的博客 584

傻白入门芯片设计,SystemVerilog Assertion(SVA)学习(二十一)

对SVA(SystemVerilogt Assertion)有了更深刻的认识,对经典的AveMC形式验证工具进行了介绍

qq_46675545的博客 8471

css之position定位(static、relative、absolute、fixed、sticky)

3、absolute:生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。区别:定位为relative的元素脱离正常的文本流中,但其在文本流中的位置依然存在,而定位为absolute的层脱离正常文本流,但与relative的区别是其在正常流中的位置不在存在。2、relative:生成相对定位的元素,通过top,bottom,left,right的设置相对于其正常位置进行定位。定位为absolute的层脱离正常文本流,但与relative的区别是其在正常流中的位置不在存在。

qq_46302247的博客 1034

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2158

LVGL v8学习笔记 | 09 - 进度条控件的使用方法(bar)

lv_bar_set_range必须放在lv_bar_set_mode前面,否则不生效。bar对象的API在lv_bar.h中声明,以lv_bar_xxx命名。此事件可以用来在进度条更新值之后更新别的控件(比如进度条旁边的文字)。可以看到,默认创建的进度条值是0到100。(3)设置进度条的范围值(最大值和最小值)(2)获取进度条的起始值。(3)获取进度条的最小值。(4)获取进度条的最大值。(1)设置进度条的当前值。(2)设置进度条的起始值。(1)获取进度条当前值。(5)获取进度条的模式。

Mculover666的博客(嵌入式) 1730

CSS定位:position

CSS定位使用方法

m0_73808925的博客 217

【Bluetooth|蓝牙开发】三、一篇文章,带你总览蓝牙协议

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

关于CSS中的布局和定位

在构建网页的过程中,我们经常必须保证它的美观性,使读者看起来感到舒服。这时,我们首先要考虑的就是对于页面的布局和定位了。 一.布局方式 CSS中有以下三种布局: 1.流体布局 流体布局其实就是在扩展浏览器窗口时,页面上的内容会自动扩展,不论我们将浏览器调整到多大的宽度,布局都会扩展,以填充可用空间。这样,用户便能够充分地利用他们的屏幕空间了。 2.冻结布局 顾名思义,在冻结布局

may_apple的博客 639

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

CSS布局中的定位position

<br />如果页面内某个元素没有设定position属性,那么他具有position属性,并且属性值是static。原因在于网页里任一元素的默认position属性值均是static(静态)。<br /> <br />【position:absolute】<br />意思是:绝对定位,他默认参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位。<br />例子<br />制作一宽度为200px,高度为200px,背景色为红色(#900)的方块,距离浏览器左侧220

尝试坚持 1885

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

CSS布局中的定位

定位可以将一个盒子固定在一个位置。 使用方法: 选择器 { position:属性值; } 属性值: static 静态定位(默认值) ...

bugyellow_emo的博客 127

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CSS布局中的定位属性探析

开发者可以灵活地控制网页元素的位置和布局,从而实现各种复杂的设计需求和交互效果。

Lesleyhnj的博客 287

CSS 中的定位(position)布局,是什么?

一、定位布局 是什么? 使用 position、left、right、top、bottom,可以改变元素现有位置,譬如让元素从正常布局流中跳出来,固定在页面某个位置上。 二、使用场景 1、position: static 这是元素的默认值,表示按照正常布局流进行排列元素(浏览器默认展示方式)。此时 top, right, bottom, left 和 z-index 属性无效。 2、position: relative 以现有位置为坐标进行偏移,元素不会被移出正常文档流,原有区域会留下空白。新建文件 i

Learn-anything.cn 604

CSS中的定位布局position

CSS中的定位布局position         定位时,通常使用left,top,right,bottom4个属性来进行定义 一、静态定位 static       left,top,right,bottom设置时将不起作用,要使用margin-left,margin-top,margin-right,margin-bottom html代码如下: <div

xie_bro的博客 462

css 中的position定位和flex布局分析

position定位 fixed绝对定位 fixed 生成绝对定位的元素,相对于浏览器窗口(或手机等终端窗口)进行定位。元素的位置通过&amp;amp;amp;amp;amp;amp;quot;left&amp;amp;amp;amp;amp;amp;quot;, &amp;amp;amp;amp;amp;amp;quot;top&amp;amp;amp;amp;amp;amp;quot;, &amp;amp;amp;amp;amp;amp;quot;rig

我弟是个程序员 3万+

CSS中的元素布局与定位详细说明

在CSS开发中,很重要的一个工作就是根据UI设计稿,进行元素的布局与定位,使得元素(比如某一段文本、按钮、图片等)显示在页面正确的位置。本文就元素的布局与定位方面,做一些讲解和说明。

weixin_43354152的博客 1888

css中的绝对定位布局及层级与透明效果

css中的绝对定位布局及层级与透明效果

qq_48802281的博客 1166

HTML css 中的选择器与定位布局的使用方法

3.8伪元素、伪类选择器 伪类选择器: 伪元素选择器: :first-letter 选择文本的首字母 :first-line 选择文本的首行 :after 在元素前面添加内容 :before 在元素后面添加内容 3.9选择器总结 什么是选择器? 选择器:描述后面的样式施加到哪些目标,或者说根据某个依据 来选择应用的样式 根据选择依据的不同,就产生了不同的选择器 元素选择器 Div{ background-color:red...

jx_NChen的博客 371

CSS中页面布局中的定位

一.定位:position 二.可选值: static:默认值,元素没有开启定位 relative:相对定位 absolute:绝对定位 fixed:固定定位 三.ralative相对定位: 1.开启元素的相对定位后,如果不设置偏移量元素不会发生任何变化 2.相对定位元素相对于其自身在文档流中的位置来定位 3.相对定位的元素不会脱离文档流 4.相对定位不会改变元素的性质,块元素依然是块元素,内联元...

weixin_39676449的博客 260

理解 XML 中的 CSS 布局:浮动与定位

本文将深入探讨 XML 中的两种常见的 CSS 布局技术:浮动(float)和定位(position),并介绍它们的工作原理和用法。浮动和定位是两种常见的布局技术,可以帮助我们实现自适应布局、多列布局以及精确的元素定位。通过将元素设置为绝对定位,并配合使用 top、right、bottom 和 left 属性,可以精确控制元素的位置,实现各种自定义的布局效果。浮动是一种常见的 CSS 布局技术,用于实现元素的自适应布局和页面的多列效果。定位是另一种常见的 CSS 布局技术,用于精确控制元素在页面中的位置。

m0_60533837的博客 143
上一篇: 算法一---斐波那契数列
下一篇: 位运算实现加减乘除运算
MosumLucifer
博客等级 码龄12年 19粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值