part5 vue和HTML5相关知识总结

1.1插值中只能写表达式 不能写代码

1.2标记的内容使用js时要使用插值 如果给一个属性添加js语法 要使用绑定指令

1.3 class中可以绑定一个数组或者对象 如果为数组 则数组的每一项都会是该元素的值 作为如果是对象则key值是class值 value值是布尔值 用布尔值判断class是否添加

1.4 v-once只渲染元素和组件一次

1.5 v-html可以将标记的文本按照标记的方式输出 可以防止编译过程出现奇怪的东西

2.1 data必须声明返回一个初始数据对象的函数 => 返回结果对象格式

2.2不加key值序号会改变

2.3class中如果书写js代码 需要v-bind绑定

2.4数组的includes()方法:返回一个布尔值 表示数组是否包含给定的值 ***

2.5条件渲染:利用条件判断是否需要渲染 v-if,v-else 或者 v-if,v-if-else,v-else (v-if和v-else的值是相对的)

2.6 v-if(节点操作) 和 v-show(css样式操作 display操作) 在条件为真时都会显示出来且结果相同 但是在条件为假时 v-if就真的不存在了 而v-show只是隐藏了

2.7事件修饰符(写法:@click.stoo="")

  • .stop 阻止事件冒泡
  • .prevent 阻止默认事件发生
  • .capture 捕获冒泡 既有冒泡发生时 有该修饰符的dom元素先执行 若有多个 则从外到内依次执行
  • .self 将事件绑定到自身 只有自身才能触发 常用于避免冒泡
  • .once 设置事件只能触发一次
    键盘修饰符:.enter .tab .delete…(也可以用keycode值代替)

2.8表单的value变化用ev.detail.value获取
练习:单选 多选(6.15csdn) 删除数组中的数据

3.1数组的push,shift,pop等称为数组的变异方法 会重新渲染列表 例如 - arr.push(“ddd”)重新渲染 添加了ddd - arr[3]=“ddd” 只是渲染数组的第三项 如第三项存在 则修改第三项的值为ddd 若第三项不存在 则数组中加入了ddd但是在页面不会被渲染

3.2若使用this.obj[“d”]=456;给对象添加新的属性 可以添加进去但是不会在页面渲染 应使用把原对象解构出来到新的对象 给新的对象添加新的属性值this.obj = { ...this.obj, "d":456 }

3.3对象转数组方法Object.keys(obj)

3.4当你的一个变量需要其他变量的计算而得到时 其他的变量会发生变化 此时要用computed计算–提高性能 (computed和data,methods是同一级别 里面是函数 返回他的值)

3.5计算属性的setter:当手动修改计算属性的值时 触发setter函数 执行一些自定义的操作

3.6当一个值的改变影响了很多数据的值 需要使用watch监听

3.7自定义组件 语法如下: class XzyTab extends HTMLElement{//定义类继承于 constructor(){//构造函数 super();//调用父类的构造函数 const shadom = this.attachShadow({ mode:'open';//是否可以获得组件内部元素 open为开放的封装模式 closed为关闭的封装模式 }) //生成组件时执行的代码 不能使用innerHTML 需要动态创建元素 var oStyle = document.creatElement("style"); oStyle.innerHTML = ``; shadom.appendChild("oStyle"); } } custtomElements.define('xzy-tab',XzyTab);//第一个是组件名 第二个是类名

  • 自定义属性 : 例如组件内部设置data属性可以自定义传值 在书写的代码中用 获取属性的值getAttribute 获取属性的值 var data = this.getAttribute("data")

3.8数组的join方法将数组转换成字符串

3.9从服务器中接收的数据 用JSON.parse()方法解析成js使用的数据

练习 给对象添加新的属性 自定义组件之选项卡

5.1pages.json 中的page属性代表当前项目所有页面的注册信息 第一个页面是主页

5.2页面跳转 (1)<navigator url="../text/text">跳转</navigator> (2)声明函数 例如toText (){//在方法中声明函数 写uni.navigateTo() uni.navigateTo({ url:"../text/text", success() { console.log("成功"); } })
uni.navigateTo()保留当前页面 跳转

uni.redirectTo()关闭当前页面 跳转

uni.reLaunch()关闭当前页面 并关闭之前没有关闭的页面

uni.switchTab(OBJECT)跳转到tabBar页面 并关闭所有非tabBar页面(tabBar页面指小程序下导航)

uni.navigateBack()关闭当前页面 返回上一级或多级页面(参数{delta:“返回的页面数”})

5.3项目的生命周期在APP.vue中

页面生命周期

5.4sass:uni.sass文件中可通过定义颜色变量控制项目的颜色改变 例如:$uni-color-primary: #007aff;

5.5pages tabBar 见笔记

页面跳转 (1)跳转 (2)声明函数 例如toText (){//在方法中声明函数 写uni.navigateTo() uni.navigateTo({ url:"…/text/text", success() { console.log(“成功”); } })

uni.navigateTo()保留当前页面 跳转

uni.redirectTo()关闭当前页面 跳转

uni.reLaunch()关闭当前页面 并关闭之前没有关闭的页面

uni.switchTab(OBJECT)跳转到tabBar页面 并关闭所有非tabBar页面(tabBar页面指小程序下导航)

uni.navigateBack()关闭当前页面 返回上一级或多级页面(参数{delta:“返回的页面数”})

当需要跳转到tabBar页面时 只能用uni.switchTab()跳转

6.1map组件 (设置经纬度属性)

6.2 表单元素-button

  • size属性 (default:默认大小,mini:小尺寸)
  • type属性(default:白色,warn:红色) 可改用default自行写样式
  • plain属性:是否镂空true/false
  • disabled:是否禁用
  • openType:许多的功能

6.3checkbox-group:多项选择器 内部由多个checkbox组成 属性说明如下:

  • @change:选中项发生改变是触发的change事件
  • value:选中时触发的change事件 并携带的value

通过ev.detail.value()判断谁被选中

6.4editor富文本编译器

6.5表单中的值发生改变时出发@input事件

6.6lable 用来和改进表单组件的可用性 使用for属性(绑定控件的id)或将控件放在该标签下 当点击时 就会触发对应的控件

6.7picker: 从底部弹起的滚动选择器 支持五种选择器 通过model区分

  • mode = “selextor”

练习:tabBar页面 checkbox-group的多选效果

6-7-1.1HTML5的新组件-video和audio 因为flash并不属于浏览器 pc端需要插件才能运行 且在手机不兼容(audio除了width,height,poster 其他和video相同)

  • src属性引入视频音频地址 source做兼容处理
  • width/height 设置视频宽高 (等比缩放)
  • poster:设置视频播放前预览图片的地址
  • controls:显示或隐藏媒体用户控制界面
  • autoplay:媒体是否自动播放
  • loop:媒体是否循环播放
  • muted:媒体是否静音
  • prelode:是否预先加载数据 ({none:不预先加载,metedata:预先只加载媒体文件元数据(时常。大小),auto:优先加载})

通过js选择器获取oVideo元素属性(oAudio除了videoWidth,videoHeight,poster其他和video相同)属性如下:

  • videoWidth/videoHeight 视频实际尺寸(显示为0时表示视频并没有加载完成 可以在window.onlode的时候获取)
  • poster
  • duration 媒体总播放时长(只读) 在window.onlode的时候获取
  • currentTime 媒体的播放进度(已经播放多久)
  • muted (true表示静音)
  • volume:0.0-1.0音量相对值
  • controls:true表示显示
  • loop:true表示循环
  • paused:媒体是否处于暂停状态 true表示暂停(只读)
  • ended:是否播放完毕 true表示播放完毕(只读)
  • currentSrc:以字符串形式返回媒体地址(只读)->绝对路径

6-7-1.2 oVid元素和oAud元素方法:

  • play() 媒体播放
  • pause() 媒体暂停
  • load() 重新加载媒体(如你修改了source的Src地址 若不是用load方法重新加载 仍显示之前的视频)
    oVid元素和oAud元素事件:
  • play: 在视频、音频播放前触发
  • ended: 在视频,音频播放结束时触发
  • pause: 在视频,音频暂停时触发

6-7-1.3offsetWidth等是只读属性 不能赋值

7.1uni-app中video组件

  • initial-time=“20” 从20s开始播放
  • duration 显示的播放时间
  • page-gesture=“false” 是否开启音量和亮度调节手势 true/false
  • video规定尺寸300*225
  • objectFit=“cover” 当视频大小和video容器大小不一致时 视频的表现形式{contain:包含,fill:填充,cover:覆盖}
  • poster 若controls值为false则poster无效

7.2uni.createVideoContext(,)//第二个参数传入组件实例this

7.3 uni-app中的video获取通过onReady: onReady:function(res){ this.videoCon = uni.createVideoContext('myVideo',this) }

7.4视频的弹幕 属性:

  • danmu-List 弹幕列表
  • danmu-btn 是否显示弹幕按钮 只在初始化有效 不能动态变更
  • enable-danmu 是否展示弹幕 只在初始化有效 不能动态变更

7.5条件编译:用特殊的注释作为标记 在编译时 根据这些特殊的注释 将注释中的代码编译到不同平台 写法:以 #ifdef #ifndef 开头 加 %平台 以#endif结尾

  • #ifdef : if defined 仅在某平台存在
  • #ifndef : if not defined 除了某平台均存在

%平台可取值如下

  • APP-PLUS 对应App平台
  • H5 对应H5
  • MP-WEIXIN 对应微信小程序
  • MP-BAIDU
  • MP-TOUTIAO 字节跳动
  • MP 微信 支付吧 百度 字节跳动 360 qq

JS和CSS都支持条件编译

例如:<!-- #ifdef MP-WEIXIN --> <text>只在微信小程序</text> <!-- #endif --> <!-- ifdef MP_WEIXIN || H5 --> <text>微信或者H5</text> <!-- endif -->

录音 自己发弹幕 进度条效果 picker 地图

8.1地理定位(HTML5新特性) 首先应监测用户设备浏览器是否支持地理定位,除非用户同意,否则不支持```function getLocation(){
if(navigator.getLocation){
navigator.getLocation.getCurrentPosition(showPosition,showError);
}else{
alert(“浏览器不支持地理定位”)
}
}` ``

// 成功时调用
function showPosition(position){ var lat = position.coords.latitude;//纬度 var lag = position.coords.longitude;//经度 alert('纬度'+lat+',经度'+lag); }
// 失败时调用
function showError(error){ switch(error.code){ case error.PERMISSION_DENIED: alert("定位失败,用户拒绝请求地理定位"); break; case error.POSITION_UNAVAILABLE: alert("定位失败 位置信息不可用"); break; case erroe.TIMEOUT: alert("定位失败 请求获取用户位置超时"); break; case error.UNKNOWN_ERROR: alert("定位失败 定位系统失效"); break; } }
8.2uniapp中地图组件

8.3 我们用变量储存数据关闭页面会被销毁 若需要一段时间 可用cookie

cookie存储以域名区分 不同浏览器存放cookie位置不同

cookie数据是一种键值对格式为:cookie=值(两个值之间有一个;和 空格)

一个域名存放的 cookie是有限的 每个cookie存放内容大小也有限制
封装了设置cookie

8.4中文编解码 encodeURI(str):编码 decodeURI(str):解码

8.5HTML5提供两种客户端存储数据的方法:localStorage-无时间限制的数据存储(单个域名存储量较大) sessionStorage-针对session数据存储(只在session内有效 存储量更大)这两个不会请求服务器

cookie不适合大量数据存储 每个域名存储量比较小 所有域名存储量有限制 每次请求会发送到服务器

9.1uni-app 数据缓存

  • uni.setStorageSync(key,DATA)–DATE:需要存储的内容 只支持原生类型以及通过JSON.stringify(将js数据转化成字符串)序列化的对象=>同步
  • uni.getStorageSync(key)=>同步00-【

笔记本制作

10.1 HTML5新标记 datalist 定义选项列表
output 定义不同类型的输出
details(折叠效果):描述文档或文档某个部分的细节{summary:标题,figure:规定独立的内容}

10.2新的表单控件 -type=“number” 数值的输入域 min max为数字的限定

-type=“range” 数字值滑动条 除了最大最小值还有步长 必须满足(最大值减最小值的结果可以被step整除)

10.3新的表单控件还有

  • color data time datatime-local month week email search tel url

10.4HTML5新增属性 draggable:是否允许用户拖动元素(true可拖拽) 拖拽效果要配合js一起设置

  • ondragstart: 拖拽前触发(事件对象为被拖拽元素)

  • ondrag 拖拽前和拖拽结束之间 连续触发 (事件对象为被拖拽元素)

  • ondragend 拖拽结束触发(事件对象为被拖拽元素)

  • ondragenter 进入目标元素触发 相当于onmouseover(事件对象为目标元素)

  • ondragover 进入目标(鼠标位置进入) 离开目标之前 连续触发(事件对象为目标元素)

  • ondragleave 离开目标元素触发(鼠标位置离开) 相当于onmouseout(事件对象为目标元素)

  • ondrop 在目标元素上释放鼠标 必须在dragover上阻止默认事件—ev.preventDefault
    (事件对象为目标元素)

  • dataTRansvfer对象 (属于event) :

  • ev.dataTRansvfer.setData(两个参数);(例如ev.dataTransfer.setData(“index”,index++);)设置数据方法=>ondragstart事件

  • ev.dataTRansvfer.getDate();获取数据方法=>ondrop事件 - effectAllowed:设置光标

  • ev.dataTransfer.setDragImage(Oimg,Oimg.offsetWidth/2,Oimg.offsetHeight/2); 设置拖放效果为一张图片

事件顺序

  • drop不触发:dragstart>drag>dragover>dragleave>dragend
  • drop触发:dragstart>drag>dragover>drop>dragend

10.5ev.dataTRansvfer.files:获取外部拖拽的文件 返回一个fileList列表 fileList有个type属性 返回文件的类型

10.6表单验证

10.7contentEditable属性:值设置成true会使该元素内容被编辑 该属性默认是继承的 designMode: 全局对象属性 值设置成true时 所有支持contentEditable属性的元素都可被编辑

11.1canvas画布:创建一个canvas标签 和img类似 只有两个可选属性width(默认300px ) height(默认150px) 没有src alt属性 也可以使用css设置canvas宽高 但是如果宽高属性和初始化比例不一致 会出现缩放 除非确实需要缩放 否则永远不要使用css设置宽高属性
var oCG = oC.getContext(“2d”);//获得2d绘图工具

canvas元素起点为左上角(0,0)点 x向右增大y向下增大 所有元素相对原点定位

  • oCG.fillStyle=color;设置填充颜色
  • oCG.strokeStyle=color;设置描边颜色
  • oCG.lineCap =“round”;端点样式butt方形,round圆角 square(多出宽的一半)
  • oCG.lineJoin=“round”;边界连接点样式 miter直角 round圆角 bevel斜角
  • oCG.moveTo();将画笔移动到下xy点
  • oCG.lineTo();绘制直线路径 从上一个点到这个点
  • oCG.lineWidth=5;描边宽度
  • oCG.beginPath();开始绘制新路径 用于区分之前的
  • oCG.closePath();闭合路径(将开始和结束连起来)
  • oCG.stroke();描边 从上一个beginPath绘制到此命令
  • oCG.stroke();填充

11.2图形绘制 xy是距离左上角坐标 width height是尺寸

  • oCG.rect(x,y,width,height)
  • oCG.strokeRect(x,y,width,height)直接用描边画出来
  • oCG.fillRect(x,y,width,height)直接用填充画出来
  • oCG.clearRect(x,y,width,height)清楚该矩形的绘制
  • oCG.arc(x,y,r,起始弧度,结束弧度,是否为逆时针) xy为圆心坐标 true是逆时针
    圆心到三点钟方向是起始位置 弧度公式rad = deg*Math.pi/180

11.3文字绘制
oCG.font = “30px bold 宋体”;//设置字体
oCG.fillStyle = “red”;//设置颜色
oCG.textAlign = “left”;//设置水平对齐方式
oCG.textBaseline = “middle”;//设置垂直对齐方式
oCG.fillText(“要写的文字”,200,100);//绘制文字 指定坐标
// 对齐方式和指定坐标有关系 例如上面就是文字左边的坐标为200,100

12.1绘制图片 绘制视频

  • var img = new Image();//创建行对象
  • img.src = “图片路径”;
  • img.onload = function (){
    oCG.drawImage(img,sx,sy,sWidth,sHeight,x,y,width,height) 即从画布的(x,y)点绘制宽高为width,height的img
    从img的(sx,sy)点开始截取画出宽高为sWidth,sHeight的img
    }

12.2绘制背景图:不在dom中的图片需要先加载 图片加载成功后绘制背景图

  • oCG.fillStyle = oCG.createPattern(obj,“repeat”);用图片绘制填充图 设置完成后可以用此填充图来绘制任何形状
  • oCG.arc(200,200,120,0,360*Math.PI/180,false);
  • oCG.fill();

canvas也可以绘制阴影 渐变 贝塞尔曲线 等 但是性能差

12.3 配置状态的保存和恢复 类似js函数作用域 在一个oCG.save();和oCG.restore();生效 其中的内容不受全局影响

12.4 arr.sort();数组的排序 括号内接收函数 返回-1时 升序
[…arr1].sort((a,b)=>a-b);

12.5画布的变形 画布变形的是整个画布 一旦设置所有后续绘制都被影响 所以让变形只对需要变形的绘制起效 就要用到save() restore()方法

  • oCG.translate(); x,y轴偏移值 每次位移后 原点应回去
  • oCG.scale();x,y轴缩放因子
  • oCG.rotate();弧度 正值为顺时针
上一篇:python3 编写 WingPro7 注册机算法


下一篇:5.part5-2day php文件