CSS
改变角度: transform:totate(角度+deg)
内容的间距:容器+gap
display属性:flex(子元素横向排列),inline-block
inline-block----
- block:独占一行,能设宽高
- inline:并排,不能设宽高
- inline-block:并排,又能设宽高
flex-wrap
flex-direction--主轴方向
justify-content:
:space-between两端对齐,项目间等距;around两侧等距;evenly间距完全相等
flex-start左对齐/上对齐,end,center
align-item:baseline(第一行文字基线对齐),stretch项目拉伸占满高度,center
display=none(不占位置 不显示) 和 opacity:0(占位置 不显示)
父子关系
ul+空格+li:nth-child(X)--ul下面作为第三个子元素的li
去掉li的小圆点--ul的css加list-style:none
border需要同时有 solid 颜色 粗度(1px)
媒体查询
@media(max-width:700px){ }
JS
dom获取元素 注意多个用All
定时器 setInterval(函数,时间)---不关会一直执行,如果定义在函数里,记得调用函数--clearInterval(定时器名字)
倒计时 setTimeout(函数,时间)---只执行一次--clearTimeout(定时器名字)
为什么不需要加页面加载成功的判断
- JS 在标签下面 → 不用等
- JS 在标签上面 → 必须等
类名增删 XX.classList.add/remove('类名') id名 :XX.id.add/remove('id')
类名添加与删除条件:XX.toggle('类名",条件);添加多个类名classList.add('XX', "XX")逗号隔开
内容:textContent,innerHtml(读取DOM元素内部全部html内容)
parseInt(XX)--字符串转成数字
String(XX)--Xx转成字符串
Math.random()--0~1的随机数
Math.floor()---向下取整
注意1.0的临界
请求数据
axios.get(相对index.html的路径)
异步处理:$.get(url).then(res=>{ XX=res }) 或者axios.get.then(res=>{ XX=res.data })
提交数据
$.post(url, data).then
放元素 XX.appendChild()---加到XX里面 不加引号 必须传元素节点,不能传字符串(也就是不加引号)
const 常量重复赋值 ----const 不能改,要么用 let,要么直接一步赋值。
splice和slice的区别:
- slice 不会改原数组 → 取一段,返回新数组
- splice 会改原数组 → 删 / 插元素,直接把原数组变了
函数也可以作为形参
获取当前具体日期 new Date() 方法getFullYear()/getMonth()/getDay(星期几)
XX.textContent.trim()---去掉前后空格
.数据的存储,提取,删除
localStorage.setItem(key,value)
localStorage.getItem(key)
localStorage.removeItem(key)
filter-筛选数组里的数据 不改变原数组 返回新数组
slice()--提取内容
.shift()从头删除一个
push()从尾部添加

XX.splice(index,个数)--删掉数组里从第index+1个开始往后删几个
数组的sort排序 sort((a, b) => b.value - a.value) sort:排序 b.value - a.value:从大到小排
.map()---遍历数组,返回新数组,长度不变
eg. arr.map(item=>{ return {XX} })--对每个item做处理
每个数组元素连接成一个字符串,用&连接--arr.join('&')
判断是否为数组 Array.isArray(XX)
添加html:
legendItem.innerHTML = `
<span class="legend-color" style="background:${colorList[index]}"></span>
<span class="legend-name">${item.name}</span>
`;
正则表达式
手机号:const regPhone=/^1[3-9]\d{9}$/
名字:const regName=/^[\u4e00-\u9fa5]{2,6}$/
地址:const regAddress=/^[\u4e00-\u9fa5][\u4e00-\u9fa5-zA-Z0-9]
判断是否符合正则 regAddress.test(XX)
...Array---扩展运算符,把内容拆分
字符串代替,XX.replace("旧的","新的")
位置:getBoundingClientRect()-包括元素位置和大小
对象:
Object.keys(params)--获取对象所有key放入并返回一个数组
对象的遍历: for(let key in obj)
字符串:
判断字符串是否含有某个元素 XX.includes(??)
字符串的遍历(也就是针对每个字符)for (let char of obj)
判断是否是大写 isUpperCase(XX)
大写转小写 toLowerCase()
小写转大写 toUpperCase()
Vue
数组渲染 v-for='(item,index) in obj' :key=""
双向绑定 v-model="XX" XX一定是data里的变量
绑定属性,动态变化 :img/:class="条件/实际的东西"---让 JS 变量控制 HTML 属性的值
@click="XX"---点击后触发事件XX,XX事件是定义好的,一般在methods中

new Vue({
el: '#app',
data: function() { return { ... } },----放响应式数据, data 必须是函数返回对象(组件里)
methods: { ... },---放事件处理函数, 每次调用都会重新执行,this指向vue实例,点击事件
computed: { ... },
---计算属性 ,根据已有数据计算出新数据, 必须有 return,数组 filter 写在 computed 里
watch: { ... },--监听,题目出现 "当 xx 变化时..." → 用 watch
created: function() { ... },--实例创建完立刻执行,DOM 还没渲染
mounted: function() { ... } })--DOM 渲染完成后执行
--考:进入页面自动请求数据、自动加载列表,axios.get('').then(res=>{XX=res.data})

vue Router配置路由:4.1第八题
子传父 this.$emit('动作',数据) + 父组件的methods里的方法 =》@XX="方法名"
父传子
