前端小项目开发合集
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/40f3f770da683e8867e4c0c210027d7f.png)
1 study
1.1 前期准备工作
1 创建 study 目录文件夹 (用于存放我们这个页面的相关内容)
2 study目录内新建images 文件夹 用于保存图片。
3 新建index.html 首页html 文件(以后我们的网站首页统一规定为index.html)
4 新建style.css 样式文件。 我们本次采用外链样式表。
5 将样式引入到我们HTML页面文件中。
6 样式表写入 清除内外边距样式,来检测样式表是否引入成功。
1.2 CSS属性书写顺序
1 布局定位属性:display / position / float / clear / visibility / overflow(建议 display 第一个写,毕竟关系到模式)
2 自身属性:width / height / margin / padding / border / background
3 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
4 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …
1.3 布局流程
为了提高网页制作的效率,布局时通常有以下的布局流程,具体如下:
1 必须确定页面的版心(可视区), 我们测量可得知。
2 分析页面中的行模块,以及每个行模块中的列模块。其实页面布局,就是一行行罗列而成
3 制作HTML结构。我们还是遵循,先有结构,后有样式的原则。结构永远最重要。
4 然后开始运用盒子模型的原理,通过DIV+CSS布局来控制网页的各个模块。
1.4 页面制作
这个页面的版心是 1200像素 每个版心都要水平居中对齐,所以,我们干脆把版心定义为:
.w {
width: 1200px;
margin: auto;
}
1.5 头部制作
1号是版心盒子header 1200 * 42 的盒子水平居中对齐, 上下给一个margin值就好了。
版心盒子 里面包含 2号盒子 logo
版心盒子 里面包含 3号盒子 nav导航栏
版心盒子 里面包含 4号盒子 search搜索框
版心盒子 里面包含 5号盒子 user个人信息
注意,要求里面的 4个盒子 必须都浮动
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9db5c908a94dc1a8a482f86433844eb5.png)
1.6 banner制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c9f4e511f7358bb0cad6fe32d0864c7f.png)
1号盒子是通栏的大盒子banner, 不给宽度,给高度,给一个蓝色背景。
2号盒子是版心, 要水平居中对齐。
3号盒子版心内,左对齐 subnav侧导航栏。
4号盒子版心内,右对齐 course 课程。
1.7 课程表模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0d3dc47bd320dcb8e39a3c04100605dd.png)
1号盒子 是 228 * 300 的盒子 右浮动 注意浮动的元素不会有外边
距塌陷的问题
1号盒子内 分为上下两个子盒子
2号子盒子是 上部分 我们命名为 course-hd(hd 是 head 的简写 头部的意思,我们经常用)
3号子盒子下部分我们命名为 course-bd(bd 是 body 的简写 主体的意思,我们经常用)
1.8 精品推荐小模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/41dc18ff8f1b20d1100cde296d344c44.png)
复习点: 因为里面三个盒子都要垂直居中,我们利用 继承性,给 最大的盒子 一个垂直居中的代码就好了,还记得 那些 样式可以继承吗??? font- line- text- color
大盒子水平居中 goods精品,注意此处有个盒子阴影
1号盒子是标题 H3 左侧浮动
2号盒子 里面放链接 左侧浮动 可以控制链接的左右外边距(注意行内元素只给左右内外边距)
3号盒子 右浮动 mod 修改
1.9 精品推荐大模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/040061a796d45a8c555c07e751c090c1.png)
1号盒子为最大的盒子 box 版心水平居中对齐
2号盒子为上面部分 box-hd 里面左侧标题H3 左浮动 右侧 链接 a 右浮动
3号盒子为底下部分 box-bd 里面是无序列表有10个 小li 组成
小li外边距的问题, 这里有个小技巧给box-hd 宽度为 1215 就可以一行装开5个 li了.即子盒子宽度可以大于父盒子宽度
复习点: 我们用到清除浮动 因为 box-hd 里面的盒子个数不一定多少,我们就不给高度了,但是里面的盒子浮动了, 影响下面的布局,此时需要清除浮动
1.10 底部模块制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ff93604ba8abdfd960263b1ac2d847ca.png)
1号盒子通栏大盒子 底部 footer 给高度 底色是白色
2号盒子版心水平居中
3号盒子版权 copyright 左对齐
4号盒子 链接组 links 右对齐
1.11 添加左侧导航栏
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/76dfe7a1ec5129de25e81dfcbec296a9.png)
1.12 效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/17009a99c8afc5682a3c64a07d8b85ac.png)
2 pinyougou
2.1 属性书写顺序
建议遵循以下顺序:
1 布局定位属性:display / position / float / clear / visibility / overflow(建议 display 第一个写,毕竟关系到模式)
2 自身属性:width / height / margin / padding / border / background
3 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
4 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …
.jdc {
display: block;
position: relative;
float: left;
width: 100px;
height: 100px;
margin: 0 10px;
padding: 20px 0;
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
color: #333;
background: rgba(0,0,0,.5);
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-o-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
2.2 目录命名
项目文件夹:pinyougou
样式文件夹:css
脚本文件夹:js
样式类图片文件夹:img
产品类图片文件夹: upload
字体类文件夹: fonts
2.3 ClassName命名
ClassName的命名应该尽量精短、明确,必须以字母开头命名,
且全部字母为小写,单词之间统一使用下划线连接
.nav_top
2.3.1 常用命名推荐
ClassName | 含义 |
---|
about | 关于 |
account | 账户 |
arrow | 箭头图标 |
article | 文章 |
aside | 边栏 |
audio | 音频 |
avatar | 头像 |
bg,background | 背景 |
bar | 栏(工具类) |
branding | 品牌化 |
crumb,breadcrumbs | 面包屑 |
btn,button | 按钮 |
caption | 标题,说明 |
category | 分类 |
chart | 图表 |
clearfix | 清除浮动 |
close | 关闭 |
col,column | 列 |
comment | 评论 |
community | 社区 |
container | 容器 |
content | 内容 |
copyright | 版权 |
current | 当前态,选中态 |
default | 默认 |
description | 描述 |
details | 细节 |
disabled | 不可用 |
entry | 文章,博文 |
error | 错误 |
even | 偶数,常用于多行列表或表格中 |
fail | 失败(提示) |
feature | 专题 |
fewer | 收起 |
field | 用于表单的输入区域 |
figure | 图 |
filter | 筛选 |
first | 第一个,常用于列表中 |
footer | 页脚 |
forum | 论坛 |
gallery | 画廊 |
group | 模块,清除浮动 |
header | 页头 |
help | 帮助 |
hide | 隐藏 |
hightlight | 高亮 |
home | 主页 |
icon | 图标 |
info,information | 信息 |
last | 最后一个,常用于列表中 |
links | 链接 |
login | 登录 |
logout | 退出 |
logo | 标志 |
main | 主体 |
menu | 菜单 |
meta | 作者、更新时间等信息栏,一般位于标题之下 |
module | 模块 |
more | 更多(展开) |
msg,message | 消息 |
nav,navigation | 导航 |
next | 下一页 |
nub | 小块 |
odd | 奇数,常用于多行列表或表格中 |
off | 鼠标离开 |
on | 鼠标移过 |
output | 输出 |
pagination | 分页 |
pop,popup | 弹窗 |
preview | 预览 |
previous | 上一页 |
primary | 主要 |
progress | 进度条 |
promotion | 促销 |
rcommd,recommendations | 推荐 |
reg,register | 注册 |
save | 保存 |
search | 搜索 |
secondary | 次要 |
section | 区块 |
selected | 已选 |
share | 分享 |
show | 显示 |
sidebar | 边栏,侧栏 |
slide | 幻灯片,图片切换 |
sort | 排序 |
sub | 次级的,子级的 |
submit | 提交 |
subscribe | 订阅 |
subtitle | 副标题 |
success | 成功(提示) |
summary | 摘要 |
tab | 标签页 |
table | 表格 |
txt,text | 文本 |
thumbnail | 缩略图 |
time | 时间 |
tips | 提示 |
title | 标题 |
video | 视频 |
wrap | 容器,包,一般用于最外层 |
wrapper | 容器,包,一般用于最外层 |
2.4 前期准备工作
2.4.1 目录文件夹
名称 | 说明 |
---|
项目文件夹 | pinyougou |
样式类图片文件夹 | img |
样式文件夹 | css |
产品类图片文件夹 | upload |
字体类文件夹 | fonts |
脚本文件夹 | js |
2.4.2 样式文件的分类
初始化css (css reset) 让浏览器风格统一,把常用的初始化语句放入 base.css里面。
我们把一些公共的样式 放入common.css里面。
2.4.3 使用ico图标
首先把favicon.ico 这个图标放到根目录下。
引入<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
2.4.4 制作ico图标
要把图片转换为 ico 图标,我们借助于第三方转换网站: http://www.bitbug.net/。 比特虫
如何获取对方网站的ico:在域名后面加favicon.ico即可
2.4.5 网站优化三大标签
网页title 标题
首页标题:网站名(产品名)- 网站的介绍
例如:
品优购-综合网购首选-正品低价、品质保障、配送及时、轻松购物!
小米商城 - 小米5s、红米Note 4、小米MIX、小米笔记本官方网站
Description 网站说明(不要超过 120 个汉字。)
<meta name="description" content="品优购JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!" />
Keywords 关键字
<meta name="Keywords" content="网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,品优购" />
2.4.6 字体图标
http://www.iconfont.cn/
http://icomoon.io
追加字体图标
如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标,但是原来的不能删除,继续使用,此时我们需要这样做
把压缩包里面的selection.json 从新上传,然后,选中自己想要新的图标,从新下载压缩包,替换原来文件即可注意此时的fonts文件夹的内容要重新替换掉。
2.5 品优购首页布局
名称 | 说明 |
---|
快捷导航栏 | shortcut |
头部 | header |
标志 | logo |
购物车 | shopcar |
搜索 | search |
热点词 | hotwrods |
导航 | nav |
导航左侧 | dropdown 包含 .dd .dt |
导航右侧 | navitems |
页面底部 | footer |
页面底部服务模块 | mod_service |
页面底部帮助模块 | mod_help |
页面底部版权模块 | mod_copyright |
shortcut 制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3af0fe1bb06241f7d58d179f24445a79.png)
通栏的盒子 命名为shortcut 快捷导航的意思, 注意,这里给行高,可以继承给里面的子盒子。
里面包含 版心的盒子
版心盒子里面包含1号左侧盒子左浮动
版心盒子里面包含2号右侧盒子右浮动
有联系的放在一块,比如请登录跟注册。导航栏一般用ul+li+a构成。
正确理解line-height
本身这个属性就有居中对齐的效果。但是为什么还要
加上height?如果单纯只有这个属性的话,那么可以不加
height就能实现居中对齐的效果了。但是如果设置了height
的话,那么height跟line-height就要一样了。此时才能实现
居中对齐的效果。
2.5.1 header 制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5bb00b27bdd0061f306711cb970c0289.png)
header盒子必须要有高度
1号盒子是 logo 标志 定位
2号盒子是 search 搜索模块 定位
3号盒子是 hotwrods 热词模块 定位
4号盒子是 shopcar 购车车模块
count 统计部分 用绝对定位做
count 统计部分 不要给宽度,因为可能买的件数比较多,让件数撑开就好了 给一个高度
一定注意左下角 不是圆角 其余三个是圆角
logo 优化
logo里面首先放一个h1标签 ,目的是为了提权,告诉搜索引擎,
这个地方很重要
h1里面在放一个连接,可以返回首页的,给链接一个大小和logo的背景图片
链接里面要放文字(网站名称),为了搜索引擎收录我们。但是文字不要显示出来
要用 text-indent 移到盒子外面(text-indent: -9999px)然后overflow:hidden 淘宝的做法
直接给font-size: 0; 就看不到文字了,京东的做法。
最后给链接接一个title这样鼠标放到logo 上,就可以看到提示文字了
2.5.2 nav 导航栏制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/647fe85d8cd26eb07209e5bf61cf50ca.png)
nav 盒子通栏有高度 而且有个下边框
1号盒子 左侧浮动 dropdown 下拉导航 里面包含 dt dd
2号盒子右侧浮动 navitems 导航栏组
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f48ff9d69c56b982718c8098217494b5.png)
2.5.3 footer 底部制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/27ef478d1136ac1b20730578f7de3e16.png)
footer 页面底部盒子 通栏 给一个高度 灰色的背景
footer 里面 首先一个 大 的版心
版心里面包含 1号盒子 mod_service 服务模块 module 模块的意思
版心里面包含 2号盒子 mod_help 帮助模块
版心里面包含 3号盒子 mod_copyright 版权模块
2.5.4 mod_service 服务模块制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a825c21b9aed446d9a791d3fc8e33012.png)
2.5.5 main 主体模块制作
这部分是index里面专有的, 注意需要新的样式文件index.css
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8469a754131d93bc109dd1cb382e1fa4.png)
main 盒子宽度为980像素, 距离左边220给一个margin-left就好了,
给高度就不用清除浮动。
main 里面包含 左侧盒子 左浮动 focus 焦点图 模块
main 里面包含 右侧盒子 右浮动 newsflash 新闻快报模块
2.5.6 newsflash 新闻快报模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ba96f98a29b8f45f51ce752c15108f8a.png)
1 号盒子 为 news 新闻模块
2 号盒子 为lifeservice 生活服务模块
3 号盒子为 bargain 特价商品
2.5.7 news 新闻模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0244de8a48cab043c7fc4ebcf3eb6e02.png)
注意,这里我们 分为 上下两个模块, 但是 两个模块 都用div
1号 盒子 news-hd 新闻头部模块 给一个 高度 和 下边框
2号 盒子 news-bd 新闻主题部分 里面 包含 ul 和 li 还有 链接
2.5.8 lifeservice 生活服务模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/69737385cf99affd0f8b5a18087aeb2b.png)
此地方有个小技巧,
lifeservice 盒子 宽度为 250 但是装不开 里面的 4个 小 li
可以让 lifeservice 里面的 ul 宽度为 252 就可以 装的下 4个 小li
lifeservice 盒子 overflow 隐藏多余的部分就可以了。
2.5.9 recommend 推荐模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e1b0b164979992d09821968b12e189f6.png)
里面包含2个盒子, 浮动即可
1号盒子 recom-hd
2号盒子 recom-bd 注意里面的小 竖线
2.5.10 楼层区 floor
注意这个floor 一个大盒子 包含, 不要给高度,内容有多少,算多少
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cc3cc6140321bf33ae6807c6b2ba743f.png)
2.5.11 家用电器模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/aefea8c3b5a71c9fbc1e5bbcf92dce85.png)
这个模块 jiadian 不需要写样式
版心居中对齐 因为这些模块 基本相同,下面的 模块基本用这些样式 所以 咱们下面两个盒子的命名是:
1号盒子 box-hd 给一个高度, 有个下边框 里面分为左右2个盒子
2号盒子 box-bd 不要给高度。
2.5.11.1 box-hd 模块
有高度
左边 h3 盒子
右边 div 命名为 tab-list 因为用到 tab 切换效果, 所以 里面 要用 ul 和 li 来做 。
2.5.11.2 box-bd 模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1a5d4d5bd812b16221a47a2f28f81f0a.png)
根据tab 切换的原理, 应该还需要一个 tab-content 的 内容来包装 里面的 5个 盒子
分为5个大列 列的宽度 不一致
2.5.12 侧边栏 fixedtool 制作
此模块用固定定位 里面包含 li
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/755b00c2fc669ce5a09c9d83835e1482.png)
2.5.13 知识点 -过渡(CSS3)
过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。
过渡动画: 是从一个状态 渐渐的过渡到另外一个状态
可以让我们页面更好看,更动感十足,虽然 低版本浏览器不支持(ie9以下版本) 但是不会影响页面布局。
我们现在经常和 :hover 一起 搭配使用。
语法格式
transition: 要过渡的属性 花费时间 运动曲线 何时开始;
属性
属性就是你想要变化的 css 属性, 宽度高度 背景颜色 内外边距都可以 。如果想要所有的属性都变化过渡, 写一个all 就可以。
花费时间
transition-duration 花费时间 单位是 秒(必须写单位) s ms 比如 0.5s 这个s单位必须写 ms 毫秒
运动曲线 默认是 ease
何时开始
默认是 0s 鼠标触发就立即开始 可以设置 延迟触发时间
属性 | 描述 | CSS |
---|
transition | 简写属性,用于在一个属性中设置四个过渡属性。 | 3 |
transition-property | 规定应用过渡的 CSS 属性的名称。 | 3 |
transition-duration | 定义过渡效果花费的时间。默认是 0。 | 3 |
transition-timing-function | 规定过渡效果的时间曲线。默认是 “ease”。 | 3 |
transition-delay | 规定过渡效果何时开始。默认是 0。 | 3 |
- 运动曲线示意图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a05c1aaa2bcf73878ef16311335959dc.png)
div {
width: 200px;
height: 100px;
background-color: pink;
transition: width 0.6s ease 0s, height 0.3s ease-in 1s;
}
div:hover {
width: 600px;
height: 300px
}
transition: all 0.6s;
2.5.14 列表页准备工作
列表页面是新的页面,我们需要新建 list.html
因为 列表页的 头部 和 底部 基本一致, 我们需要 把首页中的 头部 和 底部的 结构复制过去
头部和底部的 样式 ,列表也需要, 因此 list.html 也需要 引入 common.css
同时 需要新的 list.css 文件 这个 样式文件,里面只写 list.html 结构里面的内容就好了
2.5.14.1 列表页 header 和 nav 修改
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a95b92e4a55c2283b5c445409b4c6701.png)
秒杀盒子 sk 定位 即可 second kill
1 号 盒子 左侧浮动 sk_list 里面包含 ul 和 li
2 号盒子 左侧浮动 sk_con 里面 包含 ul 和 li
2.5.14.2 列表页主体盒子 sk _container
这个盒子里面包含了 所有的 列表页的所有主体内容
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/34693f097ca8bd4011263b8c1376056f.png)
1号盒子 sk _container 给宽度 1200 不要给高度
2号盒子 sk_hd 插入图片即可
3号盒子 sk_bd 里面包含 很多的 ul 和 li
2.5.14.3 sk_goods 布局
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/175de87f38f250892b6d1c6daf0528a2.png)
此li 我们命名为 sk_goods
1号位置 有 a 包含 本图片 和下面的 标题 插入 图片即可 seckill_mod_goods_img 可以做一个 鼠标放入 图片 上滑动的效果
2号位置 标题 H5 命名为 sk_goods_title
3号 位置 为 价格 div 命名为 sk_goods_price
4号位置 为 div 命名为 sk_goods_progress 此处,我们 采取 代码的形式 写出 这个 导航条
5号位置 为 a 链接 命名为 sk_goods_buy 此处注意, 因为父盒子已经有左右padding 我们这里用定位合适。
2.5.14.4 分页制作 page
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0363768abf13eb193381863ced67a678.png)
最大的盒子 我们div 命名为 page 注意里面的盒子 全部用 行内块
1号盒子 用 span 命名为 page_num ( 页码的意思 ) 里面 放 a 把a 转换为 行内块 设置样式
pn_prev 上一页 pn_next 下一页
2号盒子 用 span 命名为 page_skip ( skip 跳转 转移的意思 ) 里面注意 有 input 和 button
2.5.14.5 知识点 -获得焦点元素
focus 伪类 选择器用于选取获得焦点的元素 。 我们这里主要针对的是 表单元素
:hover
.total input {
border: 1px solid #ccc;
height: 30px;
width: 40px;
transition: all .5s;
}
/*这个input 获得了焦点*/
.total input:focus {
width: 80px;
border: 1px solid skyblue;
}
2.5.15 详情页 detail.html 常用单词
名称 | 说明 |
---|
主体 | de_container |
面包屑导航 | crumb_wrap |
产品介绍 | product_intro ( introduction介绍) |
预览包 | preview_wrap(左侧部分) |
预览缩略图 | preview_img |
预览列表 | preview_list |
左按钮 | arrow_prev |
右按钮 | arrow_next |
小图列表 | preview_items |
产品详细信息区域 | itemInfo_wrap (右侧部分) |
头部名称 | sku_name skull 头骨 |
新闻 | news |
摘要 | summary |
评价 | remark |
价格摘要 | summary_price |
配送至 | summary_stock |
支持 | summary_support |
选择 | choose |
选择按钮组 | choose_btns |
选择数量 | choose_amount |
减去 | reduce |
加入购物车 | addshopcar |
产品细节 | product_detail ( detail描述) |
左侧边 | aside |
详细描述 | detail |
2.5.15.1 面包屑导航
crumb_wrap 面包屑导航
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/20506d2cb837b0a8c2611afd3349e22f.png)
2.5.15.2 产品介绍 模块
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/899072f789f92107b0a3cf1cc5685e6b.png)
1号盒子 本模块 命名为产品模块 product_intro ( introduction介绍)
此模块不要给高度 因为右侧的模块内容高度不固定
里面有2个盒子 分为是2号盒子 和 3号盒子
2号盒子为 预览区域 preview_wrap 给宽度,给高度, 左浮动
3号盒子为 产品详细信息区域 itemInfo_wrap 给宽度 ,不要给高度 左侧浮动
2.5.15.3 预览区域制作
1号盒子 为 图片预览 命名为 preview_img 注意里面的图片,我们切图的时候是 398*398 像素的
2号盒子 为 预览列表 命名为 preview_list
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b900db8c25b392bfee2228afaf9ce15b.png)
2.5.15.4 preview_list 制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6762fd59f6bb0347b761ec589f9e744a.png)
盒子 有左右按钮 arrow_prev arrow_next 用定位即可
中间 用 ul 命名为 list-item 给宽度和高度 然后 margin: 0 auto; 水平居中对齐即可
2.5.15.5 产品详细信息区域制作 itemInfo_wrap
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/af074c79037b066f59232e01e2b8eab0.png)
此盒子命名为 itemInfo
1 号盒子 为 头部 sku_name
2 号盒子 为 最新新闻 news
3号盒子 为 产品详细摘要 我们命名为 summary (摘要的意思) 之所以下面都是摘要部分,因为里面格式基本相同。
名称 | 说明 |
---|
头部名称 | sku_name skull 头骨 |
新闻 | news |
摘要 | summary |
评价 | remark |
价格摘要 | summary_price |
促销摘要 | summary_promotion |
配送至 | summary_stock |
支持 | summary_support |
选择 | choose |
选择版本 | choose_version |
选择类型 | choose_type |
选择按钮组 | choose_btns |
选择数量 | choose_amount add 是加的意思 |
减去 | reduce cursor: not-allowed; 禁止符号 |
加入购物车 | addshopcar |
2.5.15.5.1 产品细节模块 product_detail
大盒子为 product_detail 模块 不要给高度 ,别忘记清除浮动
1号盒子 左侧浮动 命名为 aside 有宽度 不给高度
2号盒子 右侧浮动 命名为 detail 有宽度不给高度
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/723a1b5b3818df0b74659329f396ccda.png)
2.5.15.5.2 aside 布局
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0f5e209be81c51f8da251334bb6f4b6b.png)
1 号盒子 命名为 tab_list 给高度就好了 ,里面 放 ul 和 li 注意这是 tab栏切换布局
2 号盒子 命名为 tab_con 里面还包含 很多个ul.item 和 上面的 tab_list 里面的li一一对应。
2.5.15.5.3 detail 布局
![](https://i-blog.csdnimg.cn/blog_migrate/08be17a82e950e24302e214990a40bfb.png)
1 号盒子 命名为 detail_tab_list 给高度就好了 ,里面 放 ul 和 li 注意这是 tab栏切换布局
2 号盒子 命名为 detail_tab_con 里面还包含 很多个ul.item 和 上面的 tab_list 里面的li一一对应。
2.5.15.5.4 注册页面 register
名称 | 说明 |
---|
注册专区 | registerarea |
注册内容 | reg-form |
错误的 | error |
成功的 | success |
默认的 | default |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2ea0556b075186dd0d27fb7afde8812e.png)
2.5.15.5.5 registerarea布局
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0ecd98afcbc4bec0d10fbd721db3ffc1.png)
2.6 效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9e939edd80b839be7540a8d529643c61.png)
3 jingdongmobile
3.1 京东移动端首页
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/306152a8710d75f1c1daf3dd6dce8815.png)
3.2 技术选型
方案:我们采取单独制作移动页面方案
技术:布局采取流式布局
3.2.1 搭建相关文件夹结构
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ffbcf5c069544840af5c3421ba6cf715.png)
3.2.2 设置视口标签以及引入初始化样式
<meta name="viewport" content="width=device-width, user-scalable=no,
initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/index.css">
3.2.3 常用初始化样式
body {
margin: 0 auto;
min-width: 320px;
max-width: 640px;
background: #fff;
font-size: 14px;
font-family: -apple-system, Helvetica, sans-serif;
line-height: 1.5;
color: #666;
}
3.2.4 app
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e7ff335bf7a763dabc4bde5c220831f9.png)
注意此时图片居中要用vertical-align: middle;即使没有文字也一样
3.2.5 search-wrap
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f37d6f499c7e19fe4ff85369111c5e20.png)
采用固定定位
传统盒子中,如果不给定固定的宽度。那么margin左右、padding左右,border左右都不会撑开盒子。但是margin上下、padding上下、border上下都会撑开盒子
3.2.6 slider
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/25312500001f5e1adc5b9b3a2df51e16.png)
3.2.7 brand
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a1181110e12766d40bfa05c1ee6e3db.png)
三盒子都是33.33%
3.2.8 nav
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ed0495a56b239a23603d667b3807567b.png)
每个盒子20%
3.2.9 news
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0b58ad2c8d60b2ed3c691174facf7993.png)
一号盒子50%,二号盒子25%,三号盒子25%,使用box-sizing: border-box;转化
为CSS3模型。使border算在width上
3.3 效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f5be0193ddb83c3823c94b34801986ce.png)
4 xiechengwanmobile
4.1 携程网首页案例制作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d94a7a5b9b4490610ded7a4f9973685e.png)
4.2 技术选型
方案:我们采取单独制作移动页面方案
技术:布局采取flex布局
4.2.1 搭建相关文件夹结构
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5d477a95491328c9c8b5d465b80917da.png)
4.2.2 设置视口标签以及引入初始化样式
<meta name="viewport" content="width=device-width, user-scalable=no,
initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/index.css">
4.2.3 常见模块命名
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c3a536eb02c47dd8107c8eced5e6cff2.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7593438c3484cf0112558f55f3f523ca.png)
4.2.4 search-index
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/afe042fa11b513ec4be823b2826e3731.png)
2号盒子固定,1号盒子用flex布局
4.2.5 focus
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4866760059063d1baa2eff759a23eaf2.png)
4.2.6 local-nav
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3dd25274f41d67ed9622a1cf2f1b588d.png)
每个盒子flex为1,或者为20%
4.2.7 nav
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c46c666d6ac270f1a481a453d8acb834.png)
子盒子也可以flex充当父盒子
4.2.8 常见flex布局思路
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3beb7aab8bfb3c191ac30b8a2770fb6e.png)
4.2.9 背景线性渐变
background: linear-gradient(起始方向, 颜色1, 颜色2, ...);
background: -webkit-linear-gradient(left, red , blue);
background: -webkit-linear-gradient(left top, red , blue);
4.2.10 subnav-entry
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e8075351c2ae5d380896a21bd2f9b7ea.png)
采用flex-wrap: wrap;且flex:20%
4.2.11 sales-hd/sales-bd
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/242815562b49b9f52749d5c0da9a5bdb.png)
4.3 效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/13d15310f1674c909ce86d9805913a2e.png)
5 suningmobile
5.1 苏宁网移动端首页
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/891eca4194972a26a9dc98a102cc6c63.png)
5.2 技术选型
方案:我们采取单独制作移动页面方案
技术:布局采取rem适配布局(less + rem + 媒体查询)
设计图: 本设计图采用 750px 设计尺寸
5.3 搭建相关文件夹结构
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5238de3600896554386870c564b6b77b.png)
5.4 设置视口标签以及引入初始化样式
<meta name="viewport" content="width=device-width, user-scalable=no,
initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="css/normalize.css">
5.5 设置公共common.less文件
1 新建common.less 设置好最常见的屏幕尺寸,利用媒体查询设置不同的html字体大小,因为除了首页其他页面也需要
2 我们关心的尺寸有 320px、360px、375px、384px、400px、414px、424px、480px、540px、720px、750px
3 划分的份数我们定为 15等份
4 因为我们pc端也可以打开我们苏宁移动端首页,我们默认html字体大小为 50px,注意这句话写到最上面
5.6 新建index.less文件
1 新建index.less 这里面写首页的样式
2 将刚才设置好的 common.less 引入到index.less里面 语法如下:
// 在 index.less 中导入 common.less 文件
@import “common”
3 生成index.css 引入到 index.html 里面
5.7 body样式
body {
min-width: 320px;
width:15rem;
margin: 0 auto;
line-height: 1.5;
font-family: Arial,Helvetica;
background: #F2F2F2;
}
如果position是absolute或者fixed的话,那么
margin: 0 auto失效;而relative不会。但是如果
给定具体的,比如margin: 15px 15px则不会失效。
采用flex布局,子盒子宽度是100%(width:100%,父盒子宽度100px)的话,
那么‘宽度’(margin+border+padding+content)的值如果不超过100%(100px)的话,‘宽度’永远是100px。
5.8 效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ee63fdac40f6f5aa308785790f3b5936.png)
6 alibaixiu
6.1 阿里百秀移动端首页
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/00e2439548c48bde8b71b8372c20301f.png)
6.2 技术选型
方案:我们采取响应式页面开发方案
技术:bootstrap框架
设计图: 本设计图采用 1280px 设计尺寸
6.3 屏幕划分分析
1 屏幕缩放发现中屏幕 和大屏幕布局是一致的。 因此我们列
定义为col-md-就可以了, md 是大于等于970以上的
2 屏幕缩放发现小屏幕布局发生变化,因此我们需要为小屏幕
根据需求改变布局
3 屏幕缩放发现 超小屏幕布局又发生变化,因此我们需要为超小屏
幕根据需求改变布局
4 策略: 我们先布局md以上的pc端布局,最后根据实际需求在
修改小屏幕和超小屏幕的特殊布局样式
6.4 container 宽度修改
因为本效果图采取 1280的宽度, 而Bootstrap 里面 container宽度
最大为 1170px,因此我们需要手动改下container宽度
@media (min-width: 1280px) {
.container {
width: 1280px;
}
}
6.5 效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e4e72c8b86371f722e8ae2a0c9ca7363.png)
7 博客
7.1 项目环境搭建
7.1.1 项目介绍
多人博客管理系统
1 博客内容展示
2 博客管理功能
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/811db8f3b0dce61b26c904ac0873ba4d.png)
7.2 案例初始化
1. 建立项目所需文件夹
public 静态资源
model 数据库操作
route 路由
views 模板
2. 初始化项目描述文件
npm init -y
3. 下载项目所需第三方模块
npm install express mongoose art-template express-art-template
4. 创建网站服务器
5. 构建模块化路由
6. 构建博客管理页面模板
7.3 登录
1. 创建用户集合,初始化用户
连接数据库
创建用户集合
初始化用户
2. 为登录表单项设置请求地址、请求方式以及表单项name属性
3. 当用户点击登录按钮时,客户端验证用户是否填写了登录表单
4. 如果其中一项没有输入,阻止表单提交
5. 服务器端接收请求参数,验证用户是否填写了登录表单
6. 如果其中一项没有输入,为客户端做出响应,阻止程序向下执行
7. 根据邮箱地址查询用户信息
8. 如果用户不存在,为客户端做出响应,阻止程序向下执行
9. 如果用户存在,将用户名和密码进行比对
10. 比对成功,用户登录成功
11. 比对失败,用户登录失败
12. 保存登录状态
13. 密码加密处理
7.4 新增用户
1. 为用户列表页面的新增用户按钮添加链接
2. 添加一个连接对应的路由,在路由处理函数中渲染
新增用户模板
3 .为新增用户表单指定请求地址、请求方式、为表单项
添加name属性
3. 增加实现添加用户的功能路由
4. 接收到客户端传递过来的请求参数
5. 对请求参数的格式进行验证
6. 验证当前要注册的邮箱地址是否已经注册过
7. 对密码进行加密处理
8. 将用户信息添加到数据库中
9. 重定向页面到用户列表页面
7.5 数据分页
当数据库中的数据非常多是,数据需要分批次显示,这时
就需要用到数据分页功能。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1813153198ff0457a98e5007233ec2cb.png)
分页功能核心要素:
1 当前页,用户通过点击上一页或者下一页或者页码产生,客
户端通过get参数方式传递到服务器端
2 总页数,根据总页数判断当前页是否为最后一页,根据
判断结果做响应操作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7e60be92704b8c671ea03868292c38fb.png)
总页数:Math.ceil(总数据条数 / 每页显示数据条数)
limit(2) // limit 限制查询数量 传入每页显示的数据数量
skip(1) // skip 跳过多少条数据 传入显示数据的开始位置
数据开始查询位置=(当前页-1)* 每页显示的数据条数
7.6 用户信息修改
1. 将要修改的用户ID传递到服务器端
2. 建立用户信息修改功能对应的路由
3. 接收客户端表单传递过来的请求参数
4. 根据id查询用户信息,并将客户端传递过来的密码
和数据库中的密码进行比对
5. 如果比对失败,对客户端做出响应
6. 如果密码对比成功,将用户信息更新到数据库中
7.7 用户信息删除
1. 在确认删除框中添加隐藏域用以存储要删除用户的ID值
2. 为删除按钮添自定义属性用以存储要删除用户的ID值
3. 为删除按钮添加点击事件,在点击事件处理函数中获取
自定义属性中存储的ID值并将ID值存储在表单的隐藏域中
4. 为删除表单添加提交地址以及提交方式
5. 在服务器端建立删除功能路由
6. 接收客户端传递过来的id参数
7. 根据id删除用户
7.8 开发环境与生产环境
什么是开发环境与生产环境
环境,就是指项目运行的地方,当项目处于开发阶段,项目运
行在开发人员的电脑上,项目所处的环境就是开发环境。当
项目开发完成以后,要将项目放到真实的网站服务器电脑中
运行,项目所处的环境就是生产环境。
为什么要区分开发环境与生产环境
因为在不同的环境中,项目的配置是不一样的,需
要在项目代码中判断当前项目运行的环境,根据不同的
环境应用不同的项目配置。
如何区分开发环境与生产环境
通过电脑操作系统中的系统环境变量区分当前是开
发环境还是生产环境。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6baf065a65fd882bdc41de04dddb3726.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b5172cabf2ab9e7384683c46ba7c05ea.png)
if (process.env.NODE_ENV == 'development') {
} else {
}
7.9 第三方模块config
作用:允许开发人员将不同运行环境下的应用配置信息
抽离到单独的文件中,模块内部自动判断当前应用的
运行环境,
并读取对应的配置信息,极大提供应用配置信息的维
护成本,避免了当运行环境重复的多次切换时,手动
到项目代码中修改配置信息
使用步骤
1 使用npm install config命令下载模块
2 在项目的根目录下新建config文件夹
3 在config文件夹下面新建default.json、development.json、
production.json文件
4 在项目中通过require方法,将模块进行导入
5 使用模块内部提供的get方法获取配置信息
将敏感配置信息存储在环境变量中
1 在config文件夹中建立custom-environment-variables.json文件
2 配置项属性的值填写系统环境变量的名字
3 项目运行时config模块查找系统环境变量,并读
取其值作为当前配置项属于的值
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ebfb5274a3fad103f456ceaa6dc9db41.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/378bbf043ed75cbc8d1aa6514d9a6637.png)
7.10 文章评论
1 创建评论集合
2 判断用户是否登录,如果用户登录,再允许用户提交评论表单
3 在服务器端创建文章评论功能对应的路由
4 在路由请求处理函数中接收客户端传递过来的评论信息
5 将评论信息存储在评论集合中
6 将页面重定向回文章详情页面
7 在文章详情页面路由中获取文章评论信息并展示在页面中
7.11 密码加密bcrypt
哈希加密是单程加密方式:1234 => abcd
在加密的密码中加入随机字符串可以增加密码被破解的难度。
const bcrypt = require('bcrypt');
let salt = await bcrypt.genSalt(10);
let pass = await bcrypt.hash('明文密码', salt);
let isEqual = await bcrypt.compare('明文密码', '加密密码');
bcrypt依赖的其他环境
1. python 2.x
2. node-gyp
npm install -g node-gyp
3. windows-build-tools
npm install --global --production windows-build-tools
7.12 cookie与session
cookie:浏览器在电脑硬盘中开辟的一块空间,主要供服务
器端存储数据。
cookie中的数据是以域名的形式进行区分的。
cookie中的数据是有过期时间的,超过时间数据会被浏览
器自动删除。
cookie中的数据会随着请求被自动发送到服务器端
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ce12f6577cfaba60e31b4561cedfcb7f.png)
session:实际上就是一个对象,存储在服务器端的内存中,
在session对象中也可以存储多条数据,每一条数据都有一
个sessionid做为唯一标识。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f14b963705f54af893dcfb64313d908d.png)
在node.js中需要借助express-session实现session功能。
const session = require('express-session');
app.use(session({ secret: 'secret key' }));
7.13 Joi
JavaScript对象的规则描述语言和验证器。
const Joi = require('joi');
const schema = {
username: Joi.string().alphanum().min(3).max(30).required().error(new Error(‘错误信息’)),
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
access_token: [Joi.string(), Joi.number()],
birthyear: Joi.number().integer().min(1900).max(2013),
email: Joi.string().email()
};
Joi.validate({ username: 'abc', birthyear: 1994 }, schema);
7.14 formidable
作用:解析表单,支持get请求参数,post请求参数、文件上传。
const formidable = require('formidable');
const form = new formidable.IncomingForm();
form.uploadDir = "/my/dir";
form.keepExtensions = false;
form.parse(req, (err, fields, files) => {
});
7.15 文件读取 FileReader
var reader = new FileReader();
reader.readAsDataURL('文件');
reader.onload = function () {
console.log(reader.result);
}
7.16 数据分页 mongoose-sex-page
const pagination = require('mongoose-sex-page');
pagination(集合构造函数).page(1) .size(20) .display(8) .exec();
7.17 mongoDB数据库添加账号
1 以系统管理员的方式运行powershell
2 连接数据库 mongo
3 查看数据库 show dbs
4 切换到admin数据库 use admin
5 创建超级管理员账户 db.createUser()
6 切换到blog数据 use blog
7 创建普通账号 db.createUser()
8 卸载mongodb服务
1. 停止服务 net stop mongodb
2. mongod --remove
9 创建mongodb服务
mongod --logpath="C:\Program Files\MongoDB\Server\4.1\log\mongod.log" --dbpath="C:\Program Files\MongoDB\Server\4.1\data" --install –-auth
10 启动mongodb服务 net start mongodb
11 在项目中使用账号连接数据库
mongoose.connect('mongodb://user:pass@localhost:port/database')
想要获取该该课程markdown笔记(脑图+笔记)。可以扫描以下
微信公众号二维码。或者搜索微信公众号-Java大世界。回复前端
小项目即可获取笔记获取方式。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e7853610e2669163aef296bb671cecda.png)