CSS一行三个快元素样式: http://js.jirengu.com/naqom/1/edit?html,css,output
一张背景图片放多个图标:http://js.jirengu.com/lowunodati/1/edit?html,css,output
2018-01-11 晚上直播 笔记
- 要预习
颜色: 红色 #ff0000,rbg(255,0,0) #f00 Rgb 样式 ff红, 绿色 #00ff00 rbg(0,255,0) #0f0 蓝色 # 0000ff rbg(0,0,255) #00f rbg(0,0,255)
白色 #fff 黑色 #000
ffaa00 可缩写 #fa0
rgba(f,f,f,0.5) 多了一个透明度 1不透明 0 透明
单位
高度 height:100% 高度是继承父级元素的高度,那么父元素高度也要设置高度才能生效。
2018-01-14 CSS-常见样式2.md
隐藏or透明 opacity: 0 ; 透明度为0,整体 visibility: hidden ; 和opacity:0 类似 display:none; 消失,不占用位置 background-color: rgba(0,0,0,0.2) 只是背景色透明
去掉span标签之间的空隙: 父元素font-size: 0;
, span标签font-size: 16px;
Line-height: 1.5; // 是font-size字体的1.5倍 1.5 跟150% 有区别: 百分比: 继承的时候先计算,然后把计算的值继承下去,继承的固定的值。 1.5的话:是继承的倍数,直接把倍数继承下去,继承的是倍数
Line-height的作用, 实现单行文本文字在行中垂直居中: Width: 40px; Line-height: 40px;
一行平均排列三个元素: .box { Height: 100px; border: 10px solid red; Background: black; }
计算宽度:减号两边必须要有空格 Width: calc(33.33% - 20px);
box-sizing: http://js.jirengu.com/naqom/1/edit
2018-01-16 CSS浮动讲解 清除浮动 IE6 7 不支持 伪元素::after
可使用 *zoom: 1; 触发BFC,达到清除浮动效果。 hadlayout:
相邻的bfc不会解决合并 overflow: hidden; 也可以清除浮动,也是触发了BFC 元素本身就是浮动元素,也不需要清除浮动。BFC display: inline-block; 也可以清除浮动。触发了BFC导致清除了浮动
外边距合并
相邻的块级元素外边距会合并,这是规定, 父子元素外边距合并 父子元素中间没有border或者padding 也会外边距合并,
自我合并: 如果元素没有内容,则margin会自我合并。
阻止合并: 对于父子:1,加边框(解决父子,不能解决相邻的), 2加padding,
2018-01-18 定位讲解
Relative应用: 自己位置的微调, 2,为子元素绝对定位设置。 Absolute应用: 元素特殊位置, 绝对定位:absolute、fixed 只关注这2个。
2018-01-21 晚上直播课 垂直居中 伪类与伪元素
内联元素单行文本溢出加... 无效,这个是因为span元素宽度是有内容撑起来的,并没有产生浮动,所有无效。
Vertical-align
块元素设置高度height,则父级也需要设置高度才能生效
伪元素 使用 单: 和双冒号:: 都可以,双冒号是CSS3写法
2018-01-23 晚上直播课 页面CSS-布局的发展.md、页面CSS-布局(上).md、CSS-编码规范.md
http://js.jirengu.com/bibowukume/1/edit?html,css,output 单栏布局代码示例
单栏布局: 从上到下排列就好 div margin: 0 auto; 双栏布局: 左边float,右边div加 margin-left 三栏布局: 左边float,右边float,中间div 加 margin-left, margin-right;
CSS-布局(下).md 没有讲
CSS-编码规范 简单的说说
2018-01-25 晚上直播 字体图标 浏览器兼容
CSS-浏览器兼容.md
HTML 注释: IE6 在注释中可以使用特殊语法使浏览器显示注释里面语句。
Js能力检测 就是一个工具,
之前讲的知识点回顾:
HTML标签介绍, CSS选择器 、优先级,样式介绍,
Inline-block 之间有缝隙的原因:字体之间空格,
box-sizing: IE盒模型
Float span设置浮动后可以触发行内元素拥有块级元素特性,
盒模型外边距合并 ,BFC: float, 绝对定位、overflow不为hidden的
绝对定位,z-index 只有定位元素有效。
布局:流式布局
字体图标、浏览器兼容
2018-01-28 晚上直播 HTML、CSS知识网页实战
简书首页编写实战
2018-02-04 晚上直播 JS第一节课 走进JavaScript
http://book.jirengu.com/fe/%E5%89%8D%E7%AB%AF%E5%9F%BA%E7%A1%80/Javascript/
网页是什么 JavaScirpt 发展历史 浏览器渲染机制
CSS JS :CSS是异步加载,不阻塞HTML加载,JS同步加载,阻塞html CSS不会阻塞HTML加载,遇到CSS就会立刻请求,然后页面接着执行,加载完毕后渲染效果。 JS会阻塞HTML加载, 浏览器遇到JS代码会立即加载并执行,等执行完毕后才接着加载 JS是顺序加载的
浏览器是先加载A.js运行,然后在执行 b,js,最后在执行c.js
在script中 有个 async语句,可以实现异步加载: async: 谁先加载完就执行谁,
c.js A.js C.js defer 延迟加载, 顺序执行,等页面渲染完毕后再执行JS
A.js B.js C.js
白屏&FOUC (Flash of Unstyled Content) 无样式内容闪烁: 白屏: chrome 在CSS没有加载好,所以不绘画页面, 火狐浏览器则异步加载CSS,加载好了就渲染CSS,也就是不会有白屏 Chrome浏览器不管把样式放在header还是 body 后面都是要先加载样式后才渲染页面。
解决: 尽量加快CSS加载的时间, 比如吧CSS放在header标签中。压缩CSS
老师推荐的书: javascript 高级程序设计
2018-02-06 晚上直播 JS基本概念 数据类型
Mac系统下打开 chrome浏览器的控制台快捷键: cmd + option + I Shift + 回车 是 控制台的换行
Chrome 调试,语句,表达式,变量,变量提升(var 声明的才会有提升),标识符命名规则,注释,区块。
数据类型:
运算符:
相同原始类型 === 对比是 true, 相同的对象变量 === 对比是 false, 因为对象变量里面的是对象的地址,
2018-02-08 晚上直播
运算符优先级
流程控制语句: if switch while do-while for for-in break和continue
2018-02-22 晚上直播
变量声明提前: var function 都是提前,function会声明和赋值一起提前
函数作用域:
作用域链: 寻找变量的定义出先从当前作用域寻找,如果没找到,在从当前作用域的词法作用域寻找。 词法作用域:声明变量的作用域
- 函数在执行的过程中,先从自己内部找变量
- 如果找不到,再从创建当前函数所在的作用域去找, 以此往上
- 注意找的是变量的当前的状态
http://book.jirengu.com/fe/前端基础/Javascript/引用类型.html 基本类型值(数值、布尔值、字符串、null和undefined):指的是保存在栈内存中的简单数据段; 引用类型值(对象、数组、函数、正则):指的是那些保存在堆内存中的对象,变量中保存的实际上只是一个指针,这个指针执行内存中的另一个位置,由该位置保存对象
函数的参数传递: 参数是基本类型,那么在函数里修改变量不会影响外边的变量, 参数是引用类型,那么在函数里修改变量,外边的变量值也会变动
引用类型的浅拷贝和深拷贝
2018-02-25 晚上直播 json与对象 Array数组
http://book.jirengu.com/fe/前端基础/Javascript/json.html
var company = { name: '饥人谷', age: 3, sayHello: function(){ console.log('hello world') } }
获取对象的值 console.log(company.name) console.log(company['name'])
注意:如果使用数组角标形式的时候 键一定要使用引号,如果没有引号则表示一个变量,如:
for(var key in company){ console.log(key) console.log(company[key]) // 这里key就是变量 }
elete命令用于删除对象的属性,删除成功后返回true。 delete company.name
对象的所有键名都是字符串,所以加不加引号都可以。对象的每一个“键名”又称为“属性”(property),
全局变量都是window里面的属性 var a = 3 等价于window.a
JSON.stringify() 是ES5才出现的.
对象字面量: var obj = {a:1, b: 2} 这是字面量
http://book.jirengu.com/fe/前端基础/Javascript/数组.html 数组超过长度可以使用角标赋值。
数组的创建: 1,new 2, 字面量var b = [1, 2, 'hello'];
属性length不仅可以获取数组长度,还可以对length赋值,此时length赋值后是对数组进行截取
for(var i =0; i<b.length; i++) 去全部遍历数组的内容 for(var i in b) console.log(b[i]) 会自动会略数组中值为undefined 的数组
array.push() 会返回新数组的长度, pop没有返回值
2018-02-27 晚上直播 ES5数组拓展 字符串 math Date
http://book.jirengu.com/fe/前端基础/Javascript/es5array.html http://book.jirengu.com/fe/前端基础/Javascript/字符串.html http://book.jirengu.com/fe/前端基础/Javascript/math.html http://book.jirengu.com/fe/前端基础/Javascript/date.html
ES6字符串新增:
` 可以引用多行、可以插入变量
var str =
wewe
dddd
字符串模板:
var name = 'vikey'
var str =
你好 ${name} `
2018-03-01 晚上直播 date时间 正则表达式
JS作用域链&JS引用类型 习题讲解
http://book.jirengu.com/fe/前端基础/Javascript/date.html
注意 使用 d.getMonth() 返回的是月份减去1(从0开始计算月)
去年的今天是星期几: d = new Date(); d.setFullYear(d.getFullYear() - 1) d.getDay() // 得到的就是星期几
三十天前的日期: new Date(Date().now() - 302460601000)
距离 2019-01-01 00:00:00 还剩多少天多少小时多少分多少秒: d = new Date(); d.getTime() - Date.now();
某个时间距离现在: 刚刚 (距当前时间小于一分钟)
2018-03-04 晚上直播 正则表达式 正则相关方法 定时器
作业讲解: JS对象、JSON、数组客观题 http://book.jirengu.com/fe/前端基础/Javascript/定时器.html
贪婪模式与非贪婪模式 贪婪模式: 在匹配过程中,尽可能多的去匹配
定时器: setTimeout:等待一段时间后执行代码,返回一个ID,通过这个ID关闭这个定时器。clearTimeout() setInterval: 每隔一段时间就执行一次代码, 无线循环下去, 可使用返回自ID关闭 clearInterval() 并发模型与事件循环: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop
2018-03-06 晚上直播 DOM
作业讲解: ES5数组 & 字符串 & Math & Date
http://book.jirengu.com/fe/前端基础/Javascript/dom.html
定时器继续讲解:单线程模型 函数节流
2018-03-08 晚上直播 dom 事件
作业讲解:正则表达式
http://book.jirengu.com/fe/前端基础/Javascript/event.html dom 操作 要记住 document.createElement document.appendChild dom.getAttribute dom.setAttribute
document.querySelector('p').style.color = 'red': 内联样式 使用getComputedStyle获取元素计算后的样式,
使用JS批量修改HTML样式: style =
2018-03-11 晚上直播 事件
习题讲解: setTimeout用法 & 任务队列异步函数节流:https://xiedaimala.com/courses/0bea00de-21f6-4b84-8cff-da09cd2a80b5/tasks/ac13d2f7-4065-4222-b44b-30bf77d0bd3e
所有浏览器都能用 var btnClick = document.getElementById('btnClick'); btnClick.onclick = function showMessage() {} 解绑事件: btnClick.onclick = null; 即可
IE9以上才能用, var btnClick = document.getElementById('btnClick'); btnClick.addEventListener('click', function() {}); 解绑事件使用removeEventListener
addEventListener比 onclick的有点 功能更强大一些, 有第三个参数,如果是true表示在捕获阶段调用事件处理程序,如果是false,则是在事件冒泡阶段处理
addEventListener可以对事件进行多次绑定,onclick只能绑定一次,绑定多次后,只有最后一个生效
第一: 事件模型: 捕获、冒泡、 第二: 绑定事件 onclick addEventListener 第三:阻止事件传递 stopPropagation();
阻止事件捕获、冒泡: e.stopPropagation();
事件代理: 上层元素去处理子代事件,叫事件代理 直播讲解: http://js.jirengu.com/jerodoleca/1/edit?html,js,console,output http://js.jirengu.com/qufowezode/1/edit?html,js,console,output http://js.jirengu.com/jerodoleca/1/edit?html,js,console,output
dblclick 双击左键 mouseover 鼠标放上的事件
2018-03-13 晚上直播 实战
原生JS tab切换表单效果: http://jsbin.com/sonuga/edit?html,output http://js.jirengu.com/zuhuk/2/edit http://js.jirengu.com/zuhuk/2/edit
模态框、dialog对话款、弹窗: http://js.jirengu.com/yagawikawu/1/edit?html,js,output
2018-03-15 晚上直播 动画 BOM 存储 性能优化
http://book.jirengu.com/fe/前端基础/Javascript/动画.html http://book.jirengu.com/fe/前端基础/Javascript/bom.html http://book.jirengu.com/fe/前端基础/Javascript/存储.html
BOM(Browser Object Model) 是指浏览器对象模型
localStorage: 设置一个值: localStorage['name'] = 'dragon' 或 localStorage.setItem('userinfo','123'); 删除一个值: delete localStorage.name 或 localStorage.removeItem('userinfo'); localStorage跟浏览器相关。
session: 是服务器在用户登陆成功后保存的状态(记录用户信息), 成功后会返回给浏览器一个编号,浏览器存到cookie中, 下次在发送请求后,API请求会把浏览器所有cookie都自动带上的 服务器给浏览器种上cookie存放用户信息,用来识别发送请求的用户是谁。这种用户识别的方式被称为Session
性能优化: 优化思路:1. 加载的优化。 2.体验的优化。 加载的优化: 1. 网络越快越好。 2.东西体积越少越好。 3.东西数量越少越好。 4. 服务器处理越快越好。 5.能重复利用的最好重复利用。 提样的优化: 1.只给用户暂时需要的东西。 2. 别让用户感觉卡顿。 3. 动画不要卡。
2018-03-18 晚上直播 ajax node.js搭建服务器
http://book.jirengu.com/fe/前端基础/Javascript/ajax.html
用node前要安装 https://nodejs.org/en/ node文件:server.js 里面是JS语法, 写完后 终端运行node ch0/server.js
2018-03-20 晚上直播 ajax
http://book.jirengu.com/fe/前端基础/Javascript/ajax.html
跟后端交互:
form表单提交: 这个提交会页面跳转
var xhr = new XMLHttpRequest() xhr.open('GET', 'http://api.jirengu.com/weather.php', true) ;第三个参数是是否异步,true异步,false同步。
GET的参数直接拼接在URL里面。
xhr.open('POST', '/register', true) 这里第二个参数可以直接拼接在当前网址后面:http://book.com/register
POST参数在send里面: xhr.send('username=jirengu&password=123456')
http://js.jirengu.com/jewivinido/1/edit?html,js
http知识推荐的书:图解HTTP
2018-03-22(周四) 晚上直播 跨域
http://book.jirengu.com/fe/前端基础/Javascript/跨域.html
node 中的包去https://www.npmjs.com/ 里面找(http、fs、path、url)
课堂讲解的代码: jsonp解决跨域 http://js.jirengu.com/gidimiyota/1/edit?html,js,output
降域: 同一个页面,有一个iframe标签,同一个王者
2018-03-25(周日) 晚上直播 ajax实战 做一个天气预报 以及 加载更多效果
饥人谷开放 API:http://api.jirengu.com/
获得天气简单接口:http://api.jirengu.com/getWeather.php http://weixin.jirengu.com/weather 天气预报UI: https://cdn.dribbble.com/users/86061/screenshots/1081917/whereto_small.jpg 字体图标: iconfont.cn
2018-03-27(周二) 做一个天气预报 加载更多
天气预报代码展示:projects/weather/index.html http://book.jirengu.com/jirengu-inc/js-works/
https://github.com/jirengu-inc/js-works
loadmore
2018-03-29(周四) 闭包
立即执行函数: function fn(i) {console.log(i)} fn(7); 等价于 (function(i){console.log(i)}) (3) 就是立即执行函数等价于: (function(i){ console.log(i) }(5)) 闭包主要作用是 1 封装数据 2 暂存数据,
2018-04-01(周日)jQuery
jQuery有两种操作 1,选择一个选择进行操作 2.直接执行一些方法
2018-04-03 晚上直播 (周二) jQuery 事件、动画
天气参数接口 study_javascript_in_jirengu.com
http://weixin.jiregu.com/weather?key=study_javascript_in_jirengu.com 天气参数接口
dribbble.com https://dribbble.com/search?q=weather
2018-04-08(周日)豆瓣电影网站实战
2018-04-10(周二)豆瓣电影网站实战二
https://zhuanlan.zhihu.com/p/22412047
2018-04-12(周四)面向对象 原型 原型链 课件地址: http://book.jirengu.com/fe/前端进阶/面向对象/理解对象.html
用JS实现TAB效果: http://js.jirengu.com/yabet/1/edit?html,output
Array.prototype = [1,2,3].proto [1,2,3].sort() ==> [1,2,3].proto.sort() ===> Array.prototype.sort()
Array 是 Function 创建的 Array.proto === Function.prototype Function.proto === Function.prototype Array.prototype这个对象是 Object 这个函数创建的 Array.prototype.proto === Object.prototype
Object.prototype.proto === null
[1, 2,3].valueOf() [1,2,3]本身找 [1,2,3]proto === Array.prototype Array.prototype.proto === Object.prototype Object.prototype.proto === null
Function 是 Object的创造者
2018-04-15(周日) 原型链、继承
p1 instanceof People // true p1 instanceof Object // true
http://js.jirengu.com/vixir/1/edit?html,output
call() apply() bind() 区别
2018-04-17(周二) this指针 页面图片轮播 若愚老师的this指针: https://zhuanlan.zhihu.com/p/31823164
function fn(a, b) {console.log(this)}
fn() // this 是Windows fn.call(undefined, a, b) // this 是Windows
http://jsbin.com/pedicowaki/edit?js,console,output
轮播范例: http://book.jirengu.com/jirengu-inc/js-works 在 carousel 里面
2018-04-19(周四)promise 图片懒加载 瀑布流布局 木桶布局
promise 浏览器、语言都可以直接用 上课的例子 http://js.jirengu.com/luyux/1/edit?js,console
promise兼容性好一点 async/await 图片懒加载原理: https://cloud.hunger-valley.com/18-4-19/27123708.jpg 图片懒加载实例: http://book.jirengu.com/jirengu-inc/js-works/lazyimg/jquery-lazyload-img.html 花瓣网站 huaban.com
瀑布流示例: huaban.com/boards/25082487 瀑布流原理: https://cloud.hunger-valley.com/18-4-19/21465704.jpg 瀑布流布局, 代码都注释掉了,自己下载下来修改运行 http://book.jirengu.com/jirengu-inc/js-works/waterfall/water-basic.html
木桶布局: zhuanlan.zhihu.com/p/28466291 木桶布局 : http://book.jirengu.com/jirengu-inc/js-works/barrellayout/index.html
2018-04-22(周日)Node.js 入门 npm使用
http://book.jirengu.com/fe/前端进阶/Node/node入门.html
2018-04-24(周二) npm包发布,开发命令行工具
卸载 自己开发的npm包: npm unpublish
天气APIkey
study_javascript_in_jirengu.com
2018-04-26(周四) webpack
webpack官网
http://book.jirengu.com/jirengu-inc/js-works/
2018-05-03(周四)浏览器缓存
简述浏览器缓存是如何控制的
https://zhuanlan.zhihu.com/p/23299600
Nginx etag 计算
实现效果
http://book.jirengu.com/jirengu-inc/js-works/
2018-05-06(周日)HTML5 CSS3 新特性讲解 flex、grid布局
https://jirengu.github.io/css-you-should-know/zh-cn/a-complete-guide-css-grid-layout.html