前端押题 HTML+CSS

111 阅读2分钟

HTML

讲讲 HTML 中的语义化标签

  • 语义化标签是一种写 HTML 标签的方法论,语义指的是一段代码的含义。
  • 实现方法是就遇到标题就用 h1 到 h6,遇到段落用 p,遇到文章用 article,主要内容用 main,边栏用 aside,导航用 nav……
  • 它明确了 HTML 的书写规范
  • 优点是:一、适合搜索引擎检索;二、适合人类阅读,利于团队维护。

HTML 5 有哪些新标签?

  • 文章相关:header footer nav section article figure
  • 多媒体相关:video audio svg canvas
  • 表单相关:type=email type=tel

Canvas 和 SVG 的区别是什么?

  • Canvas 主要是用笔刷来绘制 2D 图形的。
  • SVG 主要是用标签来绘制不规则矢量图的。
  • 相同点:都是主要用来画 2D 图形的。
  • 不同点:Canvas 画的是位图,SVG 画的是矢量图。
  • 不同点:SVG 节点过多时渲染慢,Canvas 性能更好一点,但写起来更复杂。
  • 不同点:SVG 支持分层和事件,Canvas 不支持,但是可以用库实现。

CSS

BFC 是什么?

块级格式化上下文

如何实现:

  • 浮动元素,float 除 none 以外的值
  • 绝对定位元素(元素的 position 为 absolute 或 fixed)
  • display 为以下其中之一的值 inline-block,table-cell,table-caption
  • overflow 除了 visible 以外的值(hidden,auto,scroll)
  • 弹性元素(display为 flex 或 inline-flex元素的直接子元素)
  • HTML 根元素

解决了什么问题:

  • 清除浮动(.clearfix 更好用)
  • 防止 margin 合并
  • 某些古老的布局方式会用到(已过时)

有副作用,解决方法是使用最新的 display: flow-root 来触发 BFC。

CSS 实现水平垂直居中方法

// flex 方案

.parentElement {
  display: flex;
  justify-content: center;
  align-items: center;
}
// grid 方案

.parentElement {
  display: grid;
}
 
.childElement {
  align-self: center;
  justify-self: center;
}
// transform 方案

.childElement {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

选择器优先级如何确定?

优先级就是分配给指定的 CSS 声明的一个权重,它由匹配的选择器中的每一种选择器类型的数值决定。

!important > 行内样式 > ID 选择器 > 类选择器=伪类=属性 > 标签 > 通配符 > 继承 > 浏览器默认属性

  • 选择器越具体,其优先级越高
  • 相同优先级,出现在后面的,覆盖前面的
  • 属性后面加 !important 的优先级最高,但是要少用

如何清除浮动?

// after 伪类清浮动

.clearfix:after{
    content:"";
    clear:both;
    display:block;
    height:0;
    overflow:hidden;
    visibility:hidden;
}
 .clearfix{
    zoom:1}

两种盒模型(box-sizing)的区别?

第一种盒模型是标准盒模型 content-box,即 width 指定的是 content 区域宽度,而不是实际宽度,公式为:实际宽度 = width + padding + border

第二种盒模型是IE盒模型 border-box,即 width 指定的是左右边框外侧的距离,公式为:实际宽度 = width

相同点是都是用来指定宽度的,不同点是 border-box 更好用。