前端基础第一天项目 品优购
时间:2023-10-05 21:37:02
优购项目-上
目标
- 能够遵循优购代码的规范
- 可在产品优购首页引入 favicon 图标
- 能说出三个标签 SEO 优化
- 字体图标可用于产品优购首页
- 能够说出 LOGO 需要哪些 SEO 优化
优购项目规划
网站制作流程
原型图: 页面布局,告诉我们开发者,整个页面的结构是什么,直率地说,在哪里放什么内容
**效果图:**告诉我们开发人员最终的成品应该是什么样子。与原型图相比,效果图包含内容、风格、字体大小等
品优购项目介绍
- **项目名称:**品优购
- **项目描述:**优购是电商网站,我们要完成 PC 制作终端主页、列表页和注册页面
主页
列表页
注册页
优购项目的学习目的
- 电子商务网站比较全面,需要大量的布局技术,包括布局模式、常见效果和周边技术
- 可以复习、总结、完善基础班所学的布局技术
- 完成产品优购项目,可在实际开发中生产 PC 端页面流程整体感知
- 为以后学习移动终端项目铺路
开发工具和技术栈
开发工具
VScode
、Photoshop(fw)
、主流浏览器(以Chrome
浏览器为主)
技术栈
- 利用 HTML5 CSS3 手大量使用手动布局 H5 新标签和样式
- 模块化开发采用结构与风格分离
- 良好的代码规范有利于团队更好地开发合作,提高代码质量。因此,请遵循以下代码规范。(详见材料文件夹— 优购代码规范.md)
优购项目建设
创建的文件夹如下(称为项目结构)
创建文件如下
初始化样式
一些网站不提倡初始化 * {
margin: 0; padding: 0; } 比如新浪: html,body,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,form,fieldset,legend,img{
margin:0;padding:0}
项目模块化开发
所谓模块化:根据功能划分一个项目,一个功能,一个模块,不相互影响。模块化开发具有重复使用、更换方便等优点
代码也如此,许多页面都会出现一些样式和结构,例如,大多数页面都有页面的头部和底部(如下图所示)。此时,这些结构和样式可以单独用作模块,然后重复使用
- 许多页面都会出现一些样式和结构,如页面的头部和底部,大多数页面都有。此时,这些结构和样式可以单独用作模块,然后重复使用
- 这里最典型的应用是
common.css
公共风格。写一种风格,其他页面使用相同的风格 - 模块化开发具有重复使用、修改方便等优点
网站 favicon 图标(★★★)
favicon.ico 一般用作缩略网站标志,显示在浏览器的地址栏或标签上。目前主要浏览器都支持 favicon.ico 图标。
制作favicon图标
- 切割产品优购图标
png
图片 - 把
png
图片转换为ico
在第三方转换网站的帮助下,如比特虫:http://www.bitbug.net/
使用favicon图标
favicon将图标放在网站根目录下
HTML页面引入favicon图标
在html 页面里面的
在元素之间引入代码
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
TDK三大标签SEO优化(★★)
SEO是什么
**SEO(Search Engine Optimization)**汉译是搜索引擎优化,是利用搜索引擎网站在相关搜索引擎中的自然排名的方法。
SEO 目的是深入优化网站,帮助网站获得免费流量,从而提高网站在搜索引擎上的排名,提高网站的知名度。
p>页面必须有三个标签用来符合 SEO 优化TDK是什么
T – Title(网站标题)
title 具有不可替代性,是我们内页的第一个重要标签,是搜索引擎了解网页的入口和对网页主题归属的最佳判断点。
**建议:**网站名(产品名)- 网站的介绍 (尽量不要超过30个汉字)
例如:
- 京东(JD.COM)-综合网购首选-正品低价、品质保障、配送及时、轻松购物!
- 小米商城 - 小米5s、红米Note 4、小米MIX、小米笔记本官方网站
D – description(网站描述)
简要说明我们网站主要是做什么的。
我们提倡,description 作为网站的总体业务和主题概括,多采用“我们是…”、“我们提供…”、“×××网作为…”、“电话:010…”之类语句。
例如:
K – keywords (关键字)
keywords 是页面关键词,是搜索引擎的关注点之一。
keywords 最好限制为 6~8 个关键词,关键词之间用英文逗号隔开,采用 关键词1,关键词2 的形式
例如:
对于我们前端人员来说,我们只需要准备好这三个标签,具体里面的内容,有专门的 SEO 人员准备
示例代码
<head>
...
<title>品优购商城-综合网购首选-正品低价、品质保障、配送及时、轻松购物!
title>
<meta name="description" content="品优购商城-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!" />
<meta name="keywords" content="网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,京东" />
...
head>
品优购首页制作
我们开始制作首页的头部和底部的时候,根据模块化开发,样式要写到common.css里面
常用模块类名命名
公共部分 – header 头部制作
快捷导航 shortcut 制作(★★)
布局思路
- 通栏的盒子命名为 shortcut ,是快捷导航的意思。 注意这里的行高,可以继承给里面的子盒子
- 里面包含版心的盒子
- 版心盒子里面包含 1 号左侧盒子左浮动
- 1 号盒子 里面包含一个
ul
,ul
包裹li,第一个li里面包裹文字就行,因为不能点击,第二个li包含两个a标签 - 里面的内容是水平排列,所以需要给
li
设置浮动 - 文字要垂直居中,我们可以给 shortcut设置行高,因为行高可以继承,里面的孩子就不需要设置了
- 1 号盒子 里面包含一个
- 版心盒子里面包含 2 号右侧盒子右浮动
- 2 号盒子 里面包含一个
ul
,ul
包裹li
,中间的|
可以用样式去设置,也可以用字符 | - 里面内容水平排列,给
li
设置浮动 - 找到里面所有偶数的
li
设置样式(偶数的li
显示是一个 | 竖线,所以需要单独选择出来设置样式,利用nth-child就可以实现)
- 2 号盒子 里面包含一个
- 需要用到字体图标
- 利用伪元素的方式来实现字体图标,给需要添加的标签设置类名为 :
arrow-icon
- 先要引入字体图片的资源
- 在样式里面利用 font-face 来进行声明
- 在伪元素的 content属性设置 图标的编码
- 给伪元素设置font-family属性
- 利用伪元素的方式来实现字体图标,给需要添加的标签设置类名为 :
结构示例代码
<section class="shortcut">
<div class="w">
<div class="fl">
<ul>
<li>品优购欢迎您! li>
<li>
<a href="#">请登录a> <a href="#" class="style_red">免费注册a>
li>
ul>
div>
<div class="fr">
<ul>
<li>我的订单li>
<li>li>
<li class="arrow-icon">我的品优购li>
<li>li>
<li>品优购会员li>
<li>li>
<li>企业采购li>
<li>li>
<li class="arrow-icon">关注品优购li>
<li>li>
<li class="arrow-icon">客户服务li>
<li>li>
<li class="arrow-icon">网站导航li>
ul>
div>
div>
section>
样式示例代码
/* 声明字体图标 这里一定要注意路径的变化 */
@font-face {
font-family: 'icomoon';
src: url('../fonts/icomoon.eot?tomleg');
src: url('../fonts/icomoon.eot?tomleg#iefix') format('embedded-opentype'),
url('../fonts/icomoon.ttf?tomleg') format('truetype'),
url('../fonts/icomoon.woff?tomleg') format('woff'),
url('../fonts/icomoon.svg?tomleg#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
/* 快捷导航模块 */
.shortcut {
height: 31px;
line-height: 31px;
background-color: #f1f1f1;
}
.shortcut ul li {
float: left;
}
/* 选择所有的偶数的小li */
.shortcut .fr ul li:nth-child(even) {
width: 1px;
height: 12px;
background-color: #666;
margin: 9px 15px 0;
}
.arrow-icon::after {
content: '\e91e';
font-family: 'icomoon';
margin-left: 6px;
}
header头部模块搭建(★★★)
-
header 盒子必须要有高度
-
1 号盒子是
logo
标志定位,在正常开发过程中,logo的布局其实是有讲究的,需要进行logoSEO
的优化 (★★★)logo
里面首先放一个h1
标签,目的是为了提权,告诉搜索引擎,这个地方很重要h1
里面再放一个链接,可以返回首页的,把logo
的背景图片给链接即可- 为了搜索引擎收录我们,我们链接里面要放文字(网站名称),但是文字不要显示出来
- 方法1:
text-indent
移到盒子外面(text-indent: -9999px
) ,然后overflow:hidden
,淘宝的做法 - 方法2:直接给
font-size: 0;
就看不到文字了,京东的做法
- 方法1:
- 最后给链接一个
title
属性,这样鼠标放到logo
上就可以看到提示文字了
结构代码
<div class="logo"> <h1> <a href="index.html" title="品优购商城">品优购商城a> h1> div>
样式代码
/* header 头部制作 */ .header { position: relative; height: 105px; } .logo { position: absolute; top: 25px; width: 171px; height: 61px; } .logo a { display: block; width: 171px; height: 61px; background: url(../images/logo.png) no-repeat; /* font-size: 0;京东的做法*/ /* 淘宝的做法让文字隐藏 */ text-indent: -9999px; overflow: hidden; }
-
2 号盒子是
search
搜索模块定位- search盒子利用定位的方式放在对应的位置
- search盒子设置绝对定位,header盒子设置相对定位
- search盒子里面包含两个子元素,一个是输入框,一个是按钮,分别跟定固定的宽高(搜索框 宽度:454px;按钮宽度:80px)
- 输入框和按钮本来就是行内块元素,在一行显示,但是中间会有间隙,所以我们可以让让这两个元素浮动起来
结构代码
<div class="search"> <input type="search" name="" id="" placeholder="语言开发"> <button>搜索button> div>
样式代码
.search { position: absolute; left: 346px; top: 25px; width: 538px; height: 36px; border: 2px solid #b1191a; } .search input { float: left; width: 454px; height: 32px; padding-left: 10px; } .search button { float: left; width: 80px; height: 32px; background-color: #b1191a; font-size: 16px; color: #fff; }
-
3 号盒子是
hotwords
热词模块定位- 热词模块怎么简单怎么来,直接在里面放a标签即可
- 给里面所有的a标签设置 左右10px的外边距
- 给第一个a标签设置文字变红色(#c81623)
结构代码
<div class="hotwords"> <a href="#" class="style_red">优惠购首发a> <a href="#">亿元优惠a> <a href="#">9.9元团购a> <a href="#">美满99减30a> <a href="#">办公用品a> <a href="#">电脑a> <a href="#">通信a> div>
样式代码
.hotwords { position: absolute; top: 66px; left: 346px; } .hotwords a { margin: 0 10px; }
-
4 号盒子是
shopcar
购物车模块-
在
shopcar
里面添加一个before伪元素和after伪元素,分别放置 购物车的图标和 右箭头 -
count 统计部分用绝对定位做
-
count 统计部分不要给宽度,因为可能买的件数比较多,让件数撑开就好了,给一个高度
-
一定注意左下角不是圆角,其余三个是圆角 写法: border-radius: 7px 7px 7px 0;
结构代码
<div class="shopcar"> 我的购物车 <i class="count">8i> div>
样式代码
.shopcar { position: absolute; right: 60px; top: 25px; width: 140px; height: 35px; line-height: 35px; text-align: center; border: 1px solid #dfdfdf; background-color: #f7f7f7; } .shopcar::before { content: '\e93a'; font-family: 'icomoon'; margin-right: 5px; color: #b1191a; } .shopcar::after { content: '\e920'; font-family: 'icomoon'; margin-left: 10px; } .count { position: absolute; top: -5px; left: 105px; height: 14px; line-height: 14px; color: #fff; background-color: #e60012; padding: 0 5px; border-radius: 7px 7px 7px 0; }
-
nav
导航模块制作(★★★)
-
nav
盒子通栏有高度,而且有个下边框,里面包含版心,版心里面包含 1 号盒子 和 2号盒子结构代码
<nav class="nav"> <div class="w"> <div class="dropdown"> ... div> <div class="navitems"> ... div> div> nav>
样式代码
.nav { height: 47px; border-bottom: 2px solid #b1191a; }
-
1 号盒子左侧浮动,
dropdown
- 1号盒子有讲究,根据相关性 里面包含
.dt
和.dd
两个盒子 .dt
内容是全部商品分类,然后把这个盒子的宽高设置跟父亲一样,这样就把.dd
挤到下面去了- 给
.dd
盒子设置宽度 和 高度,以及背景颜色 - 给
.dd
盒子里面定义 无序列表 (ul > li > a
) - 每个
li
都有一个高度(31px
),宽度可以不用设置,让文字垂直居中,左边设置2个像素的margin值 - 给
li
里面的a设置文字大小(14px
) - 给
li
设置hover
,当鼠标移入的时候,让li
的背景变成白色,让里面的文字变成红色 li
右侧的三角 就可以利用 伪元素来实现,给伪元素设置字体图标,利用定位的方式放在li
的右侧,那么给li
设置相对定位
结构代码
<div class="dropdown"> <div class="dt">全部商品分类div> <div class="dd"> <ul> <li><a href="#">家用电器a> li> <li><a href="#">手机a>、 <a href="#">数码a>、<a href="#">通信a> li> <li><a href="#">电脑、办公a> li> <li><a href="#">家居、家具、家装、厨具a> li> <li><a href="#">男装、女装、童装、内衣a> li> <li><a href="#">个户化妆、清洁用品、宠物a
- 1号盒子有讲究,根据相关性 里面包含