一、HTML、CSS部分
(1)标签命名
不能直接写用一个单词名称,而是有结构化的命名
(比如:list-hd,就指list的header)
(2)标签样式初始化
文件命名:
reset.css
common.css
normalize.css
(3)写级联样式的目的
为了更好的维护css样式代码,才会写级联样式
(4)a标签和li标签
如果a在列表li里边,最好占满整个li
(5)两栏布局
方案一:float
如果浮动的盒子宽度大于了视口宽度,就会被挤下去,所以这种方法并不好
方案二:
li里面两个盒子,盒子1定位absolute,盒子2宽度100%,然后给盒子2margin-left盒子1的宽度距离,这种才是企业级写法
(6)互联网标准黑色
#424242
(7)显示省略号
三大件:
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
(8)塌陷解决方法
1.border-top
2.触发bfc:absolute、overflow-hidden
二、JS部分
(1)插件标配
立即执行 构造函数 原型
插件所有方法都写在原型上面
(2)熟练掌握封装的兼容方法
// 添加事件处理函数兼容写法
function addEvent(el, type, fn) {
if (el.addEventListener) {
el.addEventListener(type, fn, false)
} else if (el.attachEvent) {
el.attachEvent('on' + type, function () {
fn.call(el);
})
} else {
el['on' + type] = fn;
}
}
// 获取滚动条距离
function getScrollOffset() {
if (window.pageXOffset) {
return {
left: window.pageXOffset,
top: window.pageYOffset
}
} else {
return {
left: document.body.scrollLeft + document.documentElement.scrollLeft,
top: document.body.scrollTop + document.documentElement.scrollTop
}
}
}
// 获取窗口宽高
function getViewportSize() {
if (window.innerWidth) {
return {
width: window.innerWidth,
height: window.innerHeight
}
} else {
if (document.compatMode === 'BackCompat') {
return {
width: document.body.clientWidth,
height: document.body.clientHeight
}
}
else {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
}
}
}
// 获取文档宽高
function getScrollSize() {
if (document.body.scrollWidth) {
return {
width: document.body.scrollWidth,
height: document.body.scrollHeight
}
} else {
return {
width: document.documentElement.scrollWidth,
height: document.documentElement.scrollHeight
}
}
}
(3)this指向
new执行this指向实例对象
var AutoReader = function (opt) {
var _self = this; // 指向实例对象
}
谁调用指向谁
var AutoReader = function (opt) {
addEvent(window, 'scroll', function () {
_self.sTopBtnShow() // 指向_self
})
}
AutoReader.prototype = {
sTopBtnShow: function () {
var sTop = getScrollOffset().top,
sTopBtn = this.sTopBtn;
sTopBtn.style.display = sTop ? 'block' : 'none';
}
}
事件处理函数this指向绑定对象
var AutoReader = function (opt) {
addEvent(this.playBtn, 'click', function () {
console.log(this) // this.playBtn
_self.setAutoPlay.call(this) // this指向this.playBtn
})
}
(4)为什么要实时获取滚动距离、视口距离、文档距离?
因为拖动窗口时这些数值都会发生改变的
(5)这段代码可不可不写?
写它是为了表示一种严谨性,就是到达了底部一定会停止