前端面试题汇总-HTML CSS篇

209 阅读9分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

前端面试题-HTML最全汇总

1.语义话的目的是什么?⭐

答:用正确的标签做正确的事。

提高代码的可读性,页面内容结构化,便于开发人员的代码编写,同时提高的用户体验;有利于SEO ,便于搜索引擎爬虫爬取有效信息。

2.H5C3新特征⭐⭐⭐

H5:

Canvas绘图以及SVG绘图。

拖放(Drag and drop)API

语义化标签(header、nav、footer、article、section)

音频、视频(audio、video)API

地理定位(Geolocation)

本地离线存储(localStorage),长期存储数据,关闭浏览器后不丢失。

会话储存(sessionStorage),数据在关闭浏览器后自动删除。

表单控件(calendar、date、time、email、url、search)

新技术如Web Worker、Web Socket。(关于Web Socket使用可以看这篇文章浅谈Web Socket。)

C3

边框:

border-radios 添加圆角边框

border-shadow:给框添加阴影 (水平位移,垂直位移,模糊半径,阴

影尺寸,阴影颜色,insetr(内/外部阴影))

border-image:设置边框图像

border-image-source 边框图片的路径第 4 页

border-image-slice 图片边框向内偏移

border-image-width 图片边框的宽度

border-image-outset 边框图像区域超出边框的量

border-image-repeat 图像边框是否平铺(

repeat 平铺 round 铺满

stretch 拉伸)

背景:

Background-size 背景图片尺寸

Background-origin规定background-position属性相对于什么位置定 位

Background-clip 规定背景的绘制区域(padding-box,border-box,

content-box)

渐变:

Linear-gradient()线性渐变

Radial-gradient()径向渐变

文本效果:

Word-break:定义如何换行

Word-wrap:允许长的内容可以自动换行

Text-overflow:指定当文本溢出包含它的元素,应该干啥

Text-shadow:文字阴影(水平位移,垂直位移,模糊半径,阴影颜色)

转换:

Transform 应用于 2D3D 转换,可以将元素旋转,缩放,移动,倾斜

Transform-origin 可以更改元素转换的位置,(改变 xyz 轴)

Transform-style 指定嵌套元素怎么样在三位空间中呈现

2D 转换方法:

rotate 旋转 translate(x,y)指定元素在二维空间的位移 scale(n)

定义缩放转换

3D 转换方法:

Perspective(

n)为 3D 转换 translate rotate scale过渡:

Transition-proprety 过渡属性名

Transition-duration 完成过渡效果需要花费的时间

Transition-timing-function 指定切换效果的速度

Transition-delay 指定什么时候开始切换效果

动画:animation

Animation-name 为@keyframes 动画名称

animation-duration 动画需要花费的时间

animation-timing-function 动画如何完成一个周期

animation-delay 动画启动前的延迟间隔

animation-iteration-count 动画播放次数

animation-direction 是否轮流反向播放动画

3.cookie与sessionStorage和localStorage的区别⭐⭐⭐

保存方式

cookie存放在客户的浏览器上。

session都在客户端中保存,不参与服务器通讯。

生命周期

cookie可设置失效时间

localStorage除非手动清除否则永久保存

sessionStorage关闭当前页面或浏览器后失效

存储的大小

cookie 4kb左右

session 5M

易用性

cookie需自己封装

session可以接受原生接口

因为cookie每次请求都会携带在http请求中,所以它的主要用来识别用户登录,localStorage可以用来跨页面传参,sessionStorage可以用来保留一些临时数据。

4.css有哪些基本的选择器,执行先后顺序?⭐

类选择器(class)、标签选择器、ID选择器

!important>内联样式(非选择器)>ID选择器>类选择器>标签选择器>通配符选择器(*)

5.清除浮动⭐⭐⭐

1、父级div定义overflow:hidden(如果父级元素有定位元素超出父级,超出部分会隐藏,)

2、在浮动元素后面加一个空标签,clear:both;height: 0;overflow:hidden

3、伪元素清除浮动:给浮动元素父级增加 .clearfix::after(content: ‘’; display: table; clear: both;)(不会新增标签,不会有其他影响,)

6.垂直居中DIV⭐⭐⭐

1.绝对定位(盒子宽高已知)

.father {

position: relative;

width: 500px;

height: 500px;

background-color: red;

}

.son {

position: absolute;

left: 50%;

top: 50%;

margin-left: -150px;(-盒子一半宽度)

margin-top: -150px;(-盒子一半高度)

width: 300px;

height:300px;

background-color: blue;

}

2.绝对定位(宽高已知)+margin

.father {

position: relative;

width: 500px;

height: 500px;

background-color: red;

}

.son{

position:absolute;

margin:auto;

top:0; left:0; bottom:0;right:0;

width: 300px;

height:300px;

background-color: blue;

}

3.定位 (宽高未知)+transform

.son {

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

background-color: blue;

}

4.grid布局(父元素设置,宽高未知)(兼容性ie 10以上支持)

.father {

display: grid;

align-items: center;

justify-content: center;

width: 500px;

height: 500px;

background-color: red;

}

5.flex布局(父元素设置,宽高未知)(兼容性ie 11以上支持)

.father {

display: flex;

align-items: center;

justify-content: center;

width: 500px;

height: 500px;

background-color: red;

}

6.表格布局(父元素设置,宽高未知)(兼容性较好)

.father {

display:table-cell

text-align: center;

vertical-align: middle

width: 500px;

height: 500px;

background-color: red;

}

.son {

display: inline-block;

}

7.常用的块与行属性内标签有哪些?有什么特征⭐⭐

块标签:div、h1~h6、ul、li、table、p、br、form。

特征:独占一行,换行显示,可以设置宽高,可以嵌套块和行

行标签:span、a、img、textarea、select、option、input。

特征:只有在行内显示,内容撑开宽、高,不可以设置宽、高(img、input、textarea等除外)。

8.CSS中有哪些长度单位?⭐⭐

绝对长度单位:px

百分比: %

相对父元素字体大小单位: em

相对于根元素字体大小的单位: rem

相对于视口*宽度的百分比(100vw即视窗宽度的100%): vw

相对于视口*高度的百分比(100vh即视窗高度的100%): vh

9.display:none和visibility:hidden的区别⭐

display:block、inline、inline-block、flex

display:none:隐藏元素,在文档布局中不在给它分配空间(从文档中移除),会引起回流(重排)。

visibility:hidden: 隐藏元素,但是在文档布局中仍保留原来的空间(还在文档中),不会引起回流(重绘)。

9.如何让 chrome 浏览器显示小于 12px 的文字

本 来 添 加 谷 歌 私 有 属 性 -webkit-text-size-adjust : none , 现 在 -webkit-transform:scale()

10. 用CSS 实现长宽为浏览器窗口一半的正方形⭐

已知父元素宽高用%

width: 50%;

padding-top: 50%;

background-color: red;

用vw

width: 50vw;

height: 50vh;

background-color: red;

11. 用CSS 实现高度为0.5像素的线条⭐

这个可以用伪类来实现

.line::before {

display: block;

content: "";

height: 1px;

left: -50%;

position: absolute;

background-color: #333333;

width: 200%; //设置为插入元素的两倍宽高

-webkit-transform: scale(0.5);

transform: scale(0.5);

box-sizing: border-box;

}

12. 用CSS 实现三角形⭐

向上

width:0;

height:0;

border-left:30px solid transparent;

border-right:30px solid transparent;

border-bottom:30px solid red;

13. 伪类和伪元素的区别⭐⭐

区别

伪类只能使用“:”,伪元素既可以使用“:”,也可以使用“::”

伪元素其实相当于伪造(创建)了一个元素,伪类没有伪造元素,例如first-child只是给子元素添加样式而已。(本质区别就是是否抽象创造了新元素)

13. 重绘和重排是什么?如何避免?⭐⭐

重排:当DOM的变化影响了元素的几何信息(元素的的位置和尺寸大小),浏览器需要重新计算元素的几何属性,将其安放在界面中的正确位置,这个过程叫做重排。

重绘:当一个元素的外观发生改变,但没有改变布局,重新把元素外观绘制出来的过程,所以重绘跳过了创建布局树和分层的阶段。

重排需要重新计算布局树,重绘不需要,重排必定发生重绘,但是涉及到重绘不一定要重排 。涉及到重排对性能的消耗更多一些。

触发重排的方法: 页面初始渲染、添加/删除可见的DOM元素、改变元素位置、改变元素尺寸、改变元素内容、改变元素字体大小、改变浏览器窗口尺寸、设置 style 属性的值等。

避免重排的方式:样式集中改变、使用 absolute 或 fixed 脱离文档流。

14.定位的属性值有何区别

css里面的定位

  • 相对定位

    • 不会脱离文档流
    • 元素的微调
    • 作为绝对定位的参照元素(子绝父相)
  • 绝对定位

    • 脱离文档流
    • 必须要存在一个参照的元素(一般来说是自己 的父元素;如果父元素没有定位,则会继续向外查找,直到找到一个离自己最近的已经定位了的元素作为参考,如果实在没有,找 body 进行定位)
  • 固定定位

    • 一般用于相当于当前视窗进行定位
    • 对联广告
    • 回到定位
    • 吸顶效果

      15.flex原理

    •   实现 flex 布局需要先指定一个容器,任何一个容器都可以被指定为 flex 布局,这样容器内部的元素就可以使用 flex 来进行布局。
    • flex-direction
    • flex-wrap
    • flex-flow
    • justify-content
    • align-items
    • align-content

      16.BFC

    •   z-index作用:控制元素重叠时堆叠顺序
    •   元素的层级

      18.li后面的空白间隔

    •   所有的li写在一行
    •   浮动

      19.link与import区别

    •   - 相同点    - 都是加载 css 文件
    •   - 不同点    - link 是属于html标签    - import 是属于css语法   

      Less 是什么?Scss 是什么?(sass)

        - Less 是一种css 预处理语言, 在less 中可以定义一些变量和表达式以及使用嵌套语法; less 中使用@定义变量(@baseColor:pink); 后期可以通过一些编译工具(less)将less 编译成浏览器能直接识别的css 样式. 所以 less 只是在开发阶段使用的一种中间语言, 使用less 的目的是提高开发效率以及提高代码的可维护性.

    •   scss 是一种css 预处理语言, 在less 中可以定义一些变量和表达式以及使用嵌套语法; scss 中使用定义变量(定义变量(baseColor:pink); 后期可以通过一些编译工具(node-sass)将 less 编译成浏览器能直接识别的 css 样式. 所以 scss 只是在开发阶段使用的一种中间语言, 使用scss 的目的是提高开发效率以及提高代码的可维护性.