HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)

简介: HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)



 

HTML5内联SVG

在 HTML5 中,我们能够将 SVG 元素直接嵌入 HTML 页面中:

<body>
    <svg  id = "circle"  height = "200" xmlns="http://www.w3.org/2000/svg" version="1.1" >
        <circle  id = "greencircle"  cx = "30"  cy = "30"  r = " 30"  fill = "red"  />
  </svg>
</body>

 

SVG_矩形

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300" height="300">
        <rect x="50" y="20" width="150" height="150" style="fill:blue;stroke:pink;stroke-width:5;"/>
    </svg>

 

SVG 与 Canvas两者间的区别

HTML5_MathML

MathML 是数学标记语言,是一种基于 XML 的标准,用来书写数学符号和公式的置标语言。 HTML5 可以在文档中使用 MathML 元素 ,对应的标签是 ... 。

MathML 实现一元二次方程

<math xmlns="http://www.w3.org/1998/Math/MathML">
        <!-- mrow:包裹一个或多个表达式 -->
        <mrow>
            <mrow>
                <!-- msup:包裹上标的表达式 -->
                <msup>
                    <!-- mi:包裹字符 -->
                    <mi>x</mi>
                    <!-- mn:包裹数字 -->
                    <mn>2</mn>
                </msup>
                <!-- mo:包裹运算符 -->
                <mo>+</mo>
                <mrow>
                    <mn>4</mn>
                    <mi>x</mi>
                </mrow>
                <mo>+</mo>
                <mn>4</mn>
            </mrow>
            <mo>=</mo>
            <mn>0</mn>
        </mrow>
    </math>

HTML5_拖放(Drag 和 Drop)

拖放 :即抓取对象以后拖到另一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。

1、定义可拖拽元素

       添加 draggable 属性

               true ,表示元素可以被拖拽

               false ,表示元素不可以被拖拽

       添加事件处理程序属性 ondragstart

<p id="con" draggable="true" ondragstart="dragstart(event)">
     我是可拖拽内容
</p>
<script>
     function dragstart(e){
         console.log(e)//打印事件对象
     }
</script>

2、定义拖拽数据 每个 drag event (拖拽事件对象)都有一个 dataTransfer 属性,它持有 拖拽数据。这个属性也有管理拖拽数据的方法。

setData(数据类型,数据值) 方法可以为拖拽数据添加一个项。

function dragstart(e){
     console.log(e)//打印事件对象
     // 添加拖拽数据
     e.dataTransfer.setData("text/plain", e.target.innerText);
     }

3、定义拖拽图像

dataTransfer.setDragImage(image, xOffset, yOffset) 方法自定义一张图片。

// 定义拖拽图片
        var img = new Image();
        img.src = './拖放/assets/dog.jpg';
        function dragstart(e) {
          e.dataTransfer.setData("text/plain", e.target.innerText)
            console.log(e)
            // 设置拖拽图片
          e.dataTransfer.setDragImage(img, 10, 10);
       }

4、定义放置区 当拖拽一个对象到 HTML 元素中时,浏览器默认不会有任何响 应。 想要让一个元素变成可放置区,该元素必须设置 ondragoverondrop 事件处理程序属性。

       ondragover :当元素被拖到放置区上时触发,这个时候可以去检验拖拽数据的类型,返回 false 则阻止放置,返回 true 则允许放置。

       ondrop :当元素在放置区被放置时触发。

<h5>放置区域</h5>
<div style="width:200px;height:200px;border:3px solid blue" ondragover="dragover(event)" ondrop="drop(event)">
</div>
// 当元素或选中的文本被拖到一个放置区上时触发
function dragover(event) {
    event.preventDefault()
   // 检查类型
 if (event.dataTransfer.types.includes('text/plain')) {
             return true//返回true则允许放置
     }
    return false//返回false则不允许放置
}
// 放置处理函数
function drop(e) {
    e.preventDefault()
    // 获取拖拽的数据
    var data = e.dataTransfer.getData("text/plain");
      console.log(data)
       // 将拖拽过来的数据放置在放置区
       e.target.textContent = data;
}

HTML5_Web存储

使用HTML5可以在本地客户端存储数据。

客户端存储数据的两个对象为:

       localStorage - 没有时间限制的数据存储

      sessionStorage - 针对一个 session 的数据存储

调用其中任一对象会创建 Storage 对象,在使用 web 存储前,应检查 浏览器是否支持 localStorage sessionStorage :

if (typeof (Storage) !== "undefined") {
    // 是的! 支持 localStorage sessionStorage对象!
   // 写一些自己的逻辑
}else {
   // 抱歉! 不支持 web 存储。
}

if (typeof (Storage) !== "undefined") {
     //设置键值对,存储数据
            localStorage.setItem('name','itxiaotong')
            localStorage.setItem('thing','study')
     //通过键获取值
          console.log(localStorage.getItem('name'))
     //通过索引获取键名
          console.log(localStorage.key(1))
          setTimeout(function () {
    //清除数据
                //   localStorage.removeItem('name')
                localStorage.clear()
           }, 3000)
       }

if (typeof (Storage) !== "undefined") {
     //设置键值对,存储数据
            sessionStorage.age=18
            console.log(sessionStorage.age)
            sessionStorage.setItem('name','itbaizhan')
            sessionStorage.setItem('thing', 'study')
     //通过键获取值
          console.log(sessionStorage.getItem('name'))
     //通过索引获取键名
          console.log(sessionStorage.key(1))
            setTimeout(function () {
   //清除数据
    sessionStorage.removeItem('name')
                sessionStorage.clear()
           }, 3000)
       }

HTML5_Web Workers

Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程 创建 Worker 线程 ,将一些任务分配给它运行。

在主线程运行的同时, Worker 线程 在后台运行,两者互不干扰。等到 Worker 线程 完成计算任务,再把结果返回给主线程。

1、检测浏览器是否支持 Web Worker

 

if(typeof(Worker)!=="undefined")
   {
   // 是的! Web worker 支持!
   }
  else
   {
   // //抱歉! Web Worker 不支持
   }

2、创建 Web Worker 对象 , new Worker(脚本文件)

w = new Worker("./demo_workers.js");

3、定义 worker 具体任务

//demo_workers.js
var i=0
setInterval(function(){
    i=i+1
    postMessage(i)
},1000)

4、worker 发送接收消息

       发送消息, postMessage(消息)

//demo_workers.js
var i = 0;
setTimeout(function(){
    i=i+1
   postMessage(i)//使用postMessage(数据)发送
},3000)

添加 onmessage 事件监听器,监听接收消息,访问 event.data 获得消息

w.onmessage = function (event) {
                document.getElementById("result").innerHTML = event.data;
               };

5、关闭 worker

Worker 线程无法读取本地文件,即不能打开本机的文件系统 ( file:// ),它所加载的脚本,必须来自网络。

rem介绍

rem :它就是一个css单位,代表元素字体的大小;指相对于根元素 的字体大小的单位

1、根元素字体大小

html{
 font-size:16px
}

2、设置其它元素大小

#box{
    width:10rem
}

JS设置根元素字体大小

使用响应式是不能为所有设备全适配,但是用 JS 是可以实现全适配。

window.onload = function () {
          document.documentElement.style.fontSize = (document.documentElement.clientWidth / 750) * 100 + 'px'
       }
        window.onresize = function () {
           document.documentElement.style.fontSize = (document.documentElement.clientWidth / 750) * 100 + 'px'
       }

rem应用

<style>
        html,
        body {
            width: 100%;
            height: 100%;
       }
        html,
        body,
        div,
        p,
        img,
        input {
            margin: 0;
            padding: 0
       }
        .header {
            width: 100%;
            height: 1.5rem;
            padding: 0rem 5.8rem;
            box-sizing: border-box;
            background-color: #eee;
            display: flex;
            align-items: center;
       }
        .left {
            width: 1.68rem;
            height: 0.63rem;
            line-height: 0.63rem;
       }
        .center {
            flex: 1;
            padding: 0.1rem 0.3rem;
            box-sizing: border-box;
            height: 0.4rem;
       }
        .center input {
            display: block;
            width: 100%;
            height: 0.4rem;
            border-radius: 0.4rem;
            border: 0.02rem solid #ff5000
       }
        input:focus {
            outline: none;
       }
        .right {
            width: 0.8rem;
            height: 0.8rem;
            line-height: 0.8rem;
       }
        img{
            width: 100%;
            height: 100%;
       }
   </style>

 

<div class="header">
        <div class="left">
            <img src="https://gw.alicdn.com/imgextra/i4/O1CN019XWXNq1aAPOVMYSiu_!!6000000003289-2-tps-167-63.png" alt="" >
        </div>
        <div class="center">
            <input type="text">
        </div>
        <div class="right">
            <img src="https://gw.alicdn.com/imgextra/i4/O1CN0 1ftum4629SHP6bCqTm_!!6000000008066-2-tps-99-99.png" alt="">
        </div>
    </div>
    <script>
        window.onload = function () {
           document.documentElement.style.fontSize = (document.documentElement.clientWidth / 1920) * 100 + 'px'
       }
        window.onresize = function () {
           document.documentElement.style.fontSize = (document.documentElement.clientWidth / 1920) * 100 + 'px'
       }
    </script>
目录
相关文章
|
9天前
|
XML 移动开发 前端开发
HTML5 SVG和canvas的性能探讨
HTML5 中的 SVG(可缩放矢量图形)和 Canvas(画布)分别用于网页图形绘制。SVG 基于矢量图形,使用 XML 描述,适合静态或少量动态内容(如图标、图表),易于编辑且保持高分辨率;Canvas 则基于位图,通过 JavaScript 绘制,更适合快速更新大量图形的场景(如游戏、动态动画),但在复杂图形计算时可能遇到性能瓶颈。总体而言,SVG 适用于静态和少量动态内容,而 Canvas 更适合高频率更新和性能要求高的场景。
|
9天前
|
移动开发 前端开发 JavaScript
HTML5 Canvas详解及应用
HTML5 Canvas 允许通过 JavaScript 在网页上动态绘制图形、动画等视觉内容。首先在 HTML 中定义 `&lt;canvas&gt;` 元素,并通过 JavaScript 获取画布上下文进行绘制。常见方法包括绘制矩形、路径、圆形和文本,以及处理图像和创建动画效果。适用于游戏开发、数据可视化、图像编辑和动态图形展示等多种应用场景。需要注意性能优化、无状态绘制及自行处理事件等问题。
|
6天前
|
移动开发 前端开发 数据挖掘
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
|
8天前
|
XML 前端开发 JavaScript
Html:CSS介绍
Html:CSS介绍
23 1
|
8天前
|
前端开发
Html:CSS的书写位置
Html:CSS的书写位置
17 0
|
3天前
|
前端开发 JavaScript 搜索推荐
打造个人博客网站:从零开始的HTML和CSS之旅
【9月更文挑战第32天】在这个数字化的时代,拥有一个个人博客不仅是展示自我的平台,也是技术交流的桥梁。本文将引导初学者理解并实现一个简单的个人博客网站的搭建,涵盖HTML的基础结构、CSS样式的美化技巧以及如何将两者结合来制作一个完整的网页。通过这篇文章,你将学会如何从零开始构建自己的网络空间,并在互联网世界留下你的足迹。
|
4天前
|
前端开发 JavaScript 搜索推荐
打造个人博客网站:从零开始的HTML与CSS之旅
【9月更文挑战第31天】在这个数字时代,拥有一个个人博客网站是展示自我、分享知识和连接世界的重要方式。本文将引导你通过简单的HTML和CSS知识,一步步构建起你的在线空间。无论你是编程新手还是希望通过实践加深理解,这篇文章都将是你的理想指南。我们将探索基本概念,实现页面布局,并点缀以个性化样式,最终将静态页面转变为动态交互式网站。准备好了吗?让我们开始吧!
|
7天前
|
XML 前端开发 JavaScript
jQuery HTML / CSS 方法
jQuery HTML / CSS 方法
9 2
|
9天前
|
JavaScript 前端开发
JavaScript HTML DOM - 改变CSS
JavaScript HTML DOM - 改变CSS
16 4
|
6天前
|
前端开发 JavaScript
HTML+JavaScript+CSS DIY 分隔条splitter
HTML+JavaScript+CSS DIY 分隔条splitter
下一篇
无影云桌面