vue自适应布局(各种浏览器,分辨率)

1.前言

spa页面的layout布局对于前端项目的影响至关重要,在我们进行web端开发的时候,前端的各种大小屏幕,各种内核的浏览器不同,会导致我们的页面呈现出不一样的效果,如何进行更好的取舍,怎么能够达到产品对于系统展示效果的满意度,其实我们要前端有一套布局理念,这种理念指导我们如何进行优雅布局,怎么才能不被不合理的需求左右。理念分为以下几点:

  1. 整体布局,上左右风格,或者上下风格符合或者复杂的上菜单,左菜单,右内容风格,符合spa的菜单操作方式
  2. 菜单nav部分固定宽度,配合收起,展开效果;头部固定高度,内容区域flex:1;版本部分固定高度,固定位置
  3. 内容区域需要适应不同的分辨率,做浏览器的适配
  4. 需要适配浏览器的百分比缩放的问题

预览图片如下 :

现在布局实现的是头,左侧菜单,尾部固定,内容区域自适应布局的方案,最重要的是需要解决的是main里面的适应分辨率,浏览器内核的问题,往下看⬇️ 

目录

1.前言

2.vue的布局风格

2.1vue3需要配合element plus进行布局

2.2src下面创建layout文件夹

 3.测试效果

 4.总结


2.vue的布局风格

2.1vue3需要配合element plus进行布局

安装     $ npm install element-plus --save

引入   main.ts

import { createApp } from "vue";

import { createPinia } from "pinia";

import App from "./App.vue";

import router from "./router";

import ElementPlus from "element-plus";

import "element-plus/dist/index.css";

import "./assets/main.css";

const app = createApp(App);

app.use(ElementPlus);

app.use(createPinia());

app.use(router);

app.mount("#app");

2.2src下面创建layout文件夹

入口文件layoutIndex.vue,三个子组件

layoutIndex入口文件较为重要:


   
   
  1. <script setup lang = "ts" >
  2. import layoutHeader from "./layoutHeader.vue";
  3. import layoutMain from "./layoutMain.vue";
  4. import layoutFooter from "./layoutFooter.vue";
  5. import menu from "./menu";
  6. import { RouterLink } from "vue-router";
  7. < /script >
  8. <template >
  9. <div class = "common-layout" >
  10. <el-container >
  11. <el-header > <layout-header > < /layout-header > < /el-header >
  12. <el-container >
  13. <el-aside width = "200px" >
  14. <nav class = "nav-class" >
  15. <RouterLink
  16. v-for = "(item, index) in menu"
  17. : key = "'menu' + index"
  18. : to = "item.url"
  19. >{{ item.title }}{{ index + 1 }} < /RouterLink
  20. >
  21. < /nav >
  22. < /el-aside >
  23. <el-container >
  24. <el-main > <layout-main > < /layout-main > < /el-main >
  25. <el-footer > <layout-footer > < /layout-footer > < /el-footer >
  26. < /el-container >
  27. < /el-container >
  28. < /el-container >
  29. < /div >
  30. < /template >
  31. <style >
  32. * {
  33. marg in: 0;
  34. padding: 0;
  35. }
  36. .common-layout {
  37. height: 100vh;
  38. }
  39. .el-container {
  40. overflow: hidden;
  41. }
  42. .el-container.is-vertical {
  43. height: 100%;
  44. }
  45. .nav-class {
  46. display: flex;
  47. flex-direction: column;
  48. height: 100%;
  49. align-items: center;
  50. }
  51. .nav-class a {
  52. min-height: 35px;
  53. line-height: 35px;
  54. color: #fff;
  55. }
  56. .nav-class a:hover {
  57. color: rgb( 151, 219, 50);
  58. }
  59. .nav-class a:focus {
  60. color: rgb( 151, 219, 50);
  61. }
  62. .el-aside {
  63. background-color: lightslategrey;
  64. }
  65. < /style >

 头部文件layoutHeader


   
   
  1. <template >
  2. <div class = "common-layout-header" >header < /div >
  3. < /template >
  4. <style >
  5. .el-header {
  6. marg in: 0;
  7. padding: 0;
  8. height: 68px;
  9. background-color: aliceblue;
  10. text-align: center;
  11. line-height: 68px;
  12. }
  13. < /style >

layoutFooter文件代码


   
   
  1. <template >
  2. <div class = "common-layout-footer" >footer < /div >
  3. < /template >
  4. <style >
  5. .el-footer {
  6. marg in: 0;
  7. padding: 0;
  8. height: 68px;
  9. background-color: azure;
  10. text-align: center;
  11. line-height: 68px;
  12. }
  13. < /style >

main文件代码 ,就是路由放置区域:


   
   
  1. <script setup lang = "ts" >
  2. import { RouterView } from "vue-router";
  3. < /script >
  4. <template >
  5. <div class = "common-layout-main" > <RouterView / > < /div >
  6. < /template >
  7. <style >
  8. .el-main {
  9. overflow: auto;
  10. height: 100%;
  11. }
  12. < /style >

滚动效果:头部尾部不动,css控制,flex布局,没有position布局

 3.测试效果

谷歌浏览器,大小缩放等:

 屏幕放大效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的。 Vue.js 是一个流行的 JavaScript 前端框架,可以帮助开发者更快速、高效地开发 Web 应用。 如果你想要在 Vue.js实现自适应布局,你可以使用 CSS 自适应布局方案,比如 Flexbox 和 Grid 布局。 下面是一个使用 Flexbox 实现自适应布局的示例代码: ``` <template> <div class="container"> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> </div> </template> <style> .container { display: flex; flex-wrap: wrap; } .item { flex: 1 1 auto; } </style> ``` 上面的代码定义了一个父容器 `container`,并且设置了 `display: flex` 和 `flex-wrap: wrap`,这样子元素会自动换行,实现自适应布局。同时,给子元素设置了 `flex: 1 1 auto`,表示子元素会自动填满剩余空间。 当然,你也可以使用 Grid 布局来实现自适应布局,示例代码如下: ``` <template> <div class="container"> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> </div> </template> <style> .container { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); } .item { grid-column: span 1; } </style> ``` 上面的代码定义了一个父容器 `container`,并且设置了 `display: grid` 和 `grid-template-columns: repeat(auto-fill, minmax( ### 回答2: Vue.js是一种流行的JavaScript框架,用于构建交互式的Web界面。要实现Vue自适应布局,我们可以使用Vue的响应式设计原则和CSS媒体查询。 首先,在Vue组件中,我们可以使用Vue的响应式数据来动态地调整布局。我们可以定义一个响应式的数据属性,例如`isMobile`,并在组件的`mounted`钩子函数中使用窗口的宽度来更新这个值。例如: ```javascript mounted() { this.updateLayout(); window.addEventListener('resize', this.updateLayout); }, methods: { updateLayout() { this.isMobile = window.innerWidth < 768; } } ``` 接下来,我们可以使用Vue的条件渲染指令(`v-if`和`v-else`)来根据不同的布局情况,渲染不同的内容。例如,我们可以在模板中使用`v-if="isMobile"`来显示适合移动设备的布局,而使用`v-else`来显示适合桌面设备的布局。例如: ```html <template> <div> <div v-if="isMobile"> // 移动设备布局 </div> <div v-else> // 桌面设备布局 </div> </div> </template> ``` 除了使用Vue的响应式设计原则来实现自适应布局,我们还可以使用CSS媒体查询来调整样式。通过在不同的屏幕大小上设置不同的样式,我们可以实现自适应布局。例如,我们可以在CSS中使用`@media`查询,并在相应的查询条件下设置不同的样式。例如: ```css @media (max-width: 767px) { /* 移动设备样式 */ } @media (min-width: 768px) { /* 桌面设备样式 */ } ``` 通过结合Vue的响应式设计原则和CSS媒体查询,我们可以实现自适应布局,让我们的网页在不同的设备上都能正确显示和使用。 ### 回答3: Vue自适应布局代码可以通过使用CSS的媒体查询和Vue指令来实现。在这里,我将向您展示一种简单的方法。 首先,在Vue组件中,通过`v-bind`指令将组件的属性绑定到屏幕宽度。例如,您可以为组件的宽度设置一个响应式的计算属性,如下所示: ``` <template> <div class="my-component" :style="componentStyle"></div> </template> <script> export default { data() { return { screenWidth: 0, }; }, computed: { componentStyle() { return { width: `${this.screenWidth}px`, }; }, }, mounted() { this.screenWidth = window.innerWidth; window.addEventListener("resize", this.handleResize); }, beforeDestroy() { window.removeEventListener("resize", this.handleResize); }, methods: { handleResize() { this.screenWidth = window.innerWidth; }, }, }; </script> ``` 接下来,您可以使用媒体查询来根据屏幕宽度设置样式。例如,您可以在CSS文件中添加以下代码: ```css @media (max-width: 600px) { .my-component { /* 在小于等于600px的屏幕设置特定样式 */ } } @media (min-width: 601px) and (max-width: 1200px) { .my-component { /* 在大于600px且小于等于1200px的屏幕设置特定样式 */ } } @media (min-width: 1201px) { .my-component { /* 在大于1200px的屏幕设置特定样式 */ } } ``` 通过使用上述代码,您可以根据不同的屏幕宽度动态调整Vue组件的样式。无论用户在哪种屏幕设备上查看您的网页,组件都会自动根据屏幕宽度进行布局调整。注:代码中的屏幕宽度范围和样式仅作示例使用,您可以根据实际需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值