HTML番外篇(四)-HTML5新增元素-CSS常见函数-理解浏览器前缀-BFC

news2025/1/25 4:44:09

一、HTML5新增元素

1.HTML5语义化元素

在HMTL5之前,我们的网站分布层级通常包括哪些部分呢?

  • header、nav、main、footer

◼ 但是这样做有一个弊端:

  • 我们往往过多的使用div, 通过id或class来区分元素;
  • 对于浏览器来说这些元素不够语义化
  • 对于搜索引擎来说, 不利于SEO的优化

◼ HTML5新增了语义化的元素:

  • <header>:头部元素
  • <nav>:导航元素
  • <section>:定义文档某个区域的元素
  • <article> :内容元素
  • <aside>:侧边栏元素
  • <footer>:尾部元素

在这里插入图片描述

<!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>
</head>
<body>
  
  <!-- <div class="header"></div> -->
  <header></header>

  <!-- div.nav -->
  <nav></nav>

  <!-- section -->
  <section>
    <article>1</article>
    <article>2</article>
    <article>3</article>
  </section>

  <!-- aside -->
  <aside></aside>

  <!-- footer -->
  <footer></footer>

</body>
</html>

二、video、audio元素

Web端事实上一直希望可以更好的嵌入音频和视频, 特别是21世纪以来, 用户带宽的不断提高, 浏览器因为和视频变得非常容易.

  • 在HTML5之前是通过flash或者其他插件实现的, 但是会有很多问题;

  • 比如无法很好的支持HTML/CSS特性, 兼容性问题等等;

HTML5增加了对媒体类型的支持:

  • 音频:<audio>

  • 视频:<video>

Video和Audio使用方式有两个:

  • 一方面我们可以直接通过元素使用video和autio;

  • 另一方面我们可以通过JavaScript的API对其进行控制;

1.HTML5新增元素 - video

HTML <video> 元素 用于在HTML或者XHTML文档中嵌入媒体播放器,用于支持文档内的视频播放。

在这里插入图片描述

video常见的属性:

在这里插入图片描述

2.video支持的视频格式

每个视频都会有自己的格式, 浏览器的video并非支持所有的视频格式

在这里插入图片描述

3.video的兼容性写法

<video>元素中间的内容,是针对浏览器不支持此元素时候的降级处理。

  • 内容一:通过<source>元素指定更多视频格式的源;

  • 内容二:通过p/div等元素指定在浏览器不支持video元素的情况, 显示的内容;

在这里插入图片描述

<!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>
</head>
<body>
  
  <!-- <img src="" alt=""> -->
  <!-- 基本使用 -->
  <!-- <video src="./assets/fcrs.mp4" width="600" controls muted></video> -->

  <!-- 兼容性写法 -->
  <video src="./assets/fcrs.mp4" width="600" controls muted>
    <source src="./asset/fcrs.ogg">
    <source src="./asset/fcrs.webm">

    <p>当前您的浏览不支持视频的播放, 请更换更好用的浏览器!</p>

  </video>

</body>
</html>

4.HTML5新增元素 - audio

HTML <audio> 元素用于在文档中嵌入音频内容, 和video的用法非常类似

常见属性:

在这里插入图片描述

5.audio支持的音频格式

每个音频都会有自己的格式, 浏览器的audio并非支持所有的视频格式

具体的支持的格式可以通过下面的链接查看:

  • https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Audio_codecs

<audio>元素中间的内容,是针对浏览器不支持此元素时候的降级处理

在这里插入图片描述

三、input、全局data-*元素

1.input元素的扩展内容

◼ HTML5 对 input 元素也进行了扩展,在之前我们已经学习过的其中几个属性也是HTML5的特性:

  • placeholder:输入框的占位文字
  • multiple:多个值
  • autofocus:最多输入的内容

◼ 另外对于 input 的 type 值也有很多扩展:

  • date
  • time
  • number
  • tel
  • color
  • email
  • 等等…

◼ 查看MDN文档:

  • https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input

2.新增全局属性 data-*

在HTML5中, 新增一种全局属性的格式 data-*, 用于自定义数据属性:

  • data设置的属性可以在JavaScript的DOM操作中通过dataset轻松获取到;
  • 通常用于HTML和JavaScript数据之间的传递

在小程序中, 就是通过data-来传递数据的, 所以该全局属性必须要掌握.

<!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>
    .box {}
  </style>
</head>
<body>
  
  <div class="box" age="18" data-name="why" data-age="18" data-height="1.88"></div>

  <h1 class="title"></h1>

  <script>
    const boxEl = document.querySelector(".box")
    console.log(boxEl.dataset)
  </script>

</body>
</html>

四、white-space、text-overflow

1.CSS属性 - white-space

white-space用于设置空白处理和换行规则

  • normal:合并所有连续的空白,允许单词超屏时自动换行

  • nowrap:合并所有连续的空白,不允许单词超屏时自动换行

  • pre:阻止合并所有连续的空白,不允许单词超屏时自动换行

  • pre-wrap:阻止合并所有连续的空白,允许单词超屏时自动换行

  • pre-line:合并所有连续的空白(但保留换行),允许单词超屏时自动换行

在这里插入图片描述

<!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>
    .box {
      width: 200px;
      background: orange;

      /* white-space */
      /* nowrap不换行, 合并: 会合并 */
      /* pre: 不换行, 合并: 不合并 */
      /* pre-wrap: 换行, 合并: 不合并 */
      /* pre-line: 换行, 合并: 合并连续的空白, 但保留换行符 */
      white-space: pre-line;
    }
  </style>
</head>
<body>
  
  <div class="box">
    我是box       kobe boxboxbox
    哈哈哈哈哈       呵呵呵呵和 my name is why
  </div>

</body>
</html>

2.CSS属性 - text-overflow

text-overflow 通常用来设置文字溢出时的行为

  • clip:溢出的内容直接裁剪掉(字符可能会显示不完整)
  • ellipsis:溢出那行的结尾处用省略号表示

text-overflow 生效的前提是 overflow 不为 visible

常见的是将white-space、text-overflow、overflow一起使用:

<!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>
    .box {
      width: 150px;
      background-color: #f00;

      overflow: hidden;
      white-space: nowrap;
      text-overflow: ellipsis;
    }
  </style>
</head>
<body>
  
  <div class="box">
    my name is why, nickname is box, age is 18
  </div>

</body>
</html>

在这里插入图片描述

五、CSS 常见函数扩展

在前面我们有使用过很多个CSS函数:

  • 比如rgb/rgba/translate/rotate/scale等;
  • CSS函数通常可以帮助我们更加灵活的来编写样式的值

下面我们再学习几个非常好用的CSS函数:

  • var: 使用CSS定义的变量;
  • calc: 计算CSS值, 通常用于计算元素的大小或位置;
  • blur: 毛玻璃(高斯模糊)效果;
  • gradient:颜色渐变函数;

1.CSS函数 - var

CSS中可以自定义属性

  • 属性名需要以两个减号(–)开始;
  • 属性值则可以是任何有效的CSS值;

在这里插入图片描述

我们可以通过var函数来使用:

在这里插入图片描述

规则集定义的选择器, 是自定义属性的可见作用域(只在选择器内部有效)

  • 所以推荐将自定义属性定义在html中,也可以使用 :root 选择器;

2.CSS函数 -calc

calc() 函数允许在声明 CSS 属性值时执行一些计算。

  • 计算支持加减乘除的运算;
    • +-运算符的两边必须要有空白字符
  • 通常用来设置一些元素的尺寸或者位置

在这里插入图片描述

3.CSS函数 - blur

blur() 函数将高斯模糊应用于输出图片或者元素;

  • blur(radius)
  • radius, 模糊的半径, 用于定义高斯函数的偏差值, 偏差值越大, 图片越模糊;

通常会和两个属性一起使用:

  • filter: 将模糊或颜色偏移等图形效果应用于元素;
  • backdrop-filter: 为元素后面的区域添加模糊或者其他效果;

在这里插入图片描述

4.linear-gradient的使用

linear-gradient:创建一个表示两种或多种颜色线性渐变的图片;

在这里插入图片描述

radial-gradient:创建了一个图像,径向渐变,该图像是由从原点发出的两种或者多种颜色之间的逐步过渡组成;

在这里插入图片描述

六、理解浏览器前缀

有时候可能会看到有些CSS属性名前面带有:-o-、-xv-、-ms-、mso-、-moz-、-webkit-

官方文档专业术语叫做:vendor-specific extensions(供应商特定扩展)

为什么需要浏览器前缀了?

  • CSS属性刚开始并没有成为标准,浏览器为了防止后续会修改名字给新的属性添加了浏览器前缀;

上述前缀叫做浏览器私有前缀,只有对应的浏览器才能解析使用

  • -o-、-xv-:Opera等
  • -ms-、mso-:IE等
  • -moz-:Firefox等
  • -webkit-:Safari、Chrome等

注意:不需要手动添加,后面学习了模块化打包工具会自动添加浏览器前缀

七、深入理解BFC

1.FC – Formatting Context

什么是FC呢?

  • FC的全称是Formatting Context,元素在标准流里面都是属于一个FC的;

在这里插入图片描述

块级元素的布局属于Block Formatting Context(BFC)

  • 也就是 block level box 都是在BFC中布局的;

行内级元素的布局属于Inline Formatting Context(IFC)

  • 而inline level box都是在IFC中布局的;

2.BFC – Block Formatting Context

block level box都是在BFC中布局的,那么这个BFC在哪里呢?拿出来给我看看。

在这里插入图片描述

MDN上有整理出在哪些具体的情况下会创建BFC:

  • 根元素(<html>
  • 浮动元素(元素的 float 不是 none)
  • 绝对定位元素(元素的 position 为 absolute 或 fixed)
  • 行内块元素(元素的 display 为 inline-block)
  • 表格单元格(元素的 display 为 table-cell,HTML表格单元格默认为该值),表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)
  • 匿名表格单元格元素(元素的 display 为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、 row、tbody、thead、tfoot 的默认属性)或 inline-table)
  • overflow 计算值(Computed)不为 visible 的块元素
  • 弹性元素(display 为 flex 或 inline-flex 元素的直接子元素)
  • 网格元素(display 为 grid 或 inline-grid 元素的直接子元素)
  • display 值为 flow-root 的元素

3.BFC有什么作用呢?

◼ 我们来看一下官方文档对BFC作用的描述:

在这里插入图片描述

简单概况如下:

  • 在BFC中,box会在垂直方向上一个挨着一个的排布;
  • 垂直方向的间距由margin属性决定;
  • 在同一个BFC中,相邻两个box之间的margin会折叠(collapse);
  • 在BFC中,每个元素的左边缘是紧挨着包含块的左边缘的;

那么这个东西有什么用呢?

  • 解决margin的折叠问题;
  • 解决浮动高度塌陷问题;

4.BFC的作用一:解决折叠问题(权威)

在同一个BFC中,相邻两个box之间的margin会折叠(collapse)

官方文档明确的有说

The vertical distance between two sibling boxes is determined by the ‘margin’ properties. Vertical margins between adjacent block-level boxes in a block formatting context collapse.

那么如果我们让两个box是不同的BFC呢?那么就可以解决折叠问题。

<!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>
    /* .box {
      overflow: auto;
    } */

    .container {
      overflow: auto;
    }

    .box1 {
      height: 200px;
      width: 400px;
      background-color: orange;

      margin-bottom: 30px;
    }

    .box2 {
      height: 150px;
      background-color: purple;

      margin-top: 50px;
    }

  </style>
</head>
<body>
  
  <div class="container">
    <div class="box1"></div>
  </div>
  <div class="box2"></div>

  <p>
    <a href=""></a>
    <span></span>
  </p>

</body>
</html>

5.BFC的作用二:解决浮动高度塌陷(权威)

网上有很多说法,BFC可以解决浮动高度塌陷,可以实现清除浮动的效果。

  • 但是从来没有给出过BFC可以解决高度塌陷的原理或者权威的文档说明
  • 他们也压根没有办法解释,为什么可以解决浮动高度的塌陷问题,但是不能解决绝对定位元素的高度塌陷问题呢?

事实上,BFC解决高度塌陷需要满足两个条件

  • 浮动元素的父元素触发BFC,形成独立的块级格式化上下文(Block Formatting Context);
  • 浮动元素的父元素的高度是auto的;

BFC的高度是auto的情况下,是如下方法计算高度的

  1. 如果只有 inline-level,是行高的顶部和底部的距离;
  2. 如果有 block-level,是由最顶层的块上边缘和最底层块盒子的下边缘之间的距离
  3. 如果有绝对定位元素,将被忽略;
  4. 如果有浮动元素,那么会增加高度以包括这些浮动元素的下边缘
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      overflow: auto;
      background-color: #ccc;
    }

    span {
      display: inline-block;
      width: 50px;
      height: 50px;
      background-color: #aaa;
    }

    .box1 {
      float: left;
      width: 200px;
      height: 200px;
      background-color: #666;
    }

    .box2 {
      float: left;
      width: 100px;
      height: 100px;
      background-color: #999;
    }
  </style>
</head>
<body>
  <div class="container">
    <span>我是span内容</span>
    <div class="box1"></div>
    <div class="box2"></div>
  </div>
</body>
</html>

在这里插入图片描述

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

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

相关文章

django自动创建model数据

目前使用的环境&#xff1a;django4.2.3&#xff0c;python3.10 django通过一些第三方库&#xff0c;可以轻易的自动生成一系列的后台数据。 首先先创建一个数据库&#xff1a; 然后&#xff0c;在setting.py中就可以指定我们新创建的数据库了。 DATABASES {default: {ENGI…

基于Pytorch的神经网络部分自定义设计

一、基础概念&#xff08;学习笔记&#xff09; &#xff08;1&#xff09;训练误差和泛化误差[1] 本质上&#xff0c;优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标&#xff0c;后者则关注在给定有限数据量的情况下寻找合适的模型。训练误差和泛化误差通常不…

【前端】深入解析CSS:选择器、显示模式、背景属性和特征剖析

目录 一、前言二、CSS的复合选择器1、后代选择器①、语法②、注意事项 2、子选择器①、语法②、注意事项 3、并集选择器①、语法②、注意事项 4、链接伪类选择器①、语法②、注意事项 三、CSS元素显示模式转换1、转换为块元素display:block2、转换为行内元素display:inline3、转…

AIGC ChatGPT 制作地图可视化分析

地图可视化分析是一种将数据通过地图的形式进行展示的方法&#xff0c;可以让人们更加直观、快速、准确的理解和分析数据。以下是地图可视化分析的一些主要好处&#xff1a; 加强数据理解&#xff1a;地图可视化可以将抽象的数字转化为直观的图形&#xff0c;帮助我们更好地理解…

LLMs对单个任务进行微调Fine-tuning on a single task

虽然LLM因其在单一模型内执行多种不同语言任务的能力而变得出名&#xff0c;但您的应用程序可能只需要执行单一任务。在这种情况下&#xff0c;您可以微调一个预训练的模型&#xff0c;以仅提高您感兴趣的任务的性能。例如&#xff0c;使用该任务的示例数据集进行摘要。有趣的是…

Linux —— keepalived

简介 Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载均衡和高可用性功能。 Keepalived 开源并且免费的软件。 Keepalived 的2大核心功能 1. loadbalance 负载均衡 LB&#xff1a;ipvs--》lvs软件…

第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)

第三届计算机、物联网与控制工程国际学术会议&#xff08;CITCE 2023) The 3rd International Conference on Computer, Internet of Things and Control Engineering&#xff08;CITCE 2023) 第三届计算机、物联网与控制工程国际学术会议&#xff08;CITCE 2023&#xff09;…

运用亚马逊云科技Amazon Kendra,快速部署企业智能搜索应用

亚马逊云科技Amazon Kendra是一项由机器学习&#xff08;ML&#xff09;提供支持的企业搜索服务。Kendra内置数据源连接器&#xff0c;支持快速访问Amazon S3、AmazonRDS、AmazonFSX以及其他外部数据源&#xff0c;帮助用户自动提取文档并建立索引。Kendra支持超过30多种多国语…

线性代数的学习和整理7:各种特殊效果矩阵汇总

目录 1 矩阵 1.1 1维的矩阵 1.2 2维的矩阵 1.3 没有3维的矩阵---3维的是3阶张量 1.4 下面本文总结的都是各种特殊效果矩阵特例 2 方阵: 正方形矩阵 3 单位矩阵 3.1 单位矩阵的定义 3.2 单位矩阵的特性 3.3 为什么单位矩阵I是 [1,0;0,1] 而不是[0,1;1,0] 或[1,1;1,1]…

Flink流批一体计算(16):PyFlink DataStream API

目录 概述 Pipeline Dataflow 代码示例WorldCount.py 执行脚本WorldCount.py 概述 Apache Flink 提供了 DataStream API&#xff0c;用于构建健壮的、有状态的流式应用程序。它提供了对状态和时间细粒度控制&#xff0c;从而允许实现高级事件驱动系统。 用户实现的Flink程…

React Antd form.getFieldsValue() 和 form.getFieldsValue(true) 有区别吗?

背景 突然发现 antd 的 getFieldsValue()是可以传一个 true 参数的&#xff0c;如题,React Antd form.getFieldsValue() 和 form.getFieldsValue(true) 有区别吗&#xff1f; 验证 确实不一样 结论 getFieldsValue 提供了多种重载方法&#xff1a; getFieldsValue(name…

Leetcode每日一题:1267. 统计参与通信的服务器(2023.8.24 C++)

目录 1267. 统计参与通信的服务器 题目描述&#xff1a; 实现代码与解析&#xff1a; 写法一&#xff1a;两次遍历 hash 原理思路&#xff1a; 写法二&#xff1a;三次遍历 原理思路&#xff1a; 1267. 统计参与通信的服务器 题目描述&#xff1a; 这里有一幅服务器分…

SpringIoC三层架构实战

目录 一、需求分析 二、创建相关数据库 三、导入相关依赖 四、实体类准备 五、相关技术讲解&#xff08;Druid、JDBCTemplate&#xff09; 六、三层架构实现案例 一、需求分析 搭建一个三层架构案例&#xff0c;模拟查询全部学生&#xff08;学生表&#xff09;信息&#x…

美团发布2023年Q2财报:营收680亿元,同比增长33.4%

8月24日&#xff0c;美团(股票代码:3690.HK)发布2023年第二季度及半年业绩报告。今年二季度&#xff0c;美团实现营收680亿元(人民币&#xff0c;下同)&#xff0c;同比增长33.4%。 财报显示&#xff0c;二季度&#xff0c;美团继续深入推进“零售科技”战略&#xff0c;持续加…

leetcode:2011. 执行操作后的变量值(python3解法)

难度&#xff1a;简单 存在一种仅支持 4 种操作和 1 个变量 X 的编程语言&#xff1a; X 和 X 使变量 X 的值 加 1--X 和 X-- 使变量 X 的值 减 1 最初&#xff0c;X 的值是 0 给你一个字符串数组 operations &#xff0c;这是由操作组成的一个列表&#xff0c;返回执行所有操作…

算法与数据结构(十)--图的入门

一.图的定义和分类 定义&#xff1a;图是由一组顶点和一组能够将两个顶点连接的边组成的。 特殊的图&#xff1a; 1.自环&#xff1a;即一条连接一个顶点和其自身的边; 2.平行边&#xff1a;连接同一对顶点的两条边&#xff1b; 图的分类&#xff1a; 按照连接两个顶点的边的…

Flask 单元测试

如果一个软件项目没有经过测试&#xff0c;就像做的菜里没加盐一样。Flask 作为一个 Web 软件项目&#xff0c;如何做单元测试呢&#xff0c;今天我们来了解下&#xff0c;基于 unittest 的 Flask 项目的单元测试。 什么是单元测试 单元测试是软件测试的一种类型。顾名思义&a…

idea使用tomcat

1. 建立javaweb项目 2. /WEB-INF/web.xml项目配置文件 如果javaweb项目 先建立项目&#xff0c;然后在项目上添加框架支持&#xff0c;选择javaee 3. 项目结构 4.执行测试&#xff1a;

按软件开发阶段的角度划分:单元测试、集成测试、系统测试、验收测试

1.单元测试&#xff08;Unit Testing&#xff09; 单元测试&#xff0c;又称模块测试。对软件的组成单位进行测试&#xff0c;其目的是检验软件基本组成单位的正确性。测试的对象是软件里测试的最小单位&#xff1a;模块。 测试阶段&#xff1a;编码后或者编码前&#xff08;…

服务器(容器)开发指南——code-server

文章目录 code-server简介code-server的安装与使用code-server的安装code-server的启动code-server的简单启动指定配置启动code-server code-server环境变量配置 code-server端口转发自动端口转发手动添加转发端口 nginx反向代理code-servercode-server打包开发版镜像 GitHub官…