Vue 项目前端响应式布局及框架搭建

news/2023/6/5 22:19:34

Vue 项目前端响应式布局及框架搭建

  • 一、flexible 插件
    • 1、引用 flexible 插件
    • 2、修改 flexible 默认配置
    • 3、展示效果
  • 二、cssrem 插件 (px -> rem)
  • 三、项目搭建
    • 1、设置背景图
    • 2、设置标题文字
  • 四、图表环境搭建
    • 1、Echarts 全局引用
    • 2、Axios 全局引用


一、flexible 插件

项目是需要根据页面的大小改变 做出响应式改变的 所以我们可以使用第三方插件flexible.js帮助我们修改html根节点的font-size大小,从而控制当前页面的rem(会根据页面的html根节点font-size大小改变而改变)样式改变

flexible.js: web自适应方案 ,阿里团队开源的一个库。使用flexible.js轻松搞定各种不同的移动端设备兼容自适应问题。

1、引用 flexible 插件

下载
cnpm install --save lib-flexible

下载完成后找到 src 下的 main.js 进行配置,import导入

// 引用 flexible 插件
import "lib-flexible/flexible.js";

在这里插入图片描述

2、修改 flexible 默认配置

默认情况下只会在 540px分辨率 下生效 所以我们需要根据我们的项目分辨率进行调整,在node_module/lib-flexible/flexible.js中修改代码如下:

    function refreshRem() {var width = docEl.getBoundingClientRect().width;// if (width / dpr > 540) {//     width = 540 * dpr;// }// var rem = width / 10;// 修改 最大值:2560   最小值:400if (width / dpr < 400) {width = 400 * dpr;} else if (width / dpr > 2560) {width = 2560 * dpr;}// 设置成24分 1920px设计稿 1rem=80pxvar rem = width / 24;docEl.style.fontSize = rem + 'px';flexible.rem = win.rem = rem;}

在这里插入图片描述

3、展示效果

这个时候重启项目大家打开浏览器调试器 即可发现在浏览器大小改变的时候 在html根节点上会自动设置一个font-size,当我们拖动窗口大小的时候,其值会自动改变。
在这里插入图片描述

二、cssrem 插件 (px -> rem)

我们在写代码的时候发现如果我们都根据80px为1rem在编写代码的时候转换非常的麻烦 所以我们可以在vscode中安装一个cssrem的插件帮助我们进行转换 ,这样一来开发过程中会更加的方便:

在这里插入图片描述
添加一个测试的 div 样式, font-size 设置为 50px,可以发现提示中自动帮我们转换成了 3.125rem:
在这里插入图片描述

如果不能够换成对应的比例,可能cssrem还使用的默认 16px -> 1rem,找到安装的插件,打开设置,设置 Root Font Size 修改为 80 即可:
在这里插入图片描述

三、项目搭建

1、设置背景图

将图片放入assets文件夹中 在app.vue中设置背景图:

<template><router-view />
</template><style lang="scss">
* {margin: 0px;padding: 0px;box-sizing: border-box; //border-box 告诉浏览器去理解你设置的边框和内边距的值是包含在width内的。
}
body {background: url("~@/assets/xiyang.jpg") top center no-repeat;
}
</style>

在这里插入图片描述

2、设置标题文字

在 myPage.vue 中设置页面的顶部标题栏并进行相应的css样式:

<template><div><!-- 顶部标题栏 --><header><h1>顶部标题栏</h1></header></div>
</template><script>
export default {};
</script>
<style lang="scss">
header {height: 1rem;width: 100%;/* 设置一个半透明淡蓝色背景 */background-color: rgba(240, 150, 213, 0.2);/* 把标题文字样式设置 */h1 {font-size: 0.375rem;color: #fff;text-align: center;line-height: 1rem;}
}
</style>

在这里插入图片描述

<template><div><!-- 顶部标题栏 --><header><h1>顶部标题栏</h1></header><!-- 中间容器 --><section class="container"></section></div>
</template><script>
export default {};
</script>
<style lang="scss">
header {height: 1rem;width: 100%;/* 设置一个半透明淡蓝色背景 */background-color: rgba(240, 150, 213, 0.2);/* 把标题文字样式设置 */h1 {font-size: 0.375rem;color: #fff;text-align: center;line-height: 1rem;}
}
/* 中间容器 */
.container {// 最大最小的宽度min-width: 1200px;max-width: 2048px;margin: 0 auto;// 盒子上10px 左右10px 下0的外边距padding: 0.125rem 0.125rem 0;// 测试height: 10rem;background-color: rgb(228, 172, 211);
}
</style>

在这里插入图片描述
在这里插入图片描述
由于要创建五个的容器,并且在其中放置slot 槽口,后期方便向容器内插入图表。(Vue中的slot对于编写可复用可扩展的组件是再合适不过了)

components文件夹下创建 itemPage.vue 等容器组件:

<template><div class="item"><!-- 设置插槽 --><slot></slot></div>
</template><script>
export default {};
</script><style>
.item {/* 高度410px */height: 5.125rem;border: 1px solid rgb(255, 169, 243);/* 外边距20px */margin: 0.25rem;
}
</style>

itemOne、itemTwo、itemThree、itemFour

<template><div><h2>图表一</h2><div class="chart"><!-- 图标容器 --></div></div>
</template><script>
export default {};
</script><style></style>

views下的myPage.vue中引用调用使用:

<template><div><!-- 顶部标题栏 --><header><h1>大数据可视化 - Vue3.0和echarts</h1></header><!-- 中间容器 --><section class="container"><!-- 左容器 --><section class="itemLeft"><ItemPage><itemOne /></ItemPage><ItemPage><itemTwo /></ItemPage></section><!-- 中容器 --><section class="itemCenter"><h2>地图展示</h2></section><!-- 右容器 --><section class="itemRight"><ItemPage><itemThree /></ItemPage><ItemPage><itemFour /></ItemPage></section></section></div>
</template><script>
import ItemPage from "@/components/itemPage.vue";
import itemOne from "@/components/itemOne.vue";
import itemTwo from "@/components/itemTwo.vue";
import itemThree from "@/components/itemThree.vue";
import itemFour from "@/components/itemFour.vue";
export default {components: {ItemPage,itemOne,itemTwo,itemThree,itemFour,},
};
</script>
<style lang="scss">
header {height: 1rem;width: 100%;/* 设置一个半透明淡蓝色背景 */background-color: rgba(240, 150, 213, 0.2);/* 把标题文字样式设置 */h1 {font-size: 0.375rem;color: #fff;text-align: center;line-height: 1rem;}
}
/* 中间容器 */
.container {// 最大最小的宽度min-width: 1200px;max-width: 2048px;margin: 0 auto;// 盒子上10px 左右10px 下0的外边距padding: 0.125rem 0.125rem 0;background-color: rgba(226, 132, 233, 0.5);display: flex; //父容器设置flex布局才能在子元素使用// 设置左中右的占比 但是不要忘了在父容器要设置flex.itemLeft,.itemRight {flex: 3;}.itemCenter {flex: 5;// 高度840pxheight: 10.5rem;border: 1px solid rgb(255, 0, 140);// 内边距10pxpadding: 0.125rem;// 外边距20pxmargin: 0.25rem;}
}
</style>

效果如图所示:

在这里插入图片描述

四、图表环境搭建

1、Echarts 全局引用

下载
cnpm install --save echarts

vue2.0中使用如下写法把echarts挂载在vue实例上,但是这招在3.0行不通了:

// 引用echarts
import * as echarts from "echarts"
Vue.prototype.$echarts=echarts;

在 vue3.0中,在App.vue 中导入全局的echarts组件:

<script>
import { provide } from "vue";
// 引用echarts
import * as echarts from "echarts";
export default {setup() {//第一个参数是名字  第二个参数是你传递的内容provide("echarts", echarts); // 不是provider,否则会出现下面报错},
};
</script>

myPage.vue中进行引用和调用:

<script>
export default {// 导入echarts组件setup() {let $echarts = inject("echarts");// 控制台打印信息console.log($echarts);},
};
</script>

2、Axios 全局引用

下载cnpm install --save axios

在 vue3.0中,在App.vue 中导入全局的echarts组件:

<script>
import { provide } from "vue";
// 引用echarts
import * as echarts from "echarts";
// 引用axios
import axios from "axios";
export default {setup() {//第一个参数是名字  第二个参数是你传递的内容provide("echarts", echarts);provide("axios", axios);},
};
</script>

在myPage.vue中进行引用和调用:

<script>
import { provide } from "vue";
// 引用echarts
import * as echarts from "echarts";
// 引用axios
import axios from "axios";
export default {setup() {//第一个参数是名字  第二个参数是你传递的内容provide("echarts", echarts);provide("axios", axios);},
};
</script>

在这里插入图片描述


https://dhexx.cn/news/show-18141.html

相关文章

Android service——Android service全面总结

一、服务的基本知识&#xff1a; 一个Serviceandroid 系统中的四大组件之一&#xff08;Activity、Service、BroadcastReceiver、ContentProvider&#xff09;,也是一种应用程序组件&#xff0c;它跟Activity的级别差不多&#xff0c;但不能自己运行只能后台运行&#xff0c;并…

Hbase shell命令使用 get,scan,时间戳,过滤器,版本等参数详细使用说明

hbase常见命令https://blog.csdn.net/qq_41712271/article/details/108464191 备注:COLUMN 和 COLUMNS 是不同的,scan 操作中的 COLUMNS 指定的是表的列族, get操作中的 COLUMN 指定的是特定的列,COLUMNS 的值实质上为“列族:列修饰符”。COLUMN 和 COLUMNS 必须为大写。 get相…

Vue之Axios 网络请求库

Vue之Axios 网络请求库一、Axios 网络请求库1、简介2、Axios 下载安装3、Axios 基本使用二、Axios & Vue1、get2、post3、案例一、Axios 网络请求库 1、简介 说到axios我们就不得不说下Ajax。在旧浏览器页面在向服务器请求数据时&#xff0c;因为返回的是整个页面的数据&…

[Freescale] LCD Driver Porting

Platform&#xff1a;Freescale&#xff1b; Android 4.2.2&#xff1b; Kernel-3.0.35 LCD&#xff1a;奇美V500HK1 - 50 inch - 接口&#xff1a;LVDS 板端LVDS接口&#xff1a; 可以看到是30pin的接口&#xff0c;可以支持双通道&#xff08;2-channel&#xff09;。 奇美Da…

Hbase Region的拆分和合并

大白话解释&#xff1a;hbase中&#xff0c;如果一张表有100条记录&#xff0c;默认都是放到一个region中&#xff0c; 如果想把前50条放到一个region&#xff0c;后50条放到一个region中&#xff0c;就要用到region的拆分&#xff0c;反之就是合并首先看看hdfs上文件目录的情况…

poj 2486( 树形dp)

题目链接&#xff1a;http://poj.org/problem?id2486 思路&#xff1a;经典的树形dp,想了好久的状态转移。dp[i][j][0]表示从i出发走了j步最后没有回到i&#xff0c;dp[i][j][1]表示从i出发走了j步最后回到i。于是我们把所有到情况归结为3种&#xff1a; 1、从u&#xff08;v是…

hbase java操作api - HBaseAdmin,HTable,HTableDescriptor,Put,Get等类说明(文档)

一、 几个主要 Hbase API 类和数据模型之间的对应关系&#xff1a; 1、 HBaseAdmin 关系&#xff1a; org.apache.hadoop.hbase.client.HBaseAdmin 作用&#xff1a;提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括&#xff1a;创建表&#xff0c;删 除表&#…

C#相关

C# 加密壳&#xff1a;.NET Reactor 最新破解版 C# DLL 与 EXE 打包工具&#xff1a;ILMergeGui C#调用大漠插件实现常用功能 C#模拟鼠标操作 C# 模拟键盘输入 获取内存占用 System.Diagnostics.Process proc assign your process here :-)int memsize 0; // memsize in Mega…

mybatis-plus条件构造器

mybatis-plus条件构造器一、mybatis-plus条件构造器1、条件构造器关系图1、QueryWrapper2、UpdateWrapper3、LambdaQueryWrapper4、LambdaUpdateWrapper5、LambdaQueryChainWrapper二、其他一、mybatis-plus条件构造器 1、条件构造器关系图 1.橙色框为抽象类abstract 2.蓝色框…

独树一帜的字符串匹配算法——RK算法

参加了雅虎2015校招&#xff0c;笔试成绩还不错&#xff0c;谁知初面第一题就被问了个字符串匹配&#xff0c;要求不能使用KMP&#xff0c;但要和KMP一样优&#xff0c;当时瞬间就呵呵了。后经过面试官的一再提示&#xff0c;也还是没有成功在面试现场写得。现将该算法记录如下…