Day08:CSS 高级

目标:掌握定位的作用及特点;掌握 CSS 高级技巧


一、定位

作用:灵活的改变盒子在网页中的位置

实现:

1.定位模式:position

2.边偏移:设置盒子的位置

  • left
  • right
  • top
  • bottom

水平方向偏移:left、right,垂直方向偏移:top、bottom

1、相对定位

position: relative

特点:

  • 不脱标,占用自己原来位置
  • 显示模式特点保持不变(如:块级显示模式使用相对定位后还是块级显示模式)
  • 设置边偏移则相对自己原来位置移动
div {
  position: relative;
  top: 100px;
  left: 200px;
}	

因为相对定位不脱标,即使自己发生了偏移,还占用自己原来的位置,后面的元素没办法顶上去,会留下一片空白,所以实际开发中很少单独使用相对定位,经常配合着绝对定位一起使用。

2、绝对定位

position: absolute

使用场景:子级绝对定位,父级相对定位(子绝父相

特点:

  • 脱标,不占位
  • 显示模式具备行内块特点(即使是行内元素,使用了绝对定位后,设置宽高生效)
  • 设置边偏移则相对最近的,已经定位的祖先元素改变位置
  • 如果祖先元素都未定位,则相对浏览器可视区改变位置
.father {
  position: relative;
}

.father span {
  position: absolute;
  top: 0;
  right: 0;
}

练习:使用绝对定位,实现图片在浏览器居中定位。

在这里插入图片描述

实现步骤:

  1. 设置元素绝对定位,没有最近的祖先元素设置定位属性,则该元素的绝对定位相对于浏览器可视窗口改变位置;
  2. 水平、垂直边偏移为 50%,此时图片的左上角正好在浏览器的中心位置,需要向左、向上偏移,使图片中心移动到浏览器可视窗口的中心;
  3. 子级向左、向上移动自身尺寸的一半。
  • 量出图片尺寸,设置 margin-left: -宽度的一半,margin-top: -高度的一半。
  • 使用 transform 属性,transform 是元素位置偏移,transform: translate(-50%, -50%)。

代码如下:

<head>
  <style>
    img {
      /* 子级设置为绝对定位,没有父级,相对浏览器可视区域改变位置 */
      position: absolute;
      left: 50%;
      top: 50%;

      /* 设置 margin-left: -宽度的一半,margin-top: -高度的一半 */
      /* margin-left: -265px;
      margin-top: -127px; */

      /* 方便:50% 就是自己宽高的一半 */
      transform: translate(-50%, -50%);
    }
  </style>
</head>

<body>
  <img src="./images/login.webp" alt="">
</body>
3、固定定位

position: fixed

场景:元素的位置在网页滚动时不会改变

特点:

  • 脱标,不占位
  • 显示模式具备行内块特点
  • 设置边偏移相对浏览器窗口改变位置
  • 元素的位置相对浏览器窗口,不会改变
div {
  position: fixed;
  top: 0;
  right: 0;

  background-color: blue;
  width: 500px;
  height: 200px
}

二、堆叠层级 z-index

在这里插入图片描述

默认效果:按照标签书写顺序,后来者居上

作用:设置定位元素的层级顺序,改变定位元素的显示顺序

属性名:z-index

属性值:整数数字(默认值为0,取值越大,层级越高)

<head>
  <style>
    div {
      position: absolute;
      width: 200px;
      height: 200px;
    }

    .box1 {
      background-color: pink;
      /* 取值是整数,默认是0,取值越大显示顺序越靠上 */
      z-index: 3;
    }

    .box2 {
      background-color: skyblue;
      left: 100px;
      top: 100px;

      z-index: 1;
    }
  </style>
</head>

<body>
  <div class="box1">box1</div>
  <div class="box2">box2</div>
</body>

在这里插入图片描述


三、CSS 高级

1、精灵图

CSS 精灵,也叫 CSS Sprites,是一种网页图片应用处理方式。把网页中一些背景图片整合到一张图片文件中,再background-position 精确的定位出背景图片的位置。
在这里插入图片描述

优点:减少服务器被请求次数,减轻服务器的压力,提高页面加载速度。

实现步骤:

  1. 创建盒子,盒子尺寸小图尺寸相同
  2. 设置盒子背景图为精灵图
  3. 添加 background-position 属性,改变背景图位置
    3.1 使用 PxCook 测量小图片左上角坐标
    3.2 取负数坐标为 background-position 属性值(因为3.1量出来图片左上角的坐标,要向左、向上移动精灵图,才能使要显示的部分移动到盒子的位置)
<head>
  <style>
    div {
      width: 112px;
      height: 110px;
      background-color: pink;
      background-image: url(./images/abcd.jpg);
      background-position: -256px -276px;
    }
  </style>
</head>

<body>
  <div></div>
</body>

在这里插入图片描述

2、字体图标

在这里插入图片描述
字体图标:展示的是图标,本质是字体

作用:在网页中添加简单的、颜色单一的小图标

优点

  • 灵活性:灵活地修改样式,例如:尺寸、颜色等
  • 轻量级:体积小、渲染快、降低服务器请求次数
  • 兼容性:几乎兼容所有主流浏览器
  • 使用方便:先下载再使用
(1)下载字体图标

国内免费的字体图标网站:iconfont 阿里巴巴矢量图标库

流程:登录 → 寻找图标 → 加入购物车 → 购物车,添加至项目,确定 → 下载至本地
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)使用字体图标

下载解压的文件如下:
在这里插入图片描述

  • demo_index.html:查看字体图标,双击打开后,点击 font class 选项,复制需要使用的字体图标名称
  • iconfont.css 使用时,需要通过 link 引入到 html 中的 css 文件
  • ttf、woff、woff2 真正的字体文件

流程:

  1. 将下载好的字体图标文件全部拖到项目中;
  2. 在 html 中引入字体样式表 iconfont.css ;
  3. 标签使用字体图标类名;
    • iconfont:字体图标基本样式(字体名,字体大小等等)
    • icon-xxx:图标对应的类名,在 demo_index.html 中复制字体图标名称
  4. 如果要修改字体图标样式,至少要使用类选择器进行修改,不能使用标签选择器,因为在 iconfont.css 中已经使用了 .iconfont {} 类选择器,至少要使用类选择器修改字体图标样式才能覆盖生效。
<head>
  <style>
    .iconfont {
      font-size: 200px;
      color: red;
    }

    /* 通过字体图标的名称作为类选择器修改样式 */
    .icon-icon-test1 {
      color: green;
    }

    /* 自定义一个类选择器,修改图标样式 */
    .myClass {
      font-size: 100px;
      color: palevioletred;
    }
  </style>
</head>

<body>
  <span class="iconfont icon-icon-test2"></span>
  <span class="iconfont icon-icon-test1"></span>
  <span class="iconfont myClass icon-icon-test3"></span>
</body>

在这里插入图片描述

(3)上传矢量图

作用:项目特有的图标上传到 iconfont 图标库,生成字体,再按照(2)步骤下载使用。(需要上传的图标需要是 svg 的格式)。

上传步骤:上传 → 上传图标 → 选择 svg 矢量图,打开 → 提交 → 系统审核

在这里插入图片描述


四、CSS 修饰属性

1、垂直对齐方式
(1)基线

在行内和行内块元素中,一行的元素默认是基线对齐,图片是行内块元素,默认也是基线对齐。

(1)当一行只有图片一个元素时,图片底部为什么会有留白。
(2)当一行有图片和文字时,图片和文字为什么没有居中对齐。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过这个图,可以很清楚的了解到为什么会出现(1)(2)问题,因为浏览器在处理行内、行内块元素时,会使用基线对齐的方式,图片的底部和文字的基线对齐,这就是为什么会出现(2)问题。图片的底部为什么会留白,因为有的字母下面会超过基线,比如图片中的p字母,所以浏览器会给基线下面留出一些空白间距,图片是行内块元素,所以浏览器也会给图片下面流出一些空白间距。

(2)对齐方式

属性名:vertical-align

属性值效果
baseline基线对齐(默认)
top顶部对齐
middel居中对齐
bottom底部对齐
<head>
  <style>
    div {
      border: 1px solid #000;
    }

    img {
      /* 居中对齐 */
      vertical-align: middle;

      /* 顶对齐:最高内容的顶部 */
      /* vertical-align: top; */

      /* 底对齐:最高内容的底部 */
      /* vertical-align: bottom; */

      /* 因为浏览器把行内块、行内标签当做文字处理,默认按基线对齐 */
      /* 效果:图片img的底下有空白,转块级不按基线对齐,空白就消失了 */
      /* display: inline-block; */
    }
  </style>
</head>

<body>
  <div>
    <img src="./images/1.webp" alt="">
    <span>我是谁?我在哪?</span>
  </div>
</body>

在这里插入图片描述

居中对齐属性要添加到比较大的元素身上。
只要不是默认的基线对齐方式,图片的底部就没有留白,bottom 对齐方式,图片底部也没有留白。
如果一行只有图片这一个元素,可以给图片转换显示模式:display: block; 也可以去除底部留白。

2、过渡

作用:可以为一个元素在不同状态之间切换的时候添加过渡效果

属性名:transition(复合属性)

属性值:过渡的属性 花费时间 (s)

提示:

  • 过渡的属性可以是具体的 CSS 属性
  • 也可以为 all(两个状态属性值不同的所有属性,都产生过渡效果)
  • transition 设置给元素本身
<head>
  <style>
    img {
      width: 200px;
      height: 150px;
      transition: all 1s;
    }

    img:hover {
      width: 500px;
      height: 400px;
    }
  </style>
</head>

<body>
  <img src="./images/huawei.jpg" alt="">
</body>

在这里插入图片描述

3、透明度 opacity

作用:设置整个元素的透明度(包含背景和内容)

属性名:opacity

属性值:0 – 1

  • 0:完全透明(元素不可见)
  • 1:不透明
  • 0-1之间小数:半透明
4、光标类型cursor

作用:鼠标悬停在元素上时指针显示样式

属性名:cursor

属性值效果
default默认值,通常是箭头
pointer小手效果,提示用户可以点击
text工字型,提示用户可以选择文字
move十字光标,提示用户可以移动

只是改变了鼠标的样式,具体效果还需要配合 js 来实现。



在这里插入图片描述

乾坤未定,你我皆是黑马


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子商务网站(网上商店PetShop)

PetShop是一个范例&#xff0c;微软用它来展示.Net企业系统开发的能力。PetShop随着版本的不断更新&#xff0c;至现在基于.Net2.0的PetShop 4.0为止&#xff0c;整个设计逐渐变得成熟而优雅&#xff0c;有很多可以借鉴之处。PetShop是一个小型的项目&#xff0c;系统架构与代码…

【软件设计师】——7.软件工程基础

目录 7.1 软件工程概述 7.2 需求分析 7.3 软件设计 7.4 软件开发方法及模型 7.4.1 软件开发方法 7.4.2 软件开发模型 7.5 软件测试 7.6 软件维护 7.7 软件质量保证 7.7.1 软件质量特性 7.7.2 程序质量评审 7.7.3 设计质量评审 7.8 软件过程改进 7.9 项目管理 7.1 …

【制作100个unity游戏之26】unity2d横版卷轴动作类游13(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言存储点灯光后处理存储位置信息存储更多数据存储场景信息持久化存储数据引入Unity 的可序列化字典类调用 游戏结束源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各…

Appium系列(2)元素定位工具appium-inspector

背景 如实现移动端自动化&#xff0c;依赖任何工具时&#xff0c;都需要针对于页面中的元素进行识别&#xff0c;通过识别到指定的元素&#xff0c;对元素进行事件操作。 识别元素的工具为appium官网提供的appium-inspector。 appium-inspector下载地址 我这里是mac电脑需要下…

使用numpy手写一个神经网络

本文主要包含以下内容&#xff1a; 推导神经网络的误差反向传播过程使用numpy编写简单的神经网络&#xff0c;并使用iris数据集和california_housing数据集分别进行分类和回归任务&#xff0c;最终将训练过程可视化。 1. BP算法的推导过程 1.1 导入 前向传播和反向传播的总体…

编程-辅助工具-Git下载

文章目录 1、前言2、Git官网地址3、迅雷下载 1、前言 采用Git能下载github上的代码&#xff0c;其下载是采用官网下载的&#xff0c;但是下载速度比较慢&#xff0c;网上也推荐了镜像的方式&#xff0c;但是有些链接失效了&#xff0c;突然有一天想起用迅雷是不是合适&#xf…

在通过跨网文件交换时,如何保障科研结构核心研究数据?

当今科研领域&#xff0c;数据如同生命线&#xff0c;支撑着每一个突破性发现的诞生。随着国际合作的加深&#xff0c;跨网文件交换成了常态&#xff0c;但这也为科研机构的核心研究数据安全带来了一系列挑战。想象一下&#xff0c;那些精心搜集和分析的宝贵数据&#xff0c;在…

OpenBayes 教程上新 |全球首个开源的文生视频 DiT 模型!对标 Sora,保姆级 Latte 文生视频使用指南

小朋友不爱背诗怎么办&#xff1f;《千秋诗颂》试试看。 2 月 26 日&#xff0c;中国首部文生视频 AI 系列动画《千秋诗颂》于 CCTV-1 频道正式播出&#xff0c;这部动画由上海人工智能实验室和「央妈」&#xff08;中央广播电视总台&#xff09;强强联手&#xff0c;借助「央视…

Discuz!X3.4论坛网站公安备案号怎样放到网站底部?

Discuz&#xff01;网站的工信部备案号都知道在后台——全局——站点信息——网站备案信息代码填写&#xff0c;那公安备案号要添加在哪里呢&#xff1f;并没有看到公安备案号填写栏&#xff0c;今天驰网飞飞和你分享 1&#xff09;工信部备案号和公安备案号统一填写到网站备案…

安装appium自动化测试环境,我自己的版本信息

教程来自&#xff1a;Appium原理与安装 - 白月黑羽 我的软件的版本&#xff1a; 安装是选择为自己安装而不是选all user pip install appium-python-client命令在项目根目录下安装appium-python-client sdk的话最简单的安装方式就是去Android官网下一个android studio然后在…

强化学习_06_pytorch-PPO2实践(Humanoid-v4)

一、PPO优化 PPO的简介和实践可以看笔者之前的文章 强化学习_06_pytorch-PPO实践(Pendulum-v1) 针对之前的PPO做了主要以下优化&#xff1a; -笔者-PPO笔者-PPO2refdata collectone episodeseveral episode(one batch)activationReLUTanhadv-compute-compute adv as one seri…

鸿蒙ArkTS声明式开发:跨平台支持列表【按键事件】

按键事件 按键事件指组件与键盘、遥控器等按键设备交互时触发的事件&#xff0c;适用于所有可获焦组件&#xff0c;例如Button。对于Text&#xff0c;Image等默认不可获焦的组件&#xff0c;可以设置focusable属性为true后使用按键事件。 说明&#xff1a; 开发前请熟悉鸿蒙开…

【STM32踩坑】HAL固件库版本过高导致烧录后无法运行问题

问题引入 目前STM32CUBEMX已经更新到了6.11版本&#xff0c;对应的固件库也一直在更新&#xff1b; 以STM32F1库为例&#xff0c;目前最新的库对应版本为1.8.5 但是我们会发现&#xff0c;如果直接使用1.8.5版本的固件库生成HAL源码后&#xff0c;烧录是可以烧录&#xff0c;但…

【IC】良率模型-yield model

缺陷密度Default Density(D0),表示单位面积的缺陷数D。 单位面积有M个部件,一个部件的平均失效率为: 一个面积为A的系统(芯片)良率: Possion模型: 当M趋于无穷时,系统良率为possion模型。 Murphy模型:(D~对称三角分布) 大芯片或大系统possion模型预估良率过于…

Python自动化测试进阶:性能测试与持续集成实践

Python自动化测试进阶包括性能测试和持续集成实践两个关键方面。以下是对这两个领域的简要介绍&#xff0c;并附带一些示例代码。 性能测试 性能测试是评估软件在特定条件下的性能表现的过程。对于Python应用程序&#xff0c;可以使用一些工具来进行性能测试&#xff0c;例如ps…

linux centos tomcat启动内存泄漏

tomcat启动内存泄漏 经过与开发沟通&#xff0c;结果是开发写了死循环&#xff0c;导致内存泄漏&#xff0c;上一次是开发少打了一个jar包&#xff0c;让开发查代码就行&#xff0c;重新更新代码

C++学习/复习6---内存管理(数据的位置/大小)/new、delete/内存相关面试题(malloc与new/内存泄漏)

一、内存中区域 1.不同数据的存储位置 2.数据占用内存大小 二、动态内存函数 三、new与delete 1.操作内置类型 2.操作自定义类型 四、operator new与operator delete 1.底层源码&#xff08;malloc/free&#xff09; 2.内置/自定义与构造和析构 3.举例 五、定位new表达式 1.举…

TiDB学习3:TiKV

目录 1. TiKV架构和作用 2. RocksDB 2.1 写入 2.2 查询 2.3 Column Families列簇 3. 分布式事务 3.1 事务流程 3.2 分布式事务流程 3.3 MVCC 4. Raft与Multi Raft 4.1 Raft日志复制 4.2 Raft Leader选举 5. TiKV- 读写 5.1 数据的写入 5.2 数据的读取ReadIndex …

教育大模型的发展现状、创新架构及应用展望

引言 从通用大模型到教育领域的专用大模型&#xff0c;是人工智能大模型技术深化发展的必然趋势。教育大模型不是在通用大模型基础上的微调和优化&#xff0c;而是以重构未来教育图景为目标、以开放算法模型架构为基础、以创新教育应用场景为核心的系统性变革。如何厘清教育大…

Linux汉化Jupyter Notebook

要在Linux系统中使Jupyter Notebook汉化&#xff0c;可以通过安装jupyterlab-language-pack-zh-CN扩展来实现。以下是具体步骤和示例代码&#xff1a; 打开终端。 执行以下命令以安装Jupyter Notebook的中文语言包&#xff1a; pip install jupyterlab-language-pack-zh-CN …