
微信小程序 ,列表头滚动的过程中 ,view 悬浮在顶部 ,如何实现这样的一个效果呢??
//indexjs
//获取应用实例
const app = getApp()
Page({
data: {
testData: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
testData2: [1, 2, 3, 4, 5, 10],
//是否显示 悬停布局
isshow:false,
//悬浮布局的数据
toptexxt:""
},
onLoad: function () {
},
/
页面加载完成
/
onReady: function () {
},
/
页面滚动监听
/
onPageScroll: function (e) {
//consolelog(e)
let that = this
let query = wxcreateSelectorQuery()
queryselectAll("section-cell")boundingClientRect(function (res) {
consolelog(res)
let size =reslength;
let position = -1;
let topshow = -1000;//根据需求设置大小
let i=0;
//根据 top 的 大小 获取 当前距离顶部最近的view 的下标, 负数最大值 或者是0,
for(i=0;i<size;i++){0
let top = res[i]top;
if(top<=0 && top>topshow ){
topshow = top;
position=i;
}
}
consolelog("当前坐标是 position = "+position)
let isshow =false;
if (res[0]top<0){
if(position==-1) position=0;
isshow = true;
}
thatsetData({
isshow: isshow,
toptexxt: isshowthatdatatestData[position]:""
})
})exec()
},
})
<!--indexwxml-->
<view>
<view class='header'>这里是header</view>
<view hidden='{{!isshow}}'>
<view class= "section-header section-fixed" >这是section-header {{toptexxt}}</view>
</view>
<view wx:for="{{testData}}" wx:key="{{testData}}">
<view>
<view class='section-cell' id='top{{item}}'>{{item}} </view>
<view wx:for="{{testData2}}" wx:key="{{testData2}}">
<view class='section-cell2' id='child{{item}}'>{{item}}</view>
</view>
</view>
</view>
</view>
/indexwxss/
section-placeholder {
background-color: white;
}
section-fixed {
position: fixed;
top: 0;
}
header {
height: 300rpx;
width: 750rpx;
background-color: bisque;
}
section-header {
height: 80rpx;
width: 750rpx;
background-color: rebeccapurple;
}
section-cell {
width: 750rpx;
height:80rpx;
background-color: gold;
margin-top: 2rpx;
}
section-cell2 {
height: 50rpx;
width: 750rpx;
background-color: darkred;
}
效果
首先分析制作的思路:
1在appjson文件的pages数组里加上main文件夹和template(模板)文件夹的路径。
2在mainjs文件中,在onLoad()函数中调用loadInfo()函数。
3 自定义获取位置的函数loadInfo(),调用wxgetLocation,用于获取当前的纬度(latitude)和经度(longitude)。在loadInfo()函数中接着调用loadCity()函数。
4 自定义获取城市的函数loadCity(),调用wxrequest,在“百度地图开放平台”网站中注册自己的AK,通过获取城市信息的网址(>
四级小程序单词的数据是从数据库获得的。
1、在MYSQL中新建一个test数据库,在里面新建一张type数据表。
2、新建一个project小程序项目。
3、在project项目内,新建一个index模块来从数据库获得数据,并将数据输出在indexwxml页面。
4、在index模块中indexjs页面,在onLoad中使用wxrequest方法向服务端文件请求数据。url为请求数据的地址;data为传输的参数,这里设置为空;method为传递参数的方式,header用于设置请求的数据类型,success是成功获得数据后的 *** 作。
5、在indexwxml页面,使用for循环遍历输出indexjs传递过来的数据data,通过item将data数据输出在页面。
6、在服务端新建一个apiphp页面来接收微信小程序的数据请求。
7、最后编译小程序,查看从数据表type获得数据内容,成功从数据库读取数据并输出在页面上。
<view>父组件msg的值:{{msg}}</view>
<Header msg="{{msg}}" bindchildChange="change" ></Header>
<block wx:for="{{list}}" wx:key="index">
<ListItem rItem="{{item}}" bindchildGO="childGO"></ListItem>
</block>
<Header msg="{{msg}}"></Header>
/ pages/list/listwxss /
item{
padding: 5px;
}
img1{
width: 120px;
height: 120px;
border-radius: 5px;
}
row{
flex: 1;
height: 120px;
}
title{
padding: 10px;
}
dec{
padding:0 10px;
}
// pages/list/listjs
Page({
/
页面的初始数据
/
data: {
msg:"你是我的小宝贝",
list:[{
url:">
我们整体性的架构设计,包含一个Web管理后台、一个Web API统一接口层、当然还有数据库什么,另外还有一个小程序客户端。整个架构体系还是以我之前随笔介绍的《整合微信小程序的Web API接口层的架构设计》内容为蓝本
整个体系以Web API为主提供服务,同时后台管理系统通过各种界面维护着数据的增删改等基础管理工作。
Web API的分层,我们可以通过下图来了解具体的分层结构。
随着基于JSON格式的Web API的广泛应用,越来越多的企业采用Web API接口服务层,作为统一接口的核心所在,也成为Web API核心层。基于JSON格式的接口,可以广泛地、跨平台的应用于IOS、安卓等移动端,也可以应用在常规的Web业务系统,Winform业务系统、微信应用、微信小程序等方方面面,因此企业内部形成自己是的一套Web API标准和详细的文档非常重要。
我们可以细化为下面的架构设计图,所有模块均围绕着Web API 接口层进行扩展,底层的数据存储对上层的应用是完全透明,我们可以根据需要拆分各种业务数据库,以及使用我们认为合适的数据库。
其中我们在Web API接口层上还看到一个微信消息交互的模块,这个模块我们为了方便域名端口的处理,和Web API 是统一放在一起的,它负责和腾讯微信服务器进行消息的交互处理,从而实现各种消息推送处理。
2、基于AspNET MVC的Web API接口的实现
1)GET方式
GET方式,接口参数包括有零或一个参数,以及多个参数的方式,返回的值可以是简单的字符串等基础类型,也可以是复杂的自定义对象类型等,如下面几种接口代码所示。
/// <summary>
/// 简单的GET方式获取数据 /// </summary>
/// <param name="id">字符串ID</param>
/// <param name="token">接口访问令牌</param>
/// <returns>返回字符串值</returns> [>
2)POST方式
POST方式,同样也和GET方式的一样,接口参数包括有零或一个参数,以及多个参数的方式,返回的值可以是简单的字符串等基础类型,也可以是复杂的自定义对象类型等,这就是几种常规的接口处理。但是,对于多个参数的接口定义,我们需要对它们进行转换处理,需要使用JObject param的方式进行定义,这样可以很好对多个参数或者自定义的实体类参数进行解析。
下面是几种常规的POST接口定义方式。
/// <summary>
/// 测试使用POST方式提交数据,参数输入为多个,使用JObject处理 /// </summary>
/// <returns>返回字符串</returns> [>
接口类,我们一般把类继承自自己的API接口基类,并对它的异常处理进行处理,以便对错误统一格式回应,如下接口类的代码定义所示。
/// <summary>
/// 此控制器用来详细介绍各种GET/POST的接口设计 /// 对于GET方式,方法可以接受多个参数 /// 对于POST方式,方法如果有参数使用POST方式,统一采用JObject param对象参数。 /// 如果POST方式有多个参数,如Web API接口加token,则需要客户端把该参数追加在URL上,如urltoken=123,然后在使用POST *** 作 /// </summary> [ExceptionHandling] public class TestController : BaseApiController
其中ExceptionHandling是我们的统一异常过滤处理定义,代码如下所示。
/// <summary>
/// API自定义错误过滤器属性 /// </summary>
public class ExceptionHandlingAttribute : ExceptionFilterAttribute
{ /// <summary>
/// 统一对调用异常信息进行处理,返回自定义的异常信息 /// </summary>
/// <param name="context">>
3)小程序端代码处理
小程序端主要是通过JS代码进行处理,实现数据的获取及提交处理等。
如我们列举一个代表性的POST处理代码,如下所示。
//测试POst方法 wxrequest({
url: '>
而对于GET方式,我们的小程序调用方式如下所示。
getFilms: function(start) {
consolelog('start:' + start); var that = this
wxrequest({
url: '>
以上就是我们常规接口(单个参数或者多个参数,简单对象和复杂对象的处理)的定义代码,希望读者在开发Web API接口的时候,可以有所帮助。
一、引入模板
小程序提供了两个引入外部模板的方法:import和include
使用外部模板可以实现大部分共同页面的代码利用,在一个app中,头部和脚部基本不会
变动太大,这时就可以通过模板的方式引入,实现多个页面的复用。
11 import
示例:
<!--viewwxml-->
<template name="view">
<text>{{text}}</text>
</template>
1
2
3
4
引入:
<import src="viewwxml"/>
<template is="view" data="{{text: 'forbar'}}"/>
1
2
注意:import有作用域,即import引入的模板只在当前页面有效,即import不会向下查找另外的模板
12 include
include标签可以看作是对 “html”的一个拷贝,即将外部的wxml片段拷贝进文档中
示例:
外部wxml片段
<!-- headerwxml -->
<view> header </view>
<!-- footerwxml -->
<view> footer </view>
1
2
3
4
<!-- indexwxml -->
<include src="headerwxml"/>
<view> body </view>
<include src="footerwxml"/>
1
2
3
4
5
总结:import是引入模板片段,且有作用域限制,不能进行模板嵌套。include是引入wxml片段,相当于代码拷贝。
二、WXSS 微信样式表
小程序中,页面样式的渲染通过wxss文件实现,wxss可以看成是css,因为它们都在实现相同的功能。实质上wxss也是在css的基础之上进行了扩充和修改得到的。
wxss在css上的扩展特性:
1)、尺寸单位:rpx
rpx:是一个相对像素单位,可以根据屏幕宽度进行自适应。
针对移动端的开发,设计稿一般都是以iphone6为标准的。而iphone用的是视网膜屏,即我们css中设定的1px,在iphone上实际是由2px2px的像素点组成的。
以iphone6为准,屏幕宽度375px,共有750个物理像素,则750rpx=350px,即1rpx=05px
2)、样式导入 @import
跟在css中的外部样式表的导入类似
@import "commonwxss";
以上就是关于微信小程序 ,列表头滚动的过程中 view 悬浮在顶部全部的内容,包括:微信小程序 ,列表头滚动的过程中 view 悬浮在顶部、开发中怎样在小程序中添加天气组件、四级小程序单词的数据是从哪里来的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)