#javascript基础
1. 字符串中**只有** ` "1"==true` **只有**`"0"==false `和` ""==false`
null和undefined !=false 和!=ture
2. eval("("+data+")"); //转换为json对象 data为普通的js对象 转换后为JSON(key和val必须加括号)
`eval("{}"); // return undefined
eval("({})"); // return object[Object]
var json=(new Function('return'+data))() return object[Object] 也会返回json对象
`
3.
> `array.map(callback[, thisArg]) ` 返回新数组(由callback中return 的值组成)
`array.filter(callback[, thisArg]) `
`array.forEach(callback[, thisArg])` 总是返回 undefined
callbak的参数 currentValue , index , array
> for (x in obj/arr) x为key obj[key]=value
jQuery: `$.each(object, callback)`和 `$(selector).each(callback) ` callback(index,value)与js原生相反
4.
Array.prototype.slice.call(arguments)
Array.prototype.slice.call(arguments,0)
可以将arguments转换为数组
Object.prototype.toString.call(array)=="[object Array]" //判断数组
### DOM相关
document.activeElement : 当前获得焦点的元素
event.currentTarget : 返回绑定事件监听的元素(current:现在的)
在事件处理程序内部,this===event.currentTarget===绑定元素
event.target : 返回实际触发的目标元素(IE 中为 event.srcElement)
nodeType 1:元素 2:属性节点 3:文本节点
---
clientWidth = 内容宽度+padding (不包括滚动条)
scrollWidth = Math.max(**设宽**+padding, 内部元素撑开的宽度+左padding,也不包括滚动条17px)
offsetWidth = 内容宽度+padding+border (对象整体的实际宽度,包滚动条等边线)
offsetParent = 离当前节点最近定位过的父级元素(没有就默认是body)
offsetLeft = (offsetParent的padding-left)+(中间元素的offsetWidth和margin)+(当前元素的margin-left) 也就是offsetParent与当前元素的直接距离
**注:body不能有border,否则存在兼容性问题**
# css基础
* input,button,select,textarea标签的font-size:是不会继承父级的(必须重设) a标签 color的值是不会继承父级的
* 高度的百分比:父级必须有设置高度(有明确的高度设置),如果父级和子级都设置`height:100%;`则父级和子级高度一样,由子级撑开。
宽度百分比同理: 当父级和子级都为inline-block且设置`height:100%;`则父子子级宽度一样,由子级撑开。
* input(除了 type="image"),button,textarea 默认都为`box-sizeing:border-box;`
* 对于行内元素 margin和padding只有水平方向有作用
* JPG:不支持透明半透明,所有空白区域填充白色(网页中的大图、高清图:体积大)
GIF:支持透明,不支持半透明(网页中的小图标、动态图片)
png8:支持透明,不支持半透明(网页中的小图标)
png24:支持透明,也支持半透明(图像中存在半透明效果的图片)
* **z-index**
使用了 position 属性值为 absolute、relative 的层,将会比普通层更高层次。使用了小于1的 opacity 属性的层(在层级影响上和position:非static一样,也比普通页面高)
层级的覆盖关系:从最外层设置了z-index的地方开始比较
(z-index>=0)子级在父级之上
* 垂直margin合并问题
子级与父级:若父级设置了合并方向的padding,border或触发BFC则垂直外边距不会合并 兄弟节点之间垂直方向必定合并
* ###table和table-cell
1. display:table-cell;
没有设置width时,若内部自然撑开的宽度(***自宽***)小于父级设置宽度,则宽度=父级宽度;若内部宽度>父级,则宽度由内部撑开(会溢出父级)
直接设置width>父级宽度是无效的,最终会表现为和父宽一样(另外:当设置的宽度和自宽都《父宽时,width=Math.max(设宽,自宽)
2. display:table;内有display:table-cell; 若设置table-cell的元素的宽度之和>父级table设置的宽度,则默认会撑开父级宽度(除非设置table-layout:fixed;)
3. 设置了display:table-cell的元素对宽度高度敏感,对margin值无反应,响应padding属性,基本上就是活脱脱的一个td标签元素了。
4. table-cell的高度由heightg和line-height中较大的一个决定
5. table-cell 不能继承父级的宽高,除非父级是 table 。(同一行的td宽度之和=父级宽度之和(不够会撑开),同一行的td高度由这一行中最大高度决定)