前端笔记

自己写东西难免用到前端东西,配合着某宝几块钱的视频也算是系统的过了一遍吧..

把笔记发上来供以后查阅。

对整篇笔记的标记解释

标记 解释
🍟 了解
🌙 熟悉
重点
👑 重中之重
🐚 案例
🍓 甜点,解释,额外理解
🍦 作用,方法,属性
🔔 注意
🚀
💎 种类
🏆 总标题

笔记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
视口: 在移动端观看不缩放<meta name="viewport" content="width=device-width, initial-scale=1"> 

块元素->一行只能有一个 可以更改宽高值
内联元素-> 一行可以有多个 不能更改宽高值

☢☢☢☢☢☢<标签>☢☢☢☢☢☢

HTML 注释 <!--This is a comment -->
<html> 描述网页
<body> 是可见的页面内容
<h1> 被显示为标题 <h1> - <h6> 大->小
<p> 段落
<hr /> 创建水平线
<br /换行> &nbsp;空格, &lt;<, &gt;>
<pre> 预格式文本它保留了空格和换行,很适合显示计算机代码
<div> 块级使用容器 (不能被P嵌套)
<span> 内联使用 容器
<a href="http://www.w3school.com.cn" target="_blank(新页面)">This is a link</a>
<img src="w3school.jpg" alt="图片无法显示时提示" width="104" height="142" />

文本格式化标签 ->直接用以下标签包裹文本或者格式化内容
<b> 定义粗体文本。
<big> 定义大号字。
<em> 定义着重文字。
<i> 定义斜体字。
<small> 定义小号字。
<strong> 定义加重语气。
<sub> 定义下标字。
<sup> 定义上标字。
<ins> 定义插入字。
<del> 定义删除字。

★ CSS 样式

㊙ 外联式<link rel="stylesheet" type="text/css" href="mystyle.css">
㊙ 嵌入式
㊙ 内联式

★ CSS选择器 <style></style>
通用选择器 *
▲ 标签选择器 div
▲ 类选择器 class
▲ id选择器 id

★ 组合选择器 <style></style>
多元素选择器: 逗号
后代选择器: 空格
子代选择器: 大于
毗邻选择器: 加号

⭐ 属性选择器 <style></style>
a 标签的另类选择 [href="www"]{}

⭐ 伪类选择器<style> input:focus(点下) {border: 1px solid/dashed red;outline: none;} </style>


☢☢☢☢☢☢☢☢☢☢<属性>☢☢☢☢☢☢☢☢☢☢

❤属性 ❤作用 ❤举例

width 设置元素(标签)的宽度 width: 200px;

height 设置元素(标签)的高度 height: 200px;

background-color 设置元素背景色 background-color: pink; rgba(r,g,b,alph)
background-image 设置元素背景图片 background-image: url('./images/bg01.jpg')
background-repeat 设置背景图片是否重复 background-repeat: not repeat;
background 设置元素背景色或者背景图片 background: url('./images/bg01.jpg') pink; rgba(r,g,b,alph) not repeat;


border 设置元素四周的边框 border: 1px solid pink;会影响宽高

color 设置文字的颜色 color: red;

font-size 设置文字的大小 font-size: 12px;

font-family 设置文字的字体 font-family: 'Microsoft Yahei';

font-weight 设置文字是否加粗 font-weight: bold;

line-height 设置文字的行高 line-height: 24px;

text-decoration 设置文字的下划线 text-decoration:none; (取消下划线)

margin 设置外边距 上右下左/没有对面拿
设置水平居中 0px auto

padding 设置内边距 会影响宽高

text-align 设置文字水平对齐方式 text-align:center

text-indent 设置文字首行缩进 text-indent:32px;(默认字-16px)

display
- none 元素隐藏且不占位置
- block 此元素会被显示为块元素
- inline 此元素会被显示为内联元素
- inline-block 行内块元素 ( 了解 )

overflow 管理元素异常溢出 hidden隐藏/scroll滑动/auto首选

border-radius 边框圆角 border-radius:30px;

cursor 鼠标图标变化 cursor:pointer;

list-style:none;


⭐ 浮动: ( float )

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

margin父子塌陷:
- 如果父级 div 中没有 border, padding, inline content,
子级 div 的 margin 会一直往上找,直到找到某个标签包括 border, padding, inline content中的其中一个, 然后按此 div 进行 margin.

margin兄弟塌陷:
- 如果上下两个元素都有设置相对的margin值, 则选择大的.

盒子的真实尺寸
盒子的width和height值固定时,如果盒子增加border和padding,盒子整体的尺寸会变大,所以盒子的真实尺寸为:
- 盒子宽度 = width + padding左右 + border左右
- 盒子高度 = height + padding上下 + border上下

⭐ 列表
有序列表 ->有序号
<ol>

无序列表
<ul>


⭐ emmet 语法
div.box>.box1+.box2
#page>div.logo+ul#navigation>li*5>a{Item $} / 大于号{值}/ $序号
div#header+div.page+"div#footer.class1.class2.class3" /"平级多个id和class"

⭐ HTML表单
表单内使用p会有默认宽高
用于搜集不同类型的用户输入
🐚 <form>标签 定义整体的表单区域
<form action="http://www..." method="post"><!-- action->发送目标地址 -->
<p>
<label for="username">姓名:</label> <!--for 与 input 关联,点击label,焦点也会出现-->
<input type="text" name="username" id="username" placeholder="请输入姓名"/> <!-- placeholder 默认底值 -->
</p>
<p>
<label>密码:</label> <!-- password->***** -->
<input type="password" name="password" />
</p>
<p>
<label>性别:</label> <!-- radio->单选 --><!-- name->关联 -->
<input type="radio" name="gender" value="0" />
<input type="radio" name="gender" value="1" />
</p>
<p>
<label>爱好:</label><!-- checkbox->多选 --><!-- value->传值 -->
<input type="checkbox" name="like" value="sing" /> 唱歌
<input type="checkbox" name="like" value="run" /> 跑步
</p>
<p>
<label>照片:</label><!-- file->选择文件 -->
<input type="file" name="person_pic">
</p>
<p>
<label>个人描述:</label><!-- textarea->区域输入 -->
<textarea name="about"></textarea>
</p>
<p>
<label>籍贯:</label><!-- select->下拉 --><!-- option->选项 -->
<select name="site">
<option value="0">北京</option>
<option value="1">上海</option>
</select>
</p>
<p>
<input type="submit" name="" value="提交"><!-- submit->提交 -->
<input type="reset" name="" value="重置"><!-- reset->重置 -->
</p>
</form>

⭐ 表格元素及相关样式
table{
border-collapse:collapse;<!-- 边框重合 -->
text-align:center;<!-- 居中 -->
}
<table>表格
<thead>表头
<tbody>数据体
<tfoot>脚注
<th>标题
<tr>
<td>
<td colspan='2'>1</td>列合并
<td rowspan='2'>2</td>行合并

⭐ 定位

文档流(了解)
position >> left,top,right,bottom
- static 不如不写
- relative 相对定位,占位,相对原来的位置定位
- absolution 绝对定位,不占位,脱离文档流,相对于上一个设置了定位的父级元素定位,如果找不到,脱离文档流,相对于body定位.
- fixed 固定定位,不占位,相对于浏览器窗口定位
元素层级 >> 脱离文档流后的层叠顺序
- z-index

🐚 弹窗 >> 叠层
- opacity 透明度
position - margin>auto 犯冲

🌙 嵌套网页
iframe
- src 嵌套网页地址
- frameborder 边框
- name
- a 标签搭配 <!-- a的target关联iframe的name -->

⭐ CSS权重值计算
- 内联样式 1000
- 标签选择器 1
- 类选择器 10
- 伪类选择器 10
- id选择器 100

🌙 打包前端
hbuilder
--------------------
⭐ 打印名片敲三遍

🌙 js引入方式
行间事件 onclick 任何标签都可以添加的属性
嵌入 <head><script></script></head>
外部引入 <script src="js/xxx.js"></script>

🌙 变量
var a = 5

⭐ 数据类型
number 数字
string 字符串
boolean 布尔 -> 小写
undefined 未定义类型 -> 未定义类型不是未定义错误,它本身有一个undefined值
null null类型 var age = null , 它的值是null,它的上面有一个object类型
object 复合类型
-- typeof -- 查看类型

🌙 注释与分号
css <!-- 这是注释 -->
js // 这是单行注释
通用多行注释 /* 这是注释 */
分号 根据规定可加可不加

🌙 标识符
区分大小写
第一个字符必须是字母/下划线/$
其他字符可以是字母/下划线/$/数字

🌙 命名风格
对象 o
数组 a
字符串 s
整数 i
布尔值 b
浮点数 f
函数 fn
正则 re
jQuery对象 $

⭐ 函数
定义 function 函数名( 参数 ){
}

调用 函数名( 参数 )

js 中有预解析功能,函数调用可放在定义前不出错
变量定义也有预解析,但变量赋值没有预解析

返回值 return 返回值或对象/结束函数运行

⭐ 全局变量与局部变量
定义在函数体外的变量都是全局变量,在函数体内不需要global声明可以直接调用.
定义在函数体内的变量如果没有var声明,也是一个全局变量.
定义在函数体内的变量如果使用var声明,则是函数体内的局部变量,在函数体外不可用.

⭐ 匿名函数与封闭函数
- 没有名字的函数就是匿名函数.
function () {}
- 封闭函数 - 匿名函数的调用.
(function () {})()
!function () {}()
~function () {}()

🔔 条件运算符
== 只要求值相当(比较时会转换数据类型)
=== 要求值和类型都相等(等同Python'==')
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于

🔔 逻辑运算符
&& and
|| or
! not

👑 异或运算 相同 1 不同 0


🏆 if
if (判定条件){
执行语句
}else if{

} else {

}


🐚 事件与取值

onclick 单击后触发
ondbclick 双击后触发

alert(str) -> 弹窗,可用来当作print使用,阻断程序运行,碰到alert,alert下面的代码不加载不显示,直到被点击

console.log() -> 相当于print

onmouseover 鼠标进入(进入子元素也触发)
onmouseenter 鼠标进入(进入子元素不触发)

onmouseout 鼠标离开(离开子元素也触发)
onmouseleave 鼠标离开(离开子元素不触发)

getElementById 获取到该id的标签

getElementByClassName 获取到该class的集合

window.innerHeight 获取浏览器高度

innerHTML 获取标签内的内容
opacity 透明度

document.body.scrollTop || document.documentElement.scrollTop 获取当前页面滚动条纵坐标的位置
两个都是获取滚动条滚动的高的方法,但因为浏览器的兼容性原因,总会只有一个生效,所以使用或连接

window.onload = function (){ -> 使onload后的函数 在body 加载后执行
var oDiv= document.getElementById(标签id) -> 获取到此id的标签
var oDiv= document.getElementByClassName(class)[0] -> 获取到此class的集合中第0号标签
oDiv.onclick = function (){ -> 匿名函数绑定事件
alter('hello world')
}
oDiv.href -> 获取元素属性
oDiv.href = '123' -> 更改元素属性
oDiv.style.color = 'red'
oDiv.innerHTML -> 获取此标签内的文本(标签/文字)
oDiv.innerHTML= '<p>哈哈<p>' -> 改变标签内的文本
oDiv.className = 'username' -> class必须要className才可以获取到,只此一个特殊
可更改类名以更换样式或更改引用的样式文件路径以更换整体样式
}

👑 getElementById 写在元素上面,会获取不到
第一种方法: 将js放在页面最下面
第二种方法: 将js语句放在window.onload 触发的函数里面

🌙 匿名函数
没有名字的函数前 跟上事件


--------------------

🌙 数组
var 数组名 = new Array(元素一,元素二,...)
var 数组名 = [元素一,元素二,.....]
🍦 数组的属性:
length
🍦 数组的方法:
join() 将列表所有元素以指定字符串为分隔组成字符串
push()
pop() 从数组最后增加或删除元素
reverse() 将数组反转
indexOf() 返回数组中元素第一次出现的下标索引值,元素不存在返回-1不报错
splice() 在数组中增加或删除成员 -> 数组名.splice(操作元素下标,
操作几位[该参数为0默认增加元素不删除,否则默认进行删除操作],
添加的新元素[可不写]) -> 返回被操作对象
🐚 案例
var aList = [1,2,3]
console.log(aList.length)
alert(aList[1]) -> 只有从左向右取,不可以倒取
console.log(aList.join('-'))
aList.push('哈哈')
aList.pop()
aList.reverse()
aList.indexOf('2')
alert(aList.splice(1,2))
alert(aList.splice(1,2,'哈哈','呵呵'))

⭐ for循环
for (条件) { 执行代码
}
🐚 案例
for (var i = 10;i>0;i++){ 执行代码
}

🌙 字符串
字符串无论和什么相加,结果都是字符串

🍦 字符串的方法
parseInt() 将数字字符串转化为整数
parseFloat() 将数字字符串转化为小数
parsedoubleFloat() 将数字字符串转化为小数(长)
split() 把一个字符串以字符组成的数组
substring() 切片,无步长
🐚 案例
var a = 123
var str = '123'
console.log(parseInt(str))
str.substring(0,2)
str.split('').reverse().join('') 字符串反转

🍓 调试
alert() 弹窗
console.log() 浏览器控制台
document.title() 网页标题
document.write() 写到body里

👑 定时器
🍦 作用:
定时调用函数
制作动画
模拟网络延时的情况
💎 种类:
setTimeout() 执行一次的定时器 setTimeout(func,3000) ->函数名,毫秒
setInterval() 执行多次的定时器
clearTimeout() 关闭只执行一次的定时器 clearInterval(哪个定时器)
clearInterval() 关闭反复执行的定时器
🐚 案例:
setTimeout(func,3000)
var timer = setInterval(func,3000)
function func () {
alert('调用了func')
clearInterval(timer)
}

--------------------
一个框架里,API始终在更新,是记不完的.
--------------------

🍓 库和框架,没有具体的界限,一般的来讲:
库 小而精
框架 大而全


<!-- 淘宝模版市场 -->

🏆 jQuery 🏆

🍓 加载顺序
body->标签->jQuery.ready->资源->window.onload

🍦 方法
$(document).ready(function(){}) 作用与window.onload相同,完全版
$(function(){}) 作用与window.onload相同,精简版
index() 获取元素相对于同级元素的下标位置
animate - 翻译为'动画' 动画效果
参数一:要改变的样式属性值,写成字典
参数二:动画持续的事件,单位为毫秒
参数三:动画曲线,默认为'swing':缓冲运动(加速-匀速-减速),'linear':匀速运动
参数四:动画回调函数,动画完成后执行的匿名函数
html() 作用与innerHTML相同,里面写内容为替换,不写为取值
val() 不传值获取input的内容,传值默认写入
prop() 获取标签自带的属性值
attr() 获取标签内的所有属性值
each() 标签对象循环
click() 作用与onclick相同
dblclick() 作用与ondbclick相同
focus() 元素获得焦点,可添加回调函数
blur() 元素失去焦点,可添加回调函数
hover() 同时为mouseenter和mouseleave事件指定处理函数,可以写两个调用函数
submit() 用户递交表单,自己手写就使用自己的,不写就自动发给form的action后台
如果内部返回一个false,表单不会被提交
keyup keydown mousemove


🍦 jQuery选择器 - 选择规则和css样式相同
🍓 - 通过选择器拿到的是jQuery对象,通俗的讲究是一个容器,能够使用下标取值
$('#box')
$('div')
$('.pbox')
$('a[href="#"]')
$(this) 代表调用事件的标签对象 this->标签 $(this)->对象

⭐ 选择集过滤 - 得到的都是对象
$().has() 包含 $('div').has('p') 选择包含p元素的div元素
$().not() 不包含 $('div').not('.myclass') 选择clss不等于myClass的div元素
$().eq() 下标等于 $('div').eq(5) 选择下标为6的div元素 - equal:相等 使用[index]获取的不是对象,不方便使用

⭐ 选择集转移
$('').prev() 被选择的元素前面紧挨的同辈元素
$('').prevAll() 被选择的元素前面所有的同辈元素
$('').next() 被选择的元素后面紧挨的同辈元素
$('').nextAll() 被选择的元素前面所有的同辈元素
$('').parent() 被选择的元素的父元素
$('').children() 被选择的元素的所有子元素
$('').siblings() 被选择的元素的所有的同级元素(不包括自己))
$('').find('') 被选择的元素'内'的满足条件的标签

⭐ 操作样式
$('').css('width') 获取样式
$('').css('width','100px') 单个样式的修改/设置
$('').css({'width':'100px','color':'pink'}) 多个样式的修改/设置
$('').addClass('divbox') 追加类名
$('').removeClass('divbox') 移除类名
$('').toggleClass('divbox') 追加/移除,自动检测元素是否有此类名,若有则移除,若没有则追加

🐚 案例
<script src="./jquery-1.12.4.min.js"></script>
<style>
.box {
width: 100px;
height: 100px;
background-color: green;
}
.divbox {
width: 300px;
height: 300px;
background-color: pink;
}
</style>
<script>
$(function(){
// 选取元素
$('div')
$('#box')
$('.pbox')
$('a[href="#"]')
// 选择集过滤
$('div').has('p')
$('div').not('.box')
$('ul li').eq(2)
// 选择集转移
$('.box').prev().html('哈哈')
$('.box').prevAll().html('hehe')
$('.box').next().html('hehe')
$('.box').nextAll().html('hehe')
$('.box').parent().prev().html('嘿嘿')
$('.box').parent().next().children().html('哈哈')
$('.box').parent().siblings().html('haha')
$('div').find('.secondbox').html('haha')
// 操作样式
$('#box').css({'width':'100px','height':'100px','background-color':'yellow','color':'pink'}) //修改样式
$('.box').addClass('divbox') //追加类名
$('.box').removeClass('box') //移除类名
$('button').click(function () {
$('.divbox').toggleClass('box') //新增/移除类名
$('.box').toggleClass('divbox') //新增/移除类名
})
})
</script>
<body>

<!-- 选取元素 -->
<div ></div>
<div id="box">box</div>
<div class="pbox">pbox</div>
<a href="#">a</a>

<!-- 选择集过滤 -->
<div id="box">box</div>
<div>item $$$ <p></p></div>
<div>item $$$ <p></p></div>
<div>item $$$</div>
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
</ul>

<!-- 选择集转移 -->
<div id="box">1</div>
<div>2</div>
<div><div class="box">3</div></div>
<div><a href="#">四号的a标签</a></div>
<div><p class="secondbox"></p></div>
<div class="last">
<ul>
<li><a href="">微微</a></li>
</ul>
<p>wewe</p>
</div>

<!-- 操作样式 -->
<div ></div>
<div id="box">box</div>
<div class="pbox">pbox</div>
<a href="#">a</a>
<div class="box">哈哈</div>
<button>按钮</button>
</body>

--------------------
下载node,自带npm,npm install animate
--------------------

⭐ jQuery特殊效果 - 与display:none;搭配使用
fadeIn() 淡入
fadeOut() 淡出
fadeToggle() 切换淡入/淡出
hide() 隐藏
show() 显示
toggle() 切换隐藏/显示
slideDown() 收起
slideUp() 展开
slideToggle() 切换收起/展开

🐚 案例
<script>
$(function(){
$('.box').fadeIn()
$('.box').fadeOut()
$('.box').fadeToggle()
$('.box').hide()
$('.box').show()
$('.box').toggle()
$('.box').slideDown()
$('.box').slideUp()
$('.box').slideToggle()

})
</script>
<style>
.box {
width: 100px;
height: 100px;
background: blue;
display: none;
}
</style>
<body>
<button class="button"></button>
<div class="box">
</div>
</body>

🍟 正则表达式
🔔 定义
var re = /规则/参数 参数[全文检索:g,忽略大小写:i],可以不写
🔔 规则
规则和Python一样
🔔 测试
var result = re.test(str) 返回值要么是true要么是false


🍓 为jQuery添加函数
🍟 jQuery.fn.slideLeftHide = function slideLeftHide(speed) {}

--------------------

🌙 事件冒泡
小明被打一下,无论他反击不反击,
都会告诉他爸,看他爸咋干,
他爸不论反击不反击,也都会告诉小明他爷
以此类推,click和mouseover都属于冒泡事件

在一个对象上触发某类时间,如果此对象定义了此事件的处理程序,
那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,
那么这个事件就会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有
同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)

🍦 事件冒泡的作用
事件冒泡允许多个操作被集中处理(把时间处理器添加到一个父级元素上,避免把
事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件.

⭐ 阻止事件冒泡和默认行为
return false

⭐ 设计模式
解耦 - 解除耦合度 - 把复杂的事情简单化
耦合度越高对代码后期越不利
⭐ 事件委托
$('父级').delegate(参数一,参数二,参数三)
参数一 代理对象
参数二 代理对象委托的事件
参数三 代理事件的触发函数

🌙 Dom操作
1.移动现有标签的位置
2.将新创建的标签插入到现有的标签中
🍦 方法
$('selector').append($(content)) 在元素内部添加,从后面放入
$(content).appendTo($('selector'))

$('selector').prepend($(content)) 在元素内部添加,从前面放入
$(content).prependTo($('selector'))

$('selector').after($(content)) 在元素外部添加,从后面放入
$(content).insertAfter($('selector'))

$('selector').before($(content)) 在元素外部添加,从前面放入
$(content).insertBefore($('selector'))

$('selector').remove($(content)) 删除标签

🌙 js对象
🐚 案例
var person = {
name:'maimai',
age:18,
sayName:function(){
alert('My name is' + this.name);
}
}
alert(person.name)
person.name = 'shuaibi'
person.sayName()

⭐ Json
- 普遍使用的数据传输形式
- 除了数字,都要加双引号
🐚 案例
var json = {
"name":"tom",
"age":18
"school":{
"name":"luoyangnormaluniversity"
"location":"luoyang"
}
}
json.school.name

⭐ ajax - 封装在jQuery
🍓
同步 - 做完一件事后再做另一件事
异步 - 同时做几件事
ajax实现了局部刷新(无刷新) - ajax可以自己发送http请求不用通过浏览器的地址栏,
所以页面整体不会刷新,ajax获取到后台数据,更新页面显示数据的部分,就做到了页面局部刷新.
🍦 ajax使用方法(常用参数)
$.ajax({
url:'请求地址',
type:'请求方式:默认是'GET',常用的还有'POST'',
dataType:'设置返回的数据格式,常用的是'json'格式,也可以设置为'html'',
data:'设置发送给服务器的数据',
success:'设置请求成功后的回调函数',
error:'设置请求失败后的回调函数',
async:'设置是否异步,默认值为'true',表示异步'
})
🐚 案例
$.ajax({
url:'/change_data',
type:'GET',
dataType:'json',
data:{'code':30000},
}).done(function(data){
console.log(data)
}).fail(function(error){
console.log('error')
})

--------------------
nodemon 运行js文件
--------------------

👑Vue👑
🔔 方便理解
Vue的使用目的就是让js少写点,使固定的逻辑尽量写在标签中,这样就把jquery获取标签的步骤给省掉了

⭐ vue使用
第一步引入
第二步div给坑
第三步vue对象实例化
var vm = new Vue({ // 变量赋值可写可不写
})

🔔 注意 
    - new Vue()   实例化对象
    - 参数
        el:关联HTML部分标签,使vue中的内容能够加载到HTML里面
        data:页面中需要的数据,可以通过这个属性进行初始化,进而赋值到HTML页面去
        methods:可以给当前vue对象添加方法,一般我们都会把方法放在这个对象里面
        computed:计算属性,可以给data里面的值添加一些管理
        watch:如果需要监控data中的某些属性值,可以在watch中添加监听方法  - 属于设计模式(观察者模式)用的很少
    - 小胡子语法:{{}}(插值表达式)  - 不可以在属性中使用
    - 点击事件:v-on

⭐ 指令
    'v-' 开头的都是指令 - 只要是指令,data中的值可以直接使用
    v-if        接受一个布尔值,True显示,false隐藏            - 隐藏的实质是标签被销毁
    v-else      和v-if挨着                                  -共享if布尔值
    v-else-if   接受另一个布尔值                             - 可以无限使用和v-if挨着
    v-on        触发事件                                    - 缩写 >>>  :
    v-bind      属性绑定data                                - 缩写  >>>  @
    v-show      隐藏或展示                                  - 隐藏的实质是标签display:none
    v-hide      隐藏或展示                                                                                                                                     - 隐藏的实质是标签display:none

⭐ 三元表达式 - 三元表达式在属性里必须写在数组中
    {{isTrue ? '123' : '345'}}    
    {{ok ? 'YES':'NO'}} 

⭐ Class绑定(class和v-bind配合使用) - 受data控制
    <div :class="{}"></div>
    <div :class="[]"></div>

🐚 案例
<script src="./vue.min.js"></script>
<body>
    <div id="app">
        {{ msg }}     // 小胡子语法

        {{isTrue ? '123' : '345'}}      // 如果True,输出123,否则输出345
        {{ok ? 'YES':'NO'}}             // 如果True.输出YES,否则输出NO

        <div v-if='isOK'>if</div>
        <div v-else-if='isOK'>elif</div>
        <div v-else>else</div>

        <button v-on:click="func"></button>     // 函数使用
        <button @click="func"></button>     // 函数使用 - 缩写

        <img src="" v-bind:alt='msg'>      // 属性展示data数据
        <img src="" :alt='msg'>      // 属性展示data数据 - 缩写

        {{ msg+1 }}                     // 可写逻辑不推荐,推荐写入computed
        {{ newMsg }}                    // computed中的逻辑运算

        <button @click="msg += 1">按钮</button>
        <button @click="func">按钮</button>

        <div :class="{box:isTrue,divbox:isHave}">div</div>  // class 绑定
        <div :class="[firstStyle, secondStyle]">div</div>
        <div :class="[isTrue ? 'box' : 'divbox']">div</div>

        <div :style="backgroundColor:colorname,color:color1">div</div>
        <div :style="[firstName,secondName]">div</div>
    </div>

    <script>
    new Vue({
        el:'#app',
        data:{
            msg:123,     // 变量:"值"
            isOK:true,
            isTrue:true,
            isHave:true,
            firstStyle:{
                box:true,
                divbox:true,
            },
            secondStyle:{
                box:false,
                divbox:false,
            },
            colorname:pink,
            color1:red,
            firstName:{
                colorname:pink,
            },
            secondName:{
                color1:red,
            }

        },
        methods:{
            func:function(){    // 函数名:函数体
                this.msg += 1
            }
        },
        computed:{
            newMsg:function(){
                return  this.msg+123        // this指代vue对象,不需要写data
            }
        },
        watch:{     //watch中的function不是函数
            msg:function(newValue,oldValue){
                console.log(newValue)
                console.log(oldValue)
                观察msg,如果msg发生变化,执行本方法
            }
        }
    })
    </script>
</body>

⭐ 列表渲染 - v-for
🍦 遍历数组
v-for=”item in items”

🍦 遍历对象
    v-for="(value,key,index) in obj"

🐚 案例
    <script>
        new Vue({
            el:"#ul",
            data:{
                items:['foo','bar'],
                object:{
                    firstName:'John',
                    lastName:'Doe',
                    age:30
                }
            }
        })
    </script>
    <body>
        <div id="ul">
            <ul>
                <li v-for="(item,index) in items">
                    {{index}} - {{item.message}}
                </li>
            </ul>
            <ul>
                <li v-for="(key,value,index) in object">
                        {{index}} - {{key}}: {{index}}
                </li>
            </ul>
        </div>  
    </body>

⭐ 事件修饰符
🍦 作用
stop 阻止事件冒泡
prevent 阻止默认行为
🍦 使用方法
//点击事件后触发doThat方法,然后阻止事件冒泡和默认行为

//点击提交后什么都不做

⭐ v-model - 表单元素,使用data并更新data
🐚 案例

本文结束 感谢您的阅读
坚持原创技术分享,您的支持将鼓励我继续创作!