首页 前端知识 【前端小实战】拼多多首页导航布局

【前端小实战】拼多多首页导航布局

2024-08-20 09:08:27 前端知识 前端哥 913 82 我要收藏

文章目录

  • 一、页面效果展示
  • 二、代码实现解析
  • 三、完整代码

一、页面效果展示

实现如下效果:
(官网)
在这里插入图片描述

(自己实现的效果)
在这里插入图片描述

二、代码实现解析

1、导航栏使用 ul-li 来实现,先写出 html 基本框架。

<body>
	<!-- 整个导航栏 -->
	<div class="nav">
		<!-- 导航栏的内容部分 -->
		<div class="content">
			<!-- 添加图片 -->
			<a href="#">
				<img src="./img/pdd_logo.png"/>
			</a>
			
			<!-- 导航栏 -->
			<ul>
				<li>
					<a href="#"><span>首页</span></a>
				</li>
				
				<li>
					<a href="#"><span>拼多多商家入驻</span></a>
				</li>
				
				<li>
					<a href="#"><span>跨境商家入驻</span></a>
				</li>
				
				<li>
					<a href="#"><span>热点资讯</span></a>
				</li>
				
				<li>
					<a href="#"><span>社会招聘</span></a>
				</li>
				
				<li>
					<a href="#"><span>校园招聘</span></a>
				</li>
				
				<li>
					<a href="#"><span>招采平台</span></a>
				</li>
				
				<li>
					<a href="#"><span>帮助中心</span></a>
				</li>
				
				<li>
					<a href="#"><span>举报平台</span></a>
				</li>
				
				<li>
					<a href="#"><span>分享赚钱</span></a>
				</li>
				
				<li>
					<a href="#"><span>查快递</span></a>
				</li>
			</ul>
		</div>
	</div>
</body>

当前效果如下:

在这里插入图片描述

2、给元素添加样式,使用 position: fixed; 将整个导航栏设置为固定定位,使用 top: 0 固定在最上方。

/* 初始化样式 */
* {
	padding: 0;
	margin: 0;
}

/* 设置整个导航栏.nav的样式 */
.nav {
	/* 将导航栏固定在整个页面上方 */
	position: fixed;
	top: 0;
	
	width: 100%;
	height: 105px;
	border-bottom: 5px solid red;
}

当前效果如下:

在这里插入图片描述

3、调整导航元素内容 .content 的位置,并将图片缩放到合适大小。

.nav .content {
	/* 设置宽高 */
	width: 1200px;
	height: 105px;
	
	/* 居中 */
	margin: 0 auto;
}

/* 设置图片显示尺寸和边距 */
.nav .content img {
	/* 修改了图片宽度后高度也会按原比例自动变化 */
	width: 180px;  
	/* 边距 */
	margin: 21px 0;
}

当前效果如下:

在这里插入图片描述

4、由于 ul-li 中的元素是垂直放置的,通过对子元素使用 float: left 让元素水平放置,并将前面的 ul li 小圆点和 a 的自带样式消除,设置 span 中的导航文字的样式。

.nav .content ul {
	/* 清除小圆点 */
	list-style: none;
	
	/* 设置高度,并让元素垂直居中 */
	height: 20px;
	line-height: 20px;
}

.nav .content ul li {
	/* 设置元素左浮动 */
	float: left;
}

.nav .content ul li a {
	/* 清除 a 标签自带的样式 */
	text-decoration: none;
}

.nav .content ul li a span {
	/* 字体颜色 */
	color: #6c6c6c;
	/* 左右边距 */
	margin: 0 10px;
	/* 字体大小 */
	font-size: 16px;
}

当前效果如下:

在这里插入图片描述

5、将 ul-li 放到合适的位置,设置绝对定位 position: absolute 来调整位置,那父元素 .content 就要设置相对定位 position: relative

.nav .content {
	width: 1200px;
	height: 105px;
	margin: 0 auto;

	/* 新增 */
	position: relative;
}

.nav .content ul {
	list-style: none;
	height: 20px;
	line-height: 20px;
	
	/* 新增 */
	position: absolute;
	right: 24px;
	top: 50%;
	margin-top: -10px;
}

效果如下,导航条已经基本完成了:

在这里插入图片描述

6、可以看到官网中的导航文字中的分割线还没有实现,可以对 ul-li 设置右边框线来实现该效果,并通过 ul li:last-child 选择到最右边的 li 多余的边框线取消掉。

在这里插入图片描述

.nav .content ul li {
	float: left;
	
	/* 新增 */
	border-right: 1px solid #6c6c6c;
}

/* 选择最右边的 li */
.nav .content ul li:last-child {
	/* 取消掉最右边的边框线 */
	border: none;
}

当前效果如下:

在这里插入图片描述

7、官网中的第一个导航文字的样式都不一样,用 ul li:first-child span 为它单独设置一个样式,最后将导航文字两边多余的边距给清除就完成了。

/* 选中第一个span单独设置样式 */
.nav .content ul li:first-child span {
	margin-left: 0;		/* 清除左边多余边距 */
	color: #fc475d;
	font-weight: bold;	/* 加粗 */
}

.nav .content ul li:last-child span {
	margin-right: 0;	/* 清除右边多余边距 */
}

最终效果:

在这里插入图片描述

三、完整代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			* {
				padding: 0;
				margin: 0;
			}
			
			.nav {
				position: fixed;
				top: 0;
				width: 100%;
				height: 105px;
				border-bottom: 5px solid red;
			}
			
			.nav .content {
				position: relative;
				width: 1200px;
				height: 105px;
				margin: 0 auto;
			}
			
			.nav .content img {
				width: 180px;
				margin: 21px 0;
			}
			
			.nav .content ul {
				list-style: none;
				position: absolute;
				right: 24px;
				top: 50%;
				margin-top: -10px;
				height: 20px;
				line-height: 20px;
			}
			
			.nav .content ul li {
				float: left;
				border-right: 1px solid #6c6c6c;
			}
			
			.nav .content ul li a {
				text-decoration: none;
			}
			
			.nav .content ul li a span {
				color: #6c6c6c;
				margin: 0 10px;
				font-size: 16px;
			}
			
			.nav .content ul li:last-child {
				border: none;
			}
			
			.nav .content ul li:first-child span {
				margin-left: 0;
				color: #fc475d;
				font-weight: bold;
			}
			
			.nav .content ul li:last-child span {
				margin-right: 0;
			}

		</style>
	</head>
	<body>
		<div class="nav">
			<div class="content">
				<a href="#">
					<img src="./img/pdd_logo.png"/>
				</a>
				
				<ul>
					<li>
						<a href="#"><span>首页</span></a>
					</li>
					
					<li>
						<a href="#"><span>拼多多商家入驻</span></a>
					</li>
					
					<li>
						<a href="#"><span>跨境商家入驻</span></a>
					</li>
					
					<li>
						<a href="#"><span>热点资讯</span></a>
					</li>
					
					<li>
						<a href="#"><span>社会招聘</span></a>
					</li>
					
					<li>
						<a href="#"><span>校园招聘</span></a>
					</li>
					
					<li>
						<a href="#"><span>招采平台</span></a>
					</li>
					
					<li>
						<a href="#"><span>帮助中心</span></a>
					</li>
					
					<li>
						<a href="#"><span>举报平台</span></a>
					</li>
					
					<li>
						<a href="#"><span>分享赚钱</span></a>
					</li>
					
					<li>
						<a href="#"><span>查快递</span></a>
					</li>
				</ul>
			</div>
		</div>
	</body>
</html>
转载请注明出处或者链接地址:https://www.qianduange.cn//article/16265.html
标签
评论
发布的文章

在线OJ项目

2024-08-27 21:08:43

JSON2YOLO 项目教程

2024-08-27 21:08:42

Redis 实现哨兵模式

2024-08-27 21:08:22

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!