HTML5 で新しく追加された属性には、プレースホルダー、カレンダー、日付、時刻、電子メール、URL、検索、非表示などが含まれ、新しく追加された要素には、ヘッダー、フッター、ナビゲーション、記事、キャンバス、SVG、ビデオが含まれます。 、など。
このチュートリアルの動作環境: Windows 7 システム、HTML5 バージョン、Dell G3 コンピューター。
html5 – 主にモバイル端末で使用されます
新しい属性
-
プレースホルダー
- #カレンダー、日付、時刻、電子メール、URL、検索 contentEditable (タグ内のコンテンツが編集可能かどうかを説明します)
- 非表示
- ##コンテキストメニュー
- Data-val (カスタム)属性)
- ##新しいタグ
##セマンティック タグ (div のようなもののグループ)
- canvas(描画ボード)
- svg(描画ボードともみなされる)
- audio(サウンド再生) #video (ビデオ再生) - Flash は HTML5 より前に一般的に使用されていました - 現在では Flash はほとんど使用されず、Adobe はそのメンテナンスを停止しました
- # API
b. 重力センサー (携帯電話にはジャイロスコープ )
- c. request-animation-frame(アニメーションの最適化)
- d. History(現在のページの閲覧履歴を制御)
- e. LocalStorage – 常に存在し、SessionStorage (過去の最高記録、チャット記録などのストレージ情報 – ローカルに保存) –> ページを閉じると消えます
-
-
#g. fillReader (ファイルの読み取りとプレビュー)
h. webWorker (ファイルの非同期処理 - パフォーマンスとインタラクティブなエクスペリエンスを向上させるために使用)
i. fetch (AJAX を置き換えると言われているもの、ただし、互換性が低い#
<input type='text' placeholder='请输入用户名'> <input type='password' placeholder='密码'>
calendar class-
<input type='date'><!--兼容性不好,chrome支持,safari,IE不支持--> <input type='time'> <input type='week'> <input type='datatime-local'><!--把年月日事件结合在一起填写的框--> <!-- 上述关于时间的标签不怎么常用,兼容性不好 --> <!-- 上面为calendar类 --> <br> <input type='number'><!--限制输入,如果非数字则无法输入,但是只有chrome支持--> <input type='email'><!--格式不正确的话会提示错误,只有chrome和Firefox支持--> <input type='color'><!--颜色选择器 只有chrome支持--> <input type='range' min='' max='' name=""> <!--chrome和safari支持,火狐和IE 不支持--> <input type='search' name='search'> <!-- 自动提示 , 只有chrome支持,safari支持一点(只有内容打全了才提示)--> <input type='url'> <!--如果填写的不是网址的话会提示,chrome、Firefox支持,safari和IE不支持-->
contentEditable - 詳細: このプロパティは、1 つの contenteditable を入力した場合にのみ機能しますが、後続のドラッグ可能なものは機能しません。 'true' の形式で doraggable= のみを記述します。 以前はそのような属性がなかった場合、div 内のコンテンツを変更するには、div にクリック イベントを追加する必要があります。をクリックして、ラベルを入力入力ボックスに変更し、完全な置換を入力します。
<div contenteditable='true'>ddd</div>
<!-- 没有兼容性问题 一般用于展示页面中可修改的表格 -->
この属性は継承できます。自分で設定しない場合は、次のようになります。親に contenteditable があるかどうか
- 詳細: この属性は書き込まれていませんが、編集できません。 の場合、内部にネストされた他の要素があり、内部の要素によって設定された属性値が false の場合、これは、要素の内容は変更できないことを意味するだけで、実際にはその要素名全体とともに削除できる;
<div contenteditable> <span contenteditable='false'>姓名:</span>monkey<br> <span contenteditable='false'>性别:</span> </div>Draggable
- Dragable - ドラッグは依然として仮想的なものであり、要素の位置は変更されません(次の 2 つのドラッグ イベントを使用して、自分で実装できます)
互換性 : 通常使用できるのは chrome と safari だけですが、下で使用するのは簡単ではありません。 Firefox
タグ img タグはデフォルトでドラッグ可能ですドラッグできるため、ドラッグ イベントが存在します
ドラッグのライフ サイクル
押してからドラッグを開始するまでをドラッグ開始といい、その後ドラッグが進み、手を離すとドラッグ終了
ドラッグ開始
ドラッグ進行中ドラッグ終了
ドラッグ ドラッグの構成
- ドラッグされたオブジェクト
対象領域##ドラッグされたオブジェクトとそのライフサイクル
- #次の 3 つを通じて要素の位置をいつでも知ることができますevents clientX: マウスの x 軸の位置
- clientY: マウスの y 軸の位置
- すべてのタグ要素。ドラッグ サイクルが終了すると、デフォルトのイベントは、元の位置;
var oDragDiv = document.getElementsByClassName('a')[0]; // 在移动的一瞬间开始触发 oDragDiv.ondragstart = function (e) { console.log(e); } // 移动事件 移动的过程中会触发很多次 oDragDiv.ondrag = function (e) { console.log(e) } // 在结束时触发 oDragDiv.ondragend = function (e) { console.log(e); }
- イベントは動作によってトリガーされますが、1 つの動作で複数のイベントをトリガーすることもできます
- たとえば、キーボードとマウスを離すと Onclick がトリガーされ、onmouseup がトリガーされます
- ドラッグイベントを放した瞬間にondropイベントが発生しますが、デフォルトのondragover実行後は元の場所に戻るため、ondropイベントは発生しません。トリガーされる
- ondragover -> 元の位置に戻る
- -> ドロップイベントを実行 責任連鎖モード:
- デフォルトイベント e.preventDefault() を阻止します;
ドラッグされたオブジェクトのターゲット領域 (終了要素)
// 1. 由图形刚进入到目标区域后触发的事件, 该事件一开始触发一次 oDragTarget.ondragenter = function (e) { // 不是元素的图形进入就触发的,而是拖拽的鼠标进入触发,如果说组件里有那种图形一进入就触发的,是经过计算算出来的,一开始我们可以知道鼠标相对图形边缘的距离,然后这样计算 console.log(e); } // 不断的触发 // 2.当图形进入目标区域之后,只要坐标有变化会不断的触发, 和ondrag事件有点像 oDragTarget.ondragover = function (e) { console.log(e); } // 3.该事件表示图形进入目标区域后,一离开触发的事件 oDragTarget.ondragleave = function (e) { console.log(e); } //4. 拖拽 放下(一松手)的时候触发的事件() // 由于所有的ondragover默认当拖拽周期结束时(松手的时候),会触发默认事件-回到原处 ,所有在使用ondrop 事件的时候需要在ondragover事件中阻止默认事件 e.preventDefault() oDragTarget.ondrop = function (e) { console.log(e); } // 该拖拽事件发生在ondragend之前
小さなデモ演習
この属性は一般的には使用されません。理由は互換性が低く、Chrome でのみサポートされているためです。補足属性 datatransfer
ドラッグしてターゲット領域に入るとポインタが変化します
オブジェクトから継承 MOuseEvent オブジェクト—> マウス イベント
実際には、もう 1 つの属性があります
e.dataTransfer
この属性は ondragevent で設定する必要がありますが、表示される場合、ターゲット領域に入るとポインターが変化します
e.dataTransfer.effectAllowed = 'link'该属性只能在ondrop中使用
e.dataTransfer.dropEffect = ‘link’
type为link copy move copyMove linkMove all
h5新增标签
语义化标签
使用标签时尽量的更加语义化
h5新增了很多语义化标签
以下这些标签只是有语义,本质上和p没有区别
header
页面顶部footer
页面底部nav
导航条article
文章—可以直接被引用拿走的,比如一个博客文章内容section
段落结构–不是一个完整
实际开发中section 和 article区分的没有特别仔细
aside
侧边栏–正文旁边的地方
canvas标签
特点:要想给定画板的大小,必须在行间加样式而不是用css渲染样式
canvas是用js操纵画东西的 canvas元素本身就是一块画布,需要结合js来画画
规范,建议在每开始画一笔之前都加上ctx.beginPath(),也就是在每一次ctx.moveTo(x, y)之前加上ctx.beginPath()
1、画笔
var ctx = canvas.getContext(‘2d’)
a. 规划路径
起点:ctx.moveTo(x, y);
从哪画到哪:ctx.lineTo(x, y);
b. 描线
ctx.stroke();
c. 方法
ctx.closePath();
闭合路径,回到起点–只针对一笔画出来的图形
ctx.fill();
填充区域,不需要stroke,fill自动会stroke,默认是起始点到终止点的连线(画个圆弧很容易观察出来)
改变画笔线条的粗细,改为numpx
ctx.lineWidth = num;
同一笔画下来的图形粗细是相同的
重新开启一个路径
ctx.beginPath()
然后开始新的moveTo和lineTo
2、画矩形
注意:以下画法不需要使用moveTo()来表明起点,因为rect()方法的startX, startY已经表明了起点
- 画法1
空矩形
ctx.rect(startX, startY, length, height);
ctx.stroke()
- 画法2
空心矩形
ctx.strokeRect(startX, startY, length, height);
- 画法3
实心矩形
ctx.fillRect(startX, startY, length, height)
ctx.clearRect(startX, startY, length, height);//清除指定区域的图形
3、画圆(圆弧)
圆心(x, y), 半径®, 弧度(起始弧度, 结束弧度), 方向(顺逆时针)
顺时针填0,逆时针填1;
canvas的0度角在和数学中的一样
起止弧度的大小默认以顺时针的计算为准
90° = pi / 2
ctx.arc(x, y, r, radStart, radEnd, direction); var canvas = document.getElementById('can'); var can = canvas.getContext('2d'); can.arc(100, 100, 50, 0, Math.PI * 1.5, 1); can.fill()
4、圆角
圆角矩形当然可以用四条线 + 四个90°的弧来画,但是下面有更简单的方法,只需要画四笔
var canvas = document.getElementById('can'); var can = canvas.getContext('2d'); can.moveTo(100, 120); can.arcTo(100, 300, 300, 300, 20); can.arcTo(300, 300, 300, 100, 20); can.arcTo(300, 100, 100, 100, 20); can.arcTo(100, 100, 100, 300, 20); can.stroke();
5、贝塞尔曲线
需要规定起点moveTo(x, y)
二次:quadraticCureTo(x1, y1, x2, y2)
三次:bezierCurveTo(x1, y1, x2, y2, x3, y3)
// 4. 贝塞尔曲线 var canvas = document.getElementById('can'); var can = canvas.getContext('2d'); can.beginPath(); can.moveTo(100, 100); // quadraticCurveTo() can.bezierCurveTo(200, 200, 300, 200, 400, 100); can.stroke();
6、canvas坐标平移旋转和缩放
默认根据画布的圆点进行旋转
可以根据can.translate()进行坐标系的平移
can.translate(x, y)
然后旋转的话会根据新的圆心(x, y)进行旋转
can.translate(x, y);//全局起作用 can.rotate(旋转弧度);//全局起作用 can.scale(横向缩放, 纵向缩放) // 计算方法:每一个坐标点的x, y都乘以了相应的缩放值
因为坐标系的平移和形状的旋转是全局起作用的,所以设置了一次之后,新画的图形都会按照改变了坐标系以及旋转形状之后的条件 stroke,如果后面画的图形在stroke的时候还想按照原来的那样,就需要在改变坐标系以及旋转之前保存以下,后面再恢复,就像中断一样,保护现场–恢复现场
can.save()
可以保存坐标系的平移数据,缩放数据,旋转数据
can.restore()
7、背景填充
can.fillStyle = ‘color’ var img = new Image(); img.src = ‘’ 将图片变成纹理,然后填充 var bg = can.createPattern(img, ‘no-repeat’); img.onload = function () { }
图片默认是以canvas框的坐标系原点开始填充的,想要改变背景图片的位置的话需要使用can.translate(newX, newY);
8、颜色渐变函数
linearGradient(direction, color1 position, color2)
radialGradient(shape radius at position, color1, position, color2, position…)
var canvas = document.getElementById('can'); can = canvas.getContext('2d'); can.beginPath(); var bg = can.createLinearGradient(0, 0, 200, 200); bg.addColorStop(0, 'white'); bg.addColorStop(1, 'black');//第一个数字只能从0~1, 是百分比的概念 can.fillStyle = bg; // 辐射渐变---在chrome收藏夹中找 var bg = ctx.createRadialGradient(x1, y1, r1, x2, y2, r2); // 从起始圆的边向结束圆的边渐变辐射 // 起始圆和结束圆可以是不同的圆心 起始圆大于结束圆的时候,外界的颜色就都是起始圆的颜色,结束圆大于起始圆的时候,外界的颜色就是结束圆的颜色
9、阴影
注意这个阴影是一边一半的;
ctx.shadowColor = ‘blue’;
ctx.shadowBlur = num;
ctx.shadowOffset = num1;
阴影在x和y方向的偏移量
ctx.shadowOffsetX = num2;
ctx.shadowOffsetY = num3;
10、canvas渲染文字
ctx.strokeText(‘content’, x, y); 文字描边
ctx.fillText(‘content’, x, y);
可以通过设置fillStyle设置格式文字填充
ctx.font = ‘20px Georgia’ 两种填充都可设置上font
实心字用strokeText, 空心字用fillText
11、线端样式
ctx.beginPath(); ctx.lineWidth = '30'; ctx.moveTo(100, 100); ctx.lineTo(200, 200) ctx.lineCap = 'butt' //butt是默认的,square(方块帽子), round(半圆帽子) // 线段与线段交会时的设置 //round(圆角) bevel(直接给切了) miter(保留尖角)-可以设置miterLimit,防止过分尖锐 ctx.lineJoin = 'bevel'//miter round ctx.miterLimit = num; ctx.stroke();
canvas的合成属性
ctx.beginPath(); ctx.fillStyle = 'red'; ctx.fillRect(100, 100, 100, 100); ctx.globalCompisiteOperation = 'lighter'; ctx.beginPath(); ctx.fillStyle = 'green'; ctx.arc(300, 300, 100, 0, Math.PI * 2); ctx.fill();
SVG
svg:矢量图(放大不会失真,适合大面积的贴图,通常动画较少或者较简单)–用元素和css画
canvas:适合用于小面积的绘图,适合动画-用js画
所有闭合的图形在svg中默认都是天生充满并且有效果的
ployline默认填充,如果去掉填充,不会首尾相连;
ploygon也默认填充,如果去掉填充,会首尾相连
<style> .line1{ stoke:black; } .line2{ stroke:red; stroke-width:2px; } ployline{ fill:transparent; /*不填充*/ stroke:blueviolet; /*闭合*/ stroke-width:3px;/*线变粗了之后,只有线的中间是原来的位置,然后宽度向两边扩散,里面一半,外面一半*/ stroke-opacity:0.5;/*边框透明度*/ fill-opacity:0.5;/*填充透明度*/ stroke-linecap:round;/*square butt 额外的加了一块长度*/ stroke-linejoin:round/*bevel,miter 两个线在相交的时候的状态*/ } ploygon{ fill:transparent; stroke:black; } text{ stroke:blue; stroke-width:3px; } </style> <svg width='500px' height='500px' style='border: 1px solid'> <!-- 线段 --> <line class = 'line1' x1='100' y1='100' x2='200' y2='100'></line> <line class='line2' x1='200' y1='100' x2='200' y2='200'></line> <!-- 矩形 --> <rect heigth='50' width='100' x='0' y='0' rx='10' ry='10'></rect> <!-- rx和ry就是x和y方向的圆角 --> <circle r='50' cx='50' cy='220'></circle> <!-- 圆心在 50,220 处的半径位50的圆 --> <ellipse rx='100' ry='30' cx='400' cy='200'></ellipse> <!-- 默认会连接并填充,需要结合css控制 --> <!-- 回到哪就会停到哪 --> <polyline points='0 0, 50 50, 50 100, 100 100, 100 50'></polyline> <!-- 多边形:也是画折现,然后首尾会闭合 --> <ploygon points='0 0, 50 50, 50 100, 100 100, 100 50'></ploygon> <!-- 文本 --> <text x='300' y='50'>TEXT</text> <!-- path标签:可以做基本的画线,moveTo到哪个点,lineTo到哪个点...第一个M后面的点表示起点,H表示水平方向的位置,V表示竖直方向的位置 Z表示是否闭合,z对大小写不敏感 --> <path d='M 100 100 L 200 100' style='stroke:red;fill:transparent'></path> <!-- 大写表示绝对位置,小写字母为相对位置(基于现在的位置) --> </svg>
属性:
stroke-opacity:边框透明度
fill-opacity:填充透明度
stroke-linecap:线条端点的帽,square,round —>额外加的长度
stroke-linejoin:两个线条在相交的时候的样式,与canvas相同
path画弧
两个点,半径已知,可以确定两个圆或椭圆
<path d="M 100 100 A 100 50 0 1 1 150 200"></path> <!-- A表示弧,第三个参数表示旋转角度,第四个参数表示大弧还是小弧(1表示大弧,0表示小弧),第五个参数表示顺时针还是逆时针(0表示逆时针 1表示顺时针) -->
svg线性渐变示例,需要提前将渐变定义好,使用的时候用url引入纹理
<svg> <defs> <linearGradient id='bg1' x1=0 y1=0 x2=0 y2=100%> <stop offset=0% style="stop-color:rgb(255, 255, 0)"></stop> <stop offset=100% style="stop-color:rgb(255, 0, 0)"></stop> </linearGradient> <!-- 高斯模糊stdDeviation属性值越大,看到的越模糊 --> <filter id='Guss'> <feGaussianBlur in="SourceGraphic" stdDeviation="10"></feGaussianBlur>> </filter> </defs> <rect x=100 y=100 width=200 height=100 style='fill:url(#bg1);'></rect> </svg>
stroke-dasharray:arr1 px, arr2 px…;
stroke-dashoffset:指定填充向左移动一定的距离
viewBox:比例尺,表示svg区域的比例尺,有四个参数,前面两个参数表示起点,后面两个参数分别表示x方向和y方向的比例,和原来的长宽进行比较
高德地图就是使用了svg
audio和video
- controls
video
- paused属性:判断视频是否是暂停的
- play()方法:视频播放的方法
- pause()方法:视频暂停的方法
- duration属性:视频总共的s数
- currentTime属性:视频当前已经播放的s数
- playbackRate属性:调节速率
- volume属性:控制音量 0 ~ 1,默认为1
document.documentElement.requestFullScreen()–>进入全屏模式,相当于F11
只有http协议中视频带有Content-Range这个属性,我们才能设置时间进行跳转,只有content-type和content-length的话,视频会重新开始播放
相关推荐:《html视频教程》
以上がhtml5で追加された新しい属性と要素とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

HTMLとReactは、JSXを介してシームレスに統合して、効率的なユーザーインターフェイスを構築できます。 1)JSXを使用してHTML要素を埋め込み、2)仮想DOMを使用してレンダリングパフォーマンスを最適化し、3)コンポーネントを通じてHTML構造を管理およびレンダリングします。この統合方法は直感的であるだけでなく、アプリケーションのパフォーマンスを向上させます。

React Reactは、状態および小道具を介してデータを効率的にレンダリングし、合成イベントシステムを介してユーザーイベントを処理します。 1)Counterの例など、UseStateを使用して状態を管理します。 2)イベント処理は、ボタンクリックなどのJSXに関数を追加することにより実装されます。 3)トドリストコンポーネントなどのリストをレンダリングするには、重要な属性が必要です。 4)フォーム処理の場合、FormコンポーネントなどのuseStateおよびe.preventdefault()。

Reactは、HTTP要求を介してサーバーと対話し、データを取得、送信、更新、削除します。 1)ユーザー操作はイベントをトリガーします。2)HTTP要求を開始する、3)サーバーの応答をプロセス、4)コンポーネントのステータスと再レンダリングを更新します。

Reactは、コンポーネント開発と仮想DOMを通じて効率を向上させるユーザーインターフェイスを構築するためのJavaScriptライブラリです。 1。コンポーネントとJSX:JSX構文を使用してコンポーネントを定義して、コードの直感性と品質を高めます。 2。仮想DOMおよびレンダリング:仮想DOMおよびDIFFアルゴリズムを介してレンダリングパフォーマンスを最適化します。 3。状態管理とフック:UseStateやUseefectなどのフックは、状態管理と副作用の取り扱いを簡素化します。 4。使用例:基本形式から高度なグローバルな州管理まで、Contextapiを使用します。 5.一般的なエラーとデバッグ:不適切な状態管理とコンポーネントの更新の問題を避け、ReactDevtoolsを使用してデバッグします。 6。パフォーマンスの最適化と最適性

ReactisaFrontendLibrary、focusedonbuildinguserinterfaces.itmanagesUistateandupdateSeSefiedlyusingingingingualdod、およびinteractswithbackendservicesviaapisfordatahandling、butdoesnotprocessorstoredatoredaitaits

ReactをHTMLに組み込み、従来のHTMLページを強化または完全に書き換えることができます。 1)Reactを使用するための基本的な手順には、HTMLにルートDIVを追加し、ReactDom.Render()を介してReactコンポーネントをレンダリングすることが含まれます。 2)より高度なアプリケーションには、UseStateを使用して状態を管理し、カウンターやTo Doリストなどの複雑なUI相互作用を実装することが含まれます。 3)最適化とベストプラクティスには、コードセグメンテーション、怠zyな読み込み、React.memoとusememoを使用してパフォーマンスを向上させることが含まれます。これらの方法を通じて、開発者はReactの力を活用して、動的で応答性の高いユーザーインターフェイスを構築できます。

Reactは、最新のフロントエンドアプリケーションを構築するためのJavaScriptライブラリです。 1.パフォーマンスを最適化するために、コンポーネントおよび仮想DOMを使用します。 2。コンポーネントJSXを使用して、データを管理するために定義、状態、および属性を定義します。 3.フックはライフサイクル管理を簡素化します。 4. Contextapiを使用して、グローバルステータスを管理します。 5.一般的なエラーには、デバッグステータスの更新とライフサイクルが必要です。 6。最適化手法には、メモ、コード分割、仮想スクロールが含まれます。

Reactの未来は、究極のコンポーネント開発、パフォーマンスの最適化、および他のテクノロジースタックとの深い統合に焦点を当てます。 1)Reactは、コンポーネントの作成と管理をさらに簡素化し、究極のコンポーネント開発を促進します。 2)特に大規模なアプリケーションでは、パフォーマンスの最適化が焦点になります。 3)Reactは、開発エクスペリエンスを改善するために、GraphQLやTypeScriptなどのテクノロジーと深く統合されます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
