HTML5 CSS拓展

目录

HTML5语义化元素

HTML5新增元素 - video 

HTML5新增元素 - audio

input元素的扩展内容

新增全局属性 data-* 

CSS属性 - white-space

CSS属性 - text-overflow

CSS函数 - var

CSS函数 -calc

CSS函数 - blur 

CSS函数 – gradient 

BFC – Block Formatting Context

媒体查询


HTML5语义化元素

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

Web端事实上一直希望可以 更好的嵌入音频和视频 , 特别是21世纪以来, 用户带宽的不断提高, 浏览器因为和视频变得非常容易.
  • 在HTML5之前是通过flash或者其他插件实现的, 但是会有很多问题;
  • 比如无法很好的支持HTML/CSS特性, 兼容性问题等等;
HTML5增加了对媒体类型的支持:
  • 音频:<audio>
  • 视频:<video>
Video和Audio使用方式有两个:
  • 一方面我们可以直接通过元素使用video和autio;
  • 另一方面我们可以通过JavaScript的API对其进行控制;

HTML5新增元素 - video 

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

 

video常见的属性: 

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

 

 

在<video>元素中间的内容,是针对浏览器不支持此元素时候的降级处理。
  • 内容一:通过<source>元素指定更多视频格式的源;
  • 内容二:通过p/div等元素指定在浏览器不支持video元素的情况, 显示的内容;

 

 

HTML5新增元素 - audio

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

 

 常见属性:

 

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

具体的支持的格式可以通过下面的链接查看:
https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Audio_codecs

 

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

 

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

 

新增全局属性 data-* 

在HTML5中, 新增一种全局属性的格式 data-*, 用于自定义数据属性:
  • data设置的属性可以在JavaScript的DOM操作中通过dataset轻松获取到;
  • 通常用于HTML和JavaScript数据之间的传递

 

CSS属性 - white-space

white-space用于设置空白处理和换行规则
  • normal:合并所有连续的空白,允许单词超屏时自动换行
  • nowrap:合并所有连续的空白,不允许单词超屏时自动换行
  • pre阻止合并所有连续的空白,不允许单词超屏时自动换行
  • pre-wrap阻止合并所有连续的空白,允许单词超屏时自动换行
  • pre-line:合并所有连续的空白(但保留换行),允许单词超屏时自动换行

 

CSS属性 - text-overflow

text-overflow通常用来设置文字溢出时的行为
  • clip:溢出的内容直接裁剪掉(字符可能会显示不完整)
  • ellipsis:溢出那行的结尾处用省略号表示
text-overflow生效的前提是overflow不为visible
常见的是将white-space、text-overflow、overflow一起使用:

CSS函数 - var

CSS中可以自定义属性

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

 

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

 

 

规则集定义的选择器, 是自定义属性的可见作用域(只在选择器内部有效)
  • 所以推荐将自定义属性定义在html中,也可以使用 :root 选择器;

CSS函数 -calc

calc() 函数允许在声明 CSS 属性值时执行一些计算。
计算支持 加减乘除 的运算;
  • + 和 - 运算符的两边必须要有空白字符
通常用来 设置一些元素的尺寸或者位置

 

CSS函数 - blur 

blur() 函数将 高斯模糊 应用于输出图片或者元素;
  • blur(radius)
  • radius, 模糊的半径, 用于定义高斯函数的偏差值, 偏差值越大, 图片越模糊;
通常会和两个属性一起使用:
  • filter: 将模糊或颜色偏移等图形效果应用于元素;
  • backdrop-filter: 为元素后面的区域添加模糊或者其他效果;

CSS函数 – gradient 

<gradient> 是一种 <image>CSS数据类型的子类型 ,用于表现 两种或多种颜色的过渡转变
  • CSS的<image>数据类型描述的是2D图形
  • 比如background-image、list-style-image、border-image、content等;
  • <image>常见的方式是通过url来引入一个图片资源
  • 它也可以通过CSS的<gradient> 函数来设置颜色的渐变;
<gradient>常见的函数实现有下面几种:
  • linear-gradient():创建一个表示两种或多种颜色线性渐变的图片;
  • radial-gradient():创建了一个图像,该图像是由从原点发出的两种或者多种颜色之间的逐步过渡组成;
  • repeating-linear-gradient():创建一个由重复线性渐变组成的<image>;
  • repeating-radial-gradient():创建一个重复的原点触发渐变组成的<image>;

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

 

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

 

 

 

BFC – Block Formatting Context

FC的全称是Formatting Context,元素在标准流里面都是属于一个FC的;
块级元素的布局属于Block Formatting Context(BFC)
  • 也就是block level box都是在BFC中布局的;
行内级元素的布局属于Inline Formatting Context(IFC)
  • inline level box都是在IFC中布局的;
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 的元素

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

 

简单概况如下:
  • 在BFC中,box会在垂直方向上一个挨着一个的排布;
  • 垂直方向的间距由margin属性决定;
  • 在同一个BFC中,相邻两个box之间的margin会折叠(collapse)
  • 在BFC中,每个元素的左边缘是紧挨着包含块的左边缘的;
那么这个东西有什么用呢?
  • 解决margin的折叠问题;
  • 解决浮动高度塌陷问题;

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

官方文档明确的有说

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呢?那么就可以解决折叠问题。
给其中一个元素添加包含块(不同BFC),并添加overflow属性,值为除visible以外的值;

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

BFC的高度是auto的情况下,是如下方法计算高度的
  1. 如果只有inline-level,是行高的顶部和底部的距离;
  2. 如果有block-level,是由最底层的块上边缘和最底层
  3. 块盒子的下边缘之间的距离
  4. 如果有绝对定位元素,将被忽略;
  5. 如果有浮动元素,那么会增加高度以包括这些浮动元素的下边缘

 

媒体查询

媒体查询是一种提供给 开发者 针对 不同设备需求 进行 定制化开发 的一个接口。
你可以根据 设备的类型(比如屏幕设备、打印机设备)或者特定的特性(比如屏幕的宽度) 来修改你的页面。
媒体查询的使用方式主要有三种:
  • 方式一:通过@media和@import使用不同的CSS规则(常用);
  • 方式二:使用media属性为<style>, <link>, <source>和其他HTML元素指定特定的媒体类型
  • 方式三:使用Window.matchMedia() 和MediaQueryList.addListener() 方法来测试和监控媒体状态;

 

 

 

比较常用的是通过@media来使用不同的CSS规则,目前掌握这个即可;
在使用媒体查询时,你必须指定要使用的媒体类型。
  • 媒体类型是可选的,并且会(隐式地)应用 all 类型。
常见的媒体类型值如下:
  • all:适用于所有设备。
  • print:适用于在打印预览模式下在屏幕上查看的分页材料和文档。
  • screen(掌握):主要用于屏幕。
  • speech:主要用于语音合成器。

媒体特性(Media features)描述了 浏览器、输出设备,或是预览环境的具体特征;
  • 通常会将媒体特性描述为一个表达式;
  • 每条媒体特性表达式都必须用括号括起来;

 

媒体查询的表达式最终会获得一个Boolean值,也就是真(true)或者假(false)。
  • 如果结果为真(true),那么就会生效;
  •  如果结果为假(false),那么就不会生效;
如果有多个条件,我们可以通过逻辑操作符联合复杂的媒体查询:
  • and:and 操作符用于将多个媒体查询规则组合成单条媒体查询
  • not:not运算符用于否定媒体查询,如果不满足这个条件则返回true,否则返回false。
  • only:only运算符仅在整个查询匹配时才用于应用样式。
  •  , (逗号):逗号用于将多个媒体查询合并为一个规则。
比如下面的媒体查询,表示:屏幕宽度大于500,小于700的时候,body背景颜色为红色;

 

 常见的移动端设备

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值