uniapp - 填充页面

embedded/2024/10/18 21:24:07/

在上一篇文章中,创建了一个空白的文章模块页面。在这一篇文章,让我们来向页面中填充内容。

目录

  • 页面效果
  • 涉及uniapp组件
    • 1.view
    • 2.swiper
    • 3.scroll-view
    • 4.属性解读
      • 1) class="style1 style2 .."
      • 2) circular单属性无赋值
      • 3) :autoplay="autoplay"
      • 4) @scrolltolower=“lower”属性前加@
  • 一、顶部banner图
  • 二、静态按钮列表
  • 三、横向滚动图
  • 四、动态列表 + 详情跳转
  • 五、详情页面
  • 参考资料

页面效果

填充前的页面
![填充前](https://img-blog.csdnimg.cn/direct/2a1b2998b39a4c89a3a70ce1a7b68526.png

填充后的页面
在这里插入图片描述

涉及uniapp组件

1.view

视图容器,类似传统html中的div,用于包裹各种元素的内容。

2.swiper

滑块视图,可上下和左右滑动,一般作为banner轮播图。
在这里插入图片描述

3.scroll-view

区域滚动视图,有纵向滚动和横向滚动。
在这里插入图片描述

4.属性解读

例子:
a.<swiper class="article-swiper" circular :autoplay="autoplay" :indicator-dots="true" :duration="1000"></swiper>b.<scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" show-scrollbar="true" @scrolltoupper="upper"@scrolltolower="lower" @scroll="scroll" ></scroll-view>

1) class=“style1 style2 …”

class赋值的是自定义样式,具体样式定义内容在vue文件的

2) circular单属性无赋值

等价于circular=“true”,属性的静态绑定写法,不会变更

3) :autoplay=“autoplay”

vue中属性的动态绑定写法,绑定一个参数,参数值可根据界面操作(比如button、switch)变更

4) @scrolltolower=“lower”属性前加@

vue中动态绑定方法的写法

一、顶部banner图

/pages/article/article.vue

<template><view class="u-p-l-10 u-p-r-10">/*** class="article-swiper":样式为style中自定义的.article-swiper{...}* circular:是否采用衔接滑动* :autoplay="autoplay":是否自动切换,此处设置动态绑定autoplay参数* indicator-dots:是否显示面板展示点* duration="1000":滑动动画时长* */<swiper class="article-swiper" circular :autoplay="autoplay" indicator-dots duration="1000">/*** swiper下的每个swiper-item是一个滑动切换区域*/<swiper-item><view class="article-swiper-item uni-bg-red">red</view></swiper-item><swiper-item><view class="article-swiper-item uni-bg-green">green</view></swiper-item><swiper-item><view class="article-swiper-item uni-bg-blue">blue</view></swiper-item></swiper><view ><view>自动播放</view>/*** switch 开关选择器* :checked="autoplay":是否选中,由autoplay参数决定* @change="changeAutoplay":checked改变时触发change事件,绑定changeAutoplay方法*/<switch :checked="autoplay" @change="changeAutoplay" /></view></view>
</template>
<script>import config from "@/common/config.js"export default {data() {return {// 自动播放参数:默认值是trueautoplay: true}},methods: {changeAutoplay(e) {// 点击时开关状态取反this.autoplay = !this.autoplay}}}
</script>
<style lang="scss" scoped>.article-swiper {height: 300rpx;}.article-swiper-item {display: block;height: 300rpx;line-height: 300rpx;text-align: center;}.uni-bg-red {background-color: rgb(255, 85, 127);}.uni-bg-green {background-color: rgb(170, 255, 0);}.uni-bg-blue {background-color: rgb(85, 170, 255);}
</style>

二、静态按钮列表

/pages/article/article.vue

<template><view class="u-p-l-10 u-p-r-10"><view><view class="rowClass"><u-row>/*** u-row、u-col:流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。* span:定义u-col应该跨越的列数* v-for="(item,index) in navList":列表渲染指令*	(1) navList:data中的源数据数组*  (2) item:data数据navList数组的别名*  (3) index:navList数组的索引* @tap="clickNav(item):方法暂未定义** image:按钮图片* item.name:静态按钮名称*/<u-col span="3" text-align="center" v-for="(item,index) in navList" :key="index"><view class="u-padding-20" @tap="clickNav(item)" hover-class="hoverClass"><image :src="item.src" style="width: 90rpx;height: 90rpx;" mode="widthFix"></image><view class="tabName">{{item.name}}</view></view></u-col></u-row></view></view></view>
</template>
<script>import config from "@/common/config.js"export default {data() {return {navList:[{name:"发布文章",url:"pages/center/publishArticle"},{name:"我的文章",url:"pages/center/myArticle"},{name:"所有文章",url:"pages/center/allArticle"},{name:"浏览记录"}]}}}
</script>
<style lang="scss" scoped>
.rowClass{border-radius: 8px;background-color: rgb(255, 255, 255);margin-top: 10rpx;text-align: center;}.hoverClass{background-color: #E4E7ED;}.tabName{font-size: 28rpx;color: $u-main-color;}
</style>

三、横向滚动图

/pages/article/article.vue

<template><view class="u-p-l-10 u-p-r-10"><view><view ><text>滚动文章banner</text></view><view>/*** :scroll-top="scrollTop":设置竖向滚动条位置* scroll-y="true":允许纵向滚动* show-scrollbar="true":是否出现滚动条,仅支持app-nvue* @scrolltoupper="upper":滚动到顶部/左边,会触发 scrolltoupper 事件* @scrolltolower="lower":滚动到底部/右边,会触发 scrolltolower 事件* @scroll="scroll":滚动时触发**/<scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" show-scrollbar="true" @scrolltoupper="upper"@scrolltolower="lower" @scroll="scroll" ><view id="demo1" class="scroll-view-item uni-bg-red">A</view><view id="demo2" class="scroll-view-item uni-bg-green">B</view><view id="demo3" class="scroll-view-item uni-bg-blue">C</view></scroll-view></view></view></view>
</template>
<script>import config from "@/common/config.js"export default {data() {return {scrollTop: 0,old: {scrollTop: 0}}},methods: {upper: function(e) {console.log(e)},lower: function(e) {console.log(e)},scroll: function(e) {console.log(e)this.old.scrollTop = e.detail.scrollTop}}}
</script>
<style lang="scss" scoped>
.uni-bg-red {background-color: rgb(255, 85, 127);}.uni-bg-green {background-color: rgb(170, 255, 0);}.uni-bg-blue {background-color: rgb(85, 170, 255);}.scroll-Y {height: 300rpx;}.scroll-view-item {height: 300rpx;line-height: 300rpx;text-align: center;font-size: 36rpx;}
</style>

四、动态列表 + 详情跳转

/pages/article/article.vue

<template><view class="u-p-l-10 u-p-r-10"><view><view ><text>滚动文章列表</text></view><view class="wrap"><scroll-view scroll-Y style="heignt: 100%;width 100%"><view>/*** @click="clickContent(item):点击触发clickContent方法,跳转详情页面*/<view class="tabSwiper" v-for="(item,value) in articleList" :key="item.id" @click="clickContent(item)"><view class="top"><view class="left"><u-icon name="bell" :size="35" color="#2979ff"></u-icon><view class="title">{{ item.title }}</view><u-icon name="arrow-right" color="rgb(203,203,203)" :size="26"></u-icon></view><view class="right">{{ item.createTime }}</view></view><view class="item"><view class="content"><view class="title u-line-2">{{ item.content }}</view></view></view></view></view></scroll-view></view></view></view>
</template>
<script>import config from "@/common/config.js"export default {data() {return {pageNum:1,pageSize:50,articleList: [],}},onLoad() {this.getArticleList();},methods: {clickContent(item){if(item.id){this.$u.route('/pages/article/content', {id: item.id});}},getArticleList(){let url = "/api/cmsApi/findArticleList";this.$u.get(url,{pageNum:this.pageNum,pageSize:this.pageSize,orderByColumn:'create_time',isAsc:'desc'}).then(obj => {let data = obj.rowsdata.filter(item=>{this.articleList.push({id:item.id,title: item.smallTitle,content: item.bigTitle,createTime: item.createTime})})});}}}
</script>
<style lang="scss" scoped>
.tabSwiper {width: 710rpx;background-color: #ffffff;margin: 20rpx auto;border-radius: 20rpx;box-sizing: border-box;padding: 20rpx;font-size: 28rpx;.top {display: flex;justify-content: space-between;.left {display: flex;align-items: center;.title {margin: 0 10rpx;font-size: 32rpx;font-weight: bold;}}.right {color: $u-tips-color;}}.item {display: flex;margin: 20rpx 0 0;.left {margin-right: 20rpx;image {width: 200rpx;height: 200rpx;border-radius: 10rpx;}}.content {.title {font-size: 28rpx;line-height: 50rpx;}}.right {margin-left: 10rpx;padding-top: 20rpx;text-align: right;}}}.wrap {display: flex;flex-direction: column;height: calc(100vh - var(--window-top));width: 100%;}
</style>

五、详情页面

/pages/article/content.vue 添加详情页面的vue文件

<template><view><u-navbar :is-back="true" :title="title" :border-bottom="false"></u-navbar><view class="u-content"><u-parse :html="content":autosetTitle="true":show-with-animation="true":selectable="true"></u-parse></view></view>
</template><script>export default {data() {return {title:'文章详情',content: ``}},onLoad(option) {let id = option.idlet url = "/api/cmsApi/getArticle/"+id;this.$u.get(url).then(res => {this.title = res.data.smallTitlethis.content = res.data.articleContent});},}
</script><style>page{background-color: #FFFFFF;}
</style>
<style lang="scss" scoped>.u-content{margin:0 10rpx;padding: 24rpx;font-size: 34rpx;color: $u-main-color;line-height: 1.8;white-space: pre-wrap !important;}
</style>

在pages.json添加文章详情页的的路由

{"pages": [// pages 设置页面路径及窗口表现//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages{// pages节点的第一项为应用入口页(即首页)"path": "pages/index/index","style": {"navigationStyle": "custom" ,// 导航栏样式:取消原生系统导航栏"navigationBarTitleText": "首页", // 导航栏标题文字"enablePullDownRefresh": true,  // 下拉刷新"app-plus": {// 编译到App平台的特定样式"pullToRefresh": {// 下拉刷新小圈圈样式"support": true,"color": "#2979ff", //小圈圈的颜色"style": "circle" //小圈圈的样式}}}},{"path" : "pages/article/article","style" : {"navigationStyle": "custom" ,"navigationBarTitleText" : "文章","enablePullDownRefresh" : true}},{"path" : "pages/article/content","style" : {"navigationStyle": "custom" ,"navigationBarTitleText" : "文章详情","enablePullDownRefresh" : true}}]
}

详情页效果如下
在这里插入图片描述

参考资料

uni-app官网

在此感谢@Ann_0207的技术支持!


http://www.ppmy.cn/embedded/43697.html

相关文章

kubectl详解

文章目录 kubectl详解一、陈述式管理1、陈述式资源管理方法2、k8s相关信息查看2.1 查看版本信息2.1.1 查看资源对象简写2.1.2 查看集群信息2.1.3 配置kubectl自动补全2.1.4 查看日志 2.2 基本信息查看2.2.1 查看集群状态2.2.2 查看命名空间 2.3 命名空间操作2.3.1 查看default命…

ROS无人机追踪小车项目开发实战 | 第四届中国智能汽车创新大会圆满结束

2024年5月26日&#xff0c;阿木实验室在深圳第四届中国智能汽车创新大会上&#xff0c;开展的《Prometheus开源平台-ROS无人机追踪小车项目开发实战课》圆满结束。 该实战课从初学者的角度出发&#xff0c;通过实践性讲解和开发&#xff0c;使开发者们系统地学习了硬件系统架构…

三维科技云展厅如何突破传统展览的局限,赋能企业高效展示

一、三维科技展厅如何实现科技展示 1、高度互动的展示方式 三维科技展厅通过虚拟现实和3D建模技术&#xff0c;为观众提供高度互动的展示体验。观众可以身临其境地参观展品&#xff0c;从而获得更为真实的感受。这样的展示方式不仅能够吸引观众的注意力&#xff0c;还能够提高他…

Oracle的ROWID解析

目录 一、ROWID基础概念二、ROWID的类型三、ROWID的用途四、注意事项五、管理与监控 Oracle的ROWID是一个非常核心的概念&#xff0c;它代表了一行数据在数据库中的物理位置标识。 一、ROWID基础概念 唯一性与不变性&#xff1a;ROWID是每行数据的唯一标识符&#xff0c;它在行…

yaml文件格式详解 及 k8s实战演示

目录 一 k8s 支持的语言格式 1&#xff0c;YAML 语法格式 2&#xff0c;查看 api 资源版本标签 二 k8s 运行nginx pod实例 yaml文件 具体讲解 1&#xff0c;写一个yaml文件demo 2&#xff0c;deployment 管理nginx 的yaml 文件 3&#xff0c;创建资源对象 4&#…

Vue3中点击关闭按钮后清除 el-table 表单内容

Vue3中点击关闭按钮后清除 el-table 表单内容 一、前言1、关闭事件2、清除函数实现3、具体代码 一、前言 在 Vue 3 中&#xff0c;通过使用 Element UI 的 el-table 组件来展示表格数据是一种常见的做法。有时候&#xff0c;当用户点击关闭按钮后&#xff0c;我们希望能够清除…

ld链接文件

文章目录 1. sections缩写2. 链接脚本2.1 MEMORY&#xff08;内存命令&#xff09;2.1.1 作用2.1.2 格式 2.2 SECTIONS&#xff08;段命令&#xff09;2.2.1 作用2.2.2 格式 2.3 特殊符号含义2.4 通配符2.5 Eg 1. sections缩写 2. 链接脚本 https://www.cnblogs.com/jianhua19…

电脑出现:excel词典(xllex.dll)文件丢失或损坏的错误提示怎么办?有效的将丢失的xllex.dll修复

当遇到 Excel 提示“词典 (xllex.dll) 文件丢失或损坏”的问题时&#xff0c;通常意味着该动态链接库文件&#xff08;Dynamic Link Library&#xff0c;DLL&#xff09;&#xff0c;它与拼写检查功能相关联的&#xff0c;无法被正确找到或者合适地使用。那么有什么办法可以解决…