十五、小米官网-练习
1、首先css样式重置
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
ol,
ul {
list-style: none;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
2、公共样式的抽取
/* 公共样式 */
.clearfix::before,
.clearfix::after {
content: '';
display: table;
clear: both;
}
/* 去除a的下划线 */
a {
text-decoration: none;
color: #333;
}
body {
font: 14px/1.5 Helvetica Neue, Helvetica, Arial, Microsoft Yahei, Hiragino Sans GB, Heiti SC, WenQuanYi Micro Hei, sans-serif;
color: #333;
min-height: 1226px;
}
/* 设置一个类,用来表示中间容器的宽度! */
.w {
width: 1226px;
/* 容器居中 */
margin: 0 auto;
}
3、 HTML 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>小米商城 - Xiaomi 12、Redmi K50、MIX FOLD,小米电视官方网站</title>
<!-- 引入css重置样式 -->
<link rel="stylesheet" href="./css/reset.css" />
<!-- 引入公共样式表 -->
<link rel="stylesheet" href="./css/base.css" />
<!-- 引入图标字体库 -->
<link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.2.0/css/all.css" rel="stylesheet" />
<!-- 引入当前页面的样式表 -->
<link rel="stylesheet" href="./css/index.css" />
<!-- 设置网站的图标:
网站的图标:favicon.ico可以直接打开!
-->
<link rel="icon" href="./img/favicon.ico">
</head>
<body>
<!-- 顶部导航条 -->
<!-- 顶部导航条外部容器 -->
<div class="topbar-wrapper">
<!-- 创建内部容器 -->
<div class="topbar w clearfix">
<!-- 左侧的导航 -->
<ul class="service">
<li><a href="javascript:;">小米商城</a></li>
<li class="line">|</li>
<li><a href="javascript:;">loT</a></a></li>
<li class="line">|</li>
<li><a href="javascript:;">MIUI</a></li>
<li class="line">|</li>
<li><a href="javascript:;">云服务</a></li>
<li class="line">|</li>
<li><a href="javascript:;">金融</a></li>
<li class="line">|</li>
<li><a href="javascript:;">有品</a></li>
<li class="line">|</li>
<li><a href="javascript:;">小爱开放平台</a></li>
<li class="line">|</li>
<li><a href="javascript:;">企业团购</a></li>
<li class="line">|</li>
<li><a href="javascript:;">资质证照</a></li>
<li class="line">|</li>
<li><a href="javascript:;">协议规则</a></li>
<li class="line">|</li>
<li class="app-wrapper">
<a class="app" href="javascript:;">
下载app
<!-- 添加一个弹出层 -->
<div class="qrcode">
<img src="./img/miapp.png" alt="">
<span>小米商城app</span>
</div>
</a>
</li>
<li class="line">|</li>
<li><a href="javascript:;">Select Location</a></li>
</ul>
<!-- 购物车 -->
<ul class="shop-cart">
<li>
<a href="#">
<i class="fas fa-cart-arrow-down"></i>
购物车(0)
</a>
</li>
</ul>
<!-- 用户登录注册 -->
<ul class="user-info">
<li><a href="javascript:;">登录</a></li>
<li class="line">|</li>
<li><a href="javascript:;">注册</a></li>
<li class="line">|</li>
<li><a href="javascript:;">消息通知</a></li>
</ul>
</div>
</div>
<!-- 创建一个头部的外部容器 -->
<div class="header-wrapper">
<div class="header w clearfix">
<h1 class="logo" title="小米">
小米官网
<a class="home" href="/"></a>
<a class="mi" href="/"></a>
</h1>
<!-- 创建一个中间导航条的容器 -->
<div class="nav-wrapper">
<!-- 创建导航条 -->
<ul class="nav clearfix">
<li class="all-goods-wrapper">
<a class="all-goods" href="#">全部商品分类</a>
<!-- 创建一个左侧导航菜单 -->
<ul class="left-menu">
<li>
<a href="#">
手机 电话卡
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
电视 盒子
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
笔记本 平板
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
家电 插线板
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
出行 穿戴
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
智能 路由器
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
电源 配件
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
健康 儿童
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
耳机 音箱
<i class="fas fa-angle-right"></i>
</a>
</li>
<li>
<a href="#">
生活 箱包
<i class="fas fa-angle-right"></i>
</a>
</li>
</ul>
</li>
<li><a href="#">小米手机</a></li>
<li><a href="#">Redmi红米</a></li>
<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>
<li><a href="#">服务</a></li>
<li><a href="#">社区</a></li>
<!-- 创建一个弹出层 -->
<div class="goods-info">
</div>
<!-- 创建搜索框的容器 -->
<div class="search-wrapper">
<form class="search" action="#">
<input class="search-inp" type="text">
<button class="search-btn">
<i class="fas fa-search"></i>
</button>
</form>
</div>
</ul>
</div>
</div>
</div>
<!-- 创建banner的容器 -->
<div class="banner-wrapper">
<div class="banner w">
<ul class="img-list">
<li>
<a href="#">
<img src="./img/banner1.jpg" alt="">
</a>
</li>
<li>
<a href="#">
<img src="./img/banner2.webp" alt="">
</a>
</li>
<li>
<a href="#">
<img src="./img/banner3.webpg" alt="">
</a>
</li>
<li>
<a href="#">
<img src="./img/banner4.webp" alt="">
</a>
</li>
<li>
<a href="#">
<img src="./img/banner5.webp" alt="">
</a>
</li>
</ul>
<div class="pointer">
<a class="active" href="javascript:;"></a>
<a href="javascript:;"></a>
<a href="javascript:;"></a>
<a href="javascript:;"></a>
<a href="javascript:;"></a>
</div>
<div class="prev-next">
<a class="prev" href="javascript:;"></a>
<a class="next" href="javascript:;"></a>
</div>
</div>
<!-- 固定定位的工具条 -->
<div class="back-top"></div>
<!-- 创建广告容器 -->
<div class="ad w">
<ul class="shortcut">
<li>
<a href="#">
<i class="fas fa-clock"></i>
小米秒杀
</a>
</li>
<li>
<a href="#">
<i class="fas fa-building"></i>
企业团购
</a>
</li>
<li>
<a href="#">
<i class="fas fa-frog"></i>
F码通道
</a>
</li>
<li>
<a href="#">
<i class="fas fa-address-card"></i>
米粉卡
</a>
</li>
<li>
<a href="#">
<i class="fas fa-gift"></i>
以旧换新
</a>
</li>
<li>
<a href="#">
<i class="fas fa-mobile-alt"></i>
话费充值
</a>
</li>
</ul>
<ul class="ad-img">
<li>
<a href="#">
<img src="./img/01.jpg" alt="">
</a>
</li>
<li>
<a href="#">
<img src="./img/02.jpg" alt="">
</a>
</li>
<li>
<a href="#">
<img src="./img/03.jpg" alt="">
</a>
</li>
</ul>
</div>
</div>
</body>
</html>
4、CSS 代码
/* 主页index.html的样式表 */
/* 设置顶部导航条的容器 */
.topbar-wrapper {
width: 100%;
height: 40px;
line-height: 40px;
background-color: #333;
}
/* 设置超链接的颜色 */
.topbar a {
font-size: 12px;
color: #b0b0b0;
display: block;
}
/* 设置超链接移入的效果 */
.topbar a:hover {
color: #fff;
}
/* 设置中间的分割线效果 */
.topbar .line {
color: #424242;
font-size: 12px;
margin: 0 8px;
margin-top: -1px;
}
/* 设置左侧导航条 */
.service,
.topbar li {
float: left;
}
.app {
position: relative;
}
/* 设置app下的小三角 */
.app-wrapper:hover .app::after {
display: none;
content: '';
/* 设置绝对定位 */
position: absolute;
display: block;
width: 0;
height: 0;
/* 设置四个方向的边框 */
border: 6px solid transparent;
/* 去除上边框 */
border-top: none;
/* 单独设置下边框的颜色 */
border-bottom-color: #fff;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
/* 设置下载app的下拉 */
.app .qrcode {
/* 如果设置过渡先关闭display */
/* display: none; */
position: absolute;
/* left: -38px; */
left: 22px;
width: 124px;
/* height: 135px; */ /* 这个是通过display设置的方式,不好加动画效果! */
/* 通过height、overflow方便设置动画 */
height: 0;
overflow: hidden;
margin-left: -62px;
line-height: 1;
text-align: center;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
z-index: 9999;
/* transition设置过度效果 */
transition: height 0.3s;
}
/* 与下方的效果是一样的,另一种写法! */
/* .app:hover .qrcode,
.app:hover::after {
display: block;
} */
.app-wrapper:hover > .app .qrcode {
display: block;
height: 148px;
}
.app .qrcode img {
width: 90px;
margin: 17px;
margin-bottom: 12px;
}
.app .qrcode span {
color: #000;
font-size: 13px;
}
/* 设置右侧导航条 */
.shop-cart,
.user-info {
float: right;
}
.shop-cart {
margin-left: 26px;
}
/* 设置购物车的样式 */
.shop-cart a {
width: 120px;
background-color: #424242;
text-align: center;
}
.shop-cart:hover a {
background-color: #fff;
color: #ff6700;
}
.shop-cart i {
margin-right: 2px;
}
/* 设置中间的header */
.header {
height: 100px;
/* background-color: pink; */
}
.header-wrapper {
/* background-color: red; */
position: relative;
}
/* 设置logo的h1 */
.header .logo {
/* 隐藏logo中的文字 */
text-indent: -999px;
float: left;
margin-top: 22px;
width: 55px;
height: 55px;
position: relative;
overflow: hidden;
}
/* 统一设置logo的超链接 */
.header .logo a {
/* display: block; */
position: absolute;
width: 55px;
height: 55px;
left: 0;
background-color: #ff6700;
background-image: url('../img/mi-logo.png');
background-size: cover;
background-position: center;
transition: left 0.3s;
}
/* 设置home的图标 */
.header .logo .home {
left: -55px;
background-image: url('../img/mi-home.jpeg');
}
/* 设置鼠标移入以后两个图标的位置 */
.header .logo:hover .mi {
left: 55px;
}
.header .logo:hover .home {
left: 0px;
}
.header .nav-wrapper {
float: left;
margin-left: 7px;
}
/* 设置导航条 */
.header .nav {
/* width: 792px; */
height: 100px;
line-height: 100px;
padding-left: 58px;
}
/* 设置导航条的li */
.nav > li {
float: left;
}
.all-goods-wrapper {
position: relative;
}
/* 设置左侧导航条的样式 */
.left-menu {
width: 234px;
height: 420px;
background-color: rgba(0, 0, 0, 0.6);
position: absolute;
z-index: 998;
left: -120px;
line-height: 1;
padding: 20px 0;
}
ul .left-menu li a {
display: block;
height: 42px;
line-height: 42px;
color: white;
margin-right: 0;
padding: 0 30px;
font-size: 14px;
}
ul .left-menu li a:hover {
color: white;
background-color: #ff6700;
}
.left-menu a i {
float: right;
line-height: 42px;
}
.nav-wrapper li a {
font-size: 16px;
display: block;
margin-right: 20px;
}
.nav-wrapper li a:hover {
color: #ff6700;
}
/* 隐藏全部商品 */
.all-goods {
visibility: hidden;
}
.nav .goods-info {
/* height: 228px; */
height: 0;
overflow: hidden;
width: 100%;
position: absolute;
background-color: white;
top: 100px;
left: 0;
transition: height 0.3s;
/* background-color: #bfa; */
z-index: 999;
}
.nav li:not(:first-of-type):not(:nth-child(10)):not(:nth-child(9)):hover ~ .goods-info,
.goods-info:hover {
border-top: 1px solid rgb(224, 224, 224);
box-shadow: 0 5px 3px rgba(0, 0, 0, 0.2);
height: 228px;
}
/* 设置搜索框的容器 */
.search-wrapper {
width: 296px;
height: 50px;
float: right;
margin-top: 25px;
}
.search-wrapper .search-inp {
box-sizing: border-box;
float: left;
padding: 0;
height: 50px;
border: none;
padding: 0 10px;
width: 244px;
font-size: 16px;
border: 1px solid rgb(224, 224, 224);
outline: none;
}
/* 设置input获取焦点后的样式 */
.search-wrapper .search-inp:focus,
.search-wrapper .search-inp:focus + button {
/* outline: 1px solid #ff6700; */
border-color: #ff6700;
}
.search-wrapper .search-btn {
float: left;
height: 50px;
width: 52px;
padding: 0;
border: none;
background-color: #fff;
color: #616161;
font-size: 16px;
border: 1px solid rgb(224, 224, 224);
border-left: none;
}
.search-wrapper .search-btn:hover {
background-color: #ff6700;
color: white;
border: none;
}
/* 设置banner */
.banner {
position: relative;
height: 460px;
}
.banner .img-list li {
position: absolute;
}
.banner img {
width: 100%;
}
/* 设置5个导航点 */
.pointer {
position: absolute;
bottom: 22px;
right: 35px;
}
.pointer a {
float: left;
width: 6px;
height: 6px;
border: 2px rgba(0, 0, 0, 0.4) solid;
border-radius: 50%;
background-color: rgba(0, 0, 0, 0.4);
margin-left: 6px;
}
.pointer a:hover,
.pointer a.active {
border-color: rgba(0, 0, 0, 0.4);
background-color: rgba(225, 225, 225, 0.4);
}
/* 设置两个箭头 */
.prev-next a {
width: 41px;
height: 69px;
position: absolute;
background-image: url('../img/icon-slides.png');
top: 0;
bottom: 0;
margin: auto 0;
}
.prev-next .prev {
left: 234px;
background-position: -84px 0;
}
.prev-next .prev:hover {
background-position: 0 0;
}
.prev-next .next {
right: 0;
background-position: -125px 0;
}
.prev-next .next:hover {
background-position: -42px 0;
}
/* 设置回到顶部的元素 */
.back-top {
width: 26px;
height: 206px;
background-color: #ff6700;
position: fixed;
bottom: 60px;
right: 50%;
margin-right: -639px;
}
/* 设置下部的广告区域 */
.ad {
/* background-color: orange; */
height: 170px;
margin-top: 14px;
}
.ad .shortcut,
.ad .ad-img,
.ad li {
float: left;
}
/* 设置左侧快捷方式 */
.ad .shortcut {
width: 228px;
height: 168px;
background-color: #5f5750;
margin-right: 14px;
padding-left: 6px;
padding-top: 2px;
}
.ad .shortcut li {
position: relative;
}
/* 设置上边框 */
.ad .shortcut li::before {
content: '';
position: absolute;
width: 64px;
height: 1px;
background-color: #665e57;
left: 0;
right: 0;
top: 0;
margin: 0 auto;
}
/* 设置左边框 */
.ad .shortcut li::after {
content: '';
position: absolute;
height: 70px;
width: 1px;
background-color: #665e57;
top: 0;
left: 0;
margin: auto 0;
}
/* 设置快捷方式的超链接 */
.ad .shortcut a {
color: #cfccca;
display: block;
height: 84px;
width: 76px;
text-align: center;
font-size: 12px;
overflow: hidden;
}
.ad .shortcut a:hover {
color: #fff;
}
/* 设置图标字体 */
.ad .shortcut i {
display: block;
margin-top: 20px;
font-size: 20px;
margin-bottom: 6px;
}
/* 设置自左侧的图片 */
.ad .ad-img li {
width: 316px;
margin-right: 15px;
}
.ad .ad-img li:last-child {
margin: 0;
}
.ad .ad-img img {
width: 100%;
vertical-align: top;
}
5、效果展示
对于小米官网的一些静态资源可以在mi.com的开发者工具进行获取,这里省略!