1.css3里面的nth-child()选择器
:nth-child(n)
选择器匹配父元素中的第 n 个子元素,元素类型没有限制。
n 可以是一个数字,一个关键字,或者一个公式。
2.background-image
默认地,背景图像位于元素的左上角,并在水平和垂直方向上重复。
这样就出现了没有自适应的问题。
解决办法:加上background-repeat:no-repeat;
和background-size:100% 100%
3.html5l里面的data-*
属性
<input type="button" value="按钮" data-index="10"data-index-color="red">
调用需用
var oBtn=document.querySelector('input');
console.log(oBtn.getAttribute('value')); //按钮
console.log(oBtn.getAttribute('index')); //10
console.log(oBtn.getAttribute('data-index')); //10
console.log(oBtn.getAttribute('data-index-color'))
HTML5新增了个dataset
属性来存取 data-*
自定义属性的值
还有一点特别注意的是: data-
属性名如果包含了连字符,例如:data-index-color
,连字符将被去掉,并转换为驼峰式的命名,前面的属性名转换后应该是:indexColor
。
方法如下
var oBtn=document.querySelector('input');
console.log(oBtn.dataset); //DOMStringMap对象
console.log(oBtn.dataset.index); //10
console.log(oBtn.dataset.indexColor); //red
console.log(oBtn.index); //undefined
4.querySelector与getElementBy等的区别
querySelector() 方法返回匹配指定 CSS 选择器元素的第一个子元素 。 该方法只返回匹配指定选择器的第一个元素。如果要返回所有匹配元素,需要使用querySelectorAll()
方法替代.
DOM提供了一个名为getElementById
的方法,这个方法将返回一个与之对应id属性的节点对象,它是document对象特有的函数,只能通过其来调用该方法
getElementsByTagName方法返回一个对象数组(准确的说是HTMLCollection集合),返回元素的顺序是它们在文档中的顺序,传递给 getElementsByTagName() 方法的字符串可以不区分大小写
注意:getElementBy里面有个坑,如下
getElementsByTagName()
方法返回对应标签名的元素的一个动态集合, 只要document发生变化,就会自动更新对应的元素。
因此, 下面的代码实际上是一个死循环:
var divs = document.getElementsByTagName("div");
var i=0;
while(i < divs.length){
document.body.appendChild(document.createElement("div"));
i++;
}
死循环的原因是每次循环都会重新计算 divs.length
. 每次迭代都会添加一个新的 <div>
, 所以每次 i++
,对应的 divs.length
也在增加, 所以 i
永远比divs.length
小, 循环终止条件也就不会触发[例外情况是dom中没有div,不进入循环
最后再根据查询的资料总结一下:
query选择符选出来的元素及元素数组是静态的,而getElement这种方法选出的元素是动态的。静态的就是说选出的所有元素的数组,不会随着文档操作而改变。
5.js里面className的用法
className可以用来改变标签元素的css类选择器,从而改变元素的样式
6.onclick和addEventListener的区别
addEventListener允许给一个事件注册多个监听器,即不会相互覆盖,onclick反之
eg:
onclick
window.onload = function() {
var container = document.querySelector("#container");
container.onclick = function() {
console.log("第一次onclick事件");
}
container.onclick = function() {
console.log("第二次onclick事件");
}
}
//运行结果:“第二次onclick事件”
addEVentListener
window.onload = function() {
var container = document.querySelector("#container");
container.addEventListener("click", function() {
console.log("第一个addEventListener事件");
})
container.addEventListener("click", function() {
console.log("第二个addEventListener事件");
})
}
//运行结果:
//"第一个addEventListener事件"
//"第二个addEventListener事件"
资料参考:https://blog.youkuaiyun.com/prototype___/article/details/82525917
7.js里面加定时器的方法
setTimeout
和setInterval
1.setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
2.setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
SetInterval为自动重复,setTimeout不会重复。
8.let和var的区别
1.var是全局声明,let是块级作用的,只适用于当前代码块
2.var变量会发生变量提升,let则不会进行变量提升
3.var 会造成重复赋值,循环里的赋值可能会造成变量泄露至全局
4.let在一个块级作用只能赋一次值,并进行当前代码块的锁区,就是说当前块只有let声明的这个变量是有用的
5.let在一个块级内,只能声明一个一个相同的变量名