当前位置: 首页 > news >正文

【Vue】布局解析

【Vue】布局解析

  • 1. 电商首页的 Vue 页面布局 Demo
    • 1.1 🧭 最终页面目标结构(电商首页示例)
    • 1.2 🧱 页面预览效果(结构)
    • 1.3 ✅ 第一步:App.vue(主布局)
    • 1.4 第二步:Home.vue(首页页面)
    • 1.5 ✅ 第三步:子组件们
    • 1.6 🧪 最后一步:设置路由(router/index.js)

1. 电商首页的 Vue 页面布局 Demo

1.1 🧭 最终页面目标结构(电商首页示例)

App.vue├── Header.vue         ⬅️ 页面顶部导航栏├── Home.vue (via <router-view />)│    ├── Banner.vue    ⬅️ 首页轮播图│    ├── Category.vue  ⬅️ 分类导航│    └── GoodsList.vue ⬅️ 商品列表└── Footer.vue         ⬅️ 页面底部信息

1.2 🧱 页面预览效果(结构)

[ Header ]
-------------------------------------------------
[   轮播图 Banner   ]
-------------------------------------------------
[ 分类导航 Category ]
-------------------------------------------------
[ 商品列表 GoodsList ]
-------------------------------------------------
[ Footer ]

1.3 ✅ 第一步:App.vue(主布局)

<template><div class="layout"><Header /><main><router-view /></main><Footer /></div>
</template><script setup>
import Header from './components/Header.vue'
import Footer from './components/Footer.vue'
</script><style scoped>
.layout {display: flex;flex-direction: column;min-height: 100vh;
}
main {flex: 1;
}
</style>

1.4 第二步:Home.vue(首页页面)

<template><div class="home"><Banner /><Category /><GoodsList /></div>
</template><script setup>
import Banner from '../components/Banner.vue'
import Category from '../components/Category.vue'
import GoodsList from '../components/GoodsList.vue'
</script><style scoped>
.home {padding: 20px;background: #f9f9f9;
}
</style>

1.5 ✅ 第三步:子组件们

1. Banner.vue<template><div class="banner"><img src="/banner.jpg" alt="banner" /></div>
</template><style scoped>
.banner img {width: 100%;height: 300px;object-fit: cover;
}
</style>
2. Category.vue<template><div class="categories"><div class="item" v-for="cat in ['手机', '电脑', '平板']" :key="cat">{{ cat }}</div></div>
</template><style scoped>
.categories {display: flex;justify-content: space-around;margin: 20px 0;
}
.item {background: white;padding: 10px 20px;border-radius: 8px;box-shadow: 0 0 5px rgba(0,0,0,0.1);
}
</style>
3.GoodsList.vue<template><div class="goods-list"><div class="goods-item" v-for="i in 4" :key="i"><img src="/good.jpg" alt="good" /><p>商品 {{ i }}</p></div></div>
</template><style scoped>
.goods-list {display: flex;flex-wrap: wrap;gap: 20px;
}
.goods-item {width: 200px;padding: 10px;background: white;border-radius: 8px;text-align: center;
}
.goods-item img {width: 100%;height: 150px;object-fit: cover;
}
</style>
  1. Header.vue & Footer.vue
<!-- Header.vue -->
<template><header class="site-header"><h1>MyShop</h1></header>
</template><style scoped>
.site-header {background: #333;color: white;padding: 20px;text-align: center;
}
</style><!-- Footer.vue -->
<template><footer class="site-footer"><p>© 2025 MyShop 版权所有</p></footer>
</template><style scoped>
.site-footer {background: #eee;text-align: center;padding: 20px;
}
</style>

1.6 🧪 最后一步:设置路由(router/index.js)

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'export default createRouter({history: createWebHistory(),routes: [{ path: '/', component: Home }]
})
http://www.xdnf.cn/news/34993.html

相关文章:

  • Manus技术架构、实现内幕及分布式智能体项目实战 线上高级实训班
  • 洛谷的几道题
  • 某局部三层休闲娱乐中心建筑设计与结构设计
  • 19-算法打卡-哈希表-四数相加II-leetcode(454)-第十九天
  • @EnableAsync+@Async源码学习笔记之五
  • 第十届团体程序设计天梯赛-上理赛点随笔
  • 学习笔记: Mach-O 文件
  • Datawhale AI春训营 世界科学智能大赛--合成生物赛道:蛋白质固有无序区域预测 小白经验总结
  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(钢铁企业生产计划管理系统)
  • 支持中文对齐的命令行表格打印python库——tableprint
  • cesium中postProcessStages全面解析
  • 13.第二阶段x64游戏实战-分析人物等级和升级经验
  • JNI 学习
  • Linux基础IO(九)之软链接
  • 洛谷P3373线段树详解【模板】
  • QML动画--ParticleSystem
  • 构造函数和析构函数
  • 数据结构排序算法全解析:从基础原理到实战应用
  • LabVIEW 程序维护:为何选靠谱团队?
  • C# 变量||C# 常量
  • Linux教程-常用命令系列一
  • 定制一款国密浏览器(10):移植SM2算法前,解决错误码的定义问题
  • 如何实现一个MCP server呢?
  • 基于蚁群算法的柔性车间调度最优化设计
  • mysql的函数(第二期)
  • Linux下 文件的查找、复制、移动和解压缩
  • spring-batch批处理框架(1)
  • Qt项目——Tcp网络调试助手服务端与客户端
  • 时态--06--现在完成時
  • GPT-SoVITS 使用指南