提供一个vue前端页面示例,样式使用elementui,页面包括大轮播图、公告、侧边滚动定位导航、图片展示、小走马灯、图文卡片、返回顶部、页面底部
时间: 2023-09-18 16:08:31 浏览: 99
以下是一个基于ElementUI的Vue前端页面示例,包括大轮播图、公告、侧边滚动定位导航、图片展示、小走马灯、图文卡片、返回顶部、页面底部。
```html
<template>
<div class="page">
<!-- 大轮播图 -->
<el-carousel :autoplay="true" :interval="4000" arrow="never">
<el-carousel-item v-for="(item, index) in bannerList" :key="index">
<img :src="item.imageUrl" alt="">
</el-carousel-item>
</el-carousel>
<!-- 公告 -->
<div class="notice">
<i class="el-icon-information"></i>
<el-marquee :speed="20">{{ noticeText }}</el-marquee>
</div>
<!-- 侧边滚动定位导航 -->
<div class="aside">
<el-menu
:default-active="activeMenu"
class="menu"
:collapse-transition="false"
mode="vertical"
@select="handleMenuSelect"
>
<el-menu-item v-for="(item, index) in menuList" :key="index" :index="item.id">{{ item.name }}</el-menu-item>
</el-menu>
</div>
<!-- 图片展示 -->
<div class="gallery">
<el-image
v-for="(item, index) in galleryList"
:key="index"
:src="item.imageUrl"
:preview-src-list="item.previewList"
fit="cover"
class="gallery-item"
></el-image>
</div>
<!-- 小走马灯 -->
<div class="carousel-small">
<el-carousel :autoplay="true" :interval="3000" arrow="never" type="card">
<el-carousel-item v-for="(item, index) in smallCarouselList" :key="index">
<img :src="item.imageUrl" alt="">
</el-carousel-item>
</el-carousel>
</div>
<!-- 图文卡片 -->
<div class="card-list">
<el-card
v-for="(item, index) in cardList"
:key="index"
:header="item.title"
:body-style="{ padding: '0px' }"
>
<img :src="item.imageUrl" class="image" slot="cover" />
<div style="padding: 14px;">
<span>{{ item.description }}</span>
<div class="bottom clearfix">
<div class="price">{{ item.price }}</div>
<div class="button-wrapper">
<el-button type="primary" size="small">购买</el-button>
</div>
</div>
</div>
</el-card>
</div>
<!-- 返回顶部 -->
<div class="back-to-top" @click="scrollToTop">
<i class="el-icon-arrow-up"></i>
</div>
<!-- 页面底部 -->
<div class="footer">
<span>版权所有 © 2021 xxx公司</span>
</div>
</div>
</template>
<script>
export default {
data() {
return {
bannerList: [], // 大轮播图列表
noticeText: '', // 公告文字
menuList: [], // 侧边滚动导航菜单列表
activeMenu: '0', // 当前选中的导航菜单项
galleryList: [], // 图片展示列表
smallCarouselList: [], // 小走马灯列表
cardList: [], // 图文卡片列表
};
},
mounted() {
// 初始化数据
this.initData();
// 监听滚动事件,判断是否显示返回顶部按钮
window.addEventListener('scroll', this.handleScroll);
},
methods: {
// 初始化数据
initData() {
// TODO: 获取数据
},
// 处理侧边导航菜单选中事件
handleMenuSelect(index) {
this.activeMenu = index;
// TODO: 根据选中的菜单项跳转到相应的位置
},
// 处理滚动事件
handleScroll() {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop > 200) {
this.showBackToTop = true;
} else {
this.showBackToTop = false;
}
},
// 滚动到页面顶部
scrollToTop() {
window.scrollTo({ top: 0, behavior: 'smooth' });
},
},
};
</script>
<style lang="scss" scoped>
.page {
.notice {
margin: 20px 0;
display: flex;
align-items: center;
i {
margin-right: 10px;
font-size: 16px;
color: #f56c6c;
}
.el-marquee {
font-size: 14px;
color: #333;
white-space: nowrap;
}
}
.aside {
position: fixed;
top: 100px;
left: 0;
width: 180px;
height: 100%;
.menu {
background: #f5f5f5;
border-right: 1px solid #e0e0e0;
}
}
.gallery {
display: flex;
flex-wrap: wrap;
margin: 20px 0;
.gallery-item {
width: calc(25% - 10px);
margin-right: 10px;
margin-bottom: 10px;
}
}
.carousel-small {
margin-bottom: 20px;
.el-carousel__item {
height: 150px;
display: flex;
justify-content: center;
align-items: center;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
.card-list {
display: flex;
flex-wrap: wrap;
margin-bottom: 20px;
.el-card {
width: calc(33.3% - 10px);
margin-right: 10px;
margin-bottom: 10px;
.image {
height: 150px;
object-fit: cover;
}
.bottom {
margin-top: 10px;
.price {
float: left;
font-size: 16px;
color: #f60;
}
.button-wrapper {
float: right;
}
}
}
}
.back-to-top {
position: fixed;
bottom: 50px;
right: 50px;
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #f60;
color: #fff;
border-radius: 50%;
cursor: pointer;
transition: opacity 0.3s;
i {
font-size: 20px;
}
&:hover {
opacity: 0.8;
}
}
.footer {
height: 50px;
display: flex;
justify-content: center;
align-items: center;
background-color: #f5f5f5;
span {
font-size: 14px;
color: #666;
}
}
}
</style>
```
阅读全文