web 页面布局:(三)position 坐标系布局

news2024/10/7 1:30:51

web 页面布局:(三)position 坐标系布局

  • 页面坐标系
  • position 设置
    • fixed
    • relative
    • absolute
    • sticky
  • 应用场景

页面坐标系

因为所有文本内容,是从左向右读,自上而下读,和书写习惯,读书习惯一致,所以,规定页面左上角为原点,也就是坐标系中心,但这只是按照 left top 的定义。

事实上,在 html 页面里,可以制作出四个坐标系来,垂直的有 top bottom ,横向的有 left right ,然后垂直与横向结合,可以得到 left top,right top,left bottom,right bottom 四个坐标系。

在这里插入图片描述
这四个坐标系是同时存在于页面之中的,分别是以四个角为原点的坐标系。所以,我们在页面中使用坐标系进行坐标描述的时候,不是使用的数学坐标系中的 x、y,而是使用的坐标系描述:left、top之类的。

CSDN 文盲老顾的博客,https://blog.csdn.net/superwfei
老顾的个人社区,https://bbs.csdn.net/forums/bfba6c5031e64c13aa7c60eebe858a5f?category=10003&typeId=3364713

position 设置

在默认情况下,position 的默认值是 static 模式,也就是静态模式,我们无法按照坐标系,来修改元素的渲染效果,而必须通过修改 position 的设置,来达到使用坐标系的方式。

通过 position 修改样式信息后,该元素则在其内部重构坐标系,而其本身的位置,则根据 position 的设置,而进行调整。

fixed

position:fixed 相对页面所在窗体定位

嗯,也就是说,不管页面内容有多少,有没有进行滚动之类的,元素所在位置在视觉上是永远不会变动的,可以用例子来观察一下,并且,我们用四个坐标系分别做出一个 fixed 元素

  <div style="position:fixed;width:100px;height:100px;background:black;left:10px;top:10px;color:white;">left top 坐标系</div>
  <div style="position:fixed;width:100px;height:100px;background:red;right:10px;top:10px;color:white;">right top 坐标系</div>
  <div style="position:fixed;width:100px;height:100px;background:purple;left:10px;bottom:10px;color:white;">left bottom 坐标系</div>
  <div style="position:fixed;width:100px;height:100px;background:blue;right:10px;bottom:10px;color:white;">right bottom 坐标系</div>
  <div style="background:yellow;">正常的内容,忽略 fixed 元素,正常渲染。</div>

在这里插入图片描述

当样式中同时出现冲突的坐标系时,比如同时写了 left 和 right,那么以left为准,如果同时出现 top 和 bottom,以 top 为准,这是一个需要注意的地方。

使用 fixed 设置的元素,不占用页面顺序渲染的位置,同时,fixed 要比正常渲染的层深优先级高,那怕修改层深设置(z-index),也不会影响 fixed 元素和 static 元素的显示优先级。

relative

position:relative 相对与元素原本位置进行位移

额。。。。其实挺绕的一个概念,这样,我们通过一个小例子,来观察一下,左边是正常渲染,右边是通过relative后位移的结果。

	<div style="display:inline-block;width:300px;border:1px solid #ccc;padding:10px;">左边正常渲染
		<div style="border:1px solid #ccc;">一个正常的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;">比原本位置向上移动5像素的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;">relative 设置中,right 和 bottom 是无效的</div>
		<div style="border:1px solid #ccc;margin-top:10px;">一个向右位移的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;">一个正常的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;">一个正常的div</div>
	</div>
	<div style="display:inline-block;width:300px;border:1px solid #ccc;padding:10px;margin-left:10px;">右边通过 relative 位移
		<div style="border:1px solid #ccc;">一个正常的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;position:relative;top:-5px;">比原本位置向上移动5像素的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;position:relative:bottom:-5px;right:5px;">relative 设置中,right 和 bottom 是无效的</div>
		<div style="border:1px solid #ccc;margin-top:10px;position:relative;left:10px;">一个向右位移的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;">一个正常的div</div>
		<div style="border:1px solid #ccc;margin-top:10px;">一个正常的div</div>
	</div>

在这里插入图片描述
可以看到,在 relative 设置中,right 和 bottom 是无效的,仅仅可以使用 left top 坐标系,这个时候,原点位置,是元素原本位置的左上角,left 为正数,则向右移动,left 为负数,则向左移动,top 同理。这个时候,就和数学坐标系用法一样了,不过不是 x、y,而是left、top。

同时,需要注意的另外一个点,就是,他仅仅是位移,但是渲染所占用的行,或者说空间并没有位移,还是原本的位置,通过向上移动5像素的那个 div 后边的内容,可以看出,后边的位置是一致的。

absolute

position:absolute 相对父坐标系的绝对位置

嗯,这就说回到刚才,我们已经说过的,每个 position ,都会重构其内部坐标系,我们在其内部的使用其他 position 设置时,会按照自有坐标系来实现。

	<div style="position:absolute;left:100px;top:10px;width:100px;height:50px;border:1px solid #ccc;">相对页面的 left top 定位</div>
	<div style="position:absolute;right:100px;bottom:10px;width:100px;height:50px;border:1px solid #ccc;">相对页面的 right bottom 定位</div>
	<div style="position:relative;top:70px;padding:50px;border:1px solid #ccc;">
		这个 div 使用了 position,即重构了坐标系
		<div style="position:absolute;left:100px;top:10px;width:200px;height:50px;border:1px solid #ccc;">相对父级position的 left top 定位</div>
		<div style="position:absolute;right:100px;bottom:10px;width:200px;height:50px;border:1px solid #ccc;">相对父级position的 right bottom 定位</div>
	</div>

在这里插入图片描述
这里需要注意的问题和 fixed 一样,absolute 内容不占用当前渲染位置。同时,需要注意父级 position 元素所使用的 padding 和 margin 设置,padding 是不影响原点位置的,margin 则会影响原点位置。同时,right 和 bottom 相关的坐标系,受父级 position 元素的 width 和 height 数据影响。

sticky

position: sticky 粘性设置

额。。。。一个最新的设置,老顾也是才发现还有这个。。。。老顾以前实现这种内容,都是通过 js 自己来实现的啊。。。。

好吧,仔细看了下,还是有一些兼容性问题,在移动端设备上,由于都是比较新的浏览器核心,所以可以直接使用,但是,对于 ie、edge 之类的。。。还是不要考虑了。

这个效果,用静态截图提现不出来,小伙伴们可以看看 w3school 的示例:https://www.w3school.com.cn/tiy/t.asp?f=css_position_sticky

应用场景

position 相关的应用还是比较多的,比如,输入框弹出的模糊搜索结果,比如日历控件弹出的浮动层设置,比如,信息提示,图片预览之类的,都大量的使用了 position 相关布局。嗯,最后的粘性设置,现在也通过 css 实现了,一个非常方便的用法,保持在页面滚动时,保留一个需要的页头,在表格滚动时非常实用。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

惊呆了!这个银行管理技巧也太厉害了吧

在金融行业&#xff0c;蓄电池监控是一项至关重要的任务。随着金融机构的数字化转型和依赖电力的增加&#xff0c;蓄电池成为保障金融系统正常运行的关键组成部分。 因此&#xff0c;对蓄电池的状态进行监控和维护&#xff0c;确保其高效可靠地工作&#xff0c;对金融行业的稳定…

深度学习06-pytorch从入门到精通

文章目录 概述环境准备安装cuda和cudnn安装pytorch 基础张量定义numpy转换数学函数随机数计算函数矩阵处理函数 自动梯度案例计算图 torchvision模块TransformsDataSetDataLoader自定义数据集 nn模块nn.ModuleCNN图像处理层nn.Conv2dnn.AvgPool2d和nn.MaxPool2dnn.Linearnn.Bat…

TransFuse

方法 Transformer分支 将不同尺度的特征图 t 0 、 t 1 和 t 2 t^0、t^1和t^2 t0、t1和t2保存起来&#xff0c;之后与对应的CNN分支的特征图融合。 CNN分支 以基于ResNet的模型为例&#xff0c;模型通常有五个块&#xff0c;每个块对特征图进行两倍下采样。我们获取第 4( g 0…

vue父组件调用子组件的Form表单校验

需求1&#xff1a;父组件调用子组件的表单验证方法&#xff0c;验证成功&#xff0c;继续进行接下来的操作&#xff0c;验证失败&#xff0c;提示用户并返回。 需求2&#xff1a;父组件校验多个子组件的表单验证方法&#xff0c;验证成功&#xff0c;继续进行接下来的操作&…

cookie/session/token(持续更新)

1.cookie 1.1概念 cookie是服务器产生的保存在客户端的一小段文本信息,格式是字典形式,键值对形式 cookie有两类: 1.会话级cookie:保存在内存,随浏览器关闭自动消息 2.持久化cookie:保存在硬盘,浏览器关闭不会直接消失,生命周期取决于失效时间 1.2如何查看cookie以及格式…

vue3+vite+element pro + pnpm 创建的monorepo项目

vue3+vite+element pro + pnpm 创建的monorepo项目 欢迎使用河码桌面技术说明界面欢迎使用河码桌面 欢迎使用河码桌面,河码桌面是一个基于vue3+vite+element pro + pnpm 创建的monorepo项目,项目采用的是类操作系统的web界面,操作起来简单又方便,符合用户习惯,又没有操作…

GlusterFs部署及使用

目录 一、部署和使用 1. clusterfs服务器初始化 2. 部署glusterfs 3. 创建volume 4. 客户端挂载和使用 5. k8s使用glusterfs作为后端存储&#xff08;静态供给glusterfs存储&#xff09; 5.1 集群所有节点安装glusterfs客户端 5.2 k8s创建资源对象使用glusterfs存储 5.…

Spring Boot 中的声明式事务是什么,如何使用

Spring Boot 中的声明式事务是什么&#xff0c;如何使用 简介 在数据库操作中&#xff0c;事务是一组操作的集合&#xff0c;这些操作在一个逻辑单元内执行&#xff0c;如果其中任何一个操作失败&#xff0c;则整个事务都会被回滚&#xff0c;使得数据库回到事务执行之前的状…

不看产品、不重销售,聊聊Forrester推荐的CLG战略

近日&#xff0c;Forrester的分析师们发现&#xff0c;企业&#xff08;尤其是B2B企业&#xff09;对于CLG战略的关注空前增加。而且&#xff0c;越来越多SaaS企业选择CLG战略来取代以前的PLG&#xff08;产品导向型增长&#xff09;或SLG&#xff08;销售导向型增长&#xff0…

SpringSecurity之基本原理

目录 核心过滤器 FilterSecurityInterceptor ExceptionTranslationFilter UsernamePasswordAuthenticationFilter BasicAuthenticationFilter 过滤器加载过程 重要接口 UserDetailsService接口 PasswordEncoder接口 springSecurity本质上就是一个过滤器链&#xff0c;…

RabbitMQ系列(16)--用SpringBoot整合RabbitMQ

1、新建项目 2、新建Spring项目 3、选择合适的SpringBoot版本&#xff0c;依赖在这里可以先不选&#xff0c;可以在项目生成后在pom.xml文件里批量的导入依赖 4、设置项目的Maven (1)打开设置 (2)在搜索框里输入Maven搜索Maven设置&#xff0c;然后根据自己的实际情况设置Mave…

优化篇--Vue模版语法做动态渲染

Vue模版语法做动态渲染&#xff0c;随便记录一下 <a-row v-for"(row, rowIndex) in footerConfig" :key"rowIndex"><a-col span"4" v-for"(col, colIndex) in row" :key"colIndex"><span class"total-l…

新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香

因为一个人就全体 虽然没提名字但是说的意思和报身份证没区别, 我自己看着都尴尬… 标题就是事情的经过,和同事的聊天记录在最下面 前言 Lambda表达式是优化代码的工具&#xff0c;使得代码更简洁、易读&#xff0c;符合现代开发的趋势,以及推动函数式编程在Java开发中的流行…

web3创业有哪些机会?(一)

目录 1. 去中心化金融&#xff08;DeFi&#xff09;&#xff1a;2. 去中心化身份验证和数字身份&#xff1a;3. 去中心化市场和电子商务&#xff1a;4. 区块链游戏和虚拟资产&#xff1a;5. 数据隐私和安全&#xff1a;6. 去中心化社交媒体&#xff1a;7. 去中心化能源交易&…

Webpack原理与实战 --- 背景介绍

模块化的演进过程 Stage 1 - 文件划分方式 缺点&#xff1a; 模块直接在全局工作&#xff0c;大量模块成员污染全局作用域&#xff1b;没有私有空间&#xff0c;所有模块内的成员都可以在模块外部被访问或者修改&#xff1b;一旦模块增多&#xff0c;容易产生命名冲突&#…

自动化测试及典型开源的自动化测试工具

目录 前言&#xff1a; 自动化测试 自动化测试的意义 手工测试的局限性 自动化测试带来的好处 自动化测试的前提条件 自动化测试的方法 自动化测试的不足 自动化测试的应用方向 典型开源的自动化测试工具 前言&#xff1a; 自动化测试是一种使用软件工具和脚本来执行…

第二章——开始学习C++

进入C 首先介绍一个显示消息的简单C程序&#xff08;不同于以往的“Hello&#xff0c;world"&#xff09; #include<iostream> int main() {using namespace std;cout << "Come up and C me some time.";cout << endl;cout << "…

手机上无处不在的AI,原来还藏有这么多秘密

目录 一、AI在拍照中的应用 二、AI在日常生活中的应用 三、手机上AI的来自哪&#xff1f; 尽管2023年才过完了一半&#xff0c;但来自AI领域的科技震撼却没有要结束的意思。回顾过往&#xff0c;AI从没像今天这般那样受人瞩目&#xff0c;似乎一夜之间&#xff0c;它就成了新…

速览6月更新|EasyV产研团队带来产品功能优化

EasyV产研团队在6月份为您带来了一系列令人期待的产品功能优化&#xff0c;让数字化管理更加轻松高效&#xff01;话不多说&#xff0c;快来看看都有哪些新变化吧&#xff5e; 速览6月更新内容&#xff1a; 01 平台升级&#xff5c;工作台功能优化 02 模板上新&#xff5c;能…

LeetCode打卡 day58--单调栈

一个人的朝圣 — LeetCode打卡第58天 知识总结 Leetcode 739. 每日温度题目说明代码说明 Leetcode 496. 下一个更大元素 I题目说明代码说明 知识总结 单调栈的应用, 就是需要构建一个单调递增或者单调递减的栈, 去解决下一个大(小)的元素的问题 Leetcode 739. 每日温度 题目链…