IE怪异盒子模型: box-sizing:border-box; width:content+padding +border W3C标准盒子模型: box-sizing:content-box; width:content+padding
offsetHeight:content+padding+border clientHeight:content+padding scrollHeight:实际的宽度+padding
选择器和优先级:
!important
行内样式
ID
类
属性
伪类 :nth-children(1)
标签
伪元素 ::after
兄弟 div +p {}
子 div>div
后代 div div
通配符选择
继承样式
样式继承: 字体相关可以继承,font-size 字体不相关不可继承,height width
什么是绝对定位?什么是相对定位? 绝对定位:以祖先元素的位置进行定位(祖先需要是就近的、且设置了position属性的、并且属性值不为static)。绝对定位会脱离文档流 相对定位:相对自己之前的位置进行移动
怎么解释子绝父相? 父元素设置相对定位(一般会设置父元素相对定位,这样可以不脱离文档流) 子元素设置绝对定位,相对父元素进行移动
水平居中 ① width 有值 margin:0 auto ② 借助父元素,父元素设置text-align:center 子元素设置成行内块样式 display:inline-block; ③子绝父相,父元素设置成相对定位,posiotion :relative; 子元素设置成绝对定位,posiotion:absolute; left :0;right:0;margin:auto; ④子绝父相,父元素设置成相对定位,posiotion:relative; 子元素设置成绝对定位,posiotion:absolute;left:50%;margin-left:-(自身宽度的一半)px ⑤子绝父相,位移一起 父元素设置相对定位 posiotion:relative; 子元素设置绝对定位 posiotion:absolute ; left:50%;transform:translate(-50%) ⑥利用flex布局,父元素设置display:flex;设置justify-content :center;
垂直居中的方法 ①利用display:table-cell ;父元素设置display:table-cell; 子元素设置vertical-align:middle;
②利用flex;父元素设置:display:flex;align-items:center; ③子绝父相加定位;父元素相对定位 display:relative; 注意:父元素不设置宽度 子元素绝对定位 display:absolute;top:0;bottom:0;margin:auto; ④子绝父相计算:父元素设置相对定位:display:relative; 子元素设置绝对定位display:absolute;top:50%;margin-top:-(自身长度的一半)PX ⑤子绝父相加位移:父元素相对定位: display:relative; 子元素设置绝对定位: display:absolute; top:50%;transform:translate(-50%)
display:none;和visibility:hidden;的区别; 相同点他们都能使元素看不见 display:none会使元素不被渲染,文档会重排,属性不被继承 visibility:hidden ;仅仅隐藏元素,会占据位置被继承;只会造成元素重绘
衍生知识点,什么是重绘?上面是重排? 重绘就是,元素结点树发生改变 重排就是,元素的结点树没有发生改变,但是元素的属性发生了改变
渐进增强和优雅降级: 渐进增强:先适应低版本浏览器,逐渐向高版本适应 优雅降级:适应高版本,再向低版本降级
cookie session token 的区别 cookie:登录的时候 服务set-cookie 发回给浏览器,浏览器保存在本地cookie中,之后发送http请求都会携带cookie cookie缺点:可以直接看到cookie中的信息,是非常不安全的
session :登录之后,服务器生成sessionId和sessionId失效的时间,将这两个字段 set-cookie给浏览器,之后每次的http请求就会携带cookie session缺点:需要存贮在服务器中,服务器会出现超载的现象
token :登录之后,服务器将用户信息加密成JWT之后,将JWT发给浏览器,浏览器存储到cookie或者storage中,之后发送http请求都会携带cookie,到达服务端,会对token内容进行解密
Git相关的知识: SVN和Git的区别: SVN是集中式代码版本管理工具,本地是没有服务的,没有网络的情况下就不能上传代码到仓库了 Git是分布式代码版本管理工具,本地也有服务,可以在没有网络的情况下git commit 到本地
Git相关指令: Git init 初始化仓库 Git clone http地址 复制代码到本地 Git config -l 查看配置 git config --global user.name zhaoqin 配置Git名字 git config --global user.email zhaoqin@qq.com 配置Git邮箱 git status 查看项目被Git管理的状态,绿色表示被管理中,红色表示没有被管理 Git add . 添加(全部修改)到暂缓区 git add index.js 添加特定文件到暂缓区 git commit -m '注释内容' 添加到分支上,并添加备注 git diff 查看所有修改的文件 git diff index.js 查看某一个文件的修改情况 Git log 查看详细修改历史(修改的内容 和 修改的版本号) git reflog 查看简单修改历史 git reset --hard HEAD^ 回到上一个版本 git reset --hard 版本号 回到指定的版本 git push 向远程仓库提交代码 Git pull 将远程仓库的代码下拉(一般push之前需要先拉一份代码下来)
Git pull出现冲突代码的解决方式: 打开冲突文件,删除错误提示,保留或者删除代码完成之后,保存之后继续push
Git 分支管理 Git branch 查看分支(当前分支前面有星号) Git branch 分支名称 新建本地分支 git checkout 分支名称 切换分支 Git branch -r 查看远程仓库中的分支 git push --set-upstream origin 分支名称 向远程仓库提交本地分支 Git branch -d 分支名称 删除本地分支(切换到其他分支上,在进行删除) git push origin --delete 分支名称 删除远程仓库分支 git merge 分支名称 合并其他分支到当前(出现冲突的话,解决冲突完之后再提交一遍代码)
Gitflow(中、大型项目管理) master 用于保存上线版本代码,创建dev dev 用于保存相对稳定的代码,创建feature feature 开发新功能,不同的功能可能会创建不同的分支 release 项目上线前准备,用于测试、修复bug,dev创建的 bugfix 修复不紧急的bug hotfix 修复紧急的bug
本地存储
window.sessionStorage 生命周期是关闭窗口 大小约为
sessionStorage.setItem(key,value); //存储数据 sessionStorage.getItem(key); //读取数据 sessionStorage.removeItem(key); //删除数据 sessionStorage.clear(); //删除所有的数据
window.localStorage 生命周期是手动删除 sessionStorage要大
localStorage.setItem(key,value); //存储数据 localStorage.getItem(key); //读取数据 localStorage.removeItem(key); //删除数据 localStorage.clear(); //删除所有的数据