HTML面试题
- 如何理解HTML语义化
- 让人更加容易读懂(增强代码可读性),让搜索引擎更容易读懂(SEO即搜索引擎优化)
- 对开发者的好处:使⽤了语义化标签的程序,可读性明显增强,开发者可以比容易和清晰地看出⽹⻚的结构;这也更利于整个开发团队的协作开发和后续维护工作
- 对机器/程序的好处:带有语义的网页代码在⽂字类应用上的表现⼒丰富,利于搜索引擎爬⾍程序来爬取和提取出有效的信息;语义化标签还⽀持读屏软件,根据⽂章可以⾃动⽣成⽬录等,方便特殊人群无障碍的使用这些网页程序。
- 默认情况下,哪些HTML标签是块级元素,哪些是内联元素?
- 块级元素,独占一行:display:block/table;有div h1 h2 table ul ol p等
- 内联元素,一行之内往后挤:display:inline/inline-block;有span img input button等
CSS面试题
布局
- 盒子模型的宽度如何计算?
- offsetWidth = (内容宽度width +内边距padding +边框border),无外边距margin
- 答案:100 + 102 + 12 =122px
- 如果让offsetWidth等于100px,要使用box-sizing:border-box
- margin纵向重叠的问题
- 相邻元素的margin-top和margin-bottom会发生重叠
- 空白内容的也会重叠
- 答案:15px 即AAA的margin-bottom
- 对margin的top left right bottom设置负值,有何效果?
- top和left为负值时,元素向上、向左移动
- right负值,右侧元素左移,自身不受影响
- bottom负值,下方元素上移,自身不受影响
- 什么是BFC?如何应用?
- Block format context 块级格式化上下文
- 一块独立渲染区域,内部元素的渲染不会影响边界以外的元素
- 触发方式/哪些元素会生成BFC
- 根元素,即HTML标签
- 浮动元素:float值为left或right,不是none
- 定位元素:position为fixed或absolute的元素
- overflow值不为visible,为auto、scroll、hidden的元素
- display值为inline-block、table-cell、table-caption、flex、inline-flex的元素
- BFC常见应用
- 阻止元素被浮动元素覆盖
- 可以包含浮动元素
- 阻止因浏览器四舍五入造成的多列布局换行的情况
- 阻止相邻元素margin合并
- 如何实现圣杯布局和双飞翼布局
- 目的:
- 三栏布局,中间一栏最先加载和渲染(内容最重要)
- 两栏内容固定,中间内容随着宽度自适应。
- 一般用于PC网页
- 技术总结:
- 使用float布局
- 两侧使用margin负值,以便和中间内容横向重叠
- 防止中间内容被两侧覆盖,圣杯布局用padding,双飞翼布局用margin
- 目的:
- 手写clearfix
flex实现一个三点的骰子
absolute和relative分别依据什么定位?
- relative根据自身定位
- absolute根据最近一层的定位元素定位,一直向外找,找不到的话就依据body定位
- 定位元素:absolute relative fixed body
局中对齐有哪些方式?
line-height的继承问题
rem是什么?
- px是绝对长度单位,最常用
- em是相对长度单位,相对于父元素,不常用
- rem是相对长度单位,相对于根元素,常用于响应式布局
- 如何实现响应式?
- 媒体查询(media-query),根据不同的屏幕宽度设置根元素的font-size
- 利用rem,基于根元素的相对单位、
- vw/vh相关
- rem的弊端:媒体查询写起来的“阶梯型”
- 网页视口尺寸
- 屏幕高度:window.screen.height。与机器尺寸有关
- 网页视口高度:window.innerHeight。在真机中,要砍掉浏览器的上下条。
- body高度:document.body.clientHeight。与内容多少有关
- vh:网页视口高度的百分之一
vw:网页视口宽度的百分之一
vmax:取两者最大值
vmin:取两者最小值
CSS3动画
- 不是面试重点,除非面试的是一个专门做动画的职位
- 看文档即可