从前慢-前端小项目开发合集

前端小项目开发合集

在这里插入图片描述

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个盒子 必须都浮动

在这里插入图片描述

1.6 banner制作

在这里插入图片描述

1号盒子是通栏的大盒子banner, 不给宽度,给高度,给一个蓝色背景。
2号盒子是版心, 要水平居中对齐。
3号盒子版心内,左对齐 subnav侧导航栏。
4号盒子版心内,右对齐  course 课程。	

1.7 课程表模块

在这里插入图片描述

1号盒子 是  228 * 300 的盒子 右浮动  注意浮动的元素不会有外边
距塌陷的问题
1号盒子内 分为上下两个子盒子
2号子盒子是 上部分 我们命名为 course-hd(hd  是  head  的简写 头部的意思,我们经常用)
3号子盒子下部分我们命名为 course-bd(bd  是  body  的简写 主体的意思,我们经常用)

1.8 精品推荐小模块

在这里插入图片描述

复习点: 因为里面三个盒子都要垂直居中,我们利用 继承性,给 最大的盒子 一个垂直居中的代码就好了,还记得 那些 样式可以继承吗??? font-  line-  text- color
大盒子水平居中  goods精品,注意此处有个盒子阴影
1号盒子是标题 H3  左侧浮动
2号盒子 里面放链接  左侧浮动  可以控制链接的左右外边距(注意行内元素只给左右内外边距)
3号盒子 右浮动 mod 修改

1.9 精品推荐大模块

在这里插入图片描述

1号盒子为最大的盒子 box  版心水平居中对齐
2号盒子为上面部分 box-hd  里面左侧标题H3 左浮动   右侧 链接 a 右浮动
3号盒子为底下部分 box-bd   里面是无序列表有10个 小li 组成
 小li外边距的问题, 这里有个小技巧给box-hd 宽度为 1215 就可以一行装开5个 li了.即子盒子宽度可以大于父盒子宽度
复习点:  我们用到清除浮动  因为 box-hd 里面的盒子个数不一定多少,我们就不给高度了,但是里面的盒子浮动了, 影响下面的布局,此时需要清除浮动

1.10 底部模块制作

在这里插入图片描述

1号盒子通栏大盒子 底部 footer  给高度  底色是白色
2号盒子版心水平居中
3号盒子版权 copyright  左对齐 
4号盒子 链接组 links  右对齐

1.11 添加左侧导航栏

在这里插入图片描述

1.12 效果展示

在这里插入图片描述

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 制作

在这里插入图片描述

通栏的盒子  命名为shortcut 快捷导航的意思, 注意,这里给行高,可以继承给里面的子盒子。
里面包含 版心的盒子
版心盒子里面包含1号左侧盒子左浮动
版心盒子里面包含2号右侧盒子右浮动
有联系的放在一块,比如请登录跟注册。导航栏一般用ul+li+a构成。

正确理解line-height
本身这个属性就有居中对齐的效果。但是为什么还要
加上height?如果单纯只有这个属性的话,那么可以不加
height就能实现居中对齐的效果了。但是如果设置了height
的话,那么height跟line-height就要一样了。此时才能实现
居中对齐的效果。
2.5.1 header 制作

在这里插入图片描述

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 导航栏制作

在这里插入图片描述

nav 盒子通栏有高度   而且有个下边框
1号盒子 左侧浮动 dropdown  下拉导航  里面包含 dt   dd 
2号盒子右侧浮动  navitems 导航栏组

在这里插入图片描述

2.5.3 footer 底部制作

在这里插入图片描述

footer 页面底部盒子  通栏 给一个高度  灰色的背景
footer 里面 首先一个 大 的版心
版心里面包含 1号盒子  mod_service     服务模块     module  模块的意思
版心里面包含 2号盒子 mod_help   帮助模块
版心里面包含 3号盒子 mod_copyright   版权模块 
2.5.4 mod_service 服务模块制作

在这里插入图片描述

2.5.5 main 主体模块制作
这部分是index里面专有的, 注意需要新的样式文件index.css  

在这里插入图片描述

main 盒子宽度为980像素, 距离左边220给一个margin-left就好了,
给高度就不用清除浮动。

main 里面包含 左侧盒子 左浮动  focus  焦点图 模块 

main 里面包含 右侧盒子 右浮动  newsflash  新闻快报模块 
2.5.6 newsflash 新闻快报模块

在这里插入图片描述

1 号盒子 为 news 新闻模块  
2 号盒子 为lifeservice  生活服务模块
3 号盒子为 bargain  特价商品
2.5.7 news 新闻模块

在这里插入图片描述

注意,这里我们 分为 上下两个模块,  但是 两个模块 都用div   
1号 盒子    news-hd   新闻头部模块  给一个 高度 和   下边框   
2号 盒子    news-bd   新闻主题部分   里面 包含 ul 和  li  还有 链接 
2.5.8 lifeservice 生活服务模块

在这里插入图片描述

此地方有个小技巧,

lifeservice  盒子 宽度为   250   但是装不开  里面的 4个 小 li 
可以让  lifeservice    里面的 ul  宽度为 252  就可以 装的下  4个 小li
lifeservice  盒子  overflow 隐藏多余的部分就可以了。
2.5.9 recommend 推荐模块

在这里插入图片描述

里面包含2个盒子, 浮动即可
1号盒子    recom-hd   
2号盒子    recom-bd  注意里面的小 竖线   
2.5.10 楼层区 floor
注意这个floor  一个大盒子 包含, 不要给高度,内容有多少,算多少

在这里插入图片描述

2.5.11 家用电器模块

在这里插入图片描述

这个模块 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 模块

在这里插入图片描述

根据tab 切换的原理,  应该还需要一个 tab-content 的 内容来包装 里面的 5个 盒子
分为5个大列  列的宽度 不一致 
2.5.12 侧边栏 fixedtool 制作
此模块用固定定位   里面包含  li   

在这里插入图片描述

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
  • 运动曲线示意图:
    在这里插入图片描述
div {
width: 200px;
height: 100px;
background-color: pink;
/* transition: 要过渡的属性  花费时间  运动曲线  何时开始; */
transition: width 0.6s ease 0s, height 0.3s ease-in 1s;
/* transtion 过渡的意思  这句话写到div里面而不是 hover里面 */


}
div:hover {  /* 鼠标经过盒子,我们的宽度变为400 */

width: 600px;
height: 300px
}

transition: all 0.6s;  /* 所有属性都变化用all 就可以了  后面俩个属性可以省略 */
2.5.14 列表页准备工作
列表页面是新的页面,我们需要新建 list.html    

因为 列表页的 头部 和 底部 基本一致, 我们需要 把首页中的 头部  和 底部的  结构复制过去

头部和底部的 样式 ,列表也需要, 因此 list.html  也需要 引入   common.css  

同时 需要新的 list.css 文件   这个 样式文件,里面只写  list.html  结构里面的内容就好了
2.5.14.1 列表页 header 和 nav 修改

在这里插入图片描述

秒杀盒子 sk  定位 即可  second  kill 
1 号 盒子 左侧浮动  sk_list   里面包含 ul  和  li 
2 号盒子  左侧浮动   sk_con  里面 包含 ul  和  li
2.5.14.2 列表页主体盒子 sk _container
这个盒子里面包含了 所有的 列表页的所有主体内容 

在这里插入图片描述

1号盒子  sk _container    给宽度 1200  不要给高度 
2号盒子  sk_hd   插入图片即可  
3号盒子   sk_bd  里面包含 很多的 ul 和  li 
2.5.14.3 sk_goods 布局

在这里插入图片描述

此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

在这里插入图片描述

最大的盒子  我们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   面包屑导航

在这里插入图片描述

2.5.15.2 产品介绍 模块

在这里插入图片描述

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

在这里插入图片描述

2.5.15.4 preview_list 制作

在这里插入图片描述

盒子 有左右按钮   arrow_prev   arrow_next  用定位即可 
中间 用 ul  命名为    list-item    给宽度和高度 然后  margin: 0 auto;  水平居中对齐即可
2.5.15.5 产品详细信息区域制作 itemInfo_wrap

在这里插入图片描述

此盒子命名为 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   有宽度不给高度

在这里插入图片描述

2.5.15.5.2 aside 布局

在这里插入图片描述

1 号盒子 命名为 tab_list   给高度就好了 ,里面 放 ul 和 li   注意这是 tab栏切换布局
2 号盒子  命名为  tab_con    里面还包含 很多个ul.item 和 上面的 tab_list 里面的li一一对应。 
2.5.15.5.3 detail 布局

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

在这里插入图片描述

2.5.15.5.5 registerarea布局

在这里插入图片描述

2.6 效果展示

在这里插入图片描述

3 jingdongmobile

3.1 京东移动端首页

在这里插入图片描述

3.2 技术选型

方案:我们采取单独制作移动页面方案
技术:布局采取流式布局
3.2.1 搭建相关文件夹结构

在这里插入图片描述

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

在这里插入图片描述

注意此时图片居中要用vertical-align: middle;即使没有文字也一样
3.2.5 search-wrap

在这里插入图片描述

采用固定定位
传统盒子中,如果不给定固定的宽度。那么margin左右、padding左右,border左右都不会撑开盒子。但是margin上下、padding上下、border上下都会撑开盒子
3.2.6 slider

在这里插入图片描述

3.2.7 brand

在这里插入图片描述

三盒子都是33.33%
3.2.8 nav

在这里插入图片描述

每个盒子20%
3.2.9 news

在这里插入图片描述

一号盒子50%,二号盒子25%,三号盒子25%,使用box-sizing: border-box;转化
为CSS3模型。使border算在width上

3.3 效果展示

在这里插入图片描述

4 xiechengwanmobile

4.1 携程网首页案例制作

在这里插入图片描述

4.2 技术选型

方案:我们采取单独制作移动页面方案
技术:布局采取flex布局
4.2.1 搭建相关文件夹结构

在这里插入图片描述

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 常见模块命名

在这里插入图片描述
在这里插入图片描述

4.2.4 search-index

在这里插入图片描述

2号盒子固定,1号盒子用flex布局
4.2.5 focus

在这里插入图片描述

4.2.6 local-nav

在这里插入图片描述

每个盒子flex为1,或者为20%
4.2.7 nav

在这里插入图片描述

子盒子也可以flex充当父盒子
4.2.8 常见flex布局思路

在这里插入图片描述

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

在这里插入图片描述

采用flex-wrap: wrap;且flex:20%
4.2.11 sales-hd/sales-bd

在这里插入图片描述

4.3 效果展示

在这里插入图片描述

5 suningmobile

5.1 苏宁网移动端首页

在这里插入图片描述

5.2 技术选型

方案:我们采取单独制作移动页面方案
技术:布局采取rem适配布局(less + rem + 媒体查询)
设计图: 本设计图采用 750px 设计尺寸

5.3 搭建相关文件夹结构

在这里插入图片描述

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 效果展示

在这里插入图片描述

6 alibaixiu

6.1 阿里百秀移动端首页

在这里插入图片描述

6.2 技术选型

方案:我们采取响应式页面开发方案
技术:bootstrap框架
设计图: 本设计图采用 1280px 设计尺寸

6.3 屏幕划分分析

1 屏幕缩放发现中屏幕 和大屏幕布局是一致的。 因此我们列 
定义为col-md-就可以了, md 是大于等于970以上的
2 屏幕缩放发现小屏幕布局发生变化,因此我们需要为小屏幕
根据需求改变布局
3 屏幕缩放发现 超小屏幕布局又发生变化,因此我们需要为超小屏
幕根据需求改变布局
4 策略: 我们先布局md以上的pc端布局,最后根据实际需求在
修改小屏幕和超小屏幕的特殊布局样式

6.4 container 宽度修改

因为本效果图采取 1280的宽度, 而Bootstrap 里面 container宽度 
最大为 1170px,因此我们需要手动改下container宽度
/* 利用媒体查询修改 container宽度适合效果图宽度 */
@media (min-width: 1280px) {
	.container {
		width: 1280px;
	}
}

6.5 效果展示

在这里插入图片描述

7 博客

7.1 项目环境搭建

7.1.1 项目介绍
多人博客管理系统
1 博客内容展示
2 博客管理功能

在这里插入图片描述

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 数据分页

当数据库中的数据非常多是,数据需要分批次显示,这时
就需要用到数据分页功能。

在这里插入图片描述

分页功能核心要素:
1 当前页,用户通过点击上一页或者下一页或者页码产生,客
户端通过get参数方式传递到服务器端
2 总页数,根据总页数判断当前页是否为最后一页,根据
判断结果做响应操作

在这里插入图片描述

总页数: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 开发环境与生产环境

什么是开发环境与生产环境
环境,就是指项目运行的地方,当项目处于开发阶段,项目运
行在开发人员的电脑上,项目所处的环境就是开发环境。当
项目开发完成以后,要将项目放到真实的网站服务器电脑中
运行,项目所处的环境就是生产环境。

为什么要区分开发环境与生产环境
因为在不同的环境中,项目的配置是不一样的,需
要在项目代码中判断当前项目运行的环境,根据不同的
环境应用不同的项目配置。

如何区分开发环境与生产环境
通过电脑操作系统中的系统环境变量区分当前是开
发环境还是生产环境。

在这里插入图片描述
在这里插入图片描述

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模块查找系统环境变量,并读
取其值作为当前配置项属于的值

在这里插入图片描述
在这里插入图片描述

7.10 文章评论

1 创建评论集合
2 判断用户是否登录,如果用户登录,再允许用户提交评论表单
3 在服务器端创建文章评论功能对应的路由
4 在路由请求处理函数中接收客户端传递过来的评论信息
5 将评论信息存储在评论集合中
6 将页面重定向回文章详情页面
7 在文章详情页面路由中获取文章评论信息并展示在页面中

7.11 密码加密bcrypt

哈希加密是单程加密方式:1234 => abcd
在加密的密码中加入随机字符串可以增加密码被破解的难度。

// 导入bcrypt模块
const bcrypt = require('bcrypt');
// 生成随机字符串 gen => generate 生成 salt 盐
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中的数据会随着请求被自动发送到服务器端

在这里插入图片描述

session:实际上就是一个对象,存储在服务器端的内存中,
在session对象中也可以存储多条数据,每一条数据都有一
个sessionid做为唯一标识。

在这里插入图片描述

在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请求参数、文件上传。

 // 引入formidable模块
 const formidable = require('formidable');
 // 创建表单解析对象
 const form = new formidable.IncomingForm();
 // 设置文件上传路径
 form.uploadDir = "/my/dir";
 // 是否保留表单上传文件的扩展名
 form.keepExtensions = false;
 // 对表单进行解析
 form.parse(req, (err, fields, files) => {
     // 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大世界。回复前端
小项目即可获取笔记获取方式。

在这里插入图片描述

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
根据引用中提供的信息,谷粒商城是一个B2C模式的电商平台,主要销售自营商品给客户。B2C模式指的是商对客的模式,即商家直接向消费者销售商品和服务。谷粒商城使用微服务架构,这是一种将应用程序拆分成独立且可独立开发、部署和扩展的小型服务的架构。引用还提到谷粒商城的技术涵盖微服务架构、分布式、全栈、集群、部署和自动化运维等方面。 因此,从前-谷粒商城篇章6主要讨论的可能是谷粒商城的技术方面,包括微服务架构、分布式、全栈、集群、部署和自动化运维等内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [从前-谷粒商城篇章1](https://blog.csdn.net/m0_67391121/article/details/125383572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2020年谷粒商城md笔记](https://download.csdn.net/download/ZHUXIUQINGIT/12543161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

unique_perfect

您的支持是我创造的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值