1. Vue-resource应用

在父组件APP.vue的钩子函数created使用vue-resource来ajax请求/api/seller,将数据赋值给vue实例的seller对象,并传值给子组件header渲染。

2.外部组件header组件

开始写header组件

声明props: ['seller']属性,将app.vue中ajax请求到的seller传值给header组件

<v-header :seller="seller"></v-header>

header分为内容区content-wrapper和公告区bulletin-wrapper上下两个部分。

内容区content-wrapper:

由头像avatar,内容content和优惠数量左中右三部分组成。其中优惠数量为绝对定位。

内容content:

由商家名称,运送描述和优惠活动上中下三部分组成。

其中优惠活动建了一个classMap: ['decrease', 'discount', 'guarantee', 'invoice', 'special']数组,用来做后台数据和图片间的映射。

公告区bulletin-wrapper:

由图标,文本和剪头icon三部分横向组成

注意的地方:

vue-cli全局引入图标icon样式需在main.js中引入

import './common/stylus/icon.styl'

具体引入细节可参考文章

https://blog.csdn.net/qq_39083496/article/details/88586862#comments

3.给header组件添加背景

思路:设置一个绝对定位的div,背景使用seller.avatar.将图像用z-index:-1浮动起来,并将其设置模糊filter:blur(10px)。height和width分别设为100%撑满父容器header。父容器header的背景设为半透明background:rgba(7,17,27,0.5),将背景层透出来。

4.写公告浮层页面(详情弹层页)

前置知识:css sticky footers布局

该布局大意就是将footer固定到底部。文章内容不足满屏时 footer在底部,超过满屏时footer在内容末尾。

使用该布局实现详情弹层页,思路:

<div v-show="detailShow" class="detail"><div class="detail-wrapper clearfix"><div class="detail-main"><p>{{seller.bulletin}}</p></div></div><div class="detail-close"><span class="icon-close"></span></div></div>

a.外面的detail层为fixed布局,高宽均为100%,如果超出内容显示区overflow设置为可滚动auto。
b.详情弹层页分为detail-wrapper(内容区)和detail-close(摆放关闭按钮)两个块
  detail-wrapper高度要撑满整个视窗窗口 min-height: 100%,同时添加clearfix样式设置一个高度为0的伪类:after。
  detail-close 为relative定位,margin一定要设为横向居中往上移(margin:-64px auto 0 auto),因为detail-wrapper已经撑满了视窗窗口。
c.放置内容区detail-main,注意padding-bottom一定要设为64px,这样可以留出位置给detail-close。

问题:
为什么要对:after和detail-close两个区clear:both,因为并没有元素浮动?
为什么要在detail-main后添加伪类:after?自己测试detail-wrapper设置为display:inline-block但没有添加:after页面也是正常展示的。

5.详情弹层页实现星级评分效果

引入vue概念:计算属性

因为星级评分在很多页面都有显示,所以将星级评分单独抽象为一个组件star.vue,接收外部传入参数size(星星尺寸)和score(评分),根据size实现星星显示大小,根据score转换为星星显示个数。

在header中将star组件引入,并作为自定义标签使用。

6.写优惠信息带两横线标题

优惠信息的容器采用flex布局

flex布局参考阮一峰写的资料

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

剩下的优惠信息采用v-for遍历显示

下面的商家公告布局同理采用flex

公告内容顺序显示很简单

涉及的知识点line-height和vertical-align

line-height:设置元素中行的高度

Html出现多行内容时,每一行都叫做一个line-box。line-box 的高度是由它所有子元素inline-box的高度计算得出的,具体来说就是从子元素的最高点到最低点的高度。

对于一个内联元素,它有两个高度:content-area(内容区高度)和vitual-area(实际高度),实际高度就是 line-height,这个高度用于计算 line-box 的高度。line-height 并非表示两个 baseline 之间的距离。

元素内容在line-height中居中显示。virtual-area 和 content-area 高度的差异叫做 leading。leading 的一半会被加到 content-area 顶部,另一半会被加到底部。因此 content-area 总是处于 virtual-area 的中间。

vertical-align:设置元素内容的垂直对齐方式

vertical-align: top / bottom,表示与 line-box 的顶部或底部对齐

vertical-align: text-top / text-bottom,表示与 content-area 的顶部或底部对齐

vertical-align: middle,把此元素放置在父元素的中部。

vue高仿饿了么项目学习笔记之二:头部header组件的实现相关推荐

  1. 菜鸟窝-仿京东淘宝项目学习笔记(二)ToolBar的基本使用

    本篇知识点均来自于菜鸟窝-仿京东淘宝实战项目视频中 今天继续仿京东淘宝项目的学习,第二天,学习ToolBar的基本使用,本篇记录视频中一些重要的笔记 笔记一:ToolBar的一些重要属性 xml st ...

  2. Vue高仿饿了吗学习笔记

    VUE高仿饿了么app 本项目github地址:https://github.com/motysla/eleme.git VUE 搭建简介 刚学习了VUE高仿饿了么app课,记录课的要点,巩固知识. ...

  3. vue高仿饿了么学习笔记(五)—— header 组件

    先贴一张 header 的 UI 图 一.header 组件 1)传入 seller 数据 // App.vue <template><div id="app"& ...

  4. vue高仿饿了么APP(二)

    这里我直接跳过vue-cli的安装. 一,vue.js代码是如何运行的? 1,进入页面,首先加载index.html和main.js文件. ① index.html文件 <!DOCTYPE ht ...

  5. vue高仿饿了么APP(三)

    一·需求分析 二,制作css字体图标的制作和使用 前面已经有人做过总结,我就直接引用了 css字体图标的制作和使用. 三,项目目录结构设计 1,每一个组件都单独建立一个文件夹,例如商品页建立goods ...

  6. VUE高仿饿了么app开发思维导图

    来自互联网 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing

  7. vue 判断对象不为空_Vue 学习笔记(二):实例

    创建一个实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项}) 虽然没有完全遵循 MVVM 模型,但是 Vue 的设计 ...

  8. 博客项目学习笔记十二:登录注册功能(登录)

    博客项目目录: 请戳这里 准备 需求:实现用户登录功能,登录之后,跳转到首页,并且页面信息由游客状态变为用户状态 1.引入shiro依赖包 <dependency><groupId& ...

  9. vue + vue-router + vue-resource + es6 + stylus + webpack 高仿饿了么外卖App商家详情

    VUE高仿饿了么app 本项目github地址:https://github.com/motysla/eleme.git VUE 搭建简介 刚学习了VUE高仿饿了么app课,记录课的要点,巩固知识. ...

最新文章

  1. jdbcpingquery mysql_JDBC - liuping - 博客园
  2. nginx反向代理,实现负载均衡
  3. 右键命令行在这里-cmd here
  4. applicaiton.yml 日志配置_底层基于Apache Hudi的DLA最佳实践 海量、低成本日志分析...
  5. vim删除文件第n行到结尾、或某段内容
  6. Java常用类库-AutoCloseable
  7. weka特征选择源码阅读
  8. 01_kubernetes初始化系统和全局变量
  9. java用那个软件编,java编译软件 编写java程序用什么软件?
  10. 阁下可知文言编程之精妙?文言文亦能编程!此诚年度最骚语言也,数天6K星...
  11. 机械设计基础课程设计【1】
  12. 开源3D建模软件FreeCAD基础介绍与入门
  13. Acute Angle Cloud与Achain达成战略合作,共促区块链系统发展
  14. 竞争情报(CI,competitive intelligence)都需要哪些因素
  15. 10个3d立体字ps金属字图层样式下载
  16. Python + Scrapy 小小爬虫有大大梦想
  17. 艾美捷测序级 II,纯化胰蛋白酶化验程序文献参考
  18. LTE-TDD随机接入过程(4)-RIV的解析和Preamble资源的选择
  19. 2021年不可错过的40篇AI论文,你都读过吗?
  20. web.py——简单而且功能强大的Python web 框架(4):生成表单、获取输入和内容的验证

热门文章

  1. 云上接单不空跑 京东云助力“佬司机”为货运物流业降本增效
  2. 最适合初学者开发的 5 款游戏
  3. 京东白条爆严重BUG!不法分子POS机疯狂套利
  4. 亚马逊有哪些渠道可以快速选品?
  5. 美颜相机的设计与实现
  6. telnetlib备份cisco交换机10054
  7. python编写美颜算法
  8. [python爬虫]爬取天气网全国所有县市的天气数据
  9. JsonKit的基本使用
  10. 关于中国传统养生思想