-
前言
- 0. 前端工具
- 1. html
- 2. CSS
-
3. JavaScript 基础
-
3.1 JS简介
-
3.2 变量
-
3.3 变量的强制类型转换
-
3.4 运算符
-
3.5 流程控制语句:选择结构(if和switch)
-
3.6 流程控制语句:循环结构(for和while)
-
3.7 对象简介和对象的基本操作
-
3.8 基本数据类型vs引用数据类型
-
3.9 函数
-
3.10 作用域
-
3.11 this
-
3.12 对象的创建&构造函数
-
3.13 原型对象
-
3.14 数组简介
-
3.15 数组的四个基本方法&数组的遍历
-
3.16 数组的常见方法
-
3.17 数组的其他方法
-
3.18 内置对象:Date
-
3.19 内置对象(其他)
-
3.20 DOM操作
-
3.21 事件对象Event和冒泡
-
3.22 事件委托
-
3.23 BOM的常见内置方法和内置对象
-
3.24 原型链
-
3.25 常见代码解读
-
3.1 JS简介
- 4. JavaScript进阶
- 5. 前端基本功:CSS、DOM练习和 Javascript 特效
- 6. jQuery
- 7. HTML5和CSS3
- 8. 移动web开发
- 9. Ajax
- 10. Node.js和模块化
- 11. ES6
- 12. Vue基础
- 13. React基础
-
14. 前端面试
-
14.1 准备
-
14.2 页面布局
-
14.3 CSS盒模型及BFC
-
14.4 DOM事件的总结
-
14.5 HTTP协议
-
14.6 创建对象和原型链
-
14.7 面向对象:类的定义和继承的几种方式
-
14.8 跨域通信类
-
14.9 安全问题:CSRF和XSS
-
14.10 算法问题
-
14.11 浏览器渲染机制
-
14.12 js运行机制:异步和单线程
-
14.13 页面性能优化
-
14.14 前端错误监控
-
14.15 JavaScript高级面试:前言
-
14.16 模块化的使用和编译环境
-
14.17 ES6
-
14.18 虚拟DOM
-
14.19 MVVM
-
14.20 面试题整理
-
14.21 网友面经
-
14.22 面试技巧
-
14.23 推荐文章
-
14.24 计算机网络
-
14.25 web安全
-
14.26 其他
-
14.1 准备
- 15. 面试题积累
- 16. 前端进阶
- 17. 前端综合
- 18. 推荐链接
HTML 相关
你是如何理解 HTML 语义化的?
语义化:指对文本内容的结构化(内容语义化),选择合乎语义的标签(代码语义化)。
举例:段落用 p,边栏用 aside,主要内容用 main 标签。
好处:
便于开发者阅读和维护
有利于SEO:让浏览器的爬虫和辅助技术更好的解析,
语义化标签介绍:
在HTML5出来之前,我们习惯于用div来表示页面的章节或者不同模块,但是div
本身是没有语义的。但是现在,HTML5中加入了一些语义化标签,来更清晰的表达文档结构。
20180322_1120.jpg
参考链接:
meta viewport 是做什么用的,怎么写?
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
copy
控制页面在移动端不要缩小显示。
canvas 元素是干什么的?
看 MDN 的 canvas 入门手册。
说一下CSS盒模型
可以参考本人的另外一篇文章:CSS盒模型及BFC
css reset 和 Normalize.css 有什么区别
此题考英文。
二者都是用来统一浏览器的默认样式:
reset:重置。相对「暴力」,不管你有没有用,统统重置成一样的效果,且影响的范围很大,讲求跨浏览器的一致性。(一刀切)
Normalize.css
:标准化。相对「平和」,注重通用的方案,重置掉该重置的样式,保留有用的 user agent 样式,同时进行一些 bug 的修复,这点是 reset 所缺乏的。(去伪存真)
参考链接:
如何居中(必考)
水平居中
1、行内元素:(文字、图片等水平居中)
给父亲设置:
text-align: center;
copy
另外,让文字的行高 等于 盒子的高度,可以让单行文本垂直居中。
2、块级元素:(让标准流中的盒子水平居中)
给元素设置:(让当前元素在父亲里剧中)
//方式一
margin: auto;
方式二
margin: 0 auto;
copy
上面的代码, margin: auto
相当于margin: auto auto auto auto
。margin: 0 auto
相当于margin: 0 auto 0 auto
,四个值分别对应上右下左。
垂直方向:根据规范,margin-top: auto 和 margin-bottom: auto,其计算值为0。
水平方向:水平方向的 auto,其计算值取决于可用空间(剩余空间)。
参考链接:https://www.zhihu.com/question/21644198/answer/22392394
垂直居中/水平居中(元素的高度已知)
方法:绝对定位 + margin-top
如果盒子是绝对定位的,此时已经脱标了,margin:auto
无效。如果还想让其居中(位于父亲的正中间),可以这样做:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.parent {
height: 300px; /*高度已知*/
position: relative;
border: 1px solid red;
}
.child {
width: 200px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -150px;
margin-top: -50px;
border: 1px solid green;
}
</style>
</head>
<body>
<div class="parent">
<div class="child">
一串文字一串文字一串文字一串文字一串文字一串文字一串文字一串文字一串文字一串文字
</div>
</div>
</body>
</html>
copy
如上方代码所示,我们先让这个高度为100px的盒子,上边线居中,然后向上移动宽度的一半(50px),就达到了垂直居中的效果。水平居中的原理类似。
效果:
垂直居中/水平居中(元素的高度未知)
方法1:模拟表格法
将父元素设置为display:table,然后将子元素也(就是要垂直居中显示的元素)设置为display:table-cell,然后加上vertical-align:middle来实现。
html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.parent {
display: table;
width: 300px;
height: 300px;
border: 10px solid pink;
}
.child {
display: table-cell;
vertical-align: middle; /*指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。*/
height: 200px; /*此处的宽高设置无效*/
width: 200px;
border: 10px solid blue;
}
/*实现的效果:让单元格(.child)里的内容(.content)垂直居中*/
.content {
width: 100px;
height: 100px;
border: 10px solid green;
}
</style>
</head>
<body>
<div class="parent">
<div class="child">
<div class="content">
<p>测试垂直居中效果测试垂直居中效果测试垂直居中效果测试垂直居中效果</p>
</div>
</div>
</div>
</body>
</html>
copy
效果:
方式二:绝对定位 + margin:auto
.element {
position: absolute;
left: 0; top: 0; right: 0; bottom: 0;
margin: auto; /* 有了这个就自动居中了 */
}
copy
代码两个关键点:
上下左右均0位置定位;
margin: auto
方式三:用绝对定位 + translate 位移来做
div {
background-color: red;
position: absolute; 绝对定位的盒子
top: 50%; 首先,让上边线居中
transform: translateY(-50%); 然后,利用translate,往上走自己宽度的一半【推荐写法】
}
copy
方式四:flex 布局
.parent{
display: flex;/*Flex布局*/
display: -webkit-flex; /* Safari */
align-items: center;/*设置子元素在侧轴方向上的布局*/
}
copy
参考链接:
选择器的优先级如何确定
选择器越具体,优先级越高。 #xxx 大于 .yyy
同样优先级,写在后面的覆盖前面的。
color: red !important; 优先级最高。
BFC 是什么
overflow:hidden :取消父子 margin 合并。 (另一种推荐做法:padding-top: 0.1px;
)
如何清除浮动
(1)overflow: hidden
(2).clearfix 清除浮动写在爸爸身上
.clearfix::after {
content: '';
display: block;
clear: both;
}
/* 兼容 IE */
.clearfix {
zoom: 1;
}
copy