故心故心故心故心小故冲啊
什么是JS框架和库
库和框架区别:
什么是jQuery
jQuery优点
轻量级
免费开源
完善的文档
丰富的插件支持
完善的Ajax功能
不会污染顶级变量
强大的选择器功能
出色的DOM操作封装
出色的浏览器兼容性
可靠的事件处理机制
隐式迭代和链式编程操作
主旨口号:write less,do more(写的更少,干的更多,以更少的代码,实现更多的功能)
jQuery的基本功能
JQ的入口函数相当于原生JS的window.onload事件
// 原生的JS写法
window.onload = function(){...}
// JQ 的写法一
jQuery(document).ready(function(){...})
// JQ 的写法二
jQuery().ready(function(){...})
console.log(jQuery === $) // 结果为 true 说明这两个是全等的
// JQ 最方便最简单的写法
$(回调函数);
$(function(){....})
执行时机不同:
执行次数不同:
// 语法:
$('选择器').事件(function(){.....}) //这里注册事件不需要加 on
$('选择器').on('事件',function(){....})
// 例子
$('button').click(function(){
console.log(this)
})
// 语法:
$('选择器').show(time) // 显示
$('选择器').hide(time) // 隐藏
$('选择器').toggle(time) // 切换
// 这里的time表示动画时长.单位为毫秒
// :eq(索引值) : 找到相对索引的某个元素 eq() 同样是一个方法
// .stop() : 动画阻断
$('button:eq(0)').click(function(){
$('.box').stop().toggle(1000);
})
// 语法:
$('选择器').slideDown(time) // 滑动显示
$('选择器').slideUp(time) // 滑动隐藏
$('选择器').slideToggle(time) // 滑动切换
// time : 参数 .动画时长,单位为毫秒
当某个事件对象短时间内被重复触发,到时程序瘫痪时,可以使用动画阻断,来从事件源头清除动画,使动画每次都从零开始,没有叠加。
// 方法是
$('选择器').stop() // 如果设置为true,则清空队列,可以立即结束动画
// 例如
$('#box').stop(true).slide(1000)
// 语法:
$('选择器').text('') // 获取和修改选择器中的文本内容
$('选择器').html('') // 获取和修改选择器中的html内容
// 例子
$('#box').text('我是一个P标签')
$('#box').html('我是一个p标签
')
console.log(this); // 此时是一个 DOM 对象
console.log($(this)); // 此时是一个 JQ 对象
$('选择器').css() // JQ 操作css方法
// 语法一
$('选择器').css('属性名','属性值')
$('选择器').css('属性名','属性值').css('属性名','属性值') //链式编程
// 语法二
$('选择器').css({
'属性名' : '属性值',
'属性名' : '属性值'
})
// 语法一
$('选择器').prop('属性名','属性值')
$('选择器').attr('属性名', '属性值')
// 语法二
$('选择器').prop({
'属性名' : '属性值',
'属性名' : '属性值'
})
$('选择器').attr({
'属性名' : '属性值',
'属性名' : '属性值'
})
// prop 和 attr 的区别
attr 一般都是用来操作自动义属性的
prop 一般都是用来操作标签自带的属性(尤其是表单标签)
// 基本的css的选择器差不多
$('元素:eq(索引值)') // :eq(索引值) 选取相对索引值的某个元素
$('元素:gt(索引值)') // :gt(索引值) 选取大于某个索引值的元素
$('元素:lt(索引值)') // :le(索引值) 选取小于某个索引值的元素
:even // 获取索引为偶数的元素
:odd // 获取索引为奇数的元素
:first // 获取索引为第一个的元素
:last // 获取索引为最后一个的元素
+ 当前元素下一个元素
~ 当前元素下面的所有兄弟元素
> 当前元素所有的子元素 第一级 只包括儿子 不包括孙子
// parent()
$('选择器').parent(); // 表示选中某个元素的父级,括号里有元素,表示选中该父级,括号里面没有元素,表示默认的父级
// siblings()
$('选择器').siblings() // 表示选中某个元素兄弟元素,括号里有元素表示选中该兄弟元素,括号里没有元素表示选中所有的兄弟元素
// children()
$('选择器').children() // 表示选中某个元素的子级元素.括号里有元素,表示选中某个子级中的元素.括号里没有元素表示选中所有子级元素
// hover()
$('选择器').hover(function(){} , function(){})
//第一个参数是鼠标移入事件函数.第二个函数是鼠标移出事件函数.如果只是传了一个参数,那么就是鼠标移出事件,相当于做了移入和移出两件事
// 修改宽度的方法 width()
width(200) width('200px') // 两种写法都可以.等同于 css('width', '200px')
// 修改高度的方法 height()
height(200) height('200px') // 两种写法都可以.等同于 css.('width' , '200px')
index()
addClass('类名') // 添加类名.多个类名用空格分开
removeClass('类名') // 删除类名.括号里没有写类名就是删除所有的类名.删除多个类名用空格分开
toggleClass('类名') // 切换类名
hasClass('类名') // 判断是否有这个类名
fadeOut() // 淡出. 参数可以传时间.单位为毫秒
fadeIn() // 淡入.
fadeToggle() // 切换淡出淡入
fadeTo(time,opacity) // 第一个参数是时间,第二个参数是透明到.... 0 表示完全透明 1 表示完成不透明
animate()
delay()
/*
修改页面元素的css时,会涉及到重排与重绘
重排:元素重新排列(比如改变盒子大小、文字大小,添加删除DOM元素)
重绘:样式重新渲染(比如改变颜色、背景颜色、下划线)
导致结果:html或css不稳定
*/
// JS 对象转 JQ 对象
var box = document.getElementById('box'); // JS 对象
var box = $(box); // 通过$() 转成 JQ 对象
// Jq 对象 转 JS 对象
$('#box') // JS 对象
$('#box')[索引值] // 方式一 转成了 JS对象
$('#box').get(索引值) // 方式二 转成 JS 对象
// 获取文本输入框的值
$('选择器').val();
// 去除前后空格
$.trim()
// 让用户不能输入空格
var value = $('input').val() // 获取表单的值
var $valur = $.trim(value) // 获取不能为空的值
$('input').val($value) // 用户输入不了空格
// 键盘按下触发
.keydown(回调函数)
// 鼠标松开触发
.keyup(回调函数)
// 键码
e.keyCode
定义:事件委托是利用事件冒泡,只指定一个事件处理程序来管理某一类型的所有事件。
为什么使用事件委托:
事件委托的作用:
性能要好(为多个相同元素绑定事件)
针对新创建的元素,直接可以拥有事件(为不存在的元素绑定事件)
// 语法:
$('选择器').on('事件类型'. '子元素'.回调函数) // 子元素可以不传,不传就是给自己绑定事件
// 例子
$('ul').on('click', 'li'.function(){
// 此时的 $(this)指向的是 li(子级)
})
// 获取元素距离网页文档最左边的距离
$('选择器').offset().left
// 获取元素距离网页文档最顶部的距离
$('选择器').offset().top
// 获取匹配元素垂直滚动滚出的距离
$(window).scrollTop()
// 案例 点击一个按钮让动画滑动到顶部
$('button').click(function(){
// 这里给html,body 设置是为了浏览器的兼容性
$('html,body').animate({scrollTop : 0},1000);
})
// 格式一
$('选择器').each(function(index, item){}) // 第一个参数是索引,第二个参数是元素,只能遍历JQ对象
// 格式二
$.each(obj,function(index,item){}) // 第一个参数是索引,第二个参数是元素,可以遍历JQ对象,数组,对象
// 遍历对象传入的是 (key , value)
// 格式一
$('选择器').map(function(index,item){}) // 第一个参数是索引.第二个参数是元素,只能遍历JQ对象
// 格式二
$.map(obj,function(item,index){}) // 第一个参数是元素,第二个参数是索引,可以遍历JQ对象,数组,对象
// 遍历对象传入的 ( val , key) 传参的顺序很重要
// 方式一
数组.forEach(function(item,index){}) // 无返回值,返回的是 undefined
第一个参数 item ----- 数组的元素
第二个参数 index ---- 数组的索引
// 方式二
数组.map(function(item,index){}) // 有放回值,返回的是一个新的返回
第一个参数 item ----- 数组的元素
第二个参数 index ---- 数组的索引
$('父元素').append('子节点'); // 在子级后面的添加
$('父元素'),prepend('子节点'); // 在子级前面添加
$('元素').empty() // 清空元素里面的内容
$('元素').remove() // 直接把元素都删除了(包括自己)
$('元素').before('兄弟元素') // 在兄弟节点之前
$('元素').after('兄弟元素') // 在兄弟节点之后
$('插入的兄弟元素').insertBefore('被插入的兄弟元素') // 插入到兄弟节点之前
$('插入的兄弟元素').insertAfter('被插入的兄弟元素') // 插入到兄弟节点之后
$('元素').replaceWith('元素') // 用后者代替前者
// ifranme
是一个标签,可以设置样式,做网页的嵌套,后台系统切换子页面的时候经常用到
把iframe 标签放在指定位置,修改他的src属性(prop)
// load()
$('选择器').load('文件路径')
载入HTML文件代码并插入到DOM中
如果想从vscode发布到浏览器查看,需要使用 `live server` 查看,不要用 `open in default browser` 。
前端框架主要分为两种:
1.1、技术框架
JQuery、VueJs、ReactJs等,这些框架大多用于操作DOM,或者是处理数据,对于页面效果或数据处理是强项,但对UI美观能力较弱。
1.2、UI框架
Bootstrap、WEUI、VantUI、Ant-design、ElementUI等,这类框架是有人写好了大多数样式,你可以借助这些框架实现快速布局。