├── 2015
├── 8
│ └── 2015年8月31日.markdown
├── 9
│ ├── 2015年9月10日.markdown
│ ├── 2015年9月11日.markdown
│ ├── 2015年9月12日.markdown
│ ├── 2015年9月16日.markdown
│ ├── 2015年9月17日.markdown
│ ├── 2015年9月18日.markdown
│ ├── 2015年9月19日.markdown
│ ├── 2015年9月1日.markdown
│ ├── 2015年9月22日.markdown
│ ├── 2015年9月25日.markdown
│ ├── 2015年9月26日.markdown
│ ├── 2015年9月29日.markdown
│ ├── 2015年9月3日.markdown
│ ├── 2015年9月4日.markdown
│ ├── 2015年9月5日.markdown
│ ├── 2015年9月6日.markdown
│ ├── 2015年9月7日.markdown
│ ├── 2015年9月8日.markdown
│ ├── 2015年9月9日.markdown
│ └── img
│ │ ├── 2015-9-22-1.jpg
│ │ ├── 2015-9-22-2.jpg
│ │ ├── 2015-9-22-2.png
│ │ ├── 2015-9-22-3.jpg
│ │ ├── 2015-9-25-1.png
│ │ ├── 2015-9-25-2.png
│ │ ├── 2015-9-25-3.jpg
│ │ ├── 2015-9-25-4.jpg
│ │ ├── 2015-9-25-5.jpg
│ │ ├── 2015-9-26-1.jpg
│ │ ├── 2015年9月16日-1.jpg
│ │ └── gongchangmoshi.jpg
├── 10
│ ├── 2015年10月10日.markdown
│ ├── 2015年10月15日.markdown
│ ├── 2015年10月18日.markdown
│ ├── 2015年10月19日.markdown
│ ├── 2015年10月20日.markdown
│ ├── 2015年10月26日.markdown
│ ├── 2015年10月28日.markdown
│ ├── 2015年10月29日.markdown
│ ├── 2015年10月31日.markdown
│ ├── 2015年10月8日.markdown
│ ├── 2015年10月9日.markdown
│ └── img
│ │ ├── HTTP-2.jpg
│ │ ├── HTTP.jpg
│ │ ├── box-sizing.png
│ │ ├── math函数-2.jpg
│ │ ├── math函数.jpg
│ │ └── random.jpg
├── 11
│ ├── 2015-11-16-1.jpg
│ ├── 2015年11月11日.markdown
│ ├── 2015年11月12日.markdown
│ ├── 2015年11月13日.markdown
│ ├── 2015年11月16日.markdown
│ ├── 2015年11月17日.markdown
│ ├── 2015年11月18日.markdown
│ ├── 2015年11月19日.markdown
│ ├── 2015年11月20日.markdown
│ ├── 2015年11月22日.markdown
│ ├── 2015年11月23日.markdown
│ ├── 2015年11月24日.markdown
│ ├── 2015年11月25日.markdown
│ ├── 2015年11月27日.markdown
│ ├── 2015年11月28日.markdown
│ ├── 2015年11月29日.markdown
│ ├── 2015年11月2日.markdown
│ └── 2015年11月30日.markdown
├── 12
│ ├── 2015年12月10日.markdown
│ ├── 2015年12月11日.markdown
│ ├── 2015年12月13日.markdown
│ ├── 2015年12月14日.markdown
│ ├── 2015年12月16日.markdown
│ ├── 2015年12月17日.markdown
│ ├── 2015年12月18日.markdown
│ ├── 2015年12月20日.markdown
│ ├── 2015年12月21日.markdown
│ ├── 2015年12月22日.markdown
│ ├── 2015年12月23日.markdown
│ ├── 2015年12月24日.markdown
│ ├── 2015年12月26日.markdown
│ ├── 2015年12月27日.markdown
│ ├── 2015年12月28日.markdown
│ ├── 2015年12月29日.markdown
│ ├── 2015年12月3日.markdown
│ ├── 2015年12月7日.markdown
│ ├── 2015年12月9日.markdown
│ └── img
│ │ ├── 20100513052116804.jpg
│ │ ├── 20100513052913196.jpg
│ │ ├── 20100513071353897.gif
│ │ ├── 20100513071354656.gif
│ │ ├── 20100513071356624.gif
│ │ ├── 20100513071356825.gif
│ │ ├── 20100515092156201.gif
│ │ ├── animation-pro.png
│ │ ├── bs-btn.jpg
│ │ ├── bs-code.jpg
│ │ ├── bs-form-1.jpg
│ │ ├── bs-form-2.jpg
│ │ ├── bs-form-3.jpg
│ │ ├── bs-form-4.jpg
│ │ ├── bs-form.jpg
│ │ ├── bs-hor-2.jpg
│ │ ├── bs-hor.jpg
│ │ ├── bs-text.jpg
│ │ ├── bs-title.jpg
│ │ ├── bs-tr.jpg
│ │ ├── btn-2.jpg
│ │ ├── btn.jpg
│ │ ├── icon.jpg
│ │ ├── repeating-linear-gradient.png
│ │ ├── scale-x-y.png
│ │ ├── scale-x.png
│ │ ├── scale-y.png
│ │ ├── skew-x-y.png
│ │ ├── skew-x.png
│ │ ├── skew-y.png
│ │ ├── transition-suji.png
│ │ └── transition-timing-function.png
└── SUMMARY.md
├── 2016
├── 1
│ ├── 2016年1月18日.markdown
│ ├── 2016年1月25日.markdown
│ ├── 2016年1月28日.markdown
│ ├── 2016年1月29日.markdown
│ ├── 2016年1月30日.markdown
│ ├── 2016年1月3日.markdown
│ ├── 2016年1月4日.markdown
│ ├── 2016年1月5日.markdown
│ ├── 2016年1月7日.markdown
│ └── img
│ │ ├── btn-1.jpg
│ │ ├── btn-2.jpg
│ │ ├── dropdown.jpg
│ │ ├── form.jpg
│ │ ├── json.jpg
│ │ └── movejs.jpg
├── 2
│ ├── 2016年2月10日.markdown
│ ├── 2016年2月11日.markdown
│ ├── 2016年2月12日.markdown
│ ├── 2016年2月13日.markdown
│ ├── 2016年2月21日.markdown
│ ├── 2016年2月22日.markdown
│ ├── 2016年2月23日.markdown
│ ├── 2016年2月25日.markdown
│ ├── 2016年2月26日.markdown
│ ├── 2016年2月27日.markdown
│ ├── 2016年2月29日.markdown
│ ├── 2016年2月3日.markdown
│ ├── 2016年2月5日.markdown
│ ├── 2016年2月6日.markdown
│ ├── 2016年2月9日.markdown
│ └── img
│ │ ├── ajax-2.jpg
│ │ ├── ajax-3.jpg
│ │ └── ajax.jpg
├── 3
│ ├── 2016年3月10日.markdown
│ ├── 2016年3月11日.markdown
│ ├── 2016年3月12日.markdown
│ ├── 2016年3月13日.markdown
│ ├── 2016年3月14日.markdown
│ ├── 2016年3月15日.markdown
│ ├── 2016年3月16日.markdown
│ ├── 2016年3月17日.markdown
│ ├── 2016年3月18日.markdown
│ ├── 2016年3月19日.markdown
│ ├── 2016年3月20日.markdown
│ ├── 2016年3月21日.markdown
│ ├── 2016年3月22日.markdown
│ ├── 2016年3月23日.markdown
│ ├── 2016年3月24日.markdown
│ ├── 2016年3月25日.markdown
│ ├── 2016年3月28日.markdown
│ ├── 2016年3月29日.markdown
│ ├── 2016年3月2日.markdown
│ ├── 2016年3月30日.markdown
│ ├── 2016年3月31日.markdown
│ ├── 2016年3月3日.markdown
│ ├── 2016年3月5日.markdown
│ ├── 2016年3月6日.markdown
│ ├── 2016年3月7日.markdown
│ ├── 2016年3月8日.markdown
│ ├── 2016年3月9日.markdown
│ └── img
│ │ ├── align-content.png
│ │ ├── align-items.png
│ │ ├── align-self.png
│ │ ├── ct_css_margin_collapsing_example_1.gif
│ │ ├── ct_css_margin_collapsing_example_2.gif
│ │ ├── ct_css_margin_collapsing_example_3.gif
│ │ ├── ct_css_margin_collapsing_example_4.gif
│ │ ├── flex-direction.png
│ │ ├── flex-grow.png
│ │ ├── flex-shrink.jpg
│ │ ├── flex-wrap.jpg
│ │ ├── flex1.png
│ │ ├── justify-content.png
│ │ ├── order.png
│ │ └── pic1.png
├── 4
│ ├── 2016年4月11日.markdown
│ ├── 2016年4月12日.markdown
│ ├── 2016年4月13日.markdown
│ ├── 2016年4月15日.markdown
│ ├── 2016年4月18日.markdown
│ ├── 2016年4月19日.markdown
│ ├── 2016年4月1日.markdown
│ ├── 2016年4月20日.markdown
│ ├── 2016年4月21日.markdown
│ ├── 2016年4月23日.markdown
│ ├── 2016年4月24日.markdown
│ ├── 2016年4月25日.markdown
│ ├── 2016年4月26日.markdown
│ ├── 2016年4月27日.markdown
│ ├── 2016年4月28日.markdown
│ ├── 2016年4月29日.markdown
│ ├── 2016年4月3日.markdown
│ ├── 2016年4月4日.markdown
│ ├── 2016年4月5日.markdown
│ ├── 2016年4月6日.markdown
│ ├── 2016年4月7日.markdown
│ └── img
│ │ ├── SASS.jpg
│ │ ├── css-01.jpg
│ │ ├── ie.png
│ │ ├── log.jpg
│ │ ├── proto.jpg
│ │ ├── prototype.png
│ │ └── scope作用域.jpg
├── 5
│ ├── 2016年5月23日.markdown
│ ├── 2016年5月26日.markdown
│ ├── 2016年5月4日.markdown
│ ├── 2016年5月5日.markdown
│ ├── 2016年5月6日.markdown
│ ├── 2016年5月7日.markdown
│ └── 2016年5月9日.markdown
└── SUMMARY.md
├── .gitattributes
├── .gitignore
├── CSS
├── CSS单位.md
├── CSS选择器.md
├── Directory.md
├── img
│ ├── baseline.png
│ ├── cssPx.jpg
│ ├── css_selector.jpg
│ ├── css_selector_2.jpg
│ ├── css_selector_3.jpg
│ ├── exANDch.jpg
│ ├── line-box.png
│ ├── line-height.png
│ ├── line-height2.png
│ └── vmaxANDvmin.jpg
└── line-height与vertical-align.md
├── CodeLibrary
├── CSS3_Code.md
├── Directory.md
├── Nodejs新建服务器.md
├── ajax.md
└── cookie.md
├── ECMAScript
├── ArrayBuffer.md
├── Class.md
├── Decorator.md
├── Directory.md
├── ES6函数扩展.md
├── ES6基础.md
├── ES6对象扩展.md
├── ES6数组扩展.md
├── ES6正则表达式扩展.md
├── Generator.md
├── Iterator和for...of循环.md
├── Module.md
├── Promise.md
├── Proxy.md
├── Reflect.md
├── Set与Map数据结构.md
├── Symbol.md
├── async.md
├── let与const命令.md
├── 字符串.md
├── 字符编码.md
└── 解构赋值.md
├── HTML5
├── Directory.md
├── SVG.md
├── WebSocket.md
├── img
│ ├── TCP4.jpg
│ ├── TCP5.png
│ ├── asyncAndDefer.jpg
│ ├── 浏览器渲染.jpg
│ ├── 浏览器渲染_2.jpg
│ └── 浏览器渲染_3.jpg
├── meta标签.md
├── 本地存储.md
├── 浏览器渲染.md
└── 跨域.md
├── Java
├── Directory.md
├── Java基础.md
├── img
│ ├── dataType.jpg
│ ├── dataType01.jpg
│ └── keyWord.jpg
├── 对象容器.md
└── 继承.md
├── LICENSE
├── MOOC
├── C语言.md
├── Directory.md
├── IP地址.md
├── img
│ ├── 1482024465706.png
│ ├── IP地址.png
│ ├── OSI与TCP-IP.png
│ ├── kuaisu.jpg
│ ├── maopao.jpg
│ ├── shell-1.jpg
│ ├── shell-2.jpg
│ ├── shell-3.jpg
│ ├── shell-4.jpg
│ ├── shell-5.jpg
│ ├── 二叉树遍历-2.jpg
│ ├── 二叉树遍历.jpg
│ ├── 广播地址.jpg
│ ├── 机器指令-2.jpg
│ ├── 机器指令.jpg
│ ├── 机器数.jpg
│ └── 计算机组成部件.jpg
├── 数据结构.md
├── 树与二叉树.md
├── 算法排序.md
├── 计算机导论.md
└── 计算机网络.md
├── Nodejs
├── Buffer.md
├── Cluster.md
├── Directory.md
├── Error.md
├── EventEmitter.md
├── FileSystem.md
├── HTTP服务器.md
├── Stream.md
├── child_process.md
├── http模块.md
├── img
│ ├── EventEmitter.jpg
│ └── http-request.png
├── module.md
├── net.md
├── process.md
├── timer.md
└── 基础笔记.md
├── README.md
├── React_Native
├── Directory.md
├── ReactNative.md
├── ReactNative样式.md
└── Reactjs.md
├── SUMMARY.md
├── Todo.md
├── Vue
├── Directory.md
├── Vue.js.md
└── Vue模块.md
├── book.json
├── javascript
├── Ajax.md
├── CommonJS.md
├── DOM对象.md
├── DOM样式.md
├── Directory.md
├── HTML网页API.md
├── JSON.md
├── JavaScript数值.md
├── Object对象.md
├── export、import与require.md
├── img
│ ├── DataTransfer.jpg
│ ├── element.jpg
│ ├── rect.png
│ └── what-is-webpack.png
├── npm.md
├── window对象.md
├── 二进制数据事件.md
├── 函数.md
├── 数据类型转换.md
├── 数组.md
├── 标准对象.md
├── 移动端事件.md
└── 面向对象编程.md
├── styles
└── website.css
├── tool
├── Directory.md
├── Git.md
├── atom.md
├── img
│ └── what-is-webpack.png
├── reactRouter.md
├── reactjs.md
├── typings.md
├── webpack.md
└── 正则表达式.md
└── 后端开发
├── Directory.md
├── Linux命令.md
├── MongoDB.md
├── Mongoose.md
├── MySQL-2.md
├── MySQL.md
├── MySQL笔记大全.md
├── img
├── Inner_Join.png
├── Left_Outer_Join.png
├── http.png
├── mysql.jpg
├── mysql_float.jpg
├── mysql_int.jpg
├── mysql_sq.jpg
├── mysql_str.jpg
└── mysql_time.jpg
├── nginx.md
└── 爬虫技术.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | 使用方法:
2 |
3 | # /mtk/ 过滤整个文件夹
4 |
5 | # *.zip 过滤所有.zip文件
6 |
7 | # /mtk/do.c 过滤某个具体文件
8 |
9 | # gitignore还可以指定要将哪些文件添加到版本管理中:
10 | # !*.zip
11 | # !/mtk/one.txt
12 |
13 | #忽略自动生成的HTML文件目录
14 |
15 | /_book/
16 | /node_modules/
17 | .DS_Store
18 | test.js
19 |
--------------------------------------------------------------------------------
/2015/10/2015年10月10日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月10日
2 | ##javascript
3 |
4 | - addEventListener是一个侦听事件并处理相应的函数。
5 |
6 | **语法**
7 |
8 | element.addEventListener(event, function, useCapture)
9 |
10 | >第一个参数是需要绑定的事件,第二个参数是触发事件后要执行的函数。而第三个参数默认值是false,表示在事件冒泡的阶段调用事件处理函数,如果参数为true,则表示在事件捕获阶段调用处理函数。
11 |
12 | **事件冒泡**
13 |
14 | 微软提出了名为事件冒泡(event bubbling)的事件流。事件冒泡可以形象地比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面。也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。
15 |
16 | 因此上面的例子在事件冒泡的概念下发生click事件的顺序应该是p -> div -> body -> html -> document
17 |
18 | **事件捕获**
19 |
20 | 网景提出另一种事件流名为事件捕获(event capturing)。与事件冒泡相反,事件会从最外层开始发生,直到最具体的元素。
21 |
22 | 上面的例子在事件捕获的概念下发生click事件的顺序应该是document -> html -> body -> div -> p
23 |
24 | ```javascript
25 | document.getElementById("myP").addEventListener("click", function() {
26 | alert("你点击了 P 元素!");
27 | }, false);
28 |
29 | document.getElementById("myDiv").addEventListener("click", function() {
30 | alert("你点击了 DIV 元素!");
31 | }, false);
32 |
33 | document.getElementById("myP2").addEventListener("click", function() {
34 | alert("你点击了 P 元素!");
35 | }, true);
36 |
37 | document.getElementById("myDiv2").addEventListener("click", function() {
38 | alert("你点击了 DIV 元素!");
39 | }, true);
40 | ```
41 | >详情查看[连接](http://sandbox.runjs.cn/show/lsxcibvm)
42 |
43 | **兼容**
44 | 要兼容旧版本的IE浏览器,可以使用IE的attachEvent函数。
45 |
46 | object.attachEvent(event, function)
47 |
48 | 两个参数与addEventListener相似,分别是事件和处理函数,默认是事件冒泡阶段调用处理函数,要注意的是,写事件名时候要加上"on"前缀("onload"、"onclick"等)。
49 |
50 | ##Python
51 |
52 | ```python
53 | #TempConvert.py
54 | val = input("请输入带温度表示符号的温度值(例如: 32C): ")
55 | if val[-1] in ['C','c']:
56 | f = 1.8 * float(val[0:-1]) + 32
57 | print("转换后的温度为: %.2fF"%f)
58 | elif val[-1] in ['F','f']:
59 | c = (float(val[0:-1]) - 32) / 1.8
60 | print("转换后的温度为: %.2fC"%c)
61 | else:
62 | print("输入有误")
63 |
64 | ```
65 |
66 | >`%.2f`保留表示小数点后面两位。
67 |
68 | - 注释
69 |
70 | 方式:
71 | - 单行一`#`开头;
72 | - 多行一`'''`开头与结尾;
73 |
--------------------------------------------------------------------------------
/2015/10/2015年10月15日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月15日
2 | ##Python
3 |
4 | - 数字类型的运算
5 |
6 | |运算符和运算函数 |操作含义|
7 | |-------- |--------- |
8 | |x+y |x与y之和|
9 | |x-y |x与y之差|
10 | |x*y |x与y之积|
11 | |x/y |x与y之商|
12 | |x//y| 不大于x与y之商的最大整数|
13 | |x%y |x与y之商的余数|
14 | |+x |x|
15 | |-x |x的负值|
16 | |x**y| x的y次幂|
17 | |abs(x)| x的绝对值|
18 | |divmod(x,y) |(x//y,x%y)|
19 | |pow(x,y)| x的y次幂|
20 |
21 | - 字符串处理方法
22 |
23 | |操作 | 含义 |
24 | |------------------------|-----------------------|
25 | |+| 连接|
26 | |* |重复|
27 | |< string>[ ]| 索引|
28 | |< string>[ : ]| 剪切|
29 | |len(< string>)| 长度|
30 | |< string>.upper()| 字符串中字母大写|
31 | |< string>.lower()| 字符串中字母小写|
32 | |< string>.strip()| 去两边空格及去指定字符|
33 | |< string>.split()| 按指定字符分割字符串为数组|
34 | |< string>.join()| 连接两个字符串序列|
35 | |< string>.find()| 搜索指定字符串|
36 | |< string>.replace()| 字符串替换|
37 | |for < var> in < string>|字符串迭代 |
38 |
39 | ```python
40 |
41 | # month.py
42 | months="JanFebMarAprMayJunJulAugSepOctNovDec"
43 | n=input("请输入月份数(1-12):")
44 | pos=(int(n)-1)*3
45 | monthAbbrev=months[pos:pos+3]
46 | print("月份数是"+monthAbbrev+".")
47 |
48 |
49 | ```
--------------------------------------------------------------------------------
/2015/10/2015年10月18日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月18日
2 | ##Python
3 |
4 | **元组**
5 |
6 | 元组是包含多个元素的类型,元素之间用逗号分割。
7 | 元组中各元素存在先后关系,可以通过索引访问元组
8 | 中元素。
9 | ```python
10 | >>> t2=123,123314,24,("hello","china")
11 | >>> print(t2[2])
12 | 24
13 | >>> print(t2[3])
14 | ('hello', 'china')
15 | >>> print(t2[3][1])
16 | china
17 | >>>
18 | ```
19 |
20 | **列表**
21 | - 列表(list)是有序的元素集合;
22 | - 列表元素可以通过索引访问单个元素;
23 |
24 | 列表与元组不同
25 | 列表大小没有限制,可以随时修改。
26 |
27 | **列表操作**
28 |
29 | |列表操作符| 操作符含义|
30 | |-------|---------------|
31 | |< list1 > + < list2>| 连接两个列表|
32 | |< list > * < 整数类型 > |对列表进行整数次重复|
33 | |< list > [< 整数类型 >] |索引列表中的元素|
34 | |len( < seq > ) |列表中元素个数|
35 | |< list >[ < 整数类型 > : |< 整数类型 >] 取列表的一个子序列
36 | |for < var > in < list > :| 对列表进行循环列举
37 | |< expr > in < list > |成员检查,判断< expr>是否在列表中|
38 |
39 |
40 | **列表相关方法**
41 |
42 | |方法 |方法含义|
43 | |-----|---------|
44 | |< list > . append ( x )| 将元素x增加到列表的最后|
45 | |< list > . sort ( ) |将列表元素排序|
46 | |< list > . reverse ( )| 将序列元素反转|
47 | |< list > . index ( )| 返回第一次出现元素x的索引值|
48 | |< list > . insert ( i, x )| 在位置i处插入新元素x|
49 | |< list > . count ( x ) |返回元素x在列表中的数量|
50 | |< list > . remove ( x )| 删除列表中第一次出现的元素x|
51 | |< list > . pop ( i ) |取出列表中位置i的元素,并删除它|
52 |
53 | > 补充:split()函数,将字符串拆分成一个列表,默认以空格分割。
54 |
55 | **math库中常用的数学函数**
56 |
57 | 
58 | 
59 |
60 | **random库中常用的函数**
61 |
62 | 
63 |
64 | **Pi圆周率计算函数**
65 | ```python
66 | # pi.py
67 | from random import random
68 | from math import sqrt
69 | from time import clock
70 |
71 | DARTS = 1200000
72 | hits = 0
73 | clock()
74 | for i in range(1,DARTS):
75 | x, y = random(), random()
76 | dist = sqrt(x**2 + y**2)
77 | if dist <= 1.0:
78 | hits = hits + 1
79 | pi = 4 * (hits/DARTS)
80 | print("Pi的值是 %s" % pi)
81 | print("程序运行时间是 %-5.5ss" % clock())
82 |
83 |
84 | ```
85 |
86 | ##慕课
87 | 当代人社会心理的三大特点
88 | - 渴望发言
89 | - 寻求联系
90 | - 得到庇护
91 |
92 | 社交关系
93 | - 强关系
94 | - 弱关系
95 | + 线上关系
96 | + 线下关系
97 | - 无关系
--------------------------------------------------------------------------------
/2015/10/2015年10月19日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月19日
2 | ##Ajax
3 | **创建 XMLHttpRequest 对象**
4 |
5 | variable=new XMLHttpRequest();
6 |
7 | **Ajax调用示例**
8 | ```js
9 | //创建XHR对象
10 | var xhr=new XMLHttpRequest();
11 | //处理返还数据
12 | xhr.onreadystatechange=function(callback){
13 | if(xhr.readyState==4){
14 | if((xhr.status>=200&&xhr.status<300)||xhr.status==304){
15 | callback(xhr.responseText);
16 | }else{
17 | alert("Request was unsuccessful:"+xhr.status);
18 | }
19 | }
20 | }
21 | //发送请求
22 | xhr.open('get','example.json',true);
23 | xhr.setRequestHeader('myHeader','myValue');
24 | xhr.send(null);
25 | ```
26 |
27 | - xhr.open(method,url[,async=true);
28 |
29 | method一般有`get`、`post`等方法。
30 | url[ :请求资源相对文档路径。
31 | async :是一个布尔值。
32 |
33 | - xhr.setRequestHeader('myHeader','myValue');
34 |
35 | **XMLHttpRequest 对象的三个重要的属性**
36 |
37 |
38 |
39 | 属性 |
40 | 描述 |
41 |
42 |
43 |
44 | onreadystatechange |
45 | 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。 |
46 |
47 |
48 |
49 | readyState |
50 |
51 | 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
52 |
53 | - 0: 请求未初始化
54 | - 1: 服务器连接已建立
55 | - 2: 请求已接收
56 | - 3: 请求处理中
57 | - 4: 请求已完成,且响应已就绪
58 |
59 | |
60 |
61 |
62 |
63 | status |
64 | 200: "OK" 404: 未找到页面 |
65 |
66 |
67 |
68 | ##慕课
69 |
70 | - 金牌用户策略
71 | - 信息平衡策略
72 | - 资源聚焦策略
--------------------------------------------------------------------------------
/2015/10/2015年10月20日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月20日
2 | ##Ajax
3 | 概念介绍
4 | - 运动HTML和css实现页面,表达信息。
5 | - 运行XMLHttpRequest和web服务器进行数据的异步交换。
6 | - 运行javascript操作DOM,实现动态局部刷新。
7 |
8 | 首先要构建XML对象
9 |
10 | ```js
11 | var xmlhttp;
12 | if (window.XMLHttpRequest)
13 | {// code for IE7+, Firefox, Chrome, Opera, Safari
14 | xmlhttp=new XMLHttpRequest();
15 | }
16 | else
17 | {// code for IE6, IE5
18 | xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
19 | }
20 | ```
21 |
22 | **`HTTP`一种无状态协议。**
23 | HTTP请求的七个步骤:
24 | - 建立TCP连接
25 | - Web浏览器向Web服务器发送请求命令
26 | - Web浏览器发送请求头信息
27 | - Web服务器应答
28 | - Web服务器发送应答头信息
29 | - Web服务器向浏览器发送数据
30 | - Web服务器关闭TCP连接
31 |
32 | **HTTP请求**
33 | 
34 |
35 | **XHR发送请求**
36 | - open(method,url,async)
37 | - send(string)
38 |
39 | **XMLHttpRequest取得响应**
40 | 
41 |
42 | **readyState属性**
43 | - 0:请求未初始化,open还没有调用。
44 | - 1:服务器连接已建立,open已经调用了。
45 | - 2:请求已接受,也就是接收到头信息。
46 | - 3:请求处理中,也就是接收到响应主体。
47 | - 4:请求已完成,且响应已就绪,也就是响应完成了。
48 |
49 | 监听代码:
50 | ```js
51 | var request=new XMLHttpRequest();
52 | request.open("GET","get.php",true);
53 | request.send();
54 | request.onreadystatechange=function{
55 | if(request.readyState===4&&request.status===200){
56 | //做一些事情 request.responseText
57 | }
58 | }
59 | ```
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/2015/10/2015年10月26日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月26日
2 | ##Ajax
3 | - 无刷新数据获取
4 | - 用户注册、在线聊天室
5 |
6 | eval(str):可以把字符串解析成可识别的json数据。
7 |
8 | ```js
9 | function ajax(url, fnSucc, fnFaild)
10 | {
11 | //1.创建Ajax对象
12 | if(window.XMLHttpRequest)
13 | {
14 | var oAjax=new XMLHttpRequest();
15 | }
16 | else
17 | {
18 | var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
19 | }
20 |
21 | //2.连接服务器(打开和服务器的连接)
22 | oAjax.open('GET', url, true);
23 |
24 |
25 | //3.发送
26 | oAjax.send();
27 |
28 | //4.接收
29 | oAjax.onreadystatechange=function ()
30 | {
31 | if(oAjax.readyState==4)
32 | {
33 | if(oAjax.status==200)
34 | {
35 | //alert('成功了:'+oAjax.responseText);
36 | fnSucc(oAjax.responseText);
37 | }
38 | else
39 | {
40 | //alert('失败了');
41 | if(fnFaild)
42 | {
43 | fnFaild();
44 | }
45 | }
46 | }
47 | };
48 | }
49 | ```
50 |
51 | [{a: 5, b: 7}, {a: 8, b: 12}]
52 | arr[0] ------[object Object]
53 | arr[0].a------5
54 |
55 | [{user: 'blue', pass: '123456'},{user: '张三', pass: '654321'},{user: '李四', pass: '789456'},{user: '王五', pass: '7777'}]
56 | aLi.innerHTML="user:"+data[i].user+";pass:"+data[i].pass+"";
57 |
58 | ##javascript
59 | 1. { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。
60 |
61 | >var LangShen = {"Name":"Langshen","AGE":"28"};
62 |
63 | ```javascript
64 | var LangShen = {
65 | Name = function(){
66 | return "LangShen";
67 | },
68 | Age = function(){
69 | return "28";
70 | }
71 | }
72 | ```
73 |
74 | 2. [ ]中括号,表示一个数组,也可以理解为一个数组对象。
75 | var LangShen = [ "Name","LangShen","AGE","28" ];
76 |
77 | 3. { } 和[ ] 一起使用,我们前面说到,{ } 是一个对象,[ ] 是一个数组,我们可以组成一个对象数组.
78 |
79 | ```javascript
80 | var LangShen = { "Name":"Langshen",
81 | "MyWife":[ "LuLu","26" ],
82 | "MySon":[{"Name":"Son1"},{"Name":"Son2"},{"Name":"Son3"}]
83 | }
84 | ```
85 |
86 | >调用起来,也是一层一层访问,对象的属性用.(点)叠加,数组用 [下标] 来访问。
87 | 如:alert( LangShen.MySon[1].Name ) ;
88 |
89 | **eval函数的工作原理**
90 |
91 | eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。
--------------------------------------------------------------------------------
/2015/10/2015年10月29日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月29日
2 | ##css
3 |
4 | **content-box**:此值为其默认值,其让元素维持W3C的标准Box Model,也就是说元素的宽度/高度(width/height)等于元素边框宽度(border)加上元素内边距(padding)加上元素内容宽度 /高度(content width/height)即:Element Width/Height = border+padding+content width/height。
5 |
6 | **border-box**:此值让元素维持IE传统的Box Model(IE6以下版本),也就是说元素的宽度/高度等于元素内容的宽度/高度。这里的content width/height包含了元素的border,padding,内容的width/height。即此处的内容宽度/高度=width /height-border-padding。
7 |
8 | 
9 |
10 | **z-index**
11 | 决定元素层次的属性,拥有较高堆叠数值的元素在上层。
12 |
--------------------------------------------------------------------------------
/2015/10/2015年10月31日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月31日
2 | ##json
3 | 名称/值对组合中的名称写在前面(**在双引号中**),值对写在后面(**同样在双引号中**),中间用冒号隔开:
4 |
5 | {"firstName":"John"}
6 |
7 | var dataObj=eval("("+data+")");//转换为json对象
8 |
9 | >加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。
10 |
11 | ```json
12 | //示例1:此示例使用 JSON.parse 将 JSON 字符串转换为对象
13 | var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
14 | var contact = JSON.parse(jsontext);
15 | document.write(contact.surname + ", " + contact.firstname + ", "+ contact.phone);
16 |
17 | ```
18 |
19 | >建议使用JSON.parse(),eval()存在安全隐患。
20 |
--------------------------------------------------------------------------------
/2015/10/2015年10月8日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月8日
2 | ##querySelector和querySelectorAll
3 | ```js
4 | document.querySelector("body");//放回body节点
5 | document.querySelector("#k");//返回id为k的节点
6 | document.querySelector("#k span");//返回id为k的节点下的第一个span节点
7 | document.querySelector("#k").querySelector("span");//返回id为k的节点下的第一个span节点
8 |
9 | document.querySelectorAll("li");//返回所用tagName为li的节点集合(NodeList)
10 | document.querySelectorAll("div .li");//返回class为li的div
11 | ```
12 |
13 | >querySelectorAll 方法接收的参数是一个 **CSS 选择符**。而 getElementsBy 系列接收的参数只能是单一的*className*、*tagName* 和*name*。
14 | querySelectorAll比较耗费性能。
--------------------------------------------------------------------------------
/2015/10/2015年10月9日.markdown:
--------------------------------------------------------------------------------
1 | #2015年10月9日
2 | ##javascript
3 |
4 | ###javascript中的[ ] { }是什么意思
5 | ```js
6 | //用{}定义一组对像
7 | var obj = {a:1111,b:2222,c:'abc',d:function(){
8 | alert('对像:d函数');
9 | }};
10 | alert('对像:'+obj.b);//调用对像b
11 | obj.d(); //调用对像d函数
12 |
13 |
14 | //[]是数组形式,{}是对象形式,都可以包含其他类型.
15 | var a= ["A","B",{a:1,b:2}];
16 | //a[1] 取得的是B,a[2].b取得的是2;
17 | var s = {a:1,b:["A","B"]}
18 | //s.a取得的是1,s.b[1]取得的是A
19 | //
20 | //
21 | ////JSON中同时使用[]和{}
22 | var json = [{"arr1":{"a":123,"b":456},"arr2":{"a":789,"c":"abcdefg"}},{"arr1":{"a":"uuuuu","b":"oooo"},"arr2":{"a":"aaa9999","c":"abcdefg"}}];
23 | alert('JSON1:'+json[0].arr2.a);
24 | alert('JSON2:'+json[1].arr2.a);
25 | ```
26 |
27 | ###split()
28 | **split()** 方法用于把一个字符串分割成字符串数组。
29 | 语法:`stringObject.split(separator,howmany)`。
30 |
31 | ###join()
32 | **join()** 方法用于把数组中的所有元素放入一个字符串。
33 | 语法:`arrayObject.join(separator)`。
34 |
35 |
36 | ###indexOf()
37 | **indexOf()**方法可返回某个指定的字符串值在字符串中首次出现的位置。.
38 |
39 | ###substring()
40 | **substring()** 方法用于提取字符串中介于两个指定下标之间的字符。substring() 不接受负的参数。
41 |
42 | ###decodeURIComponent()与encodeURIComponent()
43 |
44 | `encodeURIComponent() `函数可把字符串作为 URI 组件进行编码。
45 | `decodeURIComponent() `函数可对` encodeURIComponent()` 函数编码的 URI 进行解码。
46 |
47 | ```js
48 | var test1="http://www.w3school.com.cn/My first/"
49 |
50 | document.write(encodeURIComponent(test1)+ "
")
51 | document.write(decodeURIComponent(test1))
52 |
53 | ```
54 |
55 | 输出
56 |
57 | ```js
58 | http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
59 | http://www.w3school.com.cn/My first/
60 | ```
--------------------------------------------------------------------------------
/2015/10/img/HTTP-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/HTTP-2.jpg
--------------------------------------------------------------------------------
/2015/10/img/HTTP.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/HTTP.jpg
--------------------------------------------------------------------------------
/2015/10/img/box-sizing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/box-sizing.png
--------------------------------------------------------------------------------
/2015/10/img/math函数-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/math函数-2.jpg
--------------------------------------------------------------------------------
/2015/10/img/math函数.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/math函数.jpg
--------------------------------------------------------------------------------
/2015/10/img/random.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/random.jpg
--------------------------------------------------------------------------------
/2015/11/2015-11-16-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/11/2015-11-16-1.jpg
--------------------------------------------------------------------------------
/2015/11/2015年11月11日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月11日
2 | ##学习资料
3 |
4 | 入门三板斧:
5 |
6 | http://www.cnblogs.com/jikey/p/3613082.html
7 |
8 | 入门看这个系列。
9 |
10 | http://pan.baidu.com/s/1pJqJvAV
11 |
12 | 入门JS视频。
13 |
14 | http://pan.baidu.com/s/1o6DTGro
15 | http://pan.baidu.com/s/1qWPntdq
16 |
17 | 入门HTML5视频
18 |
19 | http://pan.baidu.com/s/1bnlHT3x
20 |
21 | 前端开发 资料都在这里边。
22 |
23 | http://t.cn/Rv38Wg7
24 |
25 | API参考手册大全
26 |
27 | http://www.cnblogs.com/sb19871023/p/3894452.html
28 |
29 | 前端知识结构
30 |
31 | http://pan.baidu.com/s/1pJqJvAV
32 |
33 | 这个视频我当时花了一年的时间看完看懂,看完视频里边的代码敲了2边,前前后后2年。
34 |
35 | http://www.cnblogs.com/jikey/p/3613082.html
36 |
37 | 这个系列是重点,看完在看我博客,准备面试,作品什么的。
38 |
39 | http://www.cnblogs.com/jikey
40 |
41 |
--------------------------------------------------------------------------------
/2015/11/2015年11月12日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月12日
2 | ##javascript
3 |
4 | getElementById
5 |
6 | - FF下直接使用ID存在问题
7 | - 引入document.getElementById()
8 | - document.getElementById在任何浏览器下均可以使用
9 |
10 | 网站换肤
11 |
12 | - 任何标签都可以加ID,包括link
13 | - 任何标签的属性,都可以修改
14 | - HTML里怎样写 ,javascript就怎样写
15 |
16 | 在DOM中,class要写成className;
17 |
18 | 字面量:看到的东西,自然知道什么。12、"abc"。
19 |
20 | 变量:var a=?
21 |
22 | style和className
23 |
24 | - 元素.style.属性=xxx是修改行间样式
25 | - 之后再修改className不会有效果
26 |
27 | **提取行间样式**
28 | 提取事件
29 |
30 | - 为元素添加事件
31 | + 时间和其他属性一样,可以用javascript添加;
32 | + window.onload的意义;
33 | + 行为、样式、结构三者分离;
34 |
35 | >元素的样式与属性,一次只能设置一次。
36 |
37 | 或者一组元素
38 |
39 | - getElementById
40 | + 数组的使用
41 | + 里面的
42 |
43 |
--------------------------------------------------------------------------------
/2015/11/2015年11月13日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月13日
2 | ##HTML&CSS
3 | **CSS content内容生成技术以及应用**
4 |
5 | ```css
6 | h2:before {
7 | content: "我是额外文字!";
8 | }
9 | ```
10 |
11 | >h2标签前面添加文字;
12 |
13 | ```html5
14 | a.content:after {
15 | content: attr(href);
16 | }
17 | 此标签的href值是:
18 | ```
19 |
20 | >结果:"此标签的href值是:http ://www.zhangxinxu.com/" ;
21 |
22 | >content属性的值除了使用文本值外,还可以使用标签的一些属性值,方法是attr()
23 |
24 | **HTMLElement.dataset**
25 |
26 | 自定义的数据属性名称是以 data- 开头的。
27 | 这种方式通过访问一个元素的`dataset` 属性来存取 `data-*` 自定义属性的值。这个 dataset 属性是HTML5 JavaScript API的一部分,用来返回一个所有选择元素 data- 属性的DOMStringMap对象。
28 |
29 | 使用这种方法时,不是使用完整的属性名,如 `data-uid` 来存取数据,应该去掉`data-` 前缀。
30 |
31 | 带连字符连接的名称在使用的时候需要命名驼峰化,即大小写组合书写.
32 |
33 | `data-meal-time`,则我们要获取相应的值可以使用:`expenseday2.dataset.mealTime`
34 |
35 | ```js
36 | 码头
37 | s
49 | ```
--------------------------------------------------------------------------------
/2015/11/2015年11月16日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月16日
2 | ##JavaScript
3 | `this`当前发生事件的元素.
4 |
5 | JavaScript组成:
6 | - ECMAscript 翻译\核心\解析器
7 | - DOM
8 | - BOM
9 |
10 |
11 | **变量的类型**:
12 |
13 | number,string,boolean,,function,object,undefined
14 |
15 | `typeof`可以返还变量的类型;
16 |
17 | `parseInt()`把字符串转换成字符串,遇到不是数字的东西,就会停止,把前面的内容返还出去.
18 |
19 | NaN与任何数字相加,都等于NaN.
20 |
21 | NaN+a=NaN;
22 |
23 | 用`isNaN()`可以检测是否是NaN;
24 |
25 | `parseInt()`只能转换成整数,`parseFloat()`可以转换成小数.
26 |
27 | **作用域与闭包**
28 | 局部变量:在函数内部的使用
29 |
30 | 全局变量:在所有地方都能使用
31 |
32 |
33 | 子函数使用父函数的变量
34 |
35 | ```js
36 | function aa(){ //父函数
37 | var a=12;
38 | function bb(){ //子函数
39 | alert(a);
40 | }
41 | bb();
42 | }
43 | aa();
44 |
45 | ```
46 |
47 | 命名规范
48 | 
49 |
50 | **运算符**
51 |
52 | %取模
53 | 12%5=2;
54 |
55 | `&&`:与;
56 | `||`:或;
57 | `!`:否;
58 |
59 | ```js
60 | switch(value){
61 | case value1:
62 | 语句1
63 | break;
64 | case value2:
65 | 语句2
66 | break;
67 | ......
68 | default:
69 | 语句n;
70 | }
71 | ```
72 |
73 | `break`:把整个循环都终端;
74 | `continue`:跳过本次循环;
75 |
76 | 真:true,非零数字,非空字符串,非空对象
77 | 假:false,数字0,空字符串,null,空对象,undefined
78 |
79 | **JSON**
80 | ```js
81 | var json={a:12,b:3,c:43};
82 | var arr=[12,3,43];
83 | alert(json['a']);
84 | alert(arr[0]);
85 |
86 | //循环json
87 | for(var i in json){
88 | alert(json[i]);
89 | }
90 |
91 | ```
92 |
93 | ##python
94 | **常用编码**
95 | Unicode
96 | - 跨语言、跨平台进行文本转换和处理
97 | - 对每种语言中字符设定统一且唯一的二进制编码
98 | - 每个字符两个字节长
99 | - 65536(256*256) 个字符的编码空间
100 | - “严”:Unicode的十六进制数为4E25
101 |
102 | UTF-8编码
103 | - 可变长度的Unicode的实现方式
104 | - “严”:十六进制数为E4B8A5
105 |
106 | GBK编码
107 | - 双字节编码
108 | - 举例
109 |
110 |
111 |
--------------------------------------------------------------------------------
/2015/11/2015年11月17日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月17日
2 | ##JavaScript
3 |
4 | 一个函数只返回一种类型的值;
5 |
6 | arguments 可变参 不定参(参数可变,个数必定)
7 |
8 | `argument.length`可以返还函数的个数值;
9 |
10 | **取非行间样式**
11 |
12 | `getComputedStyle`是一个可以获取当前元素所有**最终使用的CSS属性值**。返回的是一个CSS样式声明对象`([object CSSStyleDeclaration])`,只读。
13 |
14 | var style = window.getComputedStyle("元素", "伪类");
15 | >第二个参数“伪类”是必需的(如果不是伪类,设置为null),不过现在嘛,不是必需参数了。
16 |
17 | oDivStyle=oDiv.currentStyle||getComputedStyle(oDiv);
18 | >兼容IE,FF,Chrome.
19 |
20 | 复合样式:background,border
21 |
22 | 单一样式:width,height,
23 |
24 | ###数组
25 |
26 | 数组方法
27 |
28 | - 添加
29 | + push(元素),将一个或多个新元素添加到数组结尾,并返回数组新长度
30 | + unshift(元素),将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
31 |
32 | - 删除
33 | + pop(),移除最后一个元素并返回该元素值
34 | + shift(),移除最前一个元素并返回该元素值,数组中元素自动前移
35 |
36 | - 插入,删除
37 | + splice(起点,删除长度,添加元素)
38 | 语法:splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]])
39 |
40 | - 连接
41 | + concat(),a.concat(b);
42 | + join(),用指定连接符连接数组每一个元素.
43 |
44 | - 排序
45 | + sort(), `arr.sort()`;
46 |
47 | ```js
48 | //比较函数
49 | arr.sort(function(n1,n2){
50 | if(n1n2){
53 | return 1;
54 | }else{
55 | return 0;
56 | }
57 | })
58 | ```
59 |
60 | ###定时器
61 |
62 | `setInterval()`,每隔指定时间执行一次,`clearInterval()`取消定时器.
63 |
64 | `setTimeout()`,延迟指定时间执行一次,使用`clearTimeout()`取消定时器.
65 |
66 | `charAt()`:获取字符串上某位的内容.
67 |
68 | 获取时间对象:
69 | `getHours()`:时;
70 | `getMinutes()`:分;
71 | `getSeconds()`:秒;
72 | `getFullYear()`:年;
73 | `getMonth()`:月,这个要加"1";
74 | `getDate()`:日;
75 | `getDay()`:星期;
76 |
--------------------------------------------------------------------------------
/2015/11/2015年11月18日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月18日
2 | ##JavaScript
3 |
4 | offsetLeft:综合考虑 所有因素,获取物体的左边距.
5 | obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置.
6 | 如果当前元素的父级元素中有CSS定位(position为absolute或relative),offsetParent取最近的那个父级元素。
7 |
8 | offsetWidth = width + padding + border
9 |
10 | offsetHeight = height + padding + border
11 |
12 |
13 | width是字符串;offsetWidth是数字;
14 | style.left是**读写**的,offsetLeft是**只读**的,所以要改变div的位置,只能修改style.left。
15 |
16 | ###DOM
17 |
18 | `childNodes`:子节点,包括文本节点与元素节点.
19 |
20 | `nodeType`:文本节点的类型;
21 | >1:元素节点;3:文本节点;
22 |
23 | `children`:非标准属性;
24 |
25 | `parentNode`:父节点;
26 |
27 | `offsetParent`:获取元素用来定位的父级`
28 |
29 | `firstElementChild`:第一个元素节点;
30 |
31 | `firstChild`:低版本指元素节点,高版本浏览器指文本节点;
32 |
33 | >`lastChild1`与`lastElementChild`,`nextSibling`与`nextElementSibling`,`previousSibling`与`previousElementSibling`;
34 |
35 | **元素属性操作**
36 |
37 | - oDiv.style.display="block";
38 | - oDiv.style.["display"]="block";
39 | - DOM方式
40 |
41 | DOM方式操作元素属性
42 |
43 | - 获取:getAttribute(名称)
44 | - 设置:setAttribute(名称,值)
45 | - 删除:removeAttribute(名称)
46 |
47 | ```js
48 | alert(oTxt.getAttribute("value"))
49 |
50 | oTxt.setAttribute("value","hello world");
51 |
52 | oTxt.removeAttribute("value");
53 | ```
54 |
55 |
56 | **获取指定class元素**
57 |
58 | ```js
59 | function getByClass(oParent,sClass){
60 | var aResult=[];
61 | var aEle=oParent.getElementsByTagName("*");
62 | for(var i=0;i
10 |
29 | ```
30 |
31 | ###各浏览器下 scrollTop的差异
32 |
33 | **IE6/7/8:**
34 | 对于没有doctype声明的页面里可以使用 document.body.scrollTop 来获取 **scrollTop高度 ;**
35 | 对于有doctype声明的页面则可以使用 document.documentElement.scrollTop;
36 | **Safari:**
37 | safari 比较特别,有自己获取scrollTop的函数 : window.pageYOffset ;
38 | **Firefox:**
39 | 火狐等等相对标准些的浏览器就省心多了,直接用 document.documentElement.scrollTop ;
40 |
41 |
42 | **各参数细分**
43 |
44 | `clientHeight`是内容可视区域的高度,也就是说页面浏览器中可以看
45 | 到内容的这个区域的高度。
46 |
47 | `scrollTop`就等于这部分“不可见的内容”的高度。
48 |
49 | 网页可见区域宽:document.body.clientWidth;
50 | 网页可见区域高:document.body.clientHeight;
51 | 网页可见区域宽:document.body.offsetWidth;(包括边线的宽)
52 | 网页可见区域高:document.body.offsetHeight;(包括边线的宽)
53 | 网页正文全文宽:document.body.scrollWidth;
54 | 网页正文全文高:document.body.scrollHeight;
55 | 网页被卷去的高:document.body.scrollTop;
56 | 网页被卷去的左:document.body.scrollLeft;
57 | 网页正文部分上:window.screenTop;
58 | 网页正文部分左:window.screenLeft;
59 | 屏幕分辨率的宽:window.screen.width;
60 | 屏幕分辨率的高:window.screen.height;
61 | 屏幕可用工作区宽度:window.screen.availWidth;
62 | 屏幕可用工作区高度:window.screen.availHeight;
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/2015/11/2015年11月24日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月24日
2 | ##javascript
3 | 在多物体运动框架中,所有东西都不能共用;
4 |
5 | offsetWidth=width+padding+border+margin;
6 | `offsetWidth`获取的是盒模型宽度;
7 |
8 | `*.style.width`读取行间样式中设置的宽度;
9 |
10 | ```javascript
11 | //多物体运动框架
12 | function startMove(obj,attr,iTarget){
13 |
14 | clearInterval(obj.timer);
15 |
16 | obj.timer=setInterval(function(){
17 |
18 |
19 | var cur=0;
20 | if(attr=='opacity'){
21 | cur=Math.round(parseFloat(getStyle(obj,attr))*100);
22 | }else{
23 | cur=parseInt(getStyle(obj,attr));
24 | }
25 | var speed=(iTarget-cur)/6
26 | speed=speed>0?Math.ceil(speed):Math.floor(speed);
27 |
28 | if (cur==iTarget) {
29 | clearInterval(obj.timer);
30 | }else{
31 | if(attr=='opacity'){
32 | obj.style.opacity=(cur+speed)/100;
33 | obj.style.filter='alpha(opacity:'+(cur+speed)+');';
34 | }else{
35 | obj.style[attr]=cur+speed+'px';
36 | }
37 |
38 | }
39 | },30);
40 | }
41 |
42 | function getStyle(obj,name){
43 | if (obj.currentStyle) {
44 | return obj.currentStyle[name];//用点号会怎样
45 | }else{
46 | return getComputedStyle(obj,false)[name];
47 | }
48 | }
49 | ```
50 |
51 | ##开发方法
52 | **敏捷开发**
53 |
54 | - 以人为核心、迭代、循序渐进
55 | - 针对传统的瀑布开发模式的弊端
56 | - 分为多个相互联系、独立运行的小项目
57 | - 软件一直处于可使用状态
58 |
59 | **敏捷开发更符合软件开发的规律**
60 |
61 | - 软件---植物
62 | - 自底向上
63 | - 逐步有序
64 | - 遵循软件客观规律,
65 | - 迭代增量开发
--------------------------------------------------------------------------------
/2015/11/2015年11月25日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月25日
2 | ##Python
3 | 图素法和像素法的区别:
4 | 图形---矢量图
5 | 图像---像素图
6 |
7 | 图形用户界面
8 | GUI
9 |
10 | Tkinter--Python 标准GUI
11 |
12 | Graphics--基于Tkinter扩展
13 |
14 | Turtle--Python内置的图形库
15 |
16 |
17 |
--------------------------------------------------------------------------------
/2015/11/2015年11月27日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月27日
2 | ##javascript
3 | **json**
4 | json循环用`for in `的方式。
5 |
6 | ```json
7 | var json={a:12,b=15};
8 | for(var i in json){
9 | alert(a+'='+json[i])
10 | }
11 | ```
12 |
13 | **完美运动框架**
14 |
15 | ```js
16 | function getStyle(obj, name)
17 | {
18 | if(obj.currentStyle)
19 | {
20 | return obj.currentStyle[name];
21 | }
22 | else
23 | {
24 | return getComputedStyle(obj, false)[name];
25 | }
26 | }
27 |
28 |
29 | function startMove(obj, json, fnEnd)
30 | {
31 | clearInterval(obj.timer);
32 | obj.timer=setInterval(function (){
33 | var bStop=true; //假设:所有值都已经到了
34 |
35 | for(var attr in json)
36 | {
37 | var cur=0;
38 |
39 | if(attr=='opacity')
40 | {
41 | cur=Math.round(parseFloat(getStyle(obj, attr))*100);
42 | }
43 | else
44 | {
45 | cur=parseInt(getStyle(obj, attr));
46 | }
47 |
48 | var speed=(json[attr]-cur)/6;
49 | speed=speed>0?Math.ceil(speed):Math.floor(speed);
50 |
51 | if(cur!=json[attr])
52 | bStop=false;
53 |
54 | if(attr=='opacity')
55 | {
56 | obj.style.filter='alpha(opacity:'+(cur+speed)+')';
57 | obj.style.opacity=(cur+speed)/100;
58 | }
59 | else
60 | {
61 | obj.style[attr]=cur+speed+'px';
62 | }
63 | }
64 |
65 | if(bStop)
66 | {
67 | clearInterval(obj.timer);
68 |
69 | if(fnEnd)fnEnd();
70 | }
71 | }, 30);
72 | }
73 | ```
74 |
75 | 运动框架演变过程
76 |
77 | - startMove(iTarget) 运动框架
78 | - startMove(obj,iTarget) 多物体
79 | - startMove(obj,attr,iTarget) 任意值
80 | - startMove(obj,attr,iTarget,fn) 链式运动
81 | - startMove(obj,json) 多值运动
82 | - startMove(obj,json,fn) 完美运动框架
83 |
84 |
85 |
--------------------------------------------------------------------------------
/2015/11/2015年11月28日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月28日
2 | ##javascript
3 |
4 | alert(document.childNodes[1].tagName);
5 | //HTML
6 |
7 | `document`是文件的最顶层标签,一般隐藏。
8 |
9 | 事件处理函数
10 |
11 | ```js
12 | //IE
13 | //alert(event.clientX+','+event.clientY);
14 | //
15 | //FF
16 | //alert(ev.clientX+','+ev.clientY);
17 | //
18 | //
19 | //兼容写法
20 | oEvent=ev||event;
21 |
22 |
23 | ```
24 |
25 | 事件冒泡
26 |
27 | 冒泡从最底层的标签开始,然后一层层向上触发事件。
28 |
29 | oEvent.cancelBubble=true;//取消事件冒泡。
30 |
31 |
32 | **onmousemove**
33 |
34 | scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
35 |
36 | 封装函数
37 |
38 | ```javascript
39 | function getPos(ev){
40 | var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
41 | var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
42 |
43 | return{x:ev.clientX+scrollLeft,y:ev.clientY+scrollTop};
44 |
45 | }
46 | ```
47 |
48 | **onkeydown、onkeyup**
49 |
50 | ```javascript
51 | document.onkeyup=function (ev)
52 | {
53 | var oEvent=ev||event;
54 |
55 | alert(oEvent.keyCode);//弹出按键字母对应的ASCII表的数字。
56 | };
57 |
58 | ```
59 |
60 | `oEvent.keyCode==13 && oEvent.ctrlKey`:回车加`ctrl`触发事件函数;
61 |
62 | `oEvent.keyCode==13 && oEvent.keyCode==16`在浏览器中没有反应;
63 |
64 | >还有`shiftKey`,`altKey`,用来确定按键有没有被按下去。
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/2015/11/2015年11月29日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月29日
2 | ##javascript
3 |
4 | **默认行为**
5 |
6 | ```javascript
7 | document.oncontextmenu=function(ev){
8 | var oEvent=ev||event;
9 | var oDiv=document.getElementById('div1');
10 | oDiv.style.display='block';
11 | oDiv.style.left=oEvent.clientX+'px';
12 | oDiv.style.top=oEvent.clientY+'px';
13 |
14 | return false;//阻止默认事件;
15 | }
16 | ```
17 |
18 | >阻止默认的右键菜单,弹出自定义菜单;
19 |
20 | **事件绑定**
21 |
22 | >添加事件会相会覆盖;
23 |
24 | `attachEvent(事件名,函数)`:IE10一下支持,对应的接触绑定函数是`detachEvent(事件名,函数)`;
25 |
26 | `addEventListener(事件名,函数,false)`:支持火狐、Chrome,接触绑定函数是`removeEventListener(事件名,函数,false)`;
27 |
28 | **事件捕获**
29 |
30 | //只适用于IE;
31 | `setCapture()`:事件捕获函数;
32 | 事件就是把时间都集中到一个对象(例如按钮)中处理;
33 |
34 | `releaseCapture()`:取消事件捕获;
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/2015/11/2015年11月2日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月2日
2 | ##Ajax
3 | `push()` 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
4 |
5 | ```js
6 |
7 | var arr = new Array(3)
8 | arr[0] = "George"
9 | arr[1] = "John"
10 | arr[2] = "Thomas"
11 |
12 | document.write(arr + "
")
13 | document.write(arr.push("James") + "
")
14 | document.write(arr)
15 |
16 |
17 | //输出
18 | George,John,Thomas
19 | 4
20 | George,John,Thomas,James
21 | ```
22 |
23 | `join()` 方法用于把数组中的所有元素放入一个字符串。
24 | 元素是通过指定的分隔符进行分隔的。
25 |
26 | ```js
27 | var arr = new Array(3)
28 | arr[0] = "George"
29 | arr[1] = "John"
30 | arr[2] = "Thomas"
31 |
32 | document.write(arr.join("."))
33 |
34 | //输出:
35 | George.John.Thomas
36 | ```
37 |
38 | Ajax的POST请求
39 | ```js
40 | xhr.setRequestHeader("Content-Type",application/json);
41 | xhr.send(json.stringify({
42 | keyword:'c',
43 | other:'test'
44 | }));
45 | ```
46 |
47 | Ajax超市设置
48 | ```js
49 | xhr.timeout=5000;
50 | xhr.ontimeout=function(){
51 | console.log('timeout!');
52 | }
53 | ```
--------------------------------------------------------------------------------
/2015/11/2015年11月30日.markdown:
--------------------------------------------------------------------------------
1 | #2015年11月30日
2 | ##Ajax
3 |
4 | 阻止缓存,加上时间毫秒数`new Date().getTime()`。
5 |
6 | 读取的是字符串,通过`eval()`函数转成javascript能识别的语句。
7 |
8 |
9 | get:通过网址,容量小;
10 |
11 | post:不通过网址,容量大(2G),安全性好一点;
12 |
13 | 最安全是使用HTTPS;
14 |
15 | 网址的长度是有限的,
16 |
17 | ```
18 | var a=12;
19 | alert(a)=window.alert(window.a);//全局变量是window上的一个属性。
20 |
21 | ```
22 |
23 | 用没有定义的变量---报错;
24 | 用没有定义的属性---underfined
25 |
26 |
27 |
--------------------------------------------------------------------------------
/2015/12/2015年12月10日.markdown:
--------------------------------------------------------------------------------
1 | #2015年12月10日
2 | ##jQuery
3 |
4 | javascript对大小写敏感(关键字、函数名、变量名等),标识符的首字符必须是**字母**、**下划线 `_`**或者**`$`符**,其后的字符可以含**数字**
5 |
6 |
7 | **匿名函数自执行**
8 |
9 | ```js
10 |
11 | (function(){
12 | var a=10;
13 | alert(a);
14 | })();
15 |
16 | ```
17 |
18 |
19 |
20 | ##关于冒泡和捕获
21 |
22 | ###捕获
23 |
24 | 捕获过程即事件从最外层的元素开始触发,然后逐渐触发到当前元素。
25 |
26 | 例如对于如下的 DOM 结构:
27 |
28 | ```html
29 |
30 |
33 |
34 | ```
35 |
36 | 如果 child 元素触发事件,那么捕获的过程为:body -> div.father -> div.child 。
37 |
38 | ###冒泡
39 |
40 | 冒泡与捕获相反,从当前元素开始触发,逐渐向外扩展直到最外层元素或者被终止。
41 |
42 | 例如对于上面的 DOM 结构,如果 child 元素触发事件,那么冒泡的过程为:div.child -> div.father -> body 。
43 |
44 | 如何使用
45 |
46 | 在支持的浏览器中,可以通过参数来控制发生的过程究竟是在捕获还是在冒泡,如下:
47 |
48 | `element.addEventListener('click', function () {}, false);`
49 | 其中第三个参数为 false 表示发生在冒泡阶段(默认),为 true 表示发生在捕获阶段。
50 |
51 | ###事件代理
52 |
53 | >设想一下这种场景,有一个列表,其中点击列表项需要触发一个事件,假如说这个列表有 1000 项,那是不是需要绑定 1000 次事件? 如果这还不够麻烦的话,那如果列表内容也是可变的,每次添加新的还需要再绑定事件,删除已有的也需要删除相应的事件,那么我添加 1000 项再删除 1000 次呢?
54 |
55 | 我们现在已经知道了事件存在冒泡的机制,那么对于类似的场景,我们可以通过事件代理来处理。 直接在外层的父节点上绑定事件监听,再通过 target 属性获取到事件触发的元素即可。
56 |
57 | ```html
58 |
59 | - test1
60 | - test2
61 | - test3
62 | - test4
63 | - test5
64 | - test6
65 |
66 |
73 |
74 | ```
75 |
76 | target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口。
77 |
78 | ###阻止行为
79 |
80 | 在事件处理函数中,可以通过`e.stopPropagation()` 来阻止事件冒泡,通过`e.preventDefault()`来阻止默认行为的触发。
81 |
82 |
--------------------------------------------------------------------------------
/2015/12/2015年12月11日.markdown:
--------------------------------------------------------------------------------
1 | #2015年12月11日
2 | ##Git
3 | ###vi & vim 打开 关闭 保存 文件
4 |
5 | - 创建、打开文件:
6 | 输入`$ vi [filename]`,此时 vi 处于默认的命令模式,键盘输入字母 ‘ i ’ 进入最常用的插入编辑模式.
7 |
8 | - 保存文件
9 | 按下 “ ESC ” 键,退出编辑模式,切换到命令模式.
10 | 在命令模式下键入:
11 | " ZZ "
12 | 或者:
13 | " :wq "
14 | 保存修改并且退出 vi
15 |
16 | 如果只想保存文件,则键入:
17 | " :w "
18 |
19 | 放弃所有文件修改:
20 | 按下 " ESC " 键进入命令模式,键入 " :q! "
21 |
22 | 放弃所有文件修改,但不退出 vi ,即回退到文件打开后最后一次保存操作的状态,继续进行文件操作:
23 | 按下 " ESC " 键进入命令模式,键入 " :e! " :
24 |
25 | >参考资料[连接](http://blog.chinaunix.net/uid-20671208-id-3721795.html)
26 |
27 | `cd`:根目录;
28 |
29 | `ls`:显示目录列表
30 |
31 | `touch Readme`:生成一个叫`Readme`的文件。
32 |
33 | `git mv hellogit.rb helloworld.rb`:重命名;
34 |
35 | `git commit -m "rename hellogit.rb"`:再次 提交。
--------------------------------------------------------------------------------
/2015/12/2015年12月13日.markdown:
--------------------------------------------------------------------------------
1 | #2015年12月13日
2 | ##CSS
3 |
4 | - Transition
5 |
6 | >css的transition允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值。
7 |
8 | **语法**
9 |
10 |
11 | transition : [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]*
12 |
13 | - transition-property:
14 |
15 | ```html
16 | transition-property : none | all | [ ] [ ',' ]*
17 | ```
18 |
19 | >transition-property是用来指定当元素其中一个属性改变时执行transition效果,其主要有以下几个值:none(没有属性改变);all(所有属性改变)这个也是其默认值;indent(元素属性名)。当其值为none时,transition马上停止执行,当指定为all时,则元素产生任何属性值变化时都将执行transition效果,ident是可以指定元素的某一个属性值。
20 |
21 | - transition-duration:
22 |
23 | ```html
24 | transition-duration :