CSS学习(六)

2023-11-16

定位

为什么需要定位?

提问: 以下情况使用标准流或者浮动能实现吗?

  1. 某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子。
  2. 当我们滚动窗口的时候,盒子是固定屏幕某个位置的。

以上效果,标准流或浮动都无法快速实现,此时需要定位来实现。
所以:

  1. 浮动可以让多个块级盒子一行没有缝隙排列显示, 经常用于横向排列盒子。
  2. 定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。
定位组成

定位:将盒子定在某一个位置,所以定位也是在摆放盒子, 按照定位的方式移动盒子。
定位 = 定位模式 + 边偏移 。
定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。

定位模式

定位模式决定元素的定位方式 ,它通过 CSS 的 position 属性来设置,其值可以分为四个:

语义
static 静态定位
relative 相对定位
absolut 绝对定位
fixed 固定定位
边偏移

边偏移就是定位的盒子移动到最终位置。有 top、bottom、left 和 right 4 个属性。

边偏移属性 示例 描述
top top:80px 顶端偏移量,定义元素相对于其父元素上边线的距离。
bottom bottom:80px 底部偏移量,定义元素相对于其父元素下边线的距离。
left left:80px 左侧偏移量,定义元素相对于其父元素左边线的距离 。
right right:80px 右侧偏移量,定义元素相对于其父元素右边线的距离。
静态定位 static(了解)

静态定位是元素的默认定位方式,无定位的意思。
语法:

	选择器 { position: static; }
  • 静态定位按照标准流特性摆放位置,它没有边偏移
  • 静态定位在布局时很少用到
相对定位 relative(重要)

相对定位是元素在移动位置的时候,是相对于它原来的位置来说的(自恋型)。
语法:

	选择器 { position: relative; }

相对定位的特点:(务必记住)

  1. 它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)。
  2. 原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它。

因此,相对定位并没有脱标。它最典型的应用是给绝对定位当爹的。。。

绝对定位 absolute(重要)

绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的(拼爹型)。
语法:

	选择器 { position: absolute; }

绝对定位的特点:(务必记住)

  1. 如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document 文档)。
  2. 如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。
  3. 绝对定位不再占有原先的位置。(脱标)

所以绝对定位是脱离标准流的。

子绝父相的由来

弄清楚这个口诀,就明白了绝对定位和相对定位的使用场景。

这个“子绝父相”太重要了,是我们学习定位的口诀,是定位中最常用的一种方式这句话的意思是:子级是绝

对定位的话,父级要用相对定位。

  1. 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
  2. 父盒子需要加定位限制子盒子在父盒子内显示。
  3. 父盒子布局时,需要占有位置,因此父亲只能是相对定位。

这就是子绝父相的由来,所以相对定位经常用来作为绝对定位的父级。

总结: 因为父级需要占有位置,因此是相对定位, 子盒子不需要占有位置,则是绝对定位
当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。

固定定位 fixed (重要)

固定定位是元素固定于浏览器可视区的位置。主要使用场景: 可以在浏览器页面滚动时元素的位置不会改变。
语法:

选择器 { position: fixed; }

固定定位的特点:(务必记住)

  1. 以浏览器的可视窗口为参照点移动元素。
  • 跟父元素没有任何关系
  • 不随滚动条滚动。
  1. 固定定位不在占有原先的位置。
    固定定位也是脱标的,其实固定定位也可以看做是一种特殊的绝对定位。

固定定位小技巧: 固定在版心右侧位置。
小算法:

  1. 让固定定位的盒子 left: 50%. 走到浏览器可视区(也可以看做版心) 的一半位置。
  2. 让固定定位的盒子 margin-left: 版心宽度的一半距离。 多走 版心宽度的一半位置
    就可以让固定定位的盒子贴着版心右侧对齐了。
粘性定位 sticky(了解)

粘性定位可以被认为是相对定位和固定定位的混合。 Sticky 粘性的
语法:

	选择器 { position: sticky; top: 10px; }

粘性定位的特点:

  1. 以浏览器的可视窗口为参照点移动元素(固定定位特点)
  2. 粘性定位占有原先的位置(相对定位特点)
  3. 必须添加 top 、left、right、bottom 其中一个才有效

跟页面滚动搭配使用。 兼容性较差,IE 不支持。

定位的总结
定位模式 是否脱标 移动位置 是否常用
static 静态定位 不能使用边偏移 很少
relative 相对定位 否 (占有位置) 相对于自身位置移动 常用
absolute绝对定位 是(不占有位置) 带有定位的父级 常用
fixed 固定定位 是(不占有位置) 浏览器可视区 常用
sticky 粘性定位 否 (占有位置) 浏览器可视区 当前阶段少
  1. 一定记住 相对定位、固定定位、绝对定位 两个大的特点: 1. 是否占有位置(脱标否) 2. 以谁为基准点移 动位置。
  2. 学习定位重点学会子绝父相。
定位叠放次序 z-index

在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用 z-index 来控制盒子的前后次序 (z轴)
语法:

	选择器 { z-index: 1; }
  • 数值可以是正整数、负整数或 0, 默认是 auto,数值越大,盒子越靠上
  • 如果属性值相同,则按照书写顺序,后来居上
  • 数字后面不能加单位
  • 只有定位的盒子才有 z-index 属性
定位的拓展
绝对定位的盒子居中

加了绝对定位的盒子不能通过 margin:0 auto 水平居中,但是可以通过以下计算方法实现水平和垂直居中。

  1. left: 50%;:让盒子的左侧移动到父级元素的水平中心位置。
  2. margin-left: -100px;:让盒子向左移动自身宽度的一半。
定位特殊特性

绝对定位和固定定位也和浮动类似。

  1. 行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
  2. 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
脱标的盒子不会触发外边距塌陷

浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。

绝对定位(固定定位)会完全压住盒子

浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片) 但是绝对定位(固定定位) 会压住下面标准流所有的内容。
浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。 文字会围绕浮动元素

网页布局总结

通过盒子模型,清楚知道大部分html标签是一个盒子。 通过CSS浮动、定位 可以让每个盒子排列成为网页。
一个完整的网页,是标准流、浮动、定位一起完成布局的,每个都有自己的专门用法。

  1. 标准流
    可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局。
  2. 浮动
    可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局。
  3. 定位
    定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就 用定位布局。

元素的显示与隐藏

类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现! 本质:让一个元素在页面中隐藏或者显示出来。

  1. display 显示隐藏
  2. visibility 显示隐藏
  3. overflow 溢出显示隐藏
display 属性

display 属性用于设置一个元素应如何显示。

  • display: none ;隐藏对象
  • display:block ;除了转换为块级元素之外,同时还有显示元素的意思

display 隐藏元素后,不再占有原来的位置。

后面应用及其广泛,搭配 JS 可以做很多的网页特效。

visibility 可见性

visibility 属性用于指定一个元素应可见还是隐藏。

  • visibility:visible ; 元素可视
  • visibility:hidden; 元素隐藏

visibility 隐藏元素后,继续占有原来的位置。

如果隐藏元素想要原来位置, 就用visibility:hidden

如果隐藏元素不想要原来位置, 就用 display:none (用处更多 重点)

overflow 溢出

overflow 属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度) 时,会发生什么。

属性值 描述
visible 不剪切内容也不添加滚动条
hidden 不现实超过对象尺寸的内容,超出的部分隐藏掉
scroll 不管内容超出否,总是显示滚动条
auto 超出自动显示滚动条,不超出不显示滚动条

一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。

但是如果有定位的盒子, 请慎用overflow:hidden 因为它会隐藏多余的部分。

  1. display 显示隐藏元素 但是不保留位置
  2. visibility 显示隐藏元素 但是保留原来的位置
  3. overflow 溢出显示隐藏 但是只是对于溢出的部分处理
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS学习(六) 的相关文章

  • Xcode UIWebView 本地 HTML

    我了解 HTML javascript CSS 但我想使用 HTML5 制作一个本机 混合 iPhone 应用程序 但不使用 PhoneGap 或 Nimblekit 之类的东西 我以前从未编写过真正的 非网络应用程序 iPhone 应用程
  • JavaScript 中的 CSS 边框

    我正在使用下面的过程从 JavaScript 修改 CSS 但它没有给出任何结果 任何人都可以检查代码并让我知道正确的方法 我需要带有半径的表格边框 这是我的表结构 table width 400 border 0 cellspacing
  • Bootstrap 3.0:全宽彩色背景,中心紧凑列

    我想要制作一个条纹商业主题 类似于 W3Schools 创建的主题 主题可以找到here http www w3schools com bootstrap bootstrap theme company asp 它的特点是水平部分 由不同的
  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • 如何将表情符号水平居中?

    在非视网膜显示屏上 unicode 表情符号字符似乎溢出了其边界框 但在视网膜显示屏上 它仍保留在字符边界内 那么如何在视网膜和非视网膜显示屏上将表情符号水平居中在 div 中呢 非视网膜 Retina 这适用于视网膜屏幕 但在非视网膜显示
  • 非常基本的 JS 编码,是否有 SoundManager2?

    我想在我的网站上包含一个具有以下属性的音频 可能的视频播放器 必须可通过 div 通过 CSS 设计样式 可以读取所有ID3信息 可以从数据库中提取文件 可能是 GoDaddy 的 Easy Database 无闪光 可转移至智能手机等 我
  • 让两个按钮彼此相邻

    我的设计有问题 我的产品页面上有两个按钮 然而 由于其中一个处于表格中 因此它们彼此叠置 参见图片 我想让这两个按钮彼此相邻 有人可以帮我吗 下面我添加了 HTML 和 CSS 代码 提前致谢 HTML div class containe
  • MUI 组件上的渐变边框

    我没能找到相当于border image source css 我的目标是在按钮组件上渲染边框渐变 这是添加渐变边框的方法button成分 V5 const options shouldForwardProp prop gt prop gr
  • 如何更改点击事件上的引导插入符指向方向

    我正在使用 2 3 2 引导程序 因为当我单击菜单按钮时 我可以更改插入符号图标的位置 我需要当我单击图标插入符号向上时 当您单击另一个项目时 插入符号返回到初始状态 这怎么可能 导航代码 div div class container d
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • 上传前如何检查图片的宽度和高度

    对于图片上传 我编写了以下 html 代码
  • 'DOMException:使用'option:selected'选择器时无法在'Element'上执行'querySelectorAll'

    我正在运行一个页面 该页面在以下行中引发错误 var label select find option selected html select find option first html 为了完整起见 这里是完整的 jQuery 函数
  • javascript 中一次仅选中一个复选框

    I have 3复选框 我只想1一次选中的复选框 下面是我的 html 小提琴 JS小提琴 https jsfiddle net n03jLhqa 我想要这个工作在IE8还请建议如何做 这个怎么样 fiddle http jsfiddle
  • Bootstrap 3 - 模态背景不会根据模态对话框的高度调整大小?

    我将一个表单放入模式中 并尝试在用户触发单选按钮时显示表单的一些隐藏字段 显示隐藏字段后 模态自动重新缩放的高度 但模态背景的高度不能用作模态对话框 我该如何解决它 div class modal fade div class modal
  • 使用 htaccess 重写规则重定向后 CSS 未加载

    我有以下用户个人资料网址的简写 RewriteRule w profile php name of user 1 当我这样做时 该网站使用适当的 css 文件进行样式设置site com name of user 但当我这样做的时候却不是s
  • 如何从 HTML 中的列数据而不是行数据创建表格?

    根据这篇文章W3学校 http www w3schools com html html tables asp 可以像这样在 HTML 中创建一个基本表格 table border 1 tr td row 1 cell 1 td td row
  • 用于生成多色文本的 jQuery 插件,该文本可在悬停时改变颜色

    我想为各种链接生成多色文本 并从预先指定的颜色数组中为各个字母随机分配颜色 当将鼠标悬停在带有文本的 div 上时 颜色会发生变化 我正在考虑一个 jQuery 插件 脚本将是可行的方法 我想知道是否存在这样的插件或近似插件 Thanks
  • 手机上的网页滚动条可以隐藏吗?

    我正在尝试在移动设备上隐藏滚动条 一切在桌面上看起来都很好 没有滚动条 但是当我检查某些 Android 设备 ipad 时 我仍然可以看到灰色 细小的拇指 可以从浏览器中隐藏预定义的滚动条 我的代码 在桌面上运行良好 body webki
  • Bootstrap - 为反向行模式创建移动自适应

    我想用 Bootstrap 创建一个反向效果 第一行 左边是文字 右边是图像 第二行 左边是图片 右边是文字 第三行 左边是文字 右边是图片 第四行 左边是图片 右边是文字 而且这种情况一直持续下去 它在大型设备上看起来非常漂亮 但当它在设
  • javascript:获取带有单位的CSS prop值[重复]

    这个问题在这里已经有答案了 我的代码是这样的 image 1 position absolute top 3vw 我的尝试 http jsfiddle net z8k6t3fb 1 http jsfiddle net z8k6t3fb 1

随机推荐

  • 用tornado 连接mysql进行操作报错sqlalchemy.exc.OperationalEror: (pymysql.err.perationalError)(235,Can‘t comect

    用tornado 连接mysql进行操作报错sqlalchemy exc OperationalEror pymysql err perationalError 235 Can t comect to Wy lL serVer on 192
  • 【创作赢红包】云原生之使用Docker部署YApi接口管理服务平台

    云原生之使用Docker部署YApi接口管理服务平台 一 YApi介绍 1 YApi简介 2 YApi功能 二 检查docker环境 1 检查docker版本 2 检查docker状态 三 安装MongoDB数据库 1 创建MongoDB数
  • 百度文库等类似工具的免费下载工具

    百度文库如何免费下载文献 软件介绍 百度文库如何免费下载文献 冰点文库下载器V3 1 9 亲测 可用 软件介绍 无需积分就可以自由下载百度 豆丁 丁香 MBALib 道客巴巴 Book118等文库文档 无需注册和登录 下载的文档最终生成高清
  • 跳动爱心代码-李峋爱心代码(手把手教学)

    电视剧 点燃我 温暖你 打火机与公主裙 李洵爱心跳动效果 获取完整代码 公众号 ClassmateJie 回复爱心代码 本文分为两种方式讲解如何运行代码 第一种方式比较简单推荐新手 完全不懂编程的 第二种方式需要有一定的编程基础的人 跟着我
  • Pytorch Advanced(三) Neural Style Transfer

    神经风格迁移在之前的博客中已经用keras实现过了 比较复杂 keras版本 这里用pytorch重新实现一次 原理图如下 from future import division from torchvision import models
  • spring-boot-devtools引发的类加载器问题

    问题描述 最近在使用spring boot开发系统 发现在某种情况下一些数据库操作会报异常 是hibernate报出来的 在IntellijIDEA中启动程序 nested exception is org hibernate proper
  • cmake入门系列总结四

    cmake入门系列总结四 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 14 初稿 目录 文章目录 cmake入门系列总结四 版本说明 目录 一 添加系统自省 二 具体目录结构和演示 三 最后 一 添加系统自省 接下来让
  • Rxjava初步理解

    本质就是通过回调实现 Observable被观察对像 成员变量onSubscribe Subscriber 观察对象 订阅 Observable subscribe先调用Subscriber onStart 然后调用onSubscribe中
  • 如何怎样安装nvm

    使用宝塔的Nodejs环境体验比较差 如果要完全使用命令行 应该如何玩转呢 今天我们简要介绍下步骤 方便大家自己使用 首先 我们创建一个文件install sh 然后将下面代码复制粘贴进去 usr bin env bash this ens
  • PowerDesigner生成Excel版本的数据库文件

    File pdm2excel txt Title pdm export to excel Purpose To export the tables and columns to Excel Model Physical Data Model
  • Python - Numpy库的使用(简单易懂)

    目录 numpy多维数组 数组的创建 1 array函数创建数组对象 2 通过arange linspace函数创建等差数组对象 3 通过logspace函数创建等比数列数组 函数 zeros ones diag eye full nump
  • 区块链技术的特点

    区块链技术是一种去中心化的分布式账本技术 它有以下优势和应用场景 1 去中心化 区块链是一种去中心化的技术 因此可以在不需要任何中心机构或者第三方的情况下 实现信息交换和价值转移 这使得它可以在许多领域得到应用 2 可追溯性 区块链技术可以
  • 为什么设置不了这是一台家用计算机,图文演示win10专业版更改不了这是一台家庭计算机的详尽处理步骤...

    win10系统从发布到现在已经好多年了 各种问题也得到了解决 但是今天还是有用户说出现了win10专业版更改不了这是一台家庭计算机的问题 很多网友都没有关于win10专业版更改不了这是一台家庭计算机的问题的处理经验 如果你咨询很多人都不知道
  • 520表白季——你表白成功了吗

    晓玲 小A 你昨天不是向D君表白了吗 今天这是怎么了 怎么还一副伤心的样子 泪眼汪汪的 小A 5555 晓玲姐姐 D君他居然说我是花心大萝卜 我明明就只喜欢他一个啊 晓玲 这样啊 走 我们去找定位帮帮忙 Ctrl G调出定位对话框 gt 定
  • JS 正则表达式截取指定字符的前面后面的内容

    1 js截取两个字符串之间的内容 let str web辣鸡工程师前端 str str match web S 前端 1 alert str 辣鸡工程师 2 js截取某个字符串前面的内容 var str 内容 截取字符串 str str m
  • 如何在vue中引入百度地图

    1 进入百度地图开放平台官网 进行实名认证 https lbsyun baidu com 2 完成实名认证后 进入控制台 3 进入应用管理 gt 我的应用 gt 创建应用 4 根据应用场景更改应用类型 5 白名单填写 gt 提交 6 这样就
  • 机器人编程课必要性

    机器人编程课必要性 说起小孩的学习 想必家长们都是非常的有发言权的 很多的家长想要孩子去学习机器人编程的课程 但是有的家长对于机器人编程课必要性并不是特别的清楚 他们不知道孩子学习机器人编程有啥好处 今天我们就一起来了解一下机器人编程课必要
  • 年末盘点,2021年最值得推荐的10个提高开发效率工具,程序员必备

    程序员的日常工作中 好用的工具往往能让我们事半功倍 极大提升我们的开发效率 接下来分享下我平时工作中经常使用的一些工具 也欢迎大家在评论区给我推荐一些好用的工具软件 一起学习 一 网络抓包工具 1 Proxyman 平时自己编写的程序网络通
  • MySQL 多种查询方法

    这里写目录标题 查询 1 单表查询 1 选择表中的若干列 2 选择表中的若干元组 3 order by子句 4 聚集函数 5 group by分组 2 连接查询 1 等值与非等值连接查询 2 自身连接 3 外连接 4 多表连接 3 嵌套查询
  • CSS学习(六)

    定位 为什么需要定位 提问 以下情况使用标准流或者浮动能实现吗 某个元素可以自由的在一个盒子内移动位置 并且压住其他盒子 当我们滚动窗口的时候 盒子是固定屏幕某个位置的 以上效果 标准流或浮动都无法快速实现 此时需要定位来实现 所以 浮动可