判断一个对象数组的某个对象是否具体某个属性,如果没有就追加对象
1 | // records是对象数组 |
js高效修改对象数组里的对象属性名
1 | appList: [ |
(因为插件的要求)改为:
1 | productArr: [ |
代码:
1 | var productArr = JSON.parse(JSON.stringify(appList).replace(/list/g, 'children')); |
1 | // records是对象数组 |
1 | appList: [ |
(因为插件的要求)改为:
1 | productArr: [ |
代码:
1 | var productArr = JSON.parse(JSON.stringify(appList).replace(/list/g, 'children')); |
CSS也可以使用SVG文件
1 | .logo{ |
SVG文件还可以转为BASE64编码,然后作为Data URL写入网页。
1 | <img src="data:image/svg+xml; base64, [data]"> |
2.1<svg>
标签
SVG代码都放在顶层标签<svg>
之中。下面是一个例子。
1 | <svg width=""1O0%" height=""100%"> |
width属性和height属性,制定了SVG图像在HTML元素中所占据的宽度和高度。除了相对单位,也可以采用绝对单位(单位︰像素)。如果不指定这两个属性,SVG图像默认大小是300像素(宽)*150像素(高)。
如果只想展示SG图像的一部分,就要指定viewBox属性。
1 | <svg width="100" height="100" viewBox="50 50 50 50"> |
viewBox属性的值有四个数字,分别是左上角的横坐标和纵坐标、视口的高度和宽度。上面代码中,SVG图像是100像素宽*100像素高
,viewBox属性指定视口从( 50,50 )这个点开始。所以,实际看到的是右下角的四分之一圆。
注意,视口必须适配所在的空间。上面代码中,视口的大小是50*50
,由于SVG图像的大小是100*100
,所以视口会放大去适配SVG图像的大小,即放大了四倍。
如果不指定width属性和height属性,只指定viewBox属性,则相当于只给到定SVG图像的长宽比。这时,SVG图像的默认大小将等于所在的HTML元素的大小。
2.2<circle>
标签<circle>
标签代表圆形。
1 | <svg width="300"" height=""180"> |
上面的代码定义了三个园。<circle>
标签的cx、cy、r属性分别为横坐标、纵坐标和半径,单位为像素。坐标都是相对于<svg>
画布的左上角原点。
class属性用来指定对应的CSS类。
1 | .red { |
SVG的CSS属性与网页元素有所不同。
2.3<line>
标签<line>
标签用来绘制直线。
1 | <svg width="300" height="180"> |
上面代码中,<line>
标签的×1属性和y1属性,表示线段起点的横坐标和纵坐标;x2属性和y2属性,表示线段终点的横坐标和纵坐标; style属性表示线段的样式。
2.4 <polyline>
标签<polyline>
标签用于绘制—根折线。
1 | <svg width="300"" height=""180"> |
<polyline>
的points属性指定了每个端点的坐标,横坐标与纵坐标之间与逗号分隔,点与点之间用空格分隔。
2.5<rect>
标签
<rect>
标签用于绘制矩形
1 | <svg width="300"" height=""180"> |
<rect>
的x属性和y属性,指定了矩形左上角端点的横坐标和纵坐标;width属性和height属性指定了矩形的宽度和高度(单位像素)。
2.6<ellipse>
标签
<ellipse>
标签用于绘制椭圆
1 | <svg width="300"" height=""180"> |
<ellipse>
的cx属性和cy属性,指定了椭圆中心的横坐标和纵坐标(单位像素); rx属性和ry属性,指定了椭圆横向轴和纵向轴的半径(单位像素)。
2.7<polygon>
标签
<polygon>
标签用于绘制多边形
1 | <svg width="300"" height=""180"> |
<polygon>
的points属性指定了每个端点的坐标,横坐标与纵坐标之间与逗号分隔,点与点之间用空格分隔。
2.8<path>
标签
<path>
标签用于制路径
1 | <svg width="300" height="180"> |
<path>
的d属性表示绘制顺序,它的值是一个长字符串,每个字母表示一个绘制动作,后面跟着坐标。
2.9<text>
标签
<text>
标签用于绘制文本
1 | <svg width="300"" height=""180"> |
2.10<use>
标签
<use>
标签用于复制一个形状
1 | <svg viewBox="0 0 30 10" xm7ns="http://www.w3.org/2000/svg"> |
<use>
的href属性指定所要复制的节点,x属性和y属性是左上角的坐标。 另外,还可以指定width和height坐标。
2.11<g>
标签
<g>
标签用于将多个形状组成一个组( group ) ,方便复用。
1 | <svg width="300" height="100"> |
2.12<defs>
标签
<defs>
标签用于自定义形状,它内部的代码不会显示,仅供引用。
1 | <svg width="300" height="100"> |
2.13<pattern>
标签
<pattern>
标签用于自定义一个形状,该形状可以被引用来平铺一个区域。
1 | <svg width="500" height="500"> |
上面代码中,<pattern>
标签将一个圆形定义为dots模式。patternunits="userspaceonuse"
表示<pattern>
的宽度和长度是实际的像素值。然后,指定这个模式去填充下面的矩形。
2.14<image>
标签
<image>
标签用于插入图片文件
1 | <svg viewBox="0 0 100 100" width="100" height="100"> |
上面代码中,<image>
的xlink:href
属性表示图像的来源。
2.15<animate>
标签
<animate>
标签用于产生动画效果
1 | <svg width="500px" height="500px"> |
上面代码中,矩形会不断移动,产生动画效果。
<animate>
的属性含义如下:
attributeName :发生动画效果的属性名。
from:单次动画的初始值。
to:单次动画的结束值。
dur:单次动画的持续时间。
repeatCount:动画的循环模式。
可以在多个属性上面定义动画。
1 | <animate attributeName="x" from="0" to="500" dur="2s" repeatcount="indefinite"/> |
2.16<animateTransform>
标签
<animateTransform>
标签对CSS的transform属性不起作用,如果需要变形,就要使用<animateTransform>
标签。
1 | <svg width="500px" height="500px"> |
上面代码中,<animateTransform>
的效果为旋转( rotate ),这时from和to属性值有三个数字,第一个数字是
角度值,第二个值和第三个值是旋转中心的坐标。from="0 200 200"
表示开始时,角度为0,围绕(200,200)开始
旋转;to="360 400 400"
表示结束时,角度为360,围绕(400,400)旋转。
1、在Android手机上安装chrome浏览器
2、打开手机的开发者模式(开发人员选项——“USB调试”打开)
3、将手机与电脑通过USB线连接,弹出对话框“是否允许USB调试”,选择“确定”
遇到的问题:
问题一:连接电脑显示 “无法识别的USB”
解决方法:参考的链接
1. 在控制面板打开设备管理器
2. 展开通用串行总线控制器,右击设备选择卸载, 每个设备重复以上操作,重启计算机系统会自动安装usb控制器
(这里我选择了unknown的卸载了,拔掉USB线,然后重启电脑)
3.重启电脑之后,重新插上USB线,会自动安装驱动
问题二:如果连不了,可以下载360手机助手连接一下手机。
4、打开手机上的chrome浏览器,并进入需要调试的页面(例如:进入百度搜索内容)
5、打开PC端chrome浏览器,在地址栏中输入chrome://inspect/,进入调试页面,此时,我们发现,chrome检测到了我们的手机
6、点击inspect 会弹出chrome调试工具,然后就可以在电脑上调试真机了
注意事项:
在上面第6步的时候,点击inspect后,弹出的面板可能是一片空白,这是因为,首次使用该功能时,需要连接外网(翻墙),初始化后,成功显示了调试工具的面板后,以后就不需要翻墙了。
在页面中加入以下代码:
1 | <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.3/vconsole.min.js"></script> |
加入之后,在移动端页面就可以看到console.log打印出来的结果了
1 | function isMobile(){ |
1 | function IsPC() { |
1 | var mobile = isMobile(); |
使用window.top.document.location.reload();的原因,是使用iframe嵌套页面的:(蓝色区域为子页面嵌套在里面)
1 | //判断是否移动设备是否横屏状态 |
1 | 【父找子】 |
实际上,页面内容是在的,只是被挡住了,所以要将最外层的页面高度设置到跟设备一样高
1 | function setOffset() { |
Firefox 浏览器内置了 自定义设计视图
的功能,可以通过 Firefox->Web 开发者->自定义设计视图
(或者摁下 Shift + Ctrl + m
)。相比网络工具,运行更加流畅,无需联网。
Shift + Ctrl + m
:手机模式和PC模式之间进行切换
在线调试工具—手动设置宽度
在移动端项目中打开控制台有两种方案:
步骤一:通过 CDN 地址引入
1 | <script src="https://cdn.bootcss.com/vConsole/3.2.2/vconsole.min.js"></script> |
步骤二:实例化
1 | <script> var vConsole = new VConsole(); </script> |
步骤三、运行项目查看项目页面中是否出现一个绿色 vConsole 的按钮,点击该按钮便可以打开控制台
步骤一、通过npm安装 vconsole
1 | npm install vconsole --save-dev |
步骤二、在项目入口文件中引入:
1 | import vconsole from 'vconsole' |
步骤三、实例化 vconsole:
1 | var vConsole = new vconsole() |
步骤四、运行项目查看项目页面中是否出现一个绿色 vConsole 的按钮,点击该按钮便可以打开控制台