前端面试-HTML5与CSS3

HTML5/CSS3

1. HTML5语义化标签的作用是什么?请举例说明5个常用语义化标签及其适用场景

解答:

语义化标签通过标签名称直观表达内容结构,有利于:

  • 提升可访问性(屏幕阅读器识别)
  • 改善SEO(搜索引擎内容解析)
  • 增强代码可维护性
    常用标签示例:
html 复制代码
<header> 页面/区块头部内容
<nav> 导航链接区域
<article> 独立内容区块(如博客文章)
<section> 文档主题内容分组
<aside> 侧边栏/附属信息

2. Flex布局中flex: 1的具体含义是什么?

解答:
flex: 1flex-grow/flex-shrink/flex-basis的简写:

  • flex-grow: 1:元素按比例分配剩余空间
  • flex-shrink: 1:空间不足时允许收缩
  • flex-basis: 0%:初始尺寸为0,完全由伸缩决定
    相当于flex: 1 1 0%

3. Grid布局如何实现经典的12列栅格系统?

解答:

css 复制代码
.container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 20px;
}
/* 元素使用示例 */
.col-4 {
  grid-column: span 4; /* 占4列 */
}

4. 如何通过媒体查询实现移动优先的响应式布局?

解答:

移动优先原则(min-width递增):

css 复制代码
/* 默认移动端样式 */
.container { padding: 10px; }

/* 平板适配 */
@media (min-width: 768px) {
  .container { padding: 20px; }
}

/* 桌面适配 */
@media (min-width: 1024px) {
  .container { padding: 30px; }
}

5. Flex与Grid布局的核心区别是什么?

解答:

维度 Flex Grid
维度 一维布局 二维布局
对齐方式 基于轴线对齐 基于网格线对齐
内容控制 内容流驱动布局 显式定义行列结构
适用场景 线性排列、简单对齐 复杂网格布局

6. 如何实现一个自适应的圣杯布局(三栏布局)?

解答:

Grid实现方案:

css 复制代码
.container {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  min-height: 100vh;
}
/* 媒体查询适配移动端 */
@media (max-width: 768px) {
  .container {
    grid-template-columns: 1fr;
  }
}

7. CSS3中哪些新特性可以提升响应式开发效率?

解答:

  • 视口单位:vw/vh/vmin/vmax
  • 媒体查询(Media Queries Level4):(hover: hover)等新特性
  • 计算函数:calc()
  • Flex/Grid布局系统
  • 多列布局:column-count
  • 自定义属性(CSS变量)

8. 如何处理Flex/Grid布局的浏览器兼容性问题?

解答:

渐进增强策略:

  1. 使用@supports特性检测:
css 复制代码
@supports (display: grid) {
  /* 现代浏览器样式 */
}
  1. 添加浏览器前缀:
css 复制代码
.container {
  display: -webkit-flex;
  display: flex;
}
  1. 提供fallback布局(如float布局)
  2. 使用autoprefixer工具自动处理前缀

9. 如何用Grid实现瀑布流布局?

解答:

css 复制代码
.container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  grid-auto-rows: masonry; /* 实验性特性 */
  gap: 15px;
}
/* 降级方案 */
@supports not (grid-auto-rows: masonry) {
  .item {
    break-inside: avoid;
  }
}

10. 使用Flex布局时,如何实现等高等宽的卡片列表?

解答:

css 复制代码
.card-container {
  display: flex;
  gap: 20px;
}

.card {
  flex: 1;  /* 等宽 */
  display: flex;
  flex-direction: column;
}

.card-content {
  flex-grow: 1; /* 等高 */
}

原理说明:

外层flex容器使卡片等宽,内层flex容器通过flex-grow拉伸内容区域实现等高效果。

相关推荐
我只会写Bug啊18 小时前
Vue文件预览终极方案:PNG/EXCEL/PDF/DOCX/OFD等10+格式一键渲染,开源即用!
前端·vue.js·pdf·excel·预览
扯蛋43819 小时前
LangChain的学习之路( 一 )
前端·langchain·mcp
007php00719 小时前
某游戏大厂 Java 面试题深度解析(四)
java·开发语言·python·面试·职场和发展·golang·php
Mr.Jessy19 小时前
Web APIs学习第一天:获取 DOM 对象
开发语言·前端·javascript·学习·html
ConardLi20 小时前
Easy Dataset 已经突破 11.5K Star,这次又带来多项功能更新!
前端·javascript·后端
冴羽20 小时前
10 个被严重低估的 JS 特性,直接少写 500 行代码
前端·javascript·性能优化
rising start20 小时前
四、CSS选择器(续)和三大特性
前端·css
一 乐21 小时前
高校后勤报修系统|物业管理|基于SprinBoot+vue的高校后勤报修系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·毕设
爱喝水的小周21 小时前
《UniApp 页面配置文件pages.json》
前端·uni-app·json
mapbar_front21 小时前
React中useContext的基本使用和原理解析
前端·react.js