GVKun编程网logo

js实现微信小程序左右滑动功能(js实现微信小程序左右滑动功能的方法)

18

在本文中,我们将带你了解js实现微信小程序左右滑动功能在这篇文章中,我们将为您详细介绍js实现微信小程序左右滑动功能的方方面面,并解答js实现微信小程序左右滑动功能的方法常见的疑惑,同时我们还将给您一

在本文中,我们将带你了解js实现微信小程序左右滑动功能在这篇文章中,我们将为您详细介绍js实现微信小程序左右滑动功能的方方面面,并解答js实现微信小程序左右滑动功能的方法常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Android 禁止 Viewpager 左右滑动功能、Jenkins实现微信小程序持续部署、js实现手机web图片左右滑动效果、js实现文字左右滑动的代码

本文目录一览:

js实现微信小程序左右滑动功能(js实现微信小程序左右滑动功能的方法)

js实现微信小程序左右滑动功能(js实现微信小程序左右滑动功能的方法)

近年来有个很火的App探探,根据这个APP的功能,本文主要介绍了微信小程序左右滑动的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下,希望能帮助到大家。

左滑 右滑 你不再是一个人

无论你是一个程序猿还是一个程序媛,每天干的事除了coding还是coding,代码不能解决的问题(什么问题自己心里还没点abcd数嘛),探探能帮你解决。最近网上特流行一款交友软件叫探探(据说是yp软件)。作为探探曾经的一名从来只浏览图片但是没有yue过的资深玩家同时又是一位热爱前端的妹子,我决定要仿一下这个app。既然是寄几开发,那还不是寄几说了算,毫无疑问整款APP的主题风格被我改成我最爱的终极少女粉了hhh,下面让我们一起来感受下探探的魅力吧~

项目整体效果

项目部分功能点解析

主页图片左滑右滑对应按钮变化

首先我们来聊一下最让我头痛的地方,就是主页面的左右滑动事件并且对应按钮会相应变化,即我左滑一下图片下面的灰色按钮会有相应的动画效果,右滑则对应着图片下面的红色按钮。对于一个刚入小程序坑的妹子来说,没有大神指点不知道要在这里面的逻辑坑还要绕多久才能绕出来。得一高人指点,我才完美滴实现了这个功能。

这里写了三个大的盒子放着图片和文字信息,再将他们放到swiper-item里面,用swiper组件实现整个盒子的左右滑动

<swipercurrent= bindchange=changeswiper>
 <swiper-item class=swip>
  <view> 
   <image class=slide-image src=http://pic.qqtn.com/up/2017-12/15126388387704237.jpg mode=scaletoFill/> 
   <view class=name>K</view>
   <view class=age>♂21</view>
   <view class=conste>金牛座</view>
   <view class=status>文化/教育</view> 
  </view>
 </swiper-item>
</swiper>

盒子下面不是按钮,我是放了两张图片。

<view class=page__ft>
 <image class=notlike {{left?'active':''}} src=../../images/notlike.png />
 <image class=like {{right?'active':''}} src=../../images/like.png />
 </view>

先给他们写个滑动的时候触发的动画效果

.active {
 animation: active 1s ease;//定义一个叫做active的动画
}
@keyframes active {//补充active动作脚本
 0% {
  transform: scale(0.8);
 }
 50% {
  transform: scale(1.2);
 }
 100% {
  transform: scale(1.0);
 }
}

在page的data里面定义三个变量,将left,right变量绑定到对应图片中

data: {
 left: false ,
 right: false,
 activeIndex: 0
},

在swiper绑定事件中具体判断左右滑动事件

changeswiper: function(e) {
 var index = e.detail.current;//当前所在页面的 index
 if(index > this.data.activeIndex) {//左滑事件判断
  this.setData({
  left: true//若为左滑,left值为true,触发图片动画效果
  })
 } else if(index < this.data.activeIndex) {//右滑事件判断
  this.setData({
  right: true//若为右滑,right值为true,触发图片动画效果
  })
 }
 setTimeout(() => {//每滑动一次,数据发生变化
  this.setData({
  activeIndex: index,
  left:false,
  right:false
  })
 }, 1000);
 },

从本地上传图片

这个呀查一查小程序开发文档就好了,先在要上传图片的地方的src绑定个数据变量

<image class=addImg src={{imgurl}} bindtap=uploadImg />

放入图片默认地址,就是上传图片之前的添加图片

data: {
 imgurl: '../../images/addImg.png'
 },

通过绑定tap事件将上传的图片地址替换进去

uploadImg: function(e) {
var that = this;
wx.chooseImage({
 count: 1, //上传图片数量
 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
 success: function (res) {// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  var tempFilePaths = res.tempFilePaths;
  that.setData({
   imgurl: tempFilePaths
 })
  wx.showToast({//显示上传成功
   title: '上传成功',
   icon: 'success',
   duration: 2000
 })
 }
}),

配对成功列表据通过easy-mock获取后台数据

block wx:for渲染一个包含多节点的结构块

<swiper-item>
 <view class=swiper-item__content>
  <block wx:for={{friendsList}} wx:key=index>
   <view class=weui-tab__content>
    <view class=weui-media-Box__hd>
     <image src={{item.avatar}} mode=aspectFit></image>
    </view> 
    <view class=weui-media-Box__bd>
     <view class=weui-media-Box__nickname>{{item.nickname}}</view>
     <view class=weui-media-Box__message>{{item.message}}</view>
    </view>
   </view>
  </block>
 </view>
</swiper-item>

获取后台数据

wx.request({
  url: 'https://www.easy-mock.com/mock/5a23dbf382614c0dc1bebf04/getFriendsList/getFriendsList',
  success: (res) => {
  // console.log(response);
  this.setData({
   friendsList: res.data.data.friendsList
  })
  }
 })

其它差不多就是切页面了,个人原因用不太习惯weui的官方样式,每个页面都是我自己呕心沥血码出来的,所以大家不喜轻点喷哈,还在努力学习当中。

相关推荐:

移动端使用CSS如何实现左右滑动的示例

详解微信小程序左右滑动切换页面

页面图片浮动左右滑动效果的简单实现案例_javascript技巧

Android 禁止 Viewpager 左右滑动功能

Android 禁止 Viewpager 左右滑动功能

做项目要求某种情况下 ViewPager 不能滑动

百度后发现重写 ViewPager,覆盖 ViewPager 的 onInterceptTouchEvent (MotionEvent arg0) 方法和 onTouchEvent (MotionEvent arg0) 方法,这两个方法的返回值都是 boolean 类型的,只需要将返回值改为 false,那么 ViewPager 就不会消耗掉手指滑动的事件了

public class NoScrollViewPager extends ViewPager {
    
    private boolean noScroll = false;
 
    public NoScrollViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    public NoScrollViewPager(Context context) {
        super(context);
    }
 
    public void setNoScroll(boolean noScroll) {
        this.noScroll = noScroll;
    }
 
    @Override
    public void scrollTo(int x, int y) {
        super.scrollTo(x, y);
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent arg0) {
        if (noScroll)
            return false;
        else
            return super.onTouchEvent(arg0);
    }
 
    @Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        if (noScroll)
            return false;
        else
            return super.onInterceptTouchEvent(arg0);
    }
 
    @Override
    public void setCurrentItem(int item, boolean smoothScroll) {
        super.setCurrentItem(item, smoothScroll);
    }
 
    @Override
    public void setCurrentItem(int item) {
        super.setCurrentItem(item);
    }
 
}

 

Jenkins实现微信小程序持续部署

Jenkins实现微信小程序持续部署

痛点?

自动化一直是我们前端工程化的一个重要方向,前端工程从构建到部署,以自动化脚本执行替代人工操作,不仅能更好地减少中间流程出现的误操作,还能使得开发从重复性的劳动中解放出来;

小程序开发受限于平台的开发工具,我们在开发的过程中,编译以及部署(上传代码)小程序代码,都需要通过可视化的开发工具,所以H5开发中使用的持续部署流程,并不适用于小程序开发流程;这就使得我们在开发小程序的过程中,构建和发布代码到测试和线上环境,往往需要通过开发的手动操作,万一出现手工误操作,就会阻断测试流程或者出现生产事故了;设想一下以下场景:

  • 场景:一个小程序工程往往涉及到多个分支并行开发,每个分支对应着不同的需求或特性,在版本迭代的过程中,每个分支对应上线时间可能不一样;在一个分支正在测试阶段,另一个分支正在开发阶段的情况下,测试找你去修复测试分支的bug,这个时候,你就需要切换到测试分支去修复问题,重新构建和上传代码,提供测试一个新的二维码,然后再回到新的开发分支继续开发;一旦出现新的bug,你又要重复上述工作;

miniprogram_build

在这个过程中,构建和部署代码的重复性劳动,大大降低了开发的效率;解决这个痛点,将能提升效率;

解决思路

我们知道,H5持续发布的大致流程可以是由Jenkins触发构建脚本,构建脚本运行生成目标代码的dist文件夹,再通过脚本将dist文件夹上传至部署的服务器目录中(此处简化描述了,实际流程可能会更加复杂);这里注意到了构建和上传的动作都是由脚本执行的,而一般的脚本会使用bash来实现:

git clone xxx
git checkout target_branch
npm install
npm run build
tar dist

执行完脚本后,由Jenkins通过ssh将文件上传到部署的服务器目录中;

那么问题来了,小程序的持续发布是否可以参照呢?这里需要解决的是小程序的构建和上传是否也能实现相关的脚本;

答案是可以的,微信小程序开发工具在新的版本中,推出了命令行调用http调用两种方式,使得构建和上传的流程不在拘泥于开发工具的可视化界面;这也意味着,我们也可以编写bash脚本,在Jenkins中自动化执行这些流程;

好,现在就一起来实践一下!

命令行和http调用

在新版本的微信开发者工具中,提供了命令行调用和http调用两种方式进行登录、预览、上传等操作,具体使用方式可以直接参照官方文档;

需要注意的是,这两种调用都需要先在微信开发工具的设置 > 通用设置 > 安全中开启服务端口。

二者有什么区别呢:

  • 命令行调用的方式,允许在当前机器上,通过命令行工具或者shell脚本对微信小程序开发工具中的命令进行调用;
  • http调用的方式,允许在当前机器上,通过http请求的方式调用微信小程序开发工具;该方式是否支持跨机器调用,还需要进一步研究,这里先不讨论;
本文中将使用命令行调用去实现小程序的自动化部署。

Jenkins配置

在使用Jenkins构建部署上,存在多种方式;你可以直接在你的Jenkins服务器的机器上完成部署,但是由于小程序的命令行和http调用只提供MacWindows两种方式,所以这就意味着Jenkins服务也需要在对应的操作系统上;不过,Jenkins的服务也有可能会部署在Linux系统上,而Linux上不支持小程序的命令行和http调用,因此,在这种情况下,就有必要将Jenkins服务和小程序的构建服务进行分离。

实现Master/Slave主从模式

正好,Jenkins支持Master/Slave模式,在这种模式下,Jenkins服务可以部署在Linux服务器上,作为Master机器;而小程序的构建机器可以作为Jenkins服务器的Slave节点,专门运行由Master机器触发的小程序构建任务;

这里选择一台Mac机器作为小程序的构建机器,将这台机器配置为Slave节点时,需要在Jenkins按照如下步骤配置:

  • Manage Jenkins > Manage Nodes and Clouds中选择新建节点;
  • 新建节点时,选择Permanant Agent,然后开始配置节点信息;
  • 配置节点信息时,远程工作目录是指在Mac上运行jenkins的工作目录,需要自己手动创建一个目录,这样后面git拉到的代码会自动放到该目录下,这里一定要注意权限,文件目录设为可读可写,要不然后面jenkins启动时候会遇到权限问题;
  • 用法选择Only build jobs with label expressions matching this node,确保只有Jenkins任务中声明的Label匹配,才能使用该Slave节点;
  • 启动方式选择Launch agents via SSH,Credentials配置时,按照Slave机器的用户名和密码填写即可;

jenkins_slave_config

  • 配置完节点信息后,记得需要在Slave节点的Mac机器上,创建对应的远程工作目录,否则会构建时会提示找不到对应目录;
  • 最后,记得开启Slave节点Mac机器上的远程登录权限,否则无法通过SSH进行连接;
  • 成功后,会看到构建的节点多了一个mac_node,但此时,节点会处于未连接的状态,需要打开节点,再选择Launch agent进行启动;

ci_jenkins_new_node

构建任务的创建

命令行调用中的命令需要接收多个参数,例如upload命令就需要传递项目地址版本号备注等的参数,这些参数有一些会根据需求而改变,例如版本号可能每次都会变化;但是原始的Jenkins允许接收的参数有限,所以为了拓展参数,这里使用提前安装Extended Choice Parameter Plug-InGit Parameter Plug-In用来拓展构建参数以及Git分支参数;

  • 创建一个Freestyle Project,配置String Parameter:appId参数、版本号、描述;
  • 配置Git相关参数,例如使用Git Parameter插件提供分支选择;

config_git_parameter

  • 配置Git仓库,注意配好Credentials

config_git_repo

  • 限制项目运行的节点为新创建的mac_node节点;

restrict_node

  • 配置mac_node主机的环境参数,在Manage Jenkins > Manage Nodes and Clouds中选择对应的主机节点,在配置中,设置环境参数,PATH可以从主机中通过echo $PATH命令查看;

jenkins_node_env_var

  • Jenkins任务中的Execute shell填写shell脚本;
  • 完成!其他的功能可以按照实际的需求进行扩展;

脚本的实现

由于本文将使用命令行调用去实现小程序的自动化部署,下面将实现对应的shell脚本:

git checkout ${BRANCH}

npm i

alias mpcli=''/Applications/wechatwebdevtools.app/Contents/MacOS/cli''

mpcli open

npm run build:weapp

mpcli upload --project ${WORKSPACE}/dist -v ${VERSION} -d ${DESC}
注意,需要先登录开发者工具

大致流程为:

  • 切换指定分支,安装依赖;
  • 设置alias,缩短命令长度;
  • 执行open命令,确保小程序开发工具已经打开;
  • 执行构建命令;
  • 上传dist目录代码;

思路汇总

根据解决思路,各个服务之间的关系如下图所示:

sum

测试

下面就看看执行的效果:

  • 选择Build with Parameters,填写必须的参数:

build_params

  • 点击构建后,查看控制台输出,如下结果为成功!

build_result

总结

本篇文章主要分享了关于在小程序构建流程中的一个痛点,并且通过Jenkins和小程序开发工具的命令行调用去解决在开发流程上的问题,实现构建流程的自动化;文章中不仅有脚本的实现,而且还有Jenkins的配置,思路会比较简单的,在实际应用中,可以结合具体应用场景,再进行改造,这里先抛砖引玉;最后希望文章能对大家有启发,同时也欢迎大家讨论指正!

js实现手机web图片左右滑动效果

js实现手机web图片左右滑动效果

最近在做一个手机端web站点,里面有一个图片展示效果:

1、点击任意图片时图片全屏展示,左右滑动能展示其他的图片。 2、滑动超过一定范围自动滑到下一张图片,不超过则回退到当前照片位置。此处的滑动要带动画效果

实现:

每张图片外面一个div,将其宽度设置为100%,最外层有一个div[命名为outerDiv],其宽度设为:总图片数量*100+‘%'。给最外层div设置touchstart,touchmove,touchend事件监听处理函数,在touchmove中根据移动的x轴距离动态改变outerDiv的x轴距离即可实现图片滑动效果,在touchend中根据当前滑动的距离判断滑动到下一张还是回退当前图片位置。

之前我们可以通过设置outerDiv的position属性,然后改变left值实现移动效果,这里我用的是css3的动画函数transform,简单,且可以实现动画效果

transform参数:

rush:js;"> -webkit-transform:translate(100px,200px) tr //可以设置x、y轴方向移动距离 -webkit-transform:translateX(100px) translateY(200px) translateZ(3000px)

//可以设置x、y、z轴方向移动距离.3D效果
-webkit-transition:.4s ease;//设置动画时间

定义动画时间:

rush:css;"> .transition { -webkit-transition:.4s ease; -moz-transition:.4s ease; -ms-transition:.4s ease; -o-transition: .4s ease; transition:.4s ease; }

关键代码:

rush:js;"> var touchOption={touchStartX:0,startTranslateX:0,movedistance:0};

1、touchstart

rush:js;"> outerDiv.addEventListener('touchstart',function(){ $(this).removeClass('transition');//移除动画效果,否则移动时图片会颤动 touchOption.touchStartX = e.touches[0].clientX; if ($(this).css("-webkit-transform") == 'none') { touchOption.startTranslateX = 0; } else { //css-webkit-transform属性值格式:matrix(1,1,-4140,0) var transfrom_info = $('.sourcePhotoDiv').css("-webkit-transform").split(',')[4];//获取当前outerDiv的x轴坐标 touchOption.startTranslateX = parseInt(transfrom_info); } },false);

2、touchmove

rush:js;"> outerDiv.addEventListener('touchmove',function(){ touchOption.movedistance = (e.touches[0].clientX - touchOption.touchStartX); var TranslateX = touchOption.startTranslateX + touchOption.movedistance; $(this).css('-webkit-transform','translateX('+ TranslateX +'px) translateZ(0)'); //移动图片 },false);

3、touchend

rush:js;"> outerDiv.addEventListener('touchend',function(){ $(this).addClass('transition);//添加动画效果 var moveX=100;//此处计算移动移动下一张图片还是退货当前图片代码省略 $(this).css('-webkit-transform','translateX('+ moveX +'px) translateZ(0)'); //移动图片 },false);

总结:

1、outerDiv的动画参数和效果都是js动态添加的,不需要事先定义 2、用translate(x,y)这种参数时,图片移动时会颤动 3、用translateX() 且带translateZ(0)时图片移动正常,不带translateZ(0)同样出现颤动 4、如果用的是translateX(moveX) ranslateZ(0)这种格式,如果moveX用的是百分比值,如‘50%',在android手机自动浏览器和uc浏览器中则没有动画效果,用px单位值则正常

为防止图片移动过程颤动和保证动画效果,建议大家用translateX(100px) ranslateZ(0)这种参数,且移动距离用px值

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小编。

js实现文字左右滑动的代码

js实现文字左右滑动的代码

本篇文章给大家带来的内容是关于js实现文字左右滑动的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            border: 0;
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }

        p#d1, p#d2 {
            width: 102px;
            height: 30px;
            margin: 50px auto;
            border: 1px solid black;
            overflow: hidden;
        }

        p#d3, p#d4 {
            width: 300px;
            height: 100px;
            margin: 50px auto;
            border: 1px solid black;
            overflow: hidden;

        }
    </style>
</head>
<body>
<p id="d1">abcdefghijklmnopqrstuvwxyz123456789</p>
<p id="d2">987654321zyxwvutsrqponmlkjihgfedcba</p>
<p id="d3">
    <p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa5</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa7</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa8</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10</p>
    </p>

</p>
<p id="d4">
    <p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa5</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa7</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa8</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9</p>
        <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10</p>
    </p>

</p>
<script>
    //向左转
    var d1 = document.getElementById("d1");
    d1.innerHTML += d1.innerHTML;
    setInterval(function () {
        document.title = d1.scrollLeft;
        d1.scrollLeft++;
        if (d1.scrollLeft >= d1.scrollWidth / 2) {
            d1.scrollLeft = 0;
        }
    }, 20);
    //向右转
    var d2 = document.getElementById("d2");
    d2.innerHTML += d2.innerHTML;
    d2.scrollLeft = d2.scrollWidth / 2;
    setInterval(function () {
        document.title = d2.scrollLeft;
        d2.scrollLeft--;
        if (d2.scrollLeft <= 0) {
            d2.scrollLeft = d2.scrollWidth / 2;
        }
    }, 20);
    //向上转
    var d3 = document.getElementById("d3");
    var pd = d3.getElementsByClassName("pd")[0];
    pd.innerHTML += pd.innerHTML;
    setInterval(function () {
        d3.scrollTop++;
        if (d3.scrollTop >= d3.scrollHeight / 2) {
            d3.scrollTop = 0;
        }
    }, 20);
    //向下转
    var d4 = document.getElementById("d4");
    var pd2 = d4.getElementsByClassName("pd2")[0];
    pd2.innerHTML += pd2.innerHTML;
    d4.scrollTop = d4.scrollHeight / 2;
    setInterval(function () {
        d4.scrollTop--;
        if (d4.scrollTop <= 0) {
            d4.scrollTop = d4.scrollHeight / 2;
        }
    }, 20);

</script>
</body>
</html>
登录后复制

相关推荐:

js获取行间样式和当前样式的代码

js实现链式栈的代码实例

以上就是js实现文字左右滑动的代码的详细内容,更多请关注php中文网其它相关文章!

今天关于js实现微信小程序左右滑动功能js实现微信小程序左右滑动功能的方法的介绍到此结束,谢谢您的阅读,有关Android 禁止 Viewpager 左右滑动功能、Jenkins实现微信小程序持续部署、js实现手机web图片左右滑动效果、js实现文字左右滑动的代码等更多相关知识的信息可以在本站进行查询。

本文标签: