目录
成品:
任务描述
源码:
详细讲解:
1.导航栏讲解
2.主体部分
3.图像部分
4.评分部分
5.按钮部分
6.配置信息部分
7.响应式设计
成品:
任务描述
创建一个产品展示页面,包括以下内容:
- 网页结构:使用 HTML 标签构建页面的基本结构,包括导航栏、产品图片、产品描述、价格信息、购物车按钮等部分。
- 页面内容:页面中包括一个产品的图片、名称、详细描述、价格和“添加到购物车”按钮。
- 样式:使用 CSS 进行页面布局和样式设计,使用 CSS Flexbox 实现响应式设计,使页面在不同设备上看起来都很美观。
- 交互效果:为按钮添加悬停效果(hover),并使用伪类选择器添加一些简单的动画效果。
要求
- 使用
HTML
创建网页的基本结构,包括<!DOCTYPE html>
、<html>
、<head>
、<body>
等标签。 - 使用
CSS
修改页面的背景颜色、设置字体、图片大小和样式、按钮样式等。 - 使用
CSS Flexbox
实现页面布局,使页面在不同尺寸的设备上都能良好显示。 - 使用伪类选择器(如
:hover
)为按钮添加悬停效果。 - 使用媒体查询实现响应式设计。
源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>产品详情页</title>
<style>
body {
margin: 0;
padding: 0;
background-color: #f4f4f4;
color: #333;
}
/* 导航栏部分 */
header{
background-color:rgb(87, 87, 87);
/* 固定显示 */
position: fixed;
top: 0px;
width: 100%;
}
header ul{
/* 去除无序列表的装饰 */
list-style-type: none;
display: flex;
justify-content: center;
padding: 0;
margin: 0;
}
header li{
margin: 0px 20px;
}
header a{
color: white;
text-decoration: none;
padding: 15px 20px;
display: block;
}
header ul li a:hover{
background-color: rgb(137, 137, 137);
}
/* 主体部分 */
.st1{
background-color: white;
/* 居中对齐 */
align-items: center;
justify-content: center;
margin-top: 100px;
margin-right: 100px;
margin-left: 100px;
padding: 20px;
/* 分栏显示 */
display: flex;
/* 左右两侧之间的间距 */
gap: 60px;
/* 圆角处理 */
border-radius: 10px;
/* 阴影 */
box-shadow: 0 2px 4px rgba(0, 0, 0,0.4);
}
/* 图像部分 */
.left img {
max-width: 100%;
border-radius: 8px;
transition: transform 0.5s, background-color 0.5s;
}
.left img:hover {
transform: scale(1.1);
}
/* 右侧部分 */
.right{
width: 500px;
max-width: 100%;
}
/* 评分 */
.a{
background-color: rgb(195, 195, 195);
width: 100%;
height: 15px;
border-radius: 5px;
margin: 10px 0;
}
.b{
background-color: green;
height: 15px;
text-align: center;
color: aliceblue;
}
/* 小字部分 */
.st2{
margin-top: 0px;
/* 分两侧显示 */
display: flex;
justify-content: space-between;
}
.st2 div{
font-size: small;
color: rgb(62, 62, 62);
}
/* XYZ官网链接 */
.website a{
font-size: small;
color: rgb(61, 156, 175);
/* 去除下划线 */
text-decoration: none;
}
/* 价格一行 */
.st3{
align-items: center;
/* 分两侧显示 */
display: flex;
/* 设置两则中间为空格 */
justify-content: space-between;
}
/* 添加到购物车按钮 */
.st3 .button1{
background-color: rgb(241, 241, 82);
border: none;
border-radius: 10px;
padding: 15px;
font-weight: bold;
/* 鼠标选中时,鼠标转化为指针 */
cursor: pointer;
}
.st3 .button1:hover{
background-color: rgb(222, 193, 27);
}
/* 现在购买按钮 */
.st3 .button2{
background-color: rgb(255, 140, 0);
border: none;
border-radius: 10px;
padding: 15px;
font-weight: bold;
cursor: pointer;
}
.st3 .button2:hover{
background-color: rgb(188, 104, 2);
}
/* 价格显示 */
.st3 .piece{
color: red;
font-size: 30px;
}
.st3 .text{
font-size: large;
}
/* 配置表格 */
table{
width: 100%;
/* 单元格之间没有间隙,连成一条线 */
border-collapse: collapse;
}
table .c {
/* 加粗 */
font-weight: bold;
width: 30%;
}
table td {
padding: 10px;
border-bottom: 1px solid #ccc;
}
/* 响应式设计 */
@media (max-width: 768px) {
.st1 {
flex-direction: column;
gap: 20px;
margin:0px 10px 20px 10px;
padding: 15px;
}
header{
position: unset;
}
header ul {
flex-direction: column;
}
header li{
margin: 0;
}
.button1, .button2 {
width: 100%;
padding: 10px;
}
}
</style>
</head>
<body>
<header>
<ul>
<li><a href="">产品图片</a></li>
<li><a href="">产品描述</a></li>
<li><a href="">价格信息</a></li>
<li><a href="">规格详情</a></li>
<li><a href="">购物车</a></li>
</ul>
</header>
<section class="st1">
<div class="left">
<div><img src="https://m.media-amazon.com/images/I/815uX7wkOZS._AC_SX679_.jpg" alt="图片加载失败"></div>
</div>
<div class="right">
<h3>XYZ 超轻薄笔记本电脑 AI超能本</h3>
<p style="font-size: larger;">XYZ 14 笔记本电脑,英特尔赛扬 N4020,4 GB RAM,64 GB 存储,14 英寸微边高清显示屏,Windows 11 家庭版,轻薄便携,4K 显卡,一年 Microsoft 365(14-dq0040nr,雪花白)</p>
<p class="website"><a href="#www.XYZ.com">访问XYZ官网</a></p>
<p>
<div class="a"><div class="b" style="width: 89%; font-size: 10px; ">89%好评</div></div>
</p>
<div class="st2">
<div>英特尔赛扬|4G+512G|快速充电</div>
<div>已售20万+</div>
</div>
<hr>
<div class="st3">
<div style="display: flex; align-items: center;">
<p class="piece">¥6999</p><p class="text">到手价</p>
</div>
<div>
<div style="display: flex; align-items: center;"></div>
<button type="submit" class="button1">添加到购物车</button>
<button type="submit" class="button2">现在购买</button>
</div>
</div>
<table cellspacing="10">
<tr>
<td class="c">品牌</td> <td>XYZ</td>
</tr>
<tr>
<td class="c">型号名称</td> <td>14-dq0040nr</td>
</tr>
<tr>
<td class="c">屏幕大小</td><td>14英寸</td>
</tr>
<tr>
<td class="c">颜色</td><td>雪花白</td>
</tr>
<tr>
<td class="c">硬盘大小</td><td>512GB</td>
</tr>
<tr>
<td class="c">CPU型号</td><td>Celeron N4020</td>
</tr>
<tr>
<td class="c">运行内存</td><td>4GB</td>
</tr>
<tr>
<td class="c">操作系统</td><td>Windows 11 S</td>
</tr>
<tr>
<td class="c">特殊</td><td>微边边框</td>
</tr>
<tr>
<td class="c">显卡</td><td>集成显卡</td>
</tr>
</table>
</div>
</section>
</body>
</html>
详细讲解:
1.导航栏讲解
/* css导航栏部分 */
header{
background-color:rgb(87, 87, 87);
/* 固定显示 */
position: fixed;
top: 0px;
width: 100%;
}
header ul{
/* 去除无序列表的装饰 */
list-style-type: none;
display: flex;
justify-content: center;
padding: 0;
margin: 0;
}
header li{
margin: 0px 20px;
}
header a{
color: white;
text-decoration: none;
padding: 15px 20px;
display: block;
}
header ul li a:hover{
background-color: rgb(137, 137, 137);
}
<header>
<ul>
<li><a href="">产品图片</a></li>
<li><a href="">产品描述</a></li>
<li><a href="">价格信息</a></li>
<li><a href="">规格详情</a></li>
<li><a href="">购物车</a></li>
</ul>
</header>
(1). 导航栏的固定显示:position: fixed; 要掌握导航栏的创建。
2.主体部分
/* 主体部分 */
.st1{
background-color: white;
/* 居中对齐 */
align-items: center;
justify-content: center;
margin-top: 100px;
margin-right: 100px;
margin-left: 100px;
padding: 20px;
/* 分栏显示 */
display: flex;
/* 左右两侧之间的间距 */
gap: 60px;
/* 圆角处理 */
border-radius: 10px;
/* 阴影 */
box-shadow: 0 2px 4px rgba(0, 0, 0,0.4);
}
(1).align-items: center;和justify-content: center;的使用,表示居中。display: flex;表示并列显示;gap: 60px;表示每一部分之间的间距;
3.图像部分
/* css图像部分 */
.left img {
max-width: 100%;
border-radius: 8px;
transition: transform 0.5s, background-color 0.5s;
}
.left img:hover {
transform: scale(1.1);
}
<div class="left">
<div><img src="https://m.media-amazon.com/images/I/815uX7wkOZS._AC_SX679_.jpg" alt="图片加载失败"></div>
</div>
(1).transition: transform 0.1s, background-color 0.3s;
transition: [property] [duration] [timing-function] [delay];
property
:指定要应用过渡效果的 CSS 属性。可以是单个属性,也可以是多个属性,用逗号分隔。duration
:指定过渡效果的持续时间(时间单位如秒s
或毫秒ms
)。timing-function
:指定过渡效果的时间曲线。delay
:指定过渡效果的延迟时间(时间单位如秒s
或毫秒ms
)。
(2).transform: scale(1.03)
transform: scale(1.03)是 CSS 的一个变换属性,用于缩放元素。 scale() 函数是 transform 属性的一部分,用于改变元素的大小,而不改变其实际布局或位置。scale()括号中的值大于1表示放大,小于1表示缩小。
transform常用值:
translate(x, y)
:移动元素的位置。rotate(angle)
:旋转元素。scale(x, y)
:缩放元素的大小。skew(x, y)
:倾斜元素。matrix(a, b, c, d, e, f)
:应用 2D 转换矩阵。
4.评分部分
/* 评分 */
.a{
/* 进度条底色 */
background-color: rgb(195, 195, 195);
width: 100%;
height: 15px;
/* 圆角处理 */
border-radius: 5px;
margin: 10px 0;
}
.b{
/* 进度条进度颜色 */
background-color: green;
height: 15px;
text-align: center;
color: aliceblue;
}
<p>
<div class="a"><div class="b" style="width: 89%; font-size: 10px; ">89%好评</div></div>
</p>
(1).掌握进度条如何构建即可。
5.按钮部分
/* 添加到购物车按钮 */
.st3 .button1{
/* 按钮颜色 */
background-color: rgb(241, 241, 82);
/* 去除按钮边框 */
border: none;
/* 圆角处理 */
border-radius: 10px;
padding: 15px;
/* 字体加粗 */
font-weight: bold;
/* 鼠标选中时,鼠标转化为指针 */
cursor: pointer;
}
.st3 .button1:hover{
background-color: rgb(222, 193, 27);
}
/* 现在购买按钮 */
.st3 .button2{
/* 按钮颜色 */
background-color: rgb(255, 140, 0);
/* 去除按钮边框 */
border: none;
/* 圆角处理 */
border-radius: 10px;
padding: 15px;
/* 字体加粗 */
font-weight: bold;
/* 鼠标选中时,鼠标转化为指针 */
cursor: pointer;
}
.st3 .button2:hover{
background-color: rgb(188, 104, 2);
}
<div>
<div style="display: flex; align-items: center;"></div>
<button type="submit" class="button1">添加到购物车</button>
<button type="submit" class="button2">现在购买</button>
</div>
(1).见代码解释。
6.配置信息部分
/* 配置表格 */
table{
width: 100%;
/* 单元格之间没有间隙,连成一条线 */
border-collapse: collapse;
}
table .c {
/* 加粗 */
font-weight: bold;
width: 30%;
}
table td {
padding: 10px;
/* 单位格底线设置 */
border-bottom: 1px solid #ccc;
}
<table>
<tr>
<td class="c">品牌</td> <td>XYZ</td>
</tr>
<tr>
<td class="c">型号名称</td> <td>14-dq0040nr</td>
</tr>
<tr>
<td class="c">屏幕大小</td><td>14英寸</td>
</tr>
<tr>
<td class="c">颜色</td><td>雪花白</td>
</tr>
<tr>
<td class="c">硬盘大小</td><td>512GB</td>
</tr>
<tr>
<td class="c">CPU型号</td><td>Celeron N4020</td>
</tr>
<tr>
<td class="c">运行内存</td><td>4GB</td>
</tr>
<tr>
<td class="c">操作系统</td><td>Windows 11 S</td>
</tr>
<tr>
<td class="c">特殊</td><td>微边边框</td>
</tr>
<tr>
<td class="c">显卡</td><td>集成显卡</td>
</tr>
</table>
(1). border-bottom: 1px solid #ccc;设置单元格底线为实线;border-collapse: collapse;去除间隙。
7.响应式设计
/* 响应式设计 */
/* 当宽度小于768时,就会生效 */
@media (max-width: 768px) {
.st1 {
/* 将拍板为竖式排版 */
flex-direction: column;
gap: 20px;
margin:0px 10px 20px 10px;
padding: 15px;
}
header{
position: unset;
}
header ul {
/* 将拍板为竖式排版 */
flex-direction: column;
}
header li{
margin: 0;
}
.button1, .button2 {
width: 100%;
padding: 10px;
}
}
(1).当用手机端打开网页时,能够正常观看。
完