前端面试题 - HTML + CSS

187 阅读7分钟

一、什么是 BFC?如何触发?有何特点?如何解决外边距重叠的问题?

BFC 的概念

  • BFC 是指浏览器中创建了一个独立的渲染区域,并且拥有一套渲染规则,它决定了其子元素如何定位,以及与其它元素的相互关系和作用。简单来说就是,BFC 是一个完全独立的空间(布局环境),让空间里的子元素不会影响到外面的布局。

触发 BFC 的方式

  • 文档的根元素(<html>
  • 浮动元素(即 float 值不为 none 的元素)
  • 绝对定位元素(position 值为 absolutefixed 的元素)
  • 行内块元素(display 值为 inline-block 的元素)
  • display 值为 flow-root 的元素

BFC 的特点

  • 包含内部浮动 - 实现浮动元素与周围内容等高
  • 排除外部浮动 - 实现双列布局
  • 防止外边距重叠

解决外边距重叠的方案

  • overflow: auto
  • display: flow-root

二、三栏布局有哪些实现方式?

  • Flexbox 布局
  • Grid 布局

三、calc() 函数的作用是什么?主要用于哪些场景?

calc() 函数的作用

  • calc() 允许在声明 CSS 属性值时执行一些计算。

calc() 函数的使用场景

  • 动态计算尺寸:calc() 允许将不同单位进行计算,从而使元素的尺寸能够根据其它属性或容器尺寸的变化而动态调整。例如,可以使用 calc() 将两个固定像素值相加,并将结果设置为元素的宽度。
  • 响应式设计:calc() 函数非常有用于实现响应式设计,因为它使开发者能够根据不同视窗宽度或其它条件进行灵活调整。通过将百分比单位与 calc() 结合使用,可以实现基于视窗大小的动态布局。
  • 处理不可预测的内容:有时候,元素的尺寸可能受到其内容的限制,而内容的长度或大小是不确定的。使用 calc() 可以处理这种情况,使元素的尺寸能够自适应内容的变化。

四、Google Chrome 如何支持小于 12px 的字体?

display: inline-block;
font-size: ...; // <length> values
transform: scale(0.5);
-webkit-transform: scale(0.5);

五、描述盒子模型?

  • CSS 盒子模型又称为框模型 (Box Model),包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素组成了盒子模型。
  • 框模型中,最内部的框是元素的实际内容,也就是元素框,紧挨着元素框外部的是内边距(padding),其次是边框(border),然后最外层是外边距(margin),整个构成了框模型。通常我们设置的背景显示区域,就是内容、内边距、边框这一块范围。而外边距(margin)是透明的,不会遮挡周边的其它元素。

六、HTML5 的特性有哪些?

  • 语义化标签:HTML5 引入了一些新的语义化标签,如 headernavsectionarticleasidefooter,用于更好地描述和组织网页内容,使搜索引擎和浏览器能更好地理解和处理页面结构。
  • 音视频标签:HTML5 提供了 videoaudio 标签,使得在网页中嵌入视频和音频变得更加简单和直观。这消除了对插件(如 Flash)的依赖,并提供了更好的可访问性和可定制性。
  • 画布标签:HTML5canvas 标签允许使用 JavaScript 在网页上绘制图形、动画和图像。这提供了一种原生的方法来创建交互式和动态的图形,如游戏和数据可视化。
  • 存储:HTML5 引入了两种新的客户端存储机制,即 localStoragesessionStorage。这些机制允许在浏览器中存储数据,以便在不同页面和会话之间共享和保留数据。这为离线使用和本地缓存提供了更好的支持。
  • 地理位置:HTML5 通过 navigator.geolocation API 提供了一种在 Web 应用程序中获取用户位置的标准方法。这使得开发者可以创建基于位置的应用程序,如地图导航、附近的店铺和社交媒体。
  • Web WorkersHTML5Web Workers 允许在后台运行脚本,而不会阻塞用户界面。这使得创建多线程 Web 应用程序成为可能,提高了性能和响应能力。

七、CSS3 的特性有哪些?

  • 选择器:CSS3 增加了多种新的选择器,如:E:last-childE:nth-child(n)E:nth-last-child(n),它们可以更方便地选取需要的元素。
  • 圆角:CSS3 可以使用 border-radius 属性轻松实现圆角效果,使元素的边角更加平滑。
  • 多背景图:CSS3 可以在一个元素上设置多背景图像,例如,可以设置背景图片、背景渐变或背景附件等。
  • 阴影:CSS3 支持阴影效果,包括 text-shadowbox-shadow,可以为元素添加深度和立体感。
  • 弹性盒子布局:CSS3 引入了 Flexbox 模型,可以更灵活地控制元素在页面上的布局和排列方式。
  • 网格布局:CSS3 提供了 Grid 布局模型,可以更直观地定义元素在页面上的位置和大小。
  • 颜色:CSS3 支持更多的颜色空间,例如 RGBaHSL,以及 opacity 等属性,让设计更加丰富多彩。
  • 字体:CSS3 通过 @font-face 规则可以加载本地或网络上的字体文件,让网页可以使用更多个性化的字体。

八、如何实现水平或垂直居中?

  • 对于行内块元素来说,通过设置 text-align: center 来实现水平居中;通过设置 line-height 来实现垂直居中。
  • 对于块级元素来说,通过设置 margin: auto 来实现水平居中。
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: ...; // <length> values
height: ...; // <length> values
  • 无论是行内块元素,还是块级元素,通过弹性布局或绝对定位来实现水平居中和垂直居中。

九、CSS 单位中,pxemrem 的区别?

  • px 是绝对单位,相对于显示器屏幕的分辨率,不随页面缩放而变化。计算方式为:1px = 1/96 英寸
  • em 是相对长度单位,相对于元素自身的字体大小,如果元素没有设置字体大小,则相对于父元素的字体大小。计算方式为:1em = 元素字体大小
  • rem 是相对于根元素(即 html 元素)的字体大小,它不受元素字体大小和父元素字体大小的影响,只受根元素字体大小的影响。计算方式为:1rem = 根元素字体大小

十、隐藏一个元素有哪些方法?这些方法有什么区别?

  • display: none - 元素隐藏,且不占页面空间。此外,它不会触发任何绑定的事件。
  • height: 0 - 元素隐藏,且不占页面空间。如果元素中有文本的话,需要给元素添加 overflow: hiddenfont-size: 0px 以防止出现溢出和字体大小问题。此外,它不会触发任何绑定的事件。
  • opacity: 0 - 这意味着元素变为完全透明,但它会占据页面上的空间,并且如果绑定了事件(如点击事件),那么这些事件仍然可以被触发。
  • visibility: hidden - 元素隐藏,但它会占据页面上的空间。与 opacity: 0 不同的是,如果该元素绑定了事件,不会触发。
  • transform: scale(0) - 元素隐藏,但它会占据页面上的空间。与 opacity: 0 不同的是,如果该元素绑定了事件,不会触发。

十一、如何解决文本溢出的问题?

  • 单行文本溢出:
width: ...; // <length> values
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
  • 多行文本溢出:
height: auto;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;