uniapp - 填充页面

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

目录

  • 页面效果
  • 涉及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.rhkb.cn/news/334955.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringSecurity6从入门到实战之SpringSecurity快速入门

SpringSecurity6从入门到实战之SpringSecurity快速入门 环境准备 依赖版本号springsecurity6.0.8springboot3.0.12JDK17 这里尽量与我依赖一致,免得在学习过程中出现位置的bug等 创建工程 这里直接选择springboot初始化快速搭建工程,导入对应的jdk17进行创建 直接勾选一个web…

使用Python发送电子邮件

大家好&#xff0c;当我们需要迅速、方便地与他人沟通时&#xff0c;电子邮件是无疑是一种不可或缺的通信工具。无论是在个人生活中还是工作场合&#xff0c;电子邮件都是我们日常生活中的重要组成部分。它不仅能够传递文字信息&#xff0c;还可以发送附件、链接和嵌入式多媒体…

如何将音频中的人声分离出来?

想要把一段视频中的人声跟背景音乐分离开来&#xff0c;找个好一点的音频处理软件就能把声音分离了&#xff0c;常见的有以下方法&#xff0c;一起来看看吧。 pr 打开软件&#xff0c;然后将电脑上的音频文件&#xff0c;上传到软件中&#xff0c;然后按住[ctrla]选择所有音频…

Android 布局中@NULL的使用和代码实现方式详解

文章目录 1、使用场景2、示例代码实现2.1、移除背景2.2 、移除文本2.3、移除布局宽度或高度2.4、移除提示文本2.5、移除图像资源 3、综合示例3.1、布局文件 activity_main.xml3.2、主活动文件 MainActivity.java3.4、资源文件3.5、运行结果 4、优点5、缺点6、综合分析6.1、适用…

若依启动run-modules-system.bat报错问题解决方案

在启动run-modules-system.bat时遇到了一些问题,在网上搜索无果后,排查解决完毕 1.启动nacos时,报错如下 Error creating bean with name grpcClusterServer: Invocation of init method failed; nested exception is java.io.IOException: Failed to bind to address 0.0.0.0…

AlexNet神经网络训练

导包 import tensorflow as tffrom tensorflow.keras import datasets, layers, models 加载Fashion-MNIST数据集 (train_images, train_labels), (test_images, test_labels) datasets.fashion_mnist.load_data() 归一化像素值到[0, 1]区间 train_images, test_images t…

齿轮常见故障学习笔记

大家好&#xff0c;这期咱们聊一聊齿轮常见的失效形式&#xff0c;查阅了相关的资料&#xff0c;做个笔记分享给大家&#xff0c;共同学习。 介绍 齿轮故障可能以多种方式发生。如果在设计阶段本身就尽量防止这些故障的产生&#xff0c;则可以产生改更为优化的齿轮设计。齿轮…

Burnout Drift Multiplayer(多人赛车游戏模板)

Burnout Drift Multiplayer是一个完整的项目,已在PC、Android、iOS和WebGL上发布的Burnout Drift系列中使用。 [包括最新版本的Realistic Car Controller Pro] PC、WebGL和Android演示 包括Burnout Drift系列的所有功能。您只需几分钟即可轻松添加自己的车辆、场景和配乐。 警…

【Python】【Scrapy 爬虫】理解HTML和XPath

为了从网页中抽取信息&#xff0c;必须对其结构有更多了解。我们快速浏览HTML、HTML的树状表示&#xff0c;以及在网页上选取信息的一种方式XPath。 HTML、DOM树表示以及XPath 互联网是如何工作的&#xff1f; 当两台电脑需要通信的时候&#xff0c;你必须要连接他们&#xff…

NFT Insider #131:Mocaverse NFT市值破3.5万ETH,The Sandbox 参加NFCsummit

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members&#xff08;https://twitter.com/WHALEMembers&#xff09;、BeepCrypto &#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、…

【LLM第7篇】transformer跟bert、gpt、大模型的联系

上一篇讲了transformer的原理&#xff0c;接下来&#xff0c;看看它的衍生物们。 Transformer基本架构 Transformer模型主要由两部分组成&#xff1a;编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;。编码器负责处理输入序列&#xff0c;将其…

linux解压.zip文件命令详解

在Linux中解压.zip文件&#xff0c;你可以使用unzip命令。如果你的系统中没有安装unzip&#xff0c;你可以使用包管理器来安装它。 Debian的系统&#xff08;Ubuntu&#xff09;&#xff0c;安装命令&#xff1a; sudo apt-get install unzip基于Red Hat的系统&#xff08;如…

STM32-11-电容触摸按键

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32电容触摸按键 电容触摸按键原理&#xff1a; 无手指触摸&#xff1a;上电时&…

Pytorch环境配置2.0.1+ Cuda11.7

查找cuda、cudnn、Pytorch(GPU)及cuda和NVIDIA显卡驱动对应关系 查询可支持的最高cuda版本 nvidia-smi查看支持的cuda的版本 CUDA版本对应表 我的显卡驱动是Driver Version&#xff1a;535.40.&#xff0c;那么左边对应的CUDA都可以兼容 右上角为CUDA 版本&#xff0c;可以看…

Linux 防火墙 firewalld 常用命令

1 防火墙 - firewalld 1.1 开启防火墙 # 临时性开启&#xff0c;服务器重启后会恢复为原来的状态 systemctl start firewalld # 永久性开启&#xff08;即开机启动&#xff09;&#xff0c;重启服务器后生效 systemctl enable firewalld1.2 关闭防火墙 # 临时性关闭&#xf…

基于ViutualBox+Ubuntu(Linux)的开发环境搭建

实际在选择虚拟机的时候纠结了要用virualbox还是vmware&#xff0c;初步比较结果&#xff1a; 1.virualbox能够使用vmware的硬盘格式&#xff0c;因此可以自由选择。 2.都能够实现主机和宿主机之间的文件夹共享。 3.virualbox是自由软件&#xff0c;vmware是商业软件。 在功能上…

LuatOS学习

开发顺序 Lua是脚本语言中运行速度最快的语言 资源占用极低 脚本语言运行方式 脚本语言是从上往下一行一行运行的 变量 coun 123456 a,b,c 1,2,3交换 a,b b,a在测试环境中&#xff0c;用print(a,b)打印 nil类型 未声明的变量就是nil&#xff0c;nil用来表示此变量为空…

5G工厂长啥样

5G工厂是一种新型的工业互联网基础设施&#xff0c;利用5G为代表的新一代信息通信技术集成&#xff0c;打造新型工业互联网基础设施。在5G工厂中&#xff0c;自动化和智能化设备广泛使用&#xff0c;高度互联的工厂网络得以实现&#xff0c;远程监控和管理成为可能&#xff0c;…

学习笔记——动态路由协议——OSPF(OSPF网络类型2)

2、OSPF网络类型 常见链路层协议对应的默认网络类型 网络类型 描述 常见链路层协议 Hello报文间隔 报文类型 有无DR、BDR选举 P2P 点对点网络 HDLC、PPP、LAPB 10s 以组播方式发送OSPF报文 有 P2MP 点对多点网络 无 30s 以组播方式发送Hello报文&#xff0c;单…

春秋云境CVE-2018-20604

简介 雷风影视CMS是一款采用PHP基于THINKPHP3.2.3框架开发&#xff0c;适合各类视频、影视网站的影视内容管理程序&#xff0c;该CMS存在缺陷&#xff0c;可以通过 admin.php?s/Template/edit/path/*web*..*..*..*..*1.txt 的方式读取任意文件。 正文 1.进入靶场 2./admin…