HTML5的新特性--基础知识(3)

在HTML5表单验证,自定义规则,用checkValidity()结合setCustomValidity()实现 阅读详情
1. setCustomValidity()
    1.1 作用
        自定义错误信息,一旦设置好了setCustomValidity(),当前表单是不允许被提交的,一旦提交,显示自定义错误信息
    1.2 注意
        setCustomValidity(""),一旦数据被修改正确后,需要通过setCustomValidity("")清空错误验证消息,使得表单允许被提交
 2.checkValidity()
    2.1作用
       在不提交表单的情况下对表单或者表单元素进行验证。如果有问题的话,返回值为false;如果没有问题,返回值为true。
 3. invalid事件
    表单在提交过程中,检测到有无效域时,所激发的事件。该事件的本质是获取产生错误的那一组元素。
    3.1如何使用
       document.forms[0].addEventListener("invalid",form_invalid,true);
       function form_invalid(e){
         var elem=e.target;//得到产生错误的元素
        //调整elem
       }
 4.ValidateState状态
    表示指定的表单元素能够出现的所有的错误状态
    4.1如何获取validateState
       formElement.validity;
    4.2错误状态值
       1、判断是否通过所有的验证规则
         formElement.validity.valid:通过所有的验证后,返回值为true,否则为false。与checkValidity()类似
       2、判断是否为空
         formElement.validity.valueMissing
         注意:验证有required属性的控件,值是否为空。值为空,返回true。否则为false
       3、判断数据是否违反类型
         formElement.validity.typeMismatch
         看输入的数据,与type属性是否相等,如果不符返回为true,否则返回false
       4、判断数据是否违反pattern属性的约束
          formElement.validity.patternMismatch
          违反为true,否则为false
       5、判断数据是否违反了定义的step,多数使用在<input type=number />类型上
           formElement.validity.stepMismatch
           违反为true,否则为false
       6、输入的数据长度超出了maxlength所定义的长度
          formElement.validity.tooLong
          用于比较位数<input type="text" maxlength="15">
       7、输入的值小于定义的min值
          formElement.validity.rangeUnderflow
       8、输入的值大于定义的max值
          formElement.validity.rangeOverflow
          用于比较大小<input type="number" max="100">
       9、判断表单元素是否已经设置了自定义错误消息
        a)formElement.validity.setCustomValidity("格式不正确")
          formElement.validity.customError;返回值为true
        b)formElement.validity.setCustomValidity("")
          formElement.validity.customError;返回值为false


 新课:
 1、h5之前播放视频
    <embed src="">标签
    <object>标签  实现过程比较麻烦
  如: <object>
         <param />
         <param />
         <param />
       </object>
 2、h5中:使用video元素在文档中插入和播放视频,主要支持ogg和mp4格式
 ogg:包含theora视频和vorbis音频解码器,并且得到火狐、谷歌、opera等的支持
 mp4:采用H.264视频和AAC音频解码器,得到Safari、IE以及谷歌的支持,现在比较流行的视频格式

 video元素:包含source元素,这些元素为浏览器提供了不同的视频源。浏览器会根据source标签,然后根据所支持的格式,选择播放的文件。
 语法:
 写法一:<video src="abc.mp4"></video>   这种方法用的比较多
 写法二:
 <video>
    <source src="abc.swf" />
    <source src="abc.mp4" />
 </video>

 例:
 <video src="source/video.mp4" width="400px" height="300px" controls autoplay loop poster=“source/01.jpg”></video>

 controls属性:显示下方的播放和暂停
 autoplay属性:设置视频加载完成后自动播放
 loop属性:设置这个属性时,浏览器会反复播放该视频
 poster属性:该属性指定一个URL,在视频等待播放时显示一幅图像
 preload属性:该属性可以设置三个值:
     none:不缓存视频,为了减少不必要的流量
     metadata:推荐浏览器抓取一些资源的信息
     auto:默认值,要求浏览器尽可能快的下载视频


 h5中视频或音频事件:
 progress:用于更新媒体的下载进度,会周期性的触发
 canplaythrough:当整个媒体可以顺利播放时,就会触发这个事件
 canplay:不考虑整体状态,只要下载了一定的可放帧会触发这个事件
 ended:媒体到达末尾时触发
 pause:媒体暂停时触发
 play:媒体开始播放时触发
 error:媒体播放出现错误时触发


 下面是h5中新增的媒体处理方法:
 play():播放媒体文件
 pause():暂停播放
 load();加载媒体文件,动态应用程序可使用该方法提前加载
 canPlayType(type):查看浏览器是否支持这种文件格式的媒体文件

 canPlayType(type)中:
 视频格式:如video/mp4,video/ogg
 音频格式:如audio/mp3
 例:<video id="media" width="700" src="source/video.mp4"></video>     
       $("media").canPlayType("video/mp4");
 返回值:
   1、probably:最大可能性能够播放该视频
   2、maybe:可能播放该视频
   3、"":空,播放不了

 h5新增的针对视频元素处理属性如下:
 paused:媒体处于暂停或未播放状态,这个值为true
 ended:如果媒体已经播放结束,这个值为true
 duration:返回媒体总时长,以秒为单位
 currentTime:获取或设置媒体播放位置


 编程实现视频播放器:
  step1:实现视图界面
  step2:完成播放/暂停的功能
         play()
         pause()
         按钮文字切换
  step3:
       3.1 完成滚动条的自然滚动
           currentTime:播放的时长
           duration:视频总时长
           maxim:600
           size:待求

          currentTime/duration =size/maxim
          size=currentTime/duration*maxim
       3.2 手动更改滚动条,并且更新视频播放位置
           e.pageX - div.offsetLeft
           e.offsetX;

 音频audio元素:在互联网中,音频不如视频流行。在h5中,通过audio元素来表示音频文件。

 检查音频格式:$("audio").canPlayType("audio/mp3")

 audio元素支持以下属性
 src:指定播放文件的url,可通过<source>
 controls:激活浏览器提供的默认页面
 autoplay:加载音频后自动播放
 loop:设置该属性后,会反复播放该音频
 preload

 H5中的媒体API既支持视频也支持音频。


 案例:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <title>  </title>
   <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
   <style type="text/css">
     #player{
         width:700px;
         margin:20px auto;
         padding:5px;
         background:#999999;
         border:1px solid #666666;
         border-radius:5px;
     }
     #media{margin:0px;padding:0px;}
     nav{margin:5px 0px;}
     #buttons{float:left;}
     button{
         width:50px;
     }
     #bar{
         float:left;
         width:600px;
         height:16px;
         padding:2px;
         border:1px solid #ccc;
         background:#eee;
         margin-left:25px;
     }

     #progress{
         width:0px;
         height:16px;
         background:rgba(0,0,150,0.2);
     }
   </style>
   <script>
     var loop;
     function $(id){
         return document.getElementById(id);
     }
     /**初始化**/
     function initial(){
         //1、获取 id为btn的元素
         var btn = $("btn");
         var media = $("media"); //获取media
         var bar = $("bar");
         //2、绑定事件
         btn.addEventListener("click",btn_click,false);
         media.addEventListener("ended",media_ended,false);
         bar.addEventListener("click",bar_click,false);
     }
     /**鼠标单击bar时的事件**/
     function bar_click(e){
         //console.log("距离:"+e.offsetX);
         var progress = $("progress");
         progress.style.width = e.offsetX + "px";//设置progress的宽度为鼠标点击的bar的位置宽度
         var media = $("media");
         //计算currentTime
         var currentTime = e.offsetX / 600 * media.duration;
         media.currentTime = currentTime;
     }

     /**视频播放结束后的事件*/
     function media_ended(){
         media.currentTime=0;  //当视频结束后自动将当前事件设置为开始播放
         $("btn").innerHTML = "Play";
         clearInterval(loop);
         $("progress").style.width = "0px";

     }
     /**更新滚动条的位置*/
     function updateStatus(){
         var media = $("media");
         var progress = $("progress");
         var size = media.currentTime / media.duration * 600;
         $("progress").style.width = size + "px";
     }

     /**Play/Pause 按钮单击事件**/
     function btn_click(){
         //1、获取media
         var media = $("media");
         //2、根据不同状态切换视频 播放/暂停
         if(!media.ended && !media.paused){
             //正在播放中,需要暂停视频,按钮的文字变成Play
             media.pause();
             this.innerHTML = "Play";
             clearInterval(loop);
         }else{
             //正在暂停(停止)中,播放视频,按钮的文字变成Pause
             media.play();
             loop = setInterval("updateStatus()",100);
             this.innerHTML = "Pause";
         }
     }
     window.addEventListener("load",initial,false);
   </script>
  </head>

  <body>
     <section id="player">
         <video id="media" width="700" src="video.mp4" autoplay></video>
         <nav>
             <div id="buttons">
                 <button id="btn">Play</button>
             </div>
             <div id="bar">
                 <div id="progress"></div>
             </div>
             <div style="clear:both;"></div>
         </nav>
     </section>
  </body>
 </html>
HTML5中的`<input>`元素支持`invalid`事件,用于在用户填写表单时检测输入字段的有效性 要启用JavaScript中的默认行为,当你希望允许浏览器按照其固有的方式响应某个事件(如右键点击导致的上下文菜单弹出),你应该不调用。在JavaScript中,要阻止表单的默认提交行为,可以在表单的submit事件上添加一个事件监听器,并在事件处理函数中调用。:在一个需要用户确认操作的输入框(如删除按钮)上,阻止默认行为可以让开发者处理用户点击后的逻辑,而不是直接执行删除操作。在这个例子中,即使用户点击了"提交"按钮,表单也不会立即刷新页面,而是执行你自定义的逻辑。 阅读详情

相关推荐

HTML5 + CSS3 基础知识梳理

视频播放器需要的属性controls显示或隐藏用户控制界面autoplay媒体是否自动播放loop媒体是否循环播放pause媒体是否暂停(只读属性)ended媒体是否播放完毕(只读属性)当前的播放进度duration媒体播放总时间volume0.0到1.0的音量相对值muted是否静音3.2播放器需要的方法:视频播放器用到的方法play()媒体播放Pause()媒体暂停时间更新Canplay()可以播放。

weixin_57334661的博客 2162

H5表单中的setCustomValidity 的使用说明

setCustomValidity用于判断表单的正误,有错误时可以手动设置提示信息 当没有错误时要将setCustomValidity(“)设置为空,否则表单无法提交 实例 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name=&qu

齐枫的博客 9816

JavaScript验证API中的setCustomValidity方法js

合理运用这个方法,我们能够提高表单数据的质量,增强用户体验,确保应用程序的可靠性和安全性。setCustomValidity方法是一个强大的API,它允许我们自定义验证规则,并在验证失败时向用户提供有意义的错误信息。无论是简单的文本输入验证,还是复杂的表单验证,setCustomValidity都可以帮助我们提供友好的错误提示,增强用户体验。注意,文章正文部分需要包含3000字以上的内容,展开介绍setCustomValidity方法的用法、参数、返回值以及相关的实际应用场景和示例。

ByteZenith的博客 313

JavaScript 验证 API中的setCustomValidity()方法

setCustomValidity()方法: 设置 input 元素的 validationMessage 属性,用于自定义错误提示信息的方法。 注意:使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成true,则 checkValidity() 总是会返回false,导致无论重新输入的格式正确与否,都会提示设置好的错误信息。 解决办法...

weixin_42834908的博客 1291

HTML5 SVG过山车特效:动画与交互实现

SVG (Scalable Vector Graphics) 是一种基于XML的图像格式,用于描述二维矢量图形。SVG文件是一种文本文件,可以用任何文本编辑器打开,并且可以被搜索、索引、脚本化或压缩。SVG图形可以直接嵌入到HTML中使用,或者作为独立的图像文件存在。SVG的主要特性包括:可伸缩性:矢量图形的特性使得SVG图形能够任意缩放而不损失质量。交互性:SVG图形可以响应各种用户事件,例如鼠标点击、悬停等。文本的可访问性。

weixin_32921023的博客 1138

HTML5和CSS3技术手册CHM版:中文参考指南

HTML5 是超文本标记语言的第五次重大更新,自2014年被正式采纳以来,它不仅简化了网页的编写方式,还引入了诸多新特性和API。本章将从HTML5的结构和新特性两个维度入手,深入剖析HTML5带来的变革。除了文档结构的变化,HTML5还带来了一系列革新的API,如离线存储、拖放、音视频播放等。这些新特性不仅丰富了Web应用的功能,还提高了与用户的互动性。例如,<audio>和<video>标签的引入,让在网页上嵌入多媒体内容变得前所未有的简单。您的浏览器不支持 audio 元素。

weixin_36123300的博客 593

前端基础知识第七章---HTML5和CSS3的新特性

前言 ❤️ 自以为是永远都是大敌,因为本可看到的东西也会视而不见 ❤️

battledao的博客 1898

HTML与CSS全面基础知识精讲

CSS(Cascading Style Sheets,层叠样式表)是用于增强网页内容表现的一套规则。它与HTML相辅相成,HTML负责网页内容的结构,而CSS负责网页内容的呈现。CSS的作用是定义网页的布局结构、颜色、字体、背景等视觉效果。CSS的基本语法是通过选择器来指定要应用样式的HTML元素,然后使用一系列的属性来定义该元素的表现。

weixin_28793831的博客 750

HTML5和CSS3参考资源与教程

导读:作者Paul Andrew是Speckyboy设计杂志的创始人和编辑。他写了一篇文章《HTML5 and CSS3 Form References, Resources and Tutorials》,在文中汇总几个HTML5和CSS3资源教程网站,为Web开发人员提供了详细参考指南。以下是文章摘要:本文介绍了一些HTML5新特性以及如何通过更好的方式改善文本输入、搜索框和其他窗体,达到代码...

weixin_33963594的博客 99

HTML+CSS网页开发思维导图大全

htmltable {th, td {th {pre {简介:HTML和CSS是构建和呈现网页的基础技术,本思维导图详细介绍了HTML的基础知识、HTML5的新特性、CSS的基础知识、布局技术以及CSS3的新特性。通过结构化学习和关联性展示,帮助开发者深入理解并高效学习网页开发的两个核心技术。提供图片文件以形成完整的知识网络,使学习过程更加直观和有趣。

weixin_26805451的博客 965

HTML5和CSS3网页制作实战项目集

<title>HTML5 示例页面</title><h1>欢迎来到HTML5的世界</h1>

weixin_42583683的博客 1128

HTML5+CSS3+JavaScript学习笔记

基础知识 HTML5 基础入门 HTML5 的基本概念 什么是HTML5   HTML5 是标记语言,使用标记标签描述网页。 HTML与XHTML   XHTML是可扩展的超文本标记语言,是一种置标语言,是更严格、更纯净的HTML版本。XHTML是以XML格式编写的HTML。XHTML具有<!DOCTYPE…>强制性、元素必须合理嵌套、元素必须有关闭标签、空元素必须包含关闭标签、元素必...

梦在前方,路在脚下,自胜者强,自强者胜! 4200

芯片硅前验证技术与驱动工程师实战指南

硅前验证是芯片开发流程中的关键环节,通过pre-silicon simulation等技术手段在流片前验证设计正确性。其核心技术包括软件仿真、FPGA原型验证和硬件仿真器解决方案,涉及Linux驱动开发、芯片架构理解和波形分析等核心技能。作为连接芯片设计与系统集成的桥梁,硅前验证能早期发现设计缺陷,节省数百万美元流片成本。以Cadence Palladium为代表的硬件仿真器,通过专用服务器系统实现比纯软件方案快100-1000倍的仿真速度,为驱动工程师提供完整的外设模型验证环境。掌握硅前验证技术可显著提升

weixin_42522857的博客 323

HTML5的骨架是什么,HTML5 骨架

html:HTML5 骨架©2014 W3Schools. All rights reserved.CSS样式表:使用简单的语法链接样式表:重置:header, section, footer, aside, nav, main, article, figure {display: block;}我常用的:code:Courier,body{font-family:Courier, Verdan...

weixin_36286774的博客 486

Qt6安装保姆级教程:从国内镜像下载到配置避坑指南(附清华/中科大源)

本文提供详细的Qt6安装与配置指南,重点介绍如何利用清华大学、中国科学技术大学等国内镜像源解决下载速度慢的问题。内容涵盖在线安装器获取、组件选择策略、环境变量配置以及常见编译与部署问题的排查方法,旨在帮助国内开发者高效、顺畅地完成Qt6开发环境搭建。

weixin_29281915的博客 633

从零到一:uniPush2.0全链路集成与多厂商通道配置实战

本文提供了uniPush2.0从零开始的全链路集成与多厂商通道配置实战指南。详细讲解了DCloud平台配置、uniCloud云函数开发、客户端CID获取与消息监听,并重点攻克了华为、小米、OPPO、vivo等主流厂商推送通道的配置难点与避坑技巧,帮助UniApp开发者实现“一次集成,全端覆盖”的高效消息推送方案。

onion的博客 432

HTML5基础知识

1.HTML5基础知识介绍 1.1什么是HTML5 1.HTML5是超文本标记语言 2.2014年才定制完HTML5的标准,历时8年 3.HTML5的设计目的是为了在移动设备上支持多媒等功能 1.2为什么要用HTML5 1.跨平台 利用HTML5编写的UI界面能运行在所有拥有浏览器的平台 HTML5的运行平台:浏览器 2.HTML5的新增了很多的功能,比如video、audi

yipeng95的博客 553

Ubuntu 24.04 极速部署 Dify:从零到一的保姆级实践

本文详细介绍了在Ubuntu 24.04系统上快速部署Dify的完整教程,从环境准备到部署验证,再到深度优化和安全加固,提供了一套保姆级的实践指南。通过使用Docker和Docker Compose,结合国内镜像源加速,帮助用户高效完成Dify的安装和配置,确保系统稳定运行。

weixin_42662293的博客 246

html 标记分类字幕,css3新特性

<!DOCTYPE html> 意义 html 标记分类 html5 字幕 背景音乐 锚点链接 css3新特性

唐心的博客 164

Python主要智能优化算法库汇总

最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。 文章目录1、DEAP2、mealpy3、scikit-opt (国产良心)4、Geat2(国产用心)5、pygmo26、pyswarms7、SciPy(想不到吧)小结 1、DEAP 项目地址:https://github.com/DEAP/deap 安装: pip install deap 优点: 起点高,发表在Journal of Machine Learning Rese

半个冯博士 2万+

达妙电机MIT模式调参实战:如何从‘曲线偏离’到‘完美追踪’正弦波?

本文详细解析了达妙电机MIT模式调参实战,从曲线偏离到完美追踪正弦波的方法论。通过MATLAB实时曲线分析,深入探讨位置环(kp)和速度环(kd)的双重调节技巧,帮助工程师优化参数组合,提升电机控制精度和稳定性。

weixin_29053073的博客 732

HTML5菜鸟入门指导:简介、平台搭建、示例演示

HTML5菜鸟入门指导:简介、平台搭建、示例演示 一、HTML5简介 1、  了解HTML (1)、什么是HTML? HTML是用来描述网页的一种语言; HTML指超文本标记语言(Hyper Text Markup Language) HTML不是变成语言,是一种标记语言 (2)、版本 HTML出现于1991年 HTML+出现于1993年 HTML2.0

成长Bar的博客专栏 2265

ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境

为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境

FRIGIDWINTER的博客 1万+

html5css3自学,HTML5+CSS3视频教程(让你从入门到精通)

HTML5+CSS3从入门到精通视频教程通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+ CSS3设计构建网站的必备知识,相对于权威指南、高级程序设计、开发指南同类图书,是适合快速入手的自学教程。内容有:创建HTML5文档,实战HTML5表单,实战HTML5绘画,HTML5音频与视频,Web存储,离线应用,Workers多线程处理,Geolocation地理位置等技术。CSS3部分主要...

weixin_33561009的博客 482

如何通过 GitHub Actions 使用 SSH 自动化部署到阿里云 ECS 实例

通过 GitHub Actions 和 SSH 自动化部署,可以显著提高你的开发效率和部署的可靠性。本文介绍了如何生成 SSH 密钥、将公钥添加到阿里云 ECS 实例、将私钥添加到 GitHub Secrets,以及编写 GitHub Actions 工作流来实现自动化部署。希望这篇文章对你有所帮助!

吃面不喝汤的博客 1511

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HTML/CSS 基础知识

HTML和CSS不断地发展和更新,掌握基础知识可以帮助前端开发者更好地跟上技术的发展。

weixin_57688764的博客 585

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: HTML5的新特性--基础知识(2)
下一篇: HTML5的新特性--基础知识(4)
敲代码的猫
博客等级 码龄10年 70粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值