CSS布局-定位,相对,绝对,子绝父相,固定定位,层级关系。

news2024/11/24 13:07:01

CSS布局-定位,相对,绝对,子绝父相。

目录
  • CSS布局-定位,相对,绝对,子绝父相。
    • 1、定位
      • 1.1 网页常见布局方式
      • 1.2 定位的常见应用场景
      • 2.1 定位初体验
      • 2.2 使用定位的步骤
      • 3.1 静态定位
      • 4.1 相对定位
      • 5.1 绝对定位
      • 5.2 绝对定位到底相对于谁进行偏重点
      • 6.1 子绝父相介绍
      • 7.1 固定定位
      • 8.1 元素层级问题
      • 8.2 更改定位元素的层级重点

学习目标

◆ 能够说出 定位 的常见应用场景
◆ 能够说出 不同定位方式 的特点
◆ 能够使用 子绝父相 完成元素水平垂直案例
◆ 能够写出三种常见的 光标类型(cursor)
◆ 能够使用 圆角边框 属性完成 正圆 和 胶囊按钮 效果
◆ 能够说出 display 和 visibility 让 元素本身隐藏 的区别

1、定位

目标:能够说出 定位 的常见应用场景,并且能够说出 不同定位方式 的特点
学习路径:
	1. 定位的基本介绍
	2. 定位的基本使用
	3. 静态定位
	4. 相对定位
	5. 绝对定位
	6. 子绝父相
	7. 固定定位
	8. 元素的层级关系

1.1 网页常见布局方式

1. 标准流

​ \1. 块级元素独占一行 → 垂直布局

​ \2. 行内元素/行内块元素一行显示多个 → 水平布局

2. 浮动

​ \1. 可以让原本垂直布局的 块级元素变成水平布局

3. 定位

​ \1. 可以让元素自由的摆放在网页的任意位置

​ \2. 一般用于 盒子之间的层叠情况

1.2 定位的常见应用场景

2.1 定位初体验

2.2 使用定位的步骤

3.1 静态定位

4.1 相对定位

测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 如果left和right都有, 以left为准; top和bottom都有以top 为准 */
        /* css书写: 1. 定位 / 浮动 / display ; 2. 盒子模型; 3. 文字属性 */
        .box {
            position: relative;
            right: 200px;
            bottom: 400px;
            left: 100px;
            top: 200px;

            

            /* 
                1. 占有原来的位置
                2. 仍然具体标签原有的显示模式特点
                3. 改变位置参照自己原来的位置
            */

            width: 200px;
            height: 200px;
            background-color: pink;
        }
        span {
            /* 相对于以前的位置进行相对的偏移,以前是在浏览器的左上角,就是相对于浏览器的
            左上角进行偏移,然后偏移走了之后,还是会保留以前的位置,别人不能霸占 */
            position: relative;
            left: 15px;
            top: 20px;

            display: inline-block;

            width: 100px;
            height: 100px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <span>span</span>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <div class="box">box</div>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
</body>
</html>

测试结果如下:

5.1 绝对定位

5.2 绝对定位到底相对于谁进行偏重点

➢ 绝对定位相对于谁移动?

​ \1. 祖先元素中没有定位 → 默认相对于浏览器进行移动

​ \2. 祖先元素中有定位 → 相对于 最近的 有定位 的祖先元素进行移动

小结:

➢ 绝对定位position的属性值是什么?
	• absolute
➢ 绝对定位是否需要配合方位属性实现移动?
	• 需要配合方位属性实现移动
➢ 绝对定位的元素相对于谁进行移动?
	1. 祖先元素中没有定位 → 默认相对于浏览器进行移动
	2. 祖先元素中有定位 → 相对于 最近的 有定位 的祖先元素进行移动
➢ 绝对定位的元素在网页中是否占位置?
	• 在页面中不占位置 → 已经脱标

测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* css书写: 1. 定位 / 浮动 / display ; 2. 盒子模型; 3. 文字属性 */
        .box {
            /* 绝对定位: 
                先找已经定位的父级, 如果有这样的父级就以这个父级为参照物进行定位;
                有父级, 但父级没有定位, 以浏览器窗口为参照为进行定位
            */

            position: absolute;
            /* left: 50px; */
            left: 0;
            top: 0;
            

            /* 
            1. 脱标, 不占位
            2. 改变标签的显示模式特点: 具体行内块特点(在一行共存, 宽高生效)
            */

            width: 200px;
            height: 200px;
            background-color: pink;
        }

        span {
            /* 设置绝对定位,会脱标准流,不在占有以前的位置。 */
            position: absolute;
            /*
            这样设置绝对定位的高度是没问题的,下面测试 right和bottom
            关于左右上下的设置,上的优先级大于下,左设置的优先级大于右。
            left: 300px;
            top: 300px; */
            /* 转为行列块元素 */

            /* 没问题 */
            right: 300px;
            bottom: 400px;

            display: inline-block;

            /* 设置高度和宽度 */
            height: 100px;
            width: 150px;

            /* 设置背景颜色 */
            background-color: bisque;

        }
    </style>
</head>
<body>
    <span>span</span>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <div class="box">box</div>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>
    <p>测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位测试定位</p>

</body>
</html>

测试结果:

6.1 子绝父相介绍

➢ 场景:让子元素相对于父元素进行自由移动

➢ 含义:

​ • 子元素:绝对定位

​ • 父元素:相对定位

➢ 子绝父相好处:

​ • 父元素是相对定位,则对网页布局影响最小

(拓展) 子绝父绝特殊场景

➢ 场景:在使用子绝父相的时候,发现父元素已经有绝对定位了,此时直接子绝即可!

➢ 原因:

​ • 父元素已经有定位已经满足要求,如果盲目修改父元素定位方式,可能会影响之前写好的布局

测试:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .father {
            /* position: relative; */

            width: 400px;
            height: 400px;
            background-color: pink;
        }
        
        .son {
            /*  相对, 绝对 */
            /* 父级相对定位; 子级绝对定位 -- 子绝父相 */
            /* position: relative; */
            /* position: absolute; */
            /* right: 100px; */

            position: relative;
            width: 300px;
            height: 300px;
            background-color: skyblue;
        }

        .sun {
            position: absolute;
            /* left: 20px;
            top: 30px; */
            right: 20px;
            bottom: 50px;

            width: 200px;
            height: 200px;
            background-color: green;
        }

        /* 绝对定位查找父级的方式: 就近找定位的父级, 如果逐层查找不到这样的父级, 就以浏览器窗口为参照进行定位 */
    </style>
</head>
<body>
    <div class="father">
        <div class="son">
            <div class="sun"></div>
        </div>
    </div>
</body>
</html>

测试如下:

(案例)子绝父相水平居中案例

结果如下:

(案例)子绝父相水平居中案例-解决方法

(案例)子绝父相水平垂直都居中案例

结果如下:

(案例)子绝父相水平垂直都居中案例-解决方法

1. 子绝父相
2. 让子盒子往右走大盒子一半
	• left:50%
3. 让子盒子往下走大盒子一半
	• top:50%
4. 让子盒子往左+往上走自己的一半
	• transform:translate(-50%,-50%);

(案例)导航二维码居中定位案例

测试代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    /* 因为有通栏:占满一行的边框,所以需要有一个通栏:占满一行的盒子 */
    .nav {
      height: 40px;
      border: 1px solid rgb(224, 51, 51);
    }

    /* 因为ul中所有的内容都是在网页的宽度固定并且水平居中的盒子内部,所以设置ul为宽度固定并且水平居中的效果(后面项目中所用到的版心) */
    ul {
      /* 清除小点,小li前面的小点 */
      list-style: none;
      /* 设置宽度为 1200px像素 */
      width: 1200px;
      /* 两边居中 */
      margin: 0 auto;
    }

    ul li {
      float: left;
      width: 20%;
      height: 40px;
      border-right: 1px solid #ccc;
      /* 如果设置盒子的边框boder或者padding都会撑大盒子的大小,
      我们可以手动调成,也可以使用css3特性box-sizing:border-box 就可以自动调整了; */
      /* 自动内减 */
      box-sizing: border-box;
      text-align: center;
      line-height: 40px;
    }

    /* 设置最后一个小Li右边边框为0 */
    ul .last {
     border-right: none;
    }

    ul li a {
      /* a标签默认是行内元素,宽高由内容撑开,并且无法设置宽高,此时默认情况用户只能点击文字区域才能调整 */
      /* 如果把a标签转换成块级元素,此时可以设置宽高,会让a标签范围更大,用户可以点击调整的区域也越大 */
      display: block;
      /* 宽度不设置块元素会默认占满一行 */
      height: 40px;
      /* 设置标签的下划线为没有 */
      text-decoration: none;
      color: #000;
    }

    ul li .app {
      position: relative;
    }

    .code {
      position: absolute;
      /* 先让二维码在app盒子中向中间偏右 50%,然后在往反方向便宜50%至center的位置 */
      left: 50%;
      top: 41px;
      transform: translate(-50%);
    }
  </style>
</head>
<body>
  <!-- 导航 -->
  <div class="nav">
    <ul>
      <li><a href="#">我要投资</a></li>
      <li><a href="#">平台介绍</a></li>
      <li><a href="#">新手专区</a></li>
      <!-- 因为用户鼠标放在二维码图片上也能跳转,所以证明img也是在a的范围内,因此把img写在a标签的内部 -->
      <li><a href="#" class="app">手机微金所 <img src="./images/code.jpg" alt="" class="code"> </a></li>
      <li class="last"><a href="#">个人中心</a></li>
    </ul>
  </div>

</body>
</html>

测试结果如下:

(案例)底部半透明遮罩效果

测试代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .banner {
            position: relative;
            margin: 0 auto;
            width: 1226px;
            height: 600px;
        }

        .mask {
            position: absolute;
            left: 0;
            bottom: 0;
            /* 绝对定位的盒子显示模式具备行内块特点: 加宽度高度生效, 如果没有宽度也没有内容, 盒子的宽度尺寸就是0 */
            /* width: 1226px; */
            /* 如果子级和父级的宽度相同  */
            width: 100%;
            height: 150px;
            background-color: rgba(0,0,0, .5);
        }
    </style>
</head>
<body>
    <div class="banner">
        <img src="./images/bg.jpg" alt="">
        <!-- 遮罩 -->
        <div class="mask">111</div>
    </div>
</body>
</html>

7.1 固定定位

测试:

8.1 元素层级问题

➢ 不同布局方式元素的层级关系:

​ • 标准流 < 浮动 < 定位

➢ 不同定位之间的层级关系:

​ • 相对、绝对、固定默认层级相同

​ • 此时HTML中写在下面的元素层级更高,会覆盖上面的元素

8.2 更改定位元素的层级重点

➢ 场景:改变定位元素的层级

➢ 属性名:z-index

➢ 属性值:数字

​ • 数字越大,层级越高

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

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

相关文章

矩阵理论复习(五)

2004年试题 Hermite矩阵酉相似于对角阵 验证相容矩阵范数 盖尔圆盘互不相交&#xff0c;则特征值都不相同&#xff0c;若盖尔圆盘全部出现在右半复平面上&#xff0c;则特征值全为实数。 矩阵二范数的计算 最大秩分解M-P广义逆矩阵方程是否有解 2005年试题 正定矩阵&a…

【秒杀购物商城业务服务】「分布式架构服务」盘点中间件服务的高可用模式及集群技术的方案分析

秒杀购物商城业务服务-分布式架构介绍 基于MySQL数据库集群技术实现服务的高可用基于Tomcat的集群负载机制实现Tomcat服务器的高可用基于Nginx负载均衡机制实现负载均衡&#xff08;介绍和配置&#xff09;基于Redis缓存服务实现数据缓存控制相关介绍和技术点分析 基于MySQL数…

RTC 时钟电路如何选择法拉电容的容量

理论依据&#xff1a; 公式 1&#xff1a;Q I * t 公式 2&#xff1a;Q CU 由此推导出→I * t CU →t CU/I(将根据这个计算时钟保留时长) 说明 Q&#xff1a; 电荷量 &#xff08;单位&#xff1a;库仑&#xff09;I&#xff1a; 电流 &#xff08;单位&#xff1a;安培&a…

QT/C语言 实现数据库sqlite3

QT/C语言 实现数据库sqlite3【1】引入数据库【2】下载移植sqlite31.移植sqlite32.使用sqlite33.sqlite3中的数据类型4.常用的SQL语句(全部都是分号结尾)(1)新建表格(2)往表格中插入数据(3)查询表格中的数据(4)删除表格中的数据(5)修改表格中的数据【3】C语言调用sqlite31.接口函…

第10部分 DHCP

目录 10.1 DHCP 概述 10.2 实验1&#xff1a;DHCP 基本配置 1.实验目的 2.拓扑结构 3.实验步骤 4.实验调试 &#xff08;1&#xff09;在客户端测试 &#xff08;2&#xff09;show ip dhcp pool &#xff08;3&#xff09;show ip dhcp binding 10.3 实验&#xff…

LeetCode 1827. 最少操作使数组递增

最少操作使数组递增 简单 46 相关企业 给你一个整数数组 nums &#xff08;下标从 0 开始&#xff09;。每一次操作中&#xff0c;你可以选择数组中一个元素&#xff0c;并将它增加 1 。 比方说&#xff0c;如果 nums [1,2,3] &#xff0c;你可以选择增加 nums[1] 得到 nums …

实战讲解Spring定时任务:@Scheduled(图+文+源码)

1 缘起 最近看到有些定时任务的项目&#xff0c; 使用了Spring自带的定时任务系统&#xff0c;通过添加Scheduled注解的方式实现&#xff0c; 并且&#xff0c;使用了不只cron表达式的方式实现定时执行&#xff0c; 恍然大悟&#xff0c;原来Scheduled还有其他的方式实现定时任…

《小猫猫大课堂》3之字符串,转义字符,注释,选择和循环语句,函数等小概括。

更新不易&#xff0c;麻烦多多点赞&#xff0c;欢迎你的提问&#xff0c;感谢你的转发&#xff0c; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我…

这十套练习,教你如何用Pandas做数据分析(01)

Pandas是入门Python做数据分析所必须要掌握的一个库。本文内容由和鲸社区翻译整理自Github&#xff0c;建议读者完成科赛网 从零上手Python关键代码 和 Pandas基础命令速查表 教程学习的之后&#xff0c;点击本篇Notebook右上角的 Fork 按钮对本教程代码进行调试学习。 转载本…

(附源码)SSM的KTV管理系统 毕业设计 291807

基于SSM的KTV管理系统 摘 要 随着社会的发展&#xff0c;人类的进步&#xff0c;21世纪人们的生活水平有所提高&#xff0c;为了满足人们对生活的需要&#xff0c;丰富业余生活&#xff0c;娱乐KTV等行业蓬勃发展&#xff0c;在数字化的今天&#xff0c;我们已离不开计算机&…

Redis的面试题

一、Redis支持的数据类型&#xff1f; Redis支持的数据类型主要有五种&#xff1a;string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xff08;列表&#xff09;&#xff0c;set&#xff08;集合&#xff09;及zset(sorte…

opencv图像特征

图像特征类型可以分为如下三种&#xff1a; 边缘角点&#xff08;感兴趣关键点&#xff09;斑点&#xff08;感兴趣区域&#xff09; 其中&#xff0c;角点是个很特殊的存在。如果某一点在任意方向的一个微小变动都会引起灰度很大的变化&#xff0c;我们就把它称之为角点。角点…

17、Redis6.0新功能

文章目录17、Redis6.0新功能17.1 ACL17.1.1 简介17.1.2 命令17.2 IO多线程17.2.1 简介17.2.2 原理架构17.3 工具支持 Cluster17.4 Redis新功能持续关注Redis 6 入门到精通-讲师&#xff1a;王泽 世态炎凉&#xff0c;世界并不善良 17、Redis6.0新功能 17.1 ACL 17.1.1 简介 …

如何利用场追迹控制衍射的包含

1. 摘要 VirtualLab Fusion包括一系列建模方法便于用户可以地调整光学仿真的精度级别和时间。不仅如此&#xff0c;这种功能还有助于隔离物理原因产生的不同影响。在本示例中&#xff0c;我们提出了一个清晰的工作流程配置一个仿真&#xff0c;以便在物理光学模拟中考虑或忽略衍…

MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(六)变压器耦合栅极驱动

变压器耦合栅极驱动 1.单端变压器耦合栅极驱动电路 2.双端变压器耦合栅极驱动 在高电压栅极驱动 IC 出现以前&#xff0c;使用栅极驱动变压器是唯一一种在离线或类似高电压电路中驱动高侧开关的可行解决方案。 现在&#xff0c;两种解决方案同时存在并且各有利弊&#xff0c;…

基础数据结构线性表

基础数据结构 1.基础概念 数据结构是一种具有一定逻辑关系&#xff0c;在计算机中应用某种存储结构&#xff0c;并且封装了相应操作的数据元素的集合。它包含三方面的内容&#xff0c;逻辑关系、存储关系以及操作。 一般而言&#xff0c;数据结构的选择首先会从抽象数据类型…

springboot整合Canal实时同步数据库表

一、Canal介绍 1、应用场景 在前面的统计分析功能中&#xff0c;我们采取了服务调用获取统计数据&#xff0c;这样耦合度高&#xff0c;效率相对较低&#xff0c;目前我采取另一种实现方式&#xff0c;通过实时同步数据库表的方式实现&#xff0c;例如我们要统计每天注册与登…

语雀的技术栈与富文本编辑讨论分享

目录前言什么是语雀富文本编辑器的发展历程语雀结构简析语雀核心语雀渲染器语雀前端技术业务层编辑器语雀编辑器演化过程语雀研发流程关于语雀的讨论为何文档编写不是一种标准化的中台能力内容类产品典型类别业务所需编辑器开发成本如何&#xff1f;文本编辑器代码编辑器公式编…

[附源码]Python计算机毕业设计SSM基于的网上拍卖系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

13.javase_动漫美女拼图实战

资料地址&#xff1a;https://cowtransfer.com/s/4573fe572f9c4a 项目效果&#xff1a; 练习编程逻辑思维&#xff0c;提高和锻炼自己能力。 一. 绘制游戏界面 1.1窗体绘制 第一个方法&#xff1a;initFrame()&#xff0c;用于窗体的基本设置 public void initFrame() { thi…