1、底部导航栏的实现

(1)安装、新建项目

在cmd输入“npm i -g @vue/cli-init”安装工具,“vue init webpack mydouyin”生成一个新的项目,选择默认。

vue文件夹

(2)了解vue加载过程

1)网页加载的入口文件就是index.html,在body里面只有一个id="app"

显示网页入口文件

2)打开main.js

导入Vue,Router并使用

import Vue from 'vue' //node_models里的vue

import App from './App' //加载APP.vue,是组件

import router from './router' //加载index.js

new Vue({

    el: '#app', //即选中了index.html的app,后面才能操作这个app元素

    router, 

//声明路由,从./router导入的根路径下的路由,然后./router加载HeloWorld.vue显示文字

    components: { App }, 

//私有组件APP,有图片与router-view的路由组件HellowWord.vue的文字

    template: '<App/>'

})

如何显示上方图片的?

index.html的id是app,在main.js里面有el:#app选定对象app进行后续操作。

在main.js里的component组件是App.vue,在App.vue里面是图片与router-view。

即图片是在App.vue里得到显示的。

 router-view是路由内容的展示容器 (待显示文字)


如何显示下方文字的? 

当前页面路由是‘/’,则在router/index.js下找到路由‘/’,打开index.js查看路由信息。 

得到‘/’的路由路径对应加载的组件是HelloWorld.vue,点击该vue文件就是文字部分。

export default new Router({

  routes: [

    {

      // 访问路径/就会加载component里的组件,里面就是初始页面下方的文字

      path: '/',

      name: 'HelloWorld',

      component: HelloWorld

    }

  ]

})

当前访问路由路径

3)总结。

页面加载index.html,里面只有一个id=app。

在main.js选中app对其操作:指定私有组件component是App.vue。

打开App.vue,里面有一张图片与router-view,其中router-view是路由内容的显示容器。

当前的路由路径是/,则路由内容加载容器应该显示‘/’下的组件component:HelloWorld.vue。

在HelleWorld.vue里面就显示了下方的文字,显示在router-view路由内容显示容器位置中。

(3)开始编写底部导航栏

1)新建Home.vue并修改index.js下的路由信息,‘home’文字加载成功。

2)新建home/TarBar.vue作为底部导航栏,先测试‘tarbar’字样并在Home.vue里作为组件加入

新建TarBar.vue组件

TarBar.vue组件

因底部导航栏TarBar.vue只是Home.vue下的一个组件,所以在Home里作为component导入

Home里加载底部导航栏组件

TarBar.vue组件导入成功

3)TarBar导入成功,下开始编写底部导航栏TarBar.vue的布局样式

4)底部导航栏的图片导入,新建图片文件夹static/img与截取的抖音中间+的图片

(4)开始写底部导航栏的布局前,先记录一下css里的“浮动”的用法

1)为什么需要浮动?

很多标准流没有办法完成的一些布局效果,可以使用浮动完成布局,因为浮动可以改变元素标签的默认排列方式。

最典型的应用就是:使得多个块级元素在一行显示。

可解决如下问题:

多个块级元素会从上到下进行排列,两个div不能出现在同一行。

两个盒子不能左边一个、右边一个。

2)什么是浮动?浮动的特性?

语法:选择器{ float:none,left,right }

浮动的特性?

A.浮动元素会脱离标准流移动到指定的位置,浮动的盒子不再保留原有的位置。

B.浮动的元素会一行显示并顶部对齐

C.浮动的元素会具有行内块元素的特性(任何元素都可以浮动,如span是行内元素设置width\height属性是不会显示的,但当它增加了float以后就可以正常显示了。这是因为浮动的span元素具有行内块元素的特性了。不需要将行内元素转成行内块元素就可以设置宽高)(块级元素如果不设置宽高,它的宽度是与父级元素等宽,加了浮动后是包含内容的大小)

3)三种最常见的布局方式?

A、普通流(标准流):标签安装默认规定的方式进行排列。标准流是最基本的布局方式。

块级元素会独占一行,从上到下排序。(div  hr  p  h1-h6  ul  ol  dl  form  table)

行内元素会按照顺序,从由左到右顺序排列,碰到父元素边缘则自动换行。(span a i em)

B、浮动:浮动的元素经常与标准流父级元素搭配使用

C、定位:

总结:网页布局第一准则,多个块级元素纵向排列找标准流,横向排列找浮动。

(5)在底部导航栏的布局里,常用position:fixed布局。

position:fixed常用于导航栏的布局,是css的固定定位,一般用于导航栏的吸顶效果。

用fixed把它固定在上方,再用弹性盒布局flex去设置它内部的样式。

需要注意:

固定定位的盒子必须要有宽度,否则是盒子内内容的宽度;

固定定位的盒子与父级元素无关,是以屏幕为准的。


(6)底部导航栏包括五个部分“ 首页  朋友  +  消息  我 ”

需要注意:“+”可以上传图片作为按钮,点击某一个栏的时候下方有个横线与颜色加深一点

1)在template里写5个div,然后设置对应的css样式


5个div
css样式

得到导航栏初步结果

2)下对底部导航栏进行微调,高亮与下划线选中、加号的图片导入

A.中间“+”号部分替换成图片。先新建src/static/img目录并放入图片,在代码中引用图片。

    修改图片的宽、高、padding值。

B.设置字体点击的高亮状态。

在data(){return {TagIndex:0}}定义变量并初始化

在span里设定类为高亮类的选择class = “  TagIndex==0?  'active'  :  ' '   ”来确定是否高亮。

增加一个点击事件传入index的值,点击事件调用函数changeIndex(index)。

在methods:{函数实现}。

可实现点击某个栏,显示高亮状态输出数字表示可选中。但未将选中的按钮与对应的vue页面连接起来,下将补充实现。

(7)底部导航栏的补充与图标的引用

1)新建views/index/index.vue文件、views/follow/follow.vue文件、Message.vue,Me.vue。

2)修改路由信息,是home页面下的子路由children:[  {path: name:  component:()=>import('./views/index/index.vue')  },{xxx}  ]

3)在TarBar里使用router-link to="/index" tag="span" 实现跳转.

其中,router-link与router-view组件是在Vue.use(Router)时的Router的源码里注册了组件的。在link里的实现是有name to方法 默认是a标签。这里使用tag="span"修改为span标签。

4)导入阿里图标库的图标,方便使用

将iconfont.css放入static/iconfont文件夹下,在main.js导入import ‘xxx’

使用方法class="iconfont 图标名字"即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容