HTML面试问答

1. 问:如果用的ajax请求提交而不用表单的submit是否需要form元素?

答:理论上是不需要用form的 但是建议用form
1. form中submit和reset的特性可以使用
2. 有form时可以用一些方法批量获取表单(第三方库可以整体提取值)
3. 第三方库可以进行表单验证
4. 对用户来说,用form可以记住密码

2. HTML5新增内容

  1. 新区块标签 section article nav aside(一般不在大纲中)
  2. 表单增强 日期 时间 搜索 表单验证 placeholder 自动聚焦
  3. 新增语义
    1. header/footer(可放在div等里面)
    2. section/articel (区域,div最宽泛,当不知道用什么时可以用div;当知道是一块文章/导航等可以用section;当知道是一篇文章时可以用article)
    3. nav 导航
    4. aside 不重要内容
    5. em/strong 强调
    6. i 图标
  4. 新的API(离线/音视频/图形/实时通信/本地存储/设备能力)
  5. 分类和嵌套变更

3. doctype的意义是什么

以前IE渲染有自己的模式,最典型的是盒子模型,盒子模型设置的宽度是包括margin和padding的,

doctype的意义是 1. 让浏览器以标准模式渲染 2.让浏览器知道元素的合法性

4. HTML属于SGML

5. XHTML属于XML,是HTML进行XML严格化的结果

6. HTML5不属于SGML或XML,比XHTML宽松

7. em和i有什么区别

em是语义化的标签,表示强调
i是纯样式的标签,表斜体
HTML5中i不推荐使用,一般用作图标

8. 语义化的意义是什么

  1. 开发者容易理解
  2. 机器容易理解结构(搜索/读屏软件)
  3. 有助于SEO(搜索引擎优化)
  4. semantic microdata(语义扩展)内容被搜索引擎更好的理解、分析和索引,便于维护

9. 哪些元素可以自闭合

  1. 表单元素 input
  2. 图片img
  3. br(换行符) hr(分隔)
  4. meta link

10. HTML和DOM关系

写的HTML其实是一串字符串,是流的形式,通过浏览器解析后成为DOM,JS维护的是解析后形成的DOM树,并不是HTML

11. property和attribute关系

property:特性,是活的,是在解析后DOM中
attribute:属性,是死的,是在HTML中
property和attribute的改变彼此间不影响

12. CSS选择器优先级

  1. 元素选择器 a{}
  2. 伪元素选择器 ::before{}
  3. 类选择器 .link{}
  4. 属性选择器 [type=radio]{}
  5. 伪类选择器 :hover{}
  6. ID选择器 #id{}
  7. 组合选择器 [type=checkbox] + label{}
  8. 否定选择器 :not(.link){}
  9. 通用选择器 *{}

13. 选择器权重

  1. ID选择器 +100
  2. 类 伪类 属性 +10
  3. 元素 伪元素 +1
  4. 其它选择器 +0

14. 雪碧图作用

  1. 减少HTTP请求,提高加载性能
  2. 一些情况下可以减少图片大小

15. 自定义字体的使用场景

  1. 宣传/品牌/bannner等固定文案
  2. 字体图标

16. base64的使用

  1. 减少http请求
  2. 适用于小图片
  3. base64的体积约为原图的4/3

17. 伪类和伪元素的区别?

  1. 伪类表状态:如鼠标正悬停在这个元素上,一个链接等
  2. 伪元素是真的有元素:如 before 等是真实存在的元素
  3. 伪类用 : 伪元素用 ::
  4. 由于浏览器原因,有些伪元素还是要用 :

18. 如何美化checkbox

  1. 用lable[for]与input的id关联
  2. 隐藏原生input
  3. :checked + label

19. 实现两栏(三栏)布局

  1. 表格布局
  2. float+margin(主流方式,兼容性好,要注意清除浮动)
  3. inline-block (注意清除间隙)
  4. flexbox比较新的布局方式,但是兼容性不是很好

20. position:absolute和fixed有什么区别?

  1. absolute是相对最近的absolute/relative
  2. fixed是相对屏幕viewport
  3. fixed早期在移动端的兼容性不好,一般不能够使用,在最近两年的设备兼容性好一些

21. 为什么display:inline-block有间隙

原因:有字符间距

解决方法:

  1. 消除字符:将字符写在一行或中间加注释
  2. 消除间距:将字体设置为0

22. 如何清除浮动

原因: float元素独立于文本流之外

解决方法:让盒子负责自己的布局

  1. overflow:hidden(auto)
  2. ::after{clear:both}

23. 如何适配移动端

  1. 一定要加viewport
  2. rem/viewport/media query
  3. 设计上:隐藏 折行 自适应

24. 如何用一个div画XXX

  1. 用box-shadow无限投影 + ::before + ::after

25. 如何产生不占空间的边框

  1. box-shadow
  2. outline

26. 如何实现圆形元素(头像)

  1. border-radius:50%

27. 如何实现ios图标

用clip-path:(svg)

28. 如何实现半圆/扇形等图形

  1. border-radius组合 边框 边框粗细 圆角半径

29. 如何平移/放大一个元素

  1. transform:trabslateX(100px)
  2. transform:scale(2)

30. 如何实现3D效果

  1. perspective:500px;
  2. transform-style:preserve-3d;
  3. transform:translate rotate;

31. 过渡动画和关键帧动画的区别

  1. 过渡动画需要有状态的变化
  2. 关键帧动画不需要状态变化
  3. 关键帧动画能控制的更精细 reverse infinite 等

32. 如何实现逐帧动画

  1. 使用关键帧动画
  2. 去掉补间 steps(1)

33. CSS动画的性能(CSS动画和JS动画无法讨论谁好谁坏)

  1. 性能不坏
  2. 部分情况下优于JS
  3. 但JS可以做得更好
  4. 部分高危属性 box-shadow等 无论用CSS还是JS性能都比较差

34. 常见CSS预处理器

  1. Less 原生是用nodejs写的 还有一个版本可以在浏览器中运行
  2. Sass 原生用ruby写的 还有衍生的node版本,用C++写的

35. CSS预处理器作用

  1. 更好的组织CSS代码
  2. 提高代码复用率
  3. 提升可维护性

36. 预处理器功能

  1. 嵌套 反映层级与约束
  2. 变量和计算 减少重复代码
  3. extend和mixin 代码片段
  4. 循环 适用于复杂的有规律的样式
  5. import CSS文件模块化

37. 预处理器优缺点

  1. 优点 提高代码复用率和可维护性
  2. 缺点 需要编译 学习复杂

38. Bootstrap优缺点

  1. 优点 CSS源码结构合理 有一套现成的样式
  2. 缺点 定制比较繁琐 体积大

39. Bootstrap如何实现响应式布局

  1. 原理 通过 media query设置不同分辨率的class
  2. 使用 为不同分辨率选择不同的网格class

40. 如何基于Bootstrap定制自己的样式

  1. 使用css同名类覆盖
  2. 修改源码重新构建
  3. 引用scss源文件 修改变量
发布了20 篇原创文章 · 获赞 0 · 访问量 292

猜你喜欢

转载自blog.csdn.net/ChristWTF/article/details/103737167
今日推荐