avaScript 中的数字类型包含整数和浮点数:
const integer=4;
const float=1.5;
typeof integer; //=> 'number'
typeof float; //=> 'number'
复制代码
另外还有 2 个特殊的数字值:Infinity(比其他任何数字都大的数字)和 NaN(表示“Not A Number”概念):
const infinite=Infinity;
const faulty=NaN;
typeof infinite; //=> 'number'
typeof faulty; //=> 'number'
复制代码
虽然直接使用 NaN 的情况很少见,但在对数字进行无效的操作后却会令人惊讶地出现。
让我们仔细看看 NaN 特殊值:如何检查变量是否具有 NaN,并了解怎样创建“Not A Number”值。
JavaScript 中的数字类型是所有数字值的集合,包括 “Not A Number”,正无穷和负无穷。
可以使用特殊表达式 NaN 、全局对象或 Number 函数的属性来访问“Not A Number”:
typeof NaN; //=> 'number'
typeof window.NaN; //=> 'number'
typeof Number.NaN; //=> 'number'
复制代码
尽管具有数字类型,但“Not A Number”是不代表实数的值。NaN 可用于表示错误的数字运算。
例如,将数字与 undefined 相乘不是有效操作,因此结果为 NaN:
1 * undefined; //=> NaN
复制代码
同样尝试解析无效的数字字符串(如 'Joker')也会导致 NaN:
parseInt('Joker', 10); //=> NaN
复制代码
NaN有趣的特性是,即使使用 NaN 本身,它也不等于任何值:
NaN===NaN; //=> false
复制代码
此行为对于检测变量是否为 NaN 非常有用:
const someNumber=NaN;
if (someNumber !==someNumber) { console.log('Is NaN');
} else {
console.log('Is Not NaN');
}
// logs "Is NaN"
复制代码
仅当 someNumber 是 NaN 时,someNumber !==someNumber 表达式才是 true。因此,以上代码片段输出到控制台的结果是 "Is NaN"。
JavaScript 通过内置函数来检测 NaN:isNaN() 和 Number.isNaN():
isNaN(NaN); //=> true
isNaN(1); //=> false
Number.isNaN(NaN); //=> true
Number.isNaN(1); //=> false
复制代码
这些函数之间的区别在于,Number.isNaN() 不会将其参数转换为数字:
isNaN('Joker12'); //=> true
Number.isNaN('Joker12'); //=> false
复制代码
isNaN('Joker12') 将参数 'Joker12' 转换为数字,即 NaN。因此该函数返回 true 。
另一方面,Number.isNaN('Joker12') 会检查参数是否为 NaN 而不进行转换。该函数返回 false ,因为'Joker12' 不等于 NaN。
在 JavaScript 中,你可以将字符串形式的数字转换为数字。
例如你可以轻松地将字符串 '1.5' 转换为浮点数 1.5:
const numberString='1.5';
const number=parseFloat(numberString);
number; //=> 1.5
复制代码
当字符串不能被转换为数字时,解析函数返回 NaN :表示解析失败。这里有些例子:
parseFloat('Joker12.5'); //=> NaN
parseInt('Joker12', 10); //=> NaN
Number('Joker12'); //=> NaN
复制代码
解析数字时,最好先确认解析结果是否为 NaN :
let inputToParse='Invalid10';
let number;
number=parseInt(inputToParse, 10);
if (isNaN(number)) { number=0;
}
number; //=> 0
复制代码
解析 inputToParse 失败,因此 parseInt(inputToParse, 10)返回 NaN。条件 if (isNaN(number)) 为 true,并且将 number 赋值为 0。
把 undefined 用作加法、乘法等算术运算中的操作数会生成 NaN。
例如:
function getFontSize(style) {
return style.fontSize;
}
const fontSize=getFontSize({ size: 16 }) * 2;
const doubledFontSize=fontSize * 2;
doubledFontSize; //=> NaN
复制代码
getFontSize() 是从样式对象访问 fontSize 属性的函数。调用 getFontSize({ size: 16 }) 时,结果是undefined(在 { size: 16 } 对象中不存在 fontSize 属性)。
fontSize * 2 被评估为 undefined * 2,结果为 NaN。
当把缺少的属性或返回 undefined 的函数用作算术运算中的值时,将生成 “Not A Number”。
防止 NaN 的好方法是确保 undefined 不会进行算术运算,需要随时检查。
当算数运算的操作数为 NaN 时,也会生成NaN 值:
1 + NaN; //=> NaN
2 * NaN; //=> NaN
复制代码
NaN 遍及算术运算:
let invalidNumber=1 * undefined;
let result=1;
result +=invalidNumber; // appendresult *=2; // duplicate
result++; // increment
result; //=> NaN
复制代码
在将 invalidNumber 值(具有 'NaN')附加到 result之后,会破坏对 result 变量的操作。
当算术运算采用不确定形式时,将会产生 NaN 值。
0/0 和 Infinity/Infinity 这样的的除法运算:
0 / 0; //=> NaN
Infinity / Infinity; //=> NaN
复制代码
0 和 Infinity 的乘法运算:
0 * Infinity; //=> NaN
复制代码
带有不同符号的 Infinity 的加法:
-Infinity + Infinity; //=> NaN
复制代码
负数的平方根:
Math.pow(-2, 0.5); //=> NaN
(-2) ** 0.5; //=> NaN
复制代码
或负数的对数:
Math.log2(-2); //=> NaN
复制代码
JavaScript 中用 NaN 表示的的“Not A Number”概念对于表示错误的数字运算很有用。
即使是 NaN 本身也不等于任何值。检查变量是否包含 NaN 的建议方法是使用 Number.isNaN(value)。
将字符串形式的数字转换为数字类型失败时,可能会导致显示“Not A Number”。检查 parseInt()、parseFloat() 或 Number() 是否返回了 NaN 是个好主意。
undefined 或 NaN 作为算术运算中的操作数通常会导致 NaN。正确处理 undefined(为缺少的属性提供默认值)是防止这种情况的好方法。
数学函数的不确定形式或无效参数也会导致 “Not A Number”。但是这些情况很少发生。 这是我的务实建议:出现了 NaN?赶快检查是否存在 undefined!
作者:前端先锋
链接:https://juejin.cn/post/6844904047787376654
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网页中添加视频、声音、动画等,可以增强用户体验。在HTML5之前,为网页添加多媒体的唯一办法,就是使用第三方的插件(如,Adobe Flash等)。
HTML5中,提供了对多媒体的原生支持,只需通过 video 元素,就可以向网页嵌入视频、电影或音频资源,通过 audio 元素向网页嵌入音频资源,省时省力。
HTML中嵌入视频和音频代码
在HTML5时代,在网页中嵌入视频非常简单,只需要一个 video 元素,并设置它的 src 属性,使其链接一个视频地址就可以完全搞定了,这个太esay了
<video src="media/vedio.mp4"></video>
把这个网站在IE8中打开一看,网站上除了一片空白外,什么也没有,这是为什么呢?
原来 video 是HTML5最新引入的元素,并不是所有浏览器都支持它,IE8及以下版本都无法识别 video 标签。如果浏览器不识别 video标签,则会忽略它,当做什么都没有。这就是网站上一片空白的原因。
这个问题好解决,只需在 video 标签之间放置文本信息,不支持 video 标签的老浏览器,会显示 video 标签之间的文本信息,以提示用户浏览器不支持 video,就这么简单!
<video src="media/vedio.mp4">
你的浏览器已经老掉牙了,不支持video,还不赶快使用现代浏览器O(∩_∩)O~!
</video>
在IE8上打开一看,确实显示了提示文本,这下好多了,至少用户知道自己的浏览器不能播放视频,该换浏览器了。
下载了Opera浏览器的最新版本25.0,打开一看,怎么还是一片空白外!Opera浏览器明明是支持video标签的,那又是为什么呢?
这个就得从视频的编码格式说起了。video 元素支持三种视频格式:Ogg、MP4、WebM。
Ogg是带有Theora视频编码和Vorbis音频编码的文件,后缀名为 .ogg;MP4是带有H.264视频编码和AAC音频编码的MP4文件,后缀名为 .mp4;WebM是VP8视频编码和Vorbis音频编码的文件,后缀名为 .webm。
这个Opera浏览器呢,它可以支持ogg,但不支持mp4。由于Opera支持video标签,故video标签之间的文本信息没有显示出来,但它不支持ogg,所以就不进行播放,最终导致页面出现一片空白。这下可怎么办呢?
其实办法有的是,我们可以从网上下载一副图像,放到视频播放窗口,如果视频无法播放,就显示这张图片,是不是更好呢?从网上下载一张美女图片,干脆叫beauty.jpg吧。那这个图像怎么添加到视频窗口呢?
video标签有个poster 属性,就是专门在视频窗口放置图片的。poster是一个video的占位符,无论什么情况下,只要视频还没有播放(视频下载过程中、视频不存在、不支持该视频类型、用户点击播放按钮前),就会显示该图像,可以看做是视频播放之前插入的宣传画或海报。
<video src="media/vedio.mp4" poster="img/beauty.jpg">
你的浏览器已经老掉牙了,不支持video,还不赶快使用现代浏览器O(∩_∩)O~!
</video>
在Opera浏览器上刷新一下,真的有一个美女冲着自己微笑呢。虽然视频没有播放出来,这回心情却是好多了。
那我可不能一天到晚只看美女呀,视频还是还是要想办法播放出来的。既然Opera浏览器不支持mp4,我们就换成需要ogg吧,这样就肯定没问题了。
我想了想,这个办法不好,万一某个浏览器只支持支持ogg,不支持mp4呢。这年头,什么都缺,就是不缺点子,随便在网上一搜,办法就有了。
在 video 元素中添加 source 元素,就可以解决这个问题。在source 元素中,通过 src 属性指定视频的地址,通过 type 属性指定视频的类型,以帮助浏览器决定是否能播放该视频。并且,在 video 元素中可以添加任意多个source 元素,让不同的 source 元素链接到不同的视频文件。
这样的话,当浏览器发现 video 元素时,首先会查看它本身是否定义了 src 属性。如果没有,就会检查 source 元素。浏览器会逐个查看这些视频源,直到找到一个可以播放的视频。一旦找到,就会播放它并忽略其他的视频源。我们干脆添加两个source,一个是mp4,一个是ogg,这下视频是一定能播放出来了。
<video poster="img/beauty.jpg">
<source src="media/vedio.mp4" type="video/mp4">
<source src="media/vedio.ogg" type="video/ogg">
你的浏览器已经老掉牙了,不支持video,还不赶快使用现代浏览器O(∩_∩)O~!
</video>
在Opera浏览器上又刷新一下,只有美女冲着我微笑,视频还是没播放出来。唉,太粗心了,忘记添加播放视频的控件了。
在video标签中,通过添加controls 属性来为视频添加播放控件,方便用户执行播放、暂停操作和音量控制。
<video poster="img/beauty.jpg" controls>
(此处略去500字…)
</video>
在Opera浏览器上又刷新一下,效果真的不一样,这次不仅看到美女,还看到了视频控件。用鼠标猛戳一下那个播放按钮,哈哈,不错,真的听到美妙的旋律。我们的ogg文件,终于播放出来了,让我们好好享受一下吧O(∩_∩)O。
听了一会,忽然一想,不对呀,我刚才点了播放按钮后,等了半天才听到声音。能不能我一点播放按钮,就立即播放呢?
原来视频也是需要下载缓存的,点击播放按钮后,首先缓存,然后才播放的。那能不能在页面加载的同时就缓存呢。这样,用户点击播放后,就不必等待了。
这当然可以,在video标签中,通过添加preload属性来为视频添加预加载功能,在页面加载的同时加载视频。
<video poster="img/beauty.jpg" controls preload>
(此处略去500字…)
</video>
关于 preload 属性,稍微再啰嗦一点,就是可以把它设置为 metadata,让浏览器仅仅预加载视频的基本信息,如尺寸、时长、以及一些关键的帧。这样的话,在开始播放之前,浏览器可以提前计算视频的显示尺寸。
既然一切都OK了!让我们看看mp4是不是能正常播放。下载最新版的Google Chrome 38.0浏览器,打开网页,猛戳一下播放按钮。
等等~,等等~,不对,怎么只有声音没有画面,明明是mp4格式的文件呀?使用暴风影音试了一下,是有画面的呀!
辛辛苦苦又在网上搜了一番,花了整整586秒,终于找到了答案。mp4视频需要h.264编码格式才会有图像的。
找了一个 h.264 编码格式的 mp4 试了一下,不错,确实有图像了!看了半天,原来是一部老外的电影,叽里咕噜一阵,一句话也没听懂。那O(∩_∩)O~,能否提供中文字幕呢,这样就不必费老大劲去听了!
HTML5中,通过在video元素添加track元素为视频添加字幕。字幕文件有两种格式:WebVTT和TTML。WebVTT是Web视频文本轨迹(Web Video Text Track),是UTF-8编码格式的文本文件;TTML是时序文本标记语言(Timed Text Markup Language),是XML格式的文件。两种文件的具体格式,已经超出我们的讨论范围。
video元素支持添加多个track元素,不同的track元素链接到不同的字幕文件。用户可以在各个字幕间进行切换。
<video poster="img/beauty.jpg" controls preload>
<track src="en_track.vtt" kind="subtitles" srclang="en" label="English" default>
<track src="cn_track.vtt" kind="captions" srclang="zh" label="简体中文">
</video>
track元素中,src属性指定字幕文件的URL;srclang属性字幕文件的语言类型,若kind 属性值是 "subtitles" 时,该属性必需的;label 属性指定字幕标签,每个字幕元素必需设置一个唯一不重复的标签,切换字幕时,会显示标签的名称;kind指定字幕内容类型,只能是subtitles、captions、descriptions、chapters、metadata 之一;default属性指定是否是默认字幕,如果一个都没指定,将不会自动显示字幕。
除了字幕外,我还希望对视频进行过多的控制,比如让视频自动播放、循环播放、默认静音,以及视频窗口的尺寸等等,这些都能做到吗?
这已经不是什么事了,video 元素已经提供了相关属性,根据需要设置相应的属性就可以了。这些属性及含义见表 23:
HTML中嵌入视频和音频代码
哦,原来这么简单呀!那就到此为止吧,网页中嵌入视频的全部代码都在这里,就打包给你吧!
<video width="300" poster="img/beauty.jpg" controls preload autoplay loop muted>
<source src="media/vedio.mp4">
<source src="media/vedio.ogg">
<track src="en_track.vtt" kind="subtitles" srclang="en" label="English" default>
<track src="cn_track.vtt" kind="captions" srclang="zh" label="简体中文">
你的浏览器已经老掉牙了,不支持video,还不赶快使用现代浏览器O(∩_∩)O~!
</video>
睁大眼睛一看,却只有7行代码。然而,就这区区7行代码,可把他折磨得够呛。
看着这一切都全部搞定,他仰望着天空,长长呼了一口气,显得是那么的放松,那么的惬意。此时,他闭上眼睛,在自己的梦幻世界里遨游!
有了在网页中嵌入视频的经历,要在网页中嵌入音频,那简直就是小菜一碟了。只要把vedio元素换成 audio 元素,就全部搞定。
但需要了解的是,audio 所支持的音频格式只有Ogg Vorbis、mp3 和 wav。还要知道,由于音频没有画面,也就没有 width、height、poster 属性,而其他属性都支持,并且跟视频的含义相同。
网页中嵌入音频的代码如下:
<audio controls preload autoplay loop muted>
<source src="media/audio.mp3">
<source src="media/audio.wav">
<source src="media/audio.ogg">
你的浏览器已经老掉牙了,不支持audio,还不赶快使用现代浏览器O(∩_∩)O~!
</audio>
程序员web前端分享html中meta标签及用法详解,这篇文章给大家介绍了html中meta标签及用法详解,感兴趣的朋友一起看看,Html中meta标签
一、meta标签 含义
<meta> 元素 可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。
<meta> 标签位于文档的头部,不包含任何内容。
<meta> 标签的属性定义了与文档相关联的名称/值对。
二、meta 中常用属性
1. charset (字符集)
说明:规定 HTML 文档的字符编码。
用法: <meta charset="UTF-8">
2. viewport (视区)
说明:是用户网页的可视区域。 大家都知道移动设备的屏幕一般都比PC小很多,webkit浏览器会将一个较大的“虚拟”窗口映射到移动设备的屏幕上,默认的虚拟窗口为980像素宽(目前大部分网站的标准宽度),然后按一定的比例(3:1或2:1)进行缩放。
也就是说当我们加载一个普通网页的时候,webkit会先以980像素的浏览器标准加载网页,然后再缩小为490像素的宽度。注意这个缩小是一个全局缩小,也就是页面上的所有元素都会缩小。
用法:
<meta id="viewport" name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1; user-scalable=no;">
(1) width
width 控制 viewport 的大小,一般为了自适应设置为device-width
(2) initial-scale
initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
(3) maximum-scale
maximum-scale 最大缩放。即允许的最大缩放程度。这也是一个浮点值,用以指出页面大小与屏幕大小相比的最大乘数。
(4) minimum-scale
minimum-scale:允许用户缩放到的最小比例。和 maximum-scale 用法类似。
(5) user-scalable
user-scalable 用户调整缩放。即用户是否能改变页面缩放程度。如果设置为yes则是允许用户对其进行改变,反之为no。
3. keywords (关键字)
说明:为搜索引擎提供的关键字列表。各关键词间用英文逗号“,”隔开。指定搜索引擎用来提高搜索质量的关键词。
用法:<Meta name="Keywords" Content="关键词1,关键词2,关键词3,关键词4,……">
4. description (描述、简介)
说明:Description用来告诉搜索引擎你的网站主要内容。
用法:<Meta name="Description" Content="你网页的简述">
5. format-detection (格式检测)
说明:format-detection 是用来检测html里的一些格式的。
用法:关于meta的format-detection属性主要是有以下几个设置:
meta name="format-detection" content="telephone=no" meta name="format-detection" content="email=no" meta name="format-detection" content="adress=no"
也可以连写:meta name="format-detection" content="telephone=no,email=no,adress=no"
(1)telephone
你明明写的一串数字没加链接样式,而iPhone会自动把你这个文字加链接样式、并且点击这个数字还会自动拨号!想去掉这个拨号链接该如何操作呢?这时我们的meta又该大显神通了,代码如下:
telephone=no就禁止了把数字转化为拨号链接!
telephone=yes就开启了把数字转化为拨号链接,要开启转化功能,这个meta就不用写了,在默认是情况下就是开启!
(2)email
告诉设备不识别邮箱,点击之后不自动发送
email=no禁止作为邮箱地址!
email=yes就开启了把文字默认为邮箱地址,这个meta就不用写了,在默认是情况下就是开启!
(3)adress
adress=no禁止跳转至地图!
adress=yes就开启了点击地址直接跳转至地图的功能,在默认是情况下就是开启!
6. apple-touch-fullscreen
说明:添加到主屏幕后,全屏显示。
用法:<meta name="apple-touch-fullscreen" content="yes">
7. apple-mobile-web-app-capable
说明: 作用就是删除默认的苹果工具栏和菜单栏。content有两个值”yes”和”no”,当我们需要显示工具栏和菜单栏时,这个行meta就不用加了,默认就是显示。
用法:<meta name="apple-mobile-web-app-capable" content="yes" />
8. App-Config
说明:保留历史记录以及动画效果
用法:<meta name="App-Config" content="fullscreen=yes,useHistoryState=yes,transition=yes"/>
9. msapplication-tap-highlight
说明:点击无高光(高亮)
用法:<meta name="msapplication-tap-highlight" content="no">
以上所述是好程序员给大家介绍的html中meta标签及用法详解,希望对大家有所帮助。
*请认真填写需求信息,我们会在24小时内与您取得联系。