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

一、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.mzph.cn/news/56766.shtml

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

相关文章

雅思作文复习

目录 我使用的词汇&#xff1a; 上升&#xff1a; 下降&#xff1a; 波动&#xff1a; 保持&#xff1a; 幅度 大变化&#xff1a; 小变化&#xff1a; 雅思评价标准改变 小作文一般花费20分钟&#xff0c;我觉得自己能在18分钟解决是最好 考生在雅思考试中的小作文&a…

嵌入式系统存储体系

一、存储系统概述 主要分为三种&#xff1a;高速缓存&#xff08;cache&#xff09;、主存和外存。 二、高速缓存Cache 高速缓冲存储器中存放的是当前使用得最多得程序代码和数据&#xff0c;即主存中部分内容的副本&#xff0c;其本身无自己的地址空间。在嵌入式系统中Cac…

别在说自己不知道docker了,全文通俗易懂的给你说明白docker的基础与底层原理

docker介绍 Docker 是一个开源的应用容器引擎&#xff0c;基于Go语言进行开发实现并遵从Apache2.0 协议开源&#xff0c;基于 Linux 内核的 cgroup&#xff0c;namespace&#xff0c;以及 OverlayFS 类的 Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;属于 操作…

Redis.conf详解

Redis.conf详解 配置文件unit单位对大小写不敏感 包含 网络 bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 端口设置通用 GENERAL daemonize yes # 以守护进程的方式运行 默认为no pidfile /var/run/redis_6379.pid #如果以后台的方式运行&#xff…

python+django+mysql旅游景点推荐系统-前后端分离(源码+文档)

系统主要采用Python开发技术和MySQL数据库开发技术以及基于OpenCV的图像识别。系统主要包括系统首页、个人中心、用户管理、景点信息管理、景点类型管理、景点门票管理、在线反馈、系统管理等功能&#xff0c;从而实现智能化的旅游景点推荐方式&#xff0c;提高旅游景点推荐的效…

javaee idea创建maven项目,使用el和jstl

如果使用el表达式出现下图问题 解决办法 这是因为maven创建项目时&#xff0c;web.xml头部声明默认是2.3&#xff0c;这个默认jsp关闭el表达式 办法1 在每个需要用到el和jstl的页面的上面加一句: <% page isELIgnored"false" %> 方法2 修改web.xml文件开…

睿思BI旗舰版V5.3正式发布

发布时间&#xff1a;2023-7-20 主要更新内容: 1.增加3D地图功能 2.增加水球图 3.增加扇形图&#xff0c;在数据大屏 - 自定义组件中定义。 4.增加指标引导线功能&#xff0c;在数据大屏 - 自定义组件中定义。 5.详情页增加回调函数功能。 6.大屏/仪表盘模版下载&#xff0c;…

【C++】C++ 引用详解 ⑨ ( 常量引用初始化 | C / C++ 常量分配内存的四种情况 )

文章目录 一、常量引用初始化1、使用 " 普通变量 " 初始化 " 常量引用 "2、使用 " 常量 / 字面量 " 初始化 " 常量引用 "3、C / C 常量分配内存的四种情况4、代码示例 - 常量引用初始化 一、常量引用初始化 1、使用 " 普通变量 &…

<八> objectARX开发:动态拖动Jig创建自定义实体

1、介绍 接上一篇文章,在某些情况下,CAD中的实体对象初始参数并不是固定的,我们需要通过jig动态拖动方式来绘制自定义实体,下面就用一个简单的例子来介绍一下自定义实体动态绘制。   实体形状:包括实体夹点和文字夹点拖动实现。 2、效果 3、源码 static void RYMyGrou…

嵌入式linux之QT交叉编译环境搭建(最简单实测通用版)

这里总结下用于嵌入式linux下的QT交叉编译环境搭建&#xff0c;留作备忘&#xff0c;分享给有需要的小伙伴。不管你的是什么嵌入式linux环境&#xff0c;实测过的通用方法总结。 环境准备 需要准备的环境要求如下&#xff1a; 1.虚拟机(vmvare15.5) 2.ubuntu18.04-x64的linu…

【C语言】探讨蕴藏在表达式求解中的因素

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该篇将探讨 操作符 和 类型转换 对表达式求解的影响。 目录&#xff1a; 隐式类型转换算术转换操作符的属性❤️ 结语 隐…

CSDN每日一练 |『异或和』『生命进化书』『熊孩子拜访』2023-08-27

CSDN每日一练 |『异或和』『生命进化书』『熊孩子拜访』2023-08-27 一、题目名称&#xff1a;异或和二、题目名称&#xff1a;生命进化书三、题目名称&#xff1a;熊孩子拜访 一、题目名称&#xff1a;异或和 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&…

C++:list使用以及模拟实现

list使用以及模拟实现 list介绍list常用接口1.构造2.迭代器3.容量4.访问数据5.增删查改6.迭代器失效 list模拟实现1.迭代器的实现2.完整代码 list介绍 list是一个类模板&#xff0c;加<类型>实例化才是具体的类。list是可以在任意位置进行插入和删除的序列式容器。list的…

Python序列类型

序列&#xff08;Sequence&#xff09;是有顺序的数据列&#xff0c;Python 有三种基本序列类型&#xff1a;list, tuple 和 range 对象&#xff0c;序列&#xff08;Sequence&#xff09;是有顺序的数据列&#xff0c;二进制数据&#xff08;bytes&#xff09; 和 文本字符串&…

Android BatteryManager的使用及BatteryService源码分析

当需要监控系统电量时&#xff0c;用 BatteryManager 来实现。 参考官网 监控电池电量和充电状态 获取电池信息 通过监听 Intent.ACTION_BATTERY_CHANGED 广播实现&#xff0c;在广播接收器中获取电池信息。 这是个粘性广播&#xff0c;即使过了广播发出的时间点后再注册广…

从零起步:学习数据结构的完整路径

文章目录 1. 基础概念和前置知识2. 线性数据结构3. 栈和队列4. 树结构5. 图结构6. 散列表和哈希表7. 高级数据结构8. 复杂性分析和算法设计9. 实践和项目10. 继续学习和深入11. 学习资源12. 练习和实践 &#x1f389;欢迎来到数据结构学习专栏~从零起步&#xff1a;学习数据结构…

Java实现根据短连接获取1688商品详情数据,1688淘口令接口,1688API接口封装方法

要通过1688的API获取商品详情数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取商品详情属性数据接口&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xf…

研华I/O板卡 Win10+Qt+Cmake 开发环境搭建

文章目录 一.研华I/O板卡 Win10QtCmake 开发环境搭建 一.研华I/O板卡 Win10QtCmake 开发环境搭建 参考这个链接安装研华I/O板卡驱动程序系统环境变量添加研华板卡dll Qt新建一个c项目 cmakeList.txt中添加研华库文件 cmake_minimum_required(VERSION 3.5)project(advantechDA…

【多线程】Thread类的用法

文章目录 1. Thread类的创建1.1 自己创建类继承Thread类1.2 实现Runnable接口1.3 使用匿名内部类创建Thread子类对象1.4 使用匿名内部类创建Runnable子类对象1.5 使用lambda创建 2. Thread常见的构造方法2.1 Thread()2.2 Thread(Runnable target)2.3 Thread(String name)2.4 Th…

Flink_state 的优化与 remote_state 的探索

摘要&#xff1a;本文整理自 bilibili 资深开发工程师张杨&#xff0c;在 Flink Forward Asia 2022 核心技术专场的分享。本篇内容主要分为四个部分&#xff1a; 相关背景state 压缩优化Remote state 探索未来规划 点击查看原文视频 & 演讲PPT 一、相关背景 1.1 业务概况 从…