15.Vue技术栈开发实战-响应式布局

如何引入iview,如何配置它的loader。如何全局引入和按需引入iview
2:使用layout布局组件,
3:使用iview的栅格组件。实现响应式的布局。根据网格的宽度来实现不同的布局。

这是一个对应写好的文档。github上文档在根目录中:https://github.com/lison16/vue-cource/blob/master/doc/vue-cli3%E4%B8%AD%E4%BD%BF%E7%94%A8iview.md

在vue cli 3.0中呢,iview的配置有一些改变,主要是在iviewLoader这的配置,因为在vuecli 3.0中是没有webpack的配置文件的。

首先是在main.js中全局引入。iview作为一个插件需要用Vue的use方法来注册安装。

第二个方法是按需引入:iview中有很多的组件,项目中你可能用不到。如果全局引入,编译后的提及会比较大。
用哪个你局把哪个全局引入。这样你打包后的文件就会小很多。

如果没有loader的话,这里按需引入是需要加i-的前缀的



配置iviewLoader会在编译的时候把switch、circle等替换成代码i-前缀的组件名。
添加了iview-loader就可以不先i-的前缀了。

layout的布局是本视频作者封装的。
http://v3.iviewui.com/components/layout

下面来实际的试用一下layout

首先安装iview。iview的3.1.0版本是可以做为插件来安装的。
启动vue ui




选中进行安装

原来的安装方式:npm install iview

视频中使用的iview的版本是:3.2.1

由于iview的4.0版本后已经改名了,所以这里我们可以继续安装iview最后的版本是3.5.4

npm install iview --save

这次我安装的时间是2020年12月23日15:46:17

 

 

 


安装完成后,重启我们的项目
main.js内引入iview。这样就可以在任何一个vue文件内使用我们的iview组件了。

在views文件夹下,创建一个layout页面

直接让他在home页面显示


让它的高度和页面的高度是一样的在app.vue里面


要想默认打开地址:http://localhost:8080/#/ 能显示Layout页面,路由守卫的代码要注释掉,之前的课程我们加上了验证token是否登陆的逻辑。




App.vue 注释掉

随便写个layout


使用layout

实现左右,上下的布局。




最外层加个属性,height是100%

最外层div加个高度

这俩都是100%,给他俩合起来。注意他们之间用逗号分隔开了



这样左边是sider,右边呢,是一个上下布局(上面是header 下面是content)。

设置header的背景色为白色,加个阴影



sider的属性,是否可收起

http://v3.iviewui.com/components/layout#API

设置上就会显示是否可收起的按钮



但是一定给他绑定一个v-model的值来控制它的伸缩状态。默认我们是false 不收缩。

点击就收缩

也可以自己定义



被隐藏了

在header里面放一个icon来访收缩的按钮



header的padding有点大,我们给它设置一个






23合适就改为23

点击图标来控制菜单的收缩。
点击icon图标的时候去修改。collapsed的值为true或者是false

给icon绑定click事件,大家注意icon是没有办法绑定click的事件的。

所以我们是绑定icon最外层的html标签绑定原生的事件。所以要加native的修饰符

一个取反的操作。



给图标加状态,如果是收缩的,那么就旋转90度。绑定一个class属性,默认它是一个数组




给上面也绑定一个过渡效果


收缩的状态






 

{
xs: '480px',
sm: '576px',
md: '768px',
lg: '992px',
xl: '1200px',
xxl: '1600px'
}

 


小于576px的时候

当把浏览器缩小到768像素的时候,左侧菜单自动收缩起来了。注意768的话,breakpoint要设置成md

把sider放在右边,箭头就会在右边显示了。

让箭头在右边

这个属性,旋转箭头的方向




把sider再移动到左边
下面看栅格

栅格

把整行Row分为24列

gutter列之间的间距

col常用的就是span。跨几列

左侧跨几列

在Content里面,我们先用Card设置一个内容区域

加个阴影,同时给他一个css类名

给他一个最小高度,当它没有内容的时候有最小高度。

希望content有个10像素的内边距



这样就有了10像素的内边距了



那么就是屏幕的高度减去 顶部64 再减去 上下的内边距10 加起来就是84px

100vh: 相对于视窗的高度, 视窗被均分为100单位的vh; css3新发现height:100vh;

表示整个浏览器窗口高度减去84px的高度就是中间内容要展示的区域

内容区域刚刚好 上下留出了10像素,正好就是页面的高度。

然后给它一个router-view标签。我们把layout这个组件当做是父组件。

给layout使用嵌套路由

这样当我们输入home的时候。home页就会现在是Content区域了。

http://localhost:8080/#/home

下面在Home.vue内使用栅格布局。在vs-vode里面,如果你写这个Col标签会有问题。

Col标签没法自动补全,并且这里会报一个小错误。

这里可以使用i-col

里面有个i-vu-col

设置i-vu-col样式



再来一行,间距gutter是10,然后分成两列就是 24/2=12 

 

 <Row :gutter="10">
      <i-col span="12"></i-col>
      <i-col span="12"></i-col>
    </Row>

 




它是自动增加了padding-left和right的间距。这样 间距就是10

background-clip属性指定背景绘制区域:背景绘制在内容方框内(剪切成内容方框)。
间距也是粉色,现在只想在content显示背景色




三列






offset=1

想让第一个栅格往右偏一列。同时右边的栅格,都会往右偏移一个栅格的距离。


如果想让它右移,但是又不影响其他格push=1



第二列 往右偏移1列。

盖住了后面的列



做响应式布局 就是下面几个属性了




blue里面的列北京是蓝色



md的宽度的时候每一个占8列。就是页面均等分为3列

前面需要加冒号



屏幕区域大于992像素的时候,显示2列


小于992的时候,显示2列



小于768的时候。每行显示1列



这样就达到了根据屏幕不同的宽度显示不同的布局

本节代码


 

结束

posted @ 2020-07-05 12:28  高山-景行  阅读(3660)  评论(0编辑  收藏  举报