面试知识点回顾之html+css

95 阅读2分钟

html面试问题

html5新特性

  • 语义标签:header,footer,nav,section,aside等
  • input输入类型:email,date,url,time等
  • 表单属性:placehoder,required,min,max等
  • 视频和音频:video和audio
  • canvas绘图

为什么要使用语义化标签

  • 有利于SEO,利于搜索引擎爬虫更好的理解网页,从而获取更多的有效信息,提升网页的权重。
  • 增强可读性,便于团队开发和维护
  • 支持多终端设置的浏览器渲染

CSS面试问题

position属性值以及区别

  • static:静态定位。元素的位置都不会改变。
  • relative:相对定位。相对其初始位置的定位。
  • absolute:绝对定位。相对其父元素(除static以外)定位进行定位,父元素无定位,则追溯到祖辈元素,直至body。
  • fixed:固定定位。相当于浏览器窗口进行定位。

css权重优先级

  • !important最高
  • 内联样式,权值为1000
  • id选择器,权值为100
  • 类选择器、属性选择器、伪类选择器
  • 元素选择器、伪元素选择器

选择器顺序

  • id选择器(#myid)
  • 类选择器(.myclassname)
  • 标签选择器(div)
  • 子选择器(ul < li)
  • 后代选择器(li a)
  • 伪类选择器(a:hover)

box-sizing属性

content-box: 元素宽度和高度只应用于内容。标准盒模型 border-box: 元素宽度和高度包括padding和border。ie盒模型 inherit: 继承父元素的box-sizing的值。

盒模型介绍

  • css3中的盒模型有标准盒模型及IE盒模型
  • 标准盒模型 = width + margin + padding + border
  • IE盒模型 = width + margin (width包含padding和border)

BFC(块级格式上下文)

BFC概念

BFC即块级格式上下文。是css布局的一个概念,规定了内部box的布局

BFC原理布局规则

  • 容器里面的元素不会在布局上影响到外面的元素
  • 块级元素在垂直方向一个接一个排列
  • 上下相邻的两个容器margin会重叠

触发BFC条件

  • 浮动元素float值不为none时
  • 绝对定位元素position值为absolute或fixed时
  • 行内块元素display值为inline-block时
  • overflow值不为visible时

BFC使用场景

  • 去除边距重叠现象
  • 清除浮动
  • 避免元素被浮动元素覆盖

实现两栏布局(左侧固定+右侧自适应布局)

<div class="layout">
  <div class="left"></div>
  <div class="right"></div>
</div>
  • flex布局
.layout {
  height: 500px;
  display: flex;
}
.left {
  width: 300px;
  border: 1px solid #000;
}
.right {
  flex: 1;
  overflow: auto;
  border: 1px solid #000;
}
  • 绝对定位
.layout {
  height: 500px;
  position: relative;
}
.left {
  width: 300px;
  height: 100%;
  border: 1px solid #000;
}
.right {
  position: absolute;
  left: 300px;
  right: 0;
  top: 0;
  bottom: 0;
  overflow: auto;
  border: 1px solid #000;
}

实现三分栏布局(两侧内容固定+中间自适应布局)

<div class="layout">
  <div class="left"></div>
  <div class="center"></div>
  <div class="right"></div>
</div>
  • flex布局
.left {
  width: 300px;
  border: 1px solid #000;
}
.center {
  flex: 1;
  border: 1px solid #000;
  overflow: auto;
}
.right {
  width: 300px;
  border: 1px solid #000;
}

水平垂直居中方式

<div class="father">
  <div class="son"></div>
</div>
  • 绝对定位
.father {
  width: 100px;
  height: 500px;
  border: 1px solid #000;
  position: relative;
}
.son {
  width: 20px;
  height: 50px;
  border: 1px solid #000;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
  • flex布局
.father {
  width: 100px;
  height: 500px;
  border: 1px solid #000;
  display: flex;
  justify-content: center;
  align-items: center;
}
.son {
  width: 20px;
  height: 50px;
  border: 1px solid #000;
}

隐藏页面中某个元素的方法

  • opacity:0 元素隐藏,但不会改变页面布局,会触发绑定事件
  • visibility:hidden 元素隐藏,但不会改变页面布局,不会触发事件
  • display:none 元素隐藏,会改变页面布局。

flex布局

相关属性

flex-direction: 主轴方向(row,column) justify-content: 水平对齐方式 align-items:垂直对齐方式 flex-wrap:换行规则(nowrap, wrap, wrap-reverse) flex-grow:定义放大比例 flex-shrink:定义缩小比例 flex-basis:定义在多余控件内,占据的空间 flex:是flex-grow及flex-shrink及flex-basis的简写,默认是0,1,auto