面试题答案
一键面试实现思路
- 使用CSS Grid布局:
- 使用
display: grid
来创建网格容器。 - 通过
grid - template - columns
和grid - template - rows
定义网格结构,分别设置列和行的布局。 - 利用
grid - area
属性或者网格线来定位各个元素在网格中的位置。
- 使用
- 媒体查询:
- 针对不同设备宽度(桌面、平板、手机)设置不同的网格布局。例如,在手机上,可能将产品图片放大并占据整行,标题和描述等元素也相应调整布局,以适应小屏幕。
- SEO优化:
- 使用语义化的HTML标签,如
<header>
、<main>
、<article>
、<section>
等,有助于搜索引擎理解页面结构。 - 为图片添加有意义的
alt
属性,描述图片内容,利于搜索引擎索引和无障碍访问。
- 使用语义化的HTML标签,如
- 无障碍访问:
- 确保文本有足够的对比度,便于视力障碍用户阅读。
- 合理设置
tabindex
属性,保证键盘可访问性,使键盘用户能按逻辑顺序导航页面元素。
核心CSS代码
/* 基础网格布局 */
.product - container {
display: grid;
grid - template - columns: repeat(5, 1fr);
grid - template - rows: repeat(4, 1fr);
gap: 10px;
}
.product - image {
grid - column - start: 1;
grid - column - end: 3;
grid - row - start: 1;
grid - row - end: 3;
}
.product - title {
grid - column - start: 3;
grid - column - end: 6;
grid - row - start: 1;
}
.product - description {
grid - column - start: 1;
grid - column - end: 2;
grid - row - start: 3;
grid - row - end: 6;
}
.product - price {
grid - column - start: 5;
grid - column - end: 6;
grid - row - start: 4;
grid - row - end: 5;
}
/* 媒体查询 - 平板 */
@media (max - width: 1024px) {
.product - container {
grid - template - columns: repeat(4, 1fr);
grid - template - rows: repeat(3, 1fr);
}
.product - image {
grid - column - start: 1;
grid - column - end: 3;
grid - row - start: 1;
grid - row - end: 2;
}
.product - title {
grid - column - start: 3;
grid - column - end: 5;
grid - row - start: 1;
}
.product - description {
grid - column - start: 1;
grid - column - end: 3;
grid - row - start: 2;
grid - row - end: 4;
}
.product - price {
grid - column - start: 4;
grid - column - end: 5;
grid - row - start: 3;
grid - row - end: 4;
}
}
/* 媒体查询 - 手机 */
@media (max - width: 768px) {
.product - container {
grid - template - columns: 1fr;
grid - template - rows: auto;
}
.product - image {
grid - column - start: 1;
grid - column - end: 2;
grid - row - start: 1;
grid - row - end: 2;
}
.product - title {
grid - column - start: 1;
grid - column - end: 2;
grid - row - start: 2;
}
.product - description {
grid - column - start: 1;
grid - column - end: 2;
grid - row - start: 3;
}
.product - price {
grid - column - start: 1;
grid - column - end: 2;
grid - row - start: 4;
}
}
在HTML部分,要使用语义化标签:
<div class="product - container">
<img src="product - image.jpg" alt="产品图片" class="product - image">
<h1 class="product - title">产品标题</h1>
<p class="product - description">产品描述内容...</p>
<span class="product - price">价格信息</span>
</div>