精华内容
下载资源
问答
  • 仿微信标签

    2016-04-21 21:57:22
    仿微信标签,可根据设备宽度来自动换行。代码需要重新配置pch文件。
  • 微信标签demo

    2015-08-23 10:38:06
    仿微信添加标签,回车添加标签,点击变换背景色,长按删除。有问题可直接回复邮箱ruoshui_t@163.com。欢迎共同研究。
  • Android仿微信标签功能

    2020-08-26 15:30:38
    主要为大家详细介绍了Android仿微信标签功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • PHP微信开发SDK,集成常用开发接口及微信支付,支持微信最新变更的微信标签管理。
  • 仿微信标签demo

    2015-08-22 12:06:55
    仿微信添加标签,此demo宽度计算有误差,工作较忙就没有进行调试。 回车添加标签,点击变换背景色,长按删除
  • iOS 仿微信标签

    2016-05-07 22:22:37
    一个简单的UI,仿照微信标签,简单实用了ReactiveCocoa以及Masonry。可以根据文字长度计算显示长度,也可以适应文字输入长度根据设备宽度自动换行,效果图如下: 下载地址:...

    一个简单的UI,仿照微信标签,简单实用了ReactiveCocoa以及Masonry。可以根据文字长度计算显示长度,也可以适应文字输入长度根据设备宽度自动换行,效果图如下:

    下载地址:https://github.com/KityPei/TagLabCloud.git

    展开全文
  • 主要介绍了C#微信开发之微信公众号标签管理功能 的相关资料,需要的朋友可以参考下
  • 完美tab标签仿微信上下标签
  • 解决安卓微信video标签标签劫持

    千次阅读 2019-08-15 14:54:50
    解决安卓微信video标签标签劫持 需求 期望网页中的video标签,不在安卓微信中被劫持播放。 代码 可能视频地址失效,换个视频地址,再测试。 <!DOCTYPE html> <html lang="en"> <head> <meta ...

    解决安卓微信video标签标签劫持

    需求

    期望网页中的video标签,不在安卓微信中被劫持播放。

    代码

    可能视频地址失效,换个视频地址,再测试。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div>
        hello test
    </div>
    <video id="h" src="http://cdn1.h5mugeda.com/c/uj_g/q1ob/videos/5c7f848decb65e22376710c3.mp4" playsinline=""  x-webkit-airplay="" webkit-playsinline="" x5-playsinline preload="auto"  style="width: 100%;"></video>
    
    
    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script>
    
        // IOS  webkit-playsinline="true" playsinline="true"
        // 安卓  x5-playsinline="" 且 需要执行 play() 方法
    
        //--创建页面监听,等待微信端页面加载完毕 触发音频播放
        document.addEventListener('DOMContentLoaded', function () {
            function audioAutoPlay() {
                var audio = document.getElementById('h');
                audio.play();
                document.addEventListener("WeixinJSBridgeReady", function () {
                    audio.play();
                }, false);
            }
            audioAutoPlay();
        });
        //--创建触摸监听,当浏览器打开页面时,触摸屏幕触发事件,进行音频播放
        document.addEventListener('touchstart', function () {
            function audioAutoPlay() {
                var audio = document.getElementById('h');
                audio.play();
            }
    
            audioAutoPlay();
        });
    </script>
    </body>
    </html>
    
    展开全文
  • 微信mac协议。 请进入 进行注册授权 注册后将授权配置到app.config即可使用 支持功能如下:
  • 仿微信添加标签效果

    千次阅读 2016-11-14 10:27:20
    可以说微信做的用户体验太棒了,可以做到老少皆宜,给个赞,我们也同时应该告诫自己,用户体验应该向微信看齐,微信就是我们的标杆,那我们今天也来仿一仿微信添加的标签功能。只能仿着做了,真是做不到微信的那种...

    转载请注明出处:http://blog.csdn.net/xiaoyuan511

    一、 概述

    可以说微信做的用户体验太棒了,可以做到老少皆宜,给个赞,我们也同时应该告诫自己,用户体验应该向微信看齐,微信就是我们的标杆,那我们今天也来仿一仿微信添加的标签功能。只能仿着做了,真是做不到微信的那种体验。甘拜下风。

    我们上篇学习了shape属性的用法,那我们今天就用shape来做下微信的标签功能。先看一下效果。

    我不仅用到了shape属性,还用到了翔哥的标签布局FlowLayout跟TagFlowLayout鸿洋的博客

    二、效果图

    这里写图片描述

    三 、定义shape

    • 添加标签

      <?xml version="1.0" encoding="utf-8"?>
      <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle" >
      
      <corners
        android:bottomLeftRadius="30dp"
        android:bottomRightRadius="30dp"
        android:topLeftRadius="30dp"
        android:topRightRadius="30dp" />
      
      <stroke android:dashWidth="5dp" android:dashGap="2dp" android:width="1dp" android:color="#e0e0e0"  />
      
      <padding
        android:bottom="2dp"
        android:left="10dp"
        android:right="10dp"
        android:top="2dp" />
      </shape>
      • 删除标签
      
      <?xml version="1.0" encoding="utf-8"?>
      <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
      
      <corners
          android:bottomLeftRadius="30dp"
          android:bottomRightRadius="30dp"
          android:topLeftRadius="30dp"
          android:topRightRadius="30dp" />
      
      
      <solid android:color="#00FF00" />
      
      <padding
          android:bottom="2dp"
          android:left="10dp"
          android:right="10dp"
          android:top="2dp" />
      
      </shape> 
    • 正常标签

      
      <?xml version="1.0" encoding="utf-8"?>
      <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle" >
      
      <corners
        android:bottomLeftRadius="30dp"
        android:bottomRightRadius="30dp"
        android:topLeftRadius="30dp"
        android:topRightRadius="30dp" />
      
      
      <stroke  android:width="1dp" android:color="#00FF00"  />
      
      <padding
        android:bottom="2dp"
        android:left="10dp"
        android:right="10dp"
        android:top="2dp" />
      
      </shape>  
      • 标签选中
      
          <?xml version="1.0" encoding="utf-8"?>
      <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
      
      <corners
          android:bottomLeftRadius="30dp"
          android:bottomRightRadius="30dp"
          android:topLeftRadius="30dp"
          android:topRightRadius="30dp" />
      
      
      <stroke
          android:width="1dp"
          android:color="#00FF00" />
      
      <padding
          android:bottom="2dp"
          android:left="10dp"
          android:right="10dp"
          android:top="2dp" />
      
      </shape>   

      以上是部分shape定义,大家可以下载源码自己看。

    四、 思路

    我们可以标签大概有以下逻辑

    • 点击上面标签删除 所有标签里面更新未选中
    • 点击所有标签的某一个 上面标签添加或者删除

    五、代码

    “`

    public class MainActivity extends AppCompatActivity {
    private FlowLayout flowLayout;//上面的flowLayout
    private TagFlowLayout allFlowLayout;//所有标签的TagFlowLayout
    private List<String> label_list = new ArrayList<>();//上面的标签列表
    private List<String> all_label_List = new ArrayList<>();//所有标签列表
    final List<TextView> labels = new ArrayList<>();//存放标签
    final List<Boolean> labelStates = new ArrayList<>();//存放标签状态
    final Set<Integer> set = new HashSet<>();//存放选中的
    private TagAdapter<String> tagAdapter;//标签适配器
    private LinearLayout.LayoutParams params;
    private EditText editText;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
        initEdittext();
        initAllLeblLayout();
    }
    
    
    /**
     * 初始化View
     */
    private void initView() {
        flowLayout = (FlowLayout) findViewById(R.id.id_flowlayout);
        allFlowLayout = (TagFlowLayout) findViewById(R.id.id_flowlayout_two);
        params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.setMargins(20, 20, 20, 20);
        flowLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String editTextContent = editText.getText().toString();
                if (TextUtils.isEmpty(editTextContent)) {
                    tagNormal();
                } else {
                    addLabel(editText);
                }
            }
        });
    }
    /**
     * 初始化数据
     */
    private void initData(){
        //初始化上面标签
        label_list.add("同事");
        label_list.add("亲人");
        label_list.add("同学");
        label_list.add("朋友");
        label_list.add("知己");
        //初始化下面标签列表
        all_label_List.addAll(label_list);
        all_label_List.add("异性朋友");
        all_label_List.add("高中同学");
        all_label_List.add("大学同学");
        all_label_List.add("社会朋友");
    
        for (int i = 0; i < label_list.size() ; i++) {
            editText = new EditText(getApplicationContext());//new 一个EditText
            editText.setText(label_list.get(i));
            addLabel(editText);//添加标签
        }
    
    }
    
    /**
     * 初始化默认的添加标签
     */
    private void initEdittext(){
        editText = new EditText(getApplicationContext());
        editText.setHint("添加标签");
        //设置固定宽度
        editText.setMinEms(4);
        editText.setTextSize(12);
        //设置shape
        editText.setBackgroundResource(R.drawable.label_add);
        editText.setHintTextColor(Color.parseColor("#b4b4b4"));
        editText.setTextColor(Color.parseColor("#000000"));
        editText.setLayoutParams(params);
        //添加到layout中
        flowLayout.addView(editText);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                tagNormal();
            }
    
            @Override
            public void afterTextChanged(Editable s) {
    
            }
        });
    
    }
    
    /**
     * 初始化所有标签列表
     */
    private void initAllLeblLayout() {
        //初始化适配器
        tagAdapter = new TagAdapter<String>(all_label_List) {
            @Override
            public View getView(FlowLayout parent, int position, String s) {
                TextView tv = (TextView) getLayoutInflater().inflate(R.layout.flag_adapter,
                        allFlowLayout, false);
                tv.setText(s);
                return tv;
            }
        };
    
        allFlowLayout.setAdapter(tagAdapter);
    
        //根据上面标签来判断下面的标签是否含有上面的标签
        for (int i = 0; i < label_list.size(); i++) {
            for (int j = 0; j < all_label_List.size(); j++) {
                if (label_list.get(i).equals(
                        all_label_List.get(j))) {
                    tagAdapter.setSelectedList(i);//设为选中
                }
            }
        }
        tagAdapter.notifyDataChanged();
    
    
        //给下面的标签添加监听
        allFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() {
            @Override
            public boolean onTagClick(View view, int position, FlowLayout parent) {
                if (labels.size() == 0) {
                    editText.setText(all_label_List.get(position));
                    addLabel(editText);
                    return false;
                }
                List<String> list = new ArrayList<>();
                for (int i = 0; i < labels.size(); i++) {
                    list.add(labels.get(i).getText().toString());
                }
                //如果上面包含点击的标签就删除
                if (list.contains(all_label_List.get(position))) {
                    for (int i = 0; i < list.size(); i++) {
                        if (all_label_List.get(position).equals(list.get(i))) {
                            flowLayout.removeView(labels.get(i));
                            labels.remove(i);
                        }
                    }
    
                } else {
                    editText.setText(all_label_List.get(position));
                    addLabel(editText);
                }
    
                return false;
            }
        });
    
        //已经选中的监听
        allFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() {
    
            @Override
            public void onSelected(Set<Integer> selectPosSet) {
                set.clear();
                set.addAll(selectPosSet);
            }
        });
    }
    
    /**
     * 添加标签
     * @param editText
     * @return
     */
    private boolean addLabel(EditText editText) {
        String editTextContent = editText.getText().toString();
        //判断输入是否为空
        if (editTextContent.equals(""))
            return true;
        //判断是否重复
        for (TextView tag : labels) {
            String tempStr = tag.getText().toString();
            if (tempStr.equals(editTextContent)) {
                editText.setText("");
                editText.requestFocus();
                return true;
            }
        }
        //添加标签
        final TextView temp = getTag(editText.getText().toString());
        labels.add(temp);
        labelStates.add(false);
        //添加点击事件,点击变成选中状态,选中状态下被点击则删除
        temp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int curIndex = labels.indexOf(temp);
                if (!labelStates.get(curIndex)) {
                    //显示 ×号删除
                    temp.setText(temp.getText() + " ×");
                    temp.setBackgroundResource(R.drawable.label_del);
                    temp.setTextColor(Color.parseColor("#ffffff"));
                    //修改选中状态
                    labelStates.set(curIndex, true);
                } else {
                    delByTest(temp.getText().toString());
                    flowLayout.removeView(temp);
                    labels.remove(curIndex);
                    labelStates.remove(curIndex);
                    for (int i = 0; i < label_list.size(); i++) {
                        for (int j = 0; j < labels.size(); j++) {
                            if (label_list.get(i).equals(
                                    labels.get(j).getText())) {
                                tagAdapter.setSelectedList(i);
                            }
                        }
                    }
                    tagAdapter.notifyDataChanged();
                }
            }
        });
        flowLayout.addView(temp);
        //让输入框在最后一个位置上
        editText.bringToFront();
        //清空编辑框
        editText.setText("");
        editText.requestFocus();
        return true;
    
    }
    
    
    /**
     * 根据字符删除标签
     * @param text
     */
    private void delByTest(String text) {
    
        for (int i = 0; i < all_label_List.size(); i++) {
            String a = all_label_List.get(i) + " ×";
            if (a.equals(text)) {
                set.remove(i);
            }
        }
        tagAdapter.setSelectedList(set);//重置选中的标签
    
    }
    
    
    /**
     * 标签恢复到正常状态
     */
    private void tagNormal() {
        //输入文字时取消已经选中的标签
        for (int i = 0; i < labelStates.size(); i++) {
            if (labelStates.get(i)) {
                TextView tmp = labels.get(i);
                tmp.setText(tmp.getText().toString().replace(" ×", ""));
                labelStates.set(i, false);
                tmp.setBackgroundResource(R.drawable.label_normal);
                tmp.setTextColor(Color.parseColor("#00FF00"));
            }
        }
    }
    
    
    /**
     * 创建一个正常状态的标签
     * @param label
     * @return
     */
    private TextView getTag(String label) {
        TextView textView = new TextView(getApplicationContext());
        textView.setTextSize(12);
        textView.setBackgroundResource(R.drawable.label_normal);
        textView.setTextColor(Color.parseColor("#00FF00"));
        textView.setText(label);
        textView.setLayoutParams(params);
        return textView;
    }
      }
    

    “`
    注释的很详细了。其实正常一步步来就按照逻辑来就可以实现,别慌,别乱,别急躁。什么功能都能实现的。

    六、源码

    csdn下载
    github下载

    七、欢迎大家访问我的网站和我的公众号

    极客导航—程序员自己的导航网站

    极客导航
    欢迎关注我的公众号
    关注我

    展开全文
  • UNI-APP/VUE 项目集成 微信开放标签 教程和避坑指南 文章同步发布于????前端知识营地,移动端用户可通过????‍????手机端查看以获得更佳的阅读体验和排版效果 手机端访问地址:UNI-APP/VUE 项目集成 微信开放标签 ...

    UNI-APP/VUE 项目集成 微信开放标签 教程和避坑指南

    文章同步发布于🚀前端知识营地,移动端用户可通过🐱‍🏍手机端查看以获得更佳的阅读体验和排版效果

    前言

    上一篇文章里详细介绍了UNI-APP/VUE项目如何集成微信的SDK,如果有需要在UNI-APP集成微信SDK的朋友,可以点击下方链接访问。

    使用微信开放标签的前提条件

    由于微信各方面要求严格,因此在开发前需要自检自己是否具备集成微信SDK/微信开放标签的先决条件。根据本人的开发经历,在开发集成之前需要具备的先行条件如下:

    1. 拥有自己的服务器

    主要是用于安全认证和绑定JS接口安全域名

    1. 已经完成认证的微信服务号,以便使用开放标签

    如果仅集成SDK,根据官方文档说明,好像微信公众号也可以,具体是否可行,有待读者验证

    1. 良好的心态

    嗯!微信的文档你懂的,以及微信各种出于安全的限制让开发调试异常麻烦,因此一个良好的心态异常重要

    1. 满足微信官方的配置要求

    微信开放标签有最低的微信版本要求,以及最低的系统版本要求。
    微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上。

    • 以上条件若有不满足的,请出门右拐

    如何使用微信的开放标签

    结合微信开发文档的说明和使用案列,根据提示在VUE项目中使用微信开放标签应当避免<template>标签冲突,需要使用<script type="text/wxtag-template"></script>【这里注意下,官方文档里<script>标签没有闭合,需要改正】进行代替。也就是在VUE项目中微信开放标签的使用案列如下:

    <wx-open-launch-weapp
      id="launch-btn"
      username="gh_xxxxxxxx"
      path="pages/home/index.html?user=123&action=abc"
    >
      <script type="text/wxtag-template">
        <style>.btn { padding: 12px }</style>
        <button class="btn">打开小程序</button>
      </script>
    </wx-open-launch-weapp>
    
    • 相关说明
    参数说明
    username小程序原始id,即gh_xx格式。而非小程序appid,注意区分
    path指定跳转到小程序具体页面的页面路径,必须以.html结尾 。不指定则跳转到小程序主页,初次指定建议不要填写,先保证开放标签接入成功

    VUE页面中使用开放标签案列

    <template>
      <view>
    	  <wx-open-launch-weapp
    		id="launch-btn"
    		username="gh_your_gh_id"
    		path=""
    	 >
    		<script type="text/wxtag-template">
    			<style>.btn { padding: 12px }</style>
    			<u-button type="primary">主要按钮</u-button>
    		</script>
    	</wx-open-launch-weapp> 
    	<view>
    	   页面中的其它内容
    	</view>
      </view>
      
    </template>
    
    • 注意事项
    1. 使用开放标签确保当前页面已经完成微信SDK集成。

    微信SDK集成参考UNI-APP/VUE 项目集成微信SDK教程和避坑指南

    1. 配置微信config文件时确保明确指定了将要使用的微信开放标签。如下方openTagList:['wx-open-launch-weapp'],指定将使用跳转到小程序的开放标签。
    //注入config权限配置  
        let wxConf = {
          debug: false,
          openTagList:['wx-open-launch-weapp'],  //将要使用的微信开放标签
          appId:"your_appid",
          timestamp,
          nonceStr,
          signature:res,
          jsApiList: [ //这里是需要用到的接口名称  
            'checkJsApi', //判断当前客户端版本是否支持指定JS接口  
            'updateAppMessageShareData', //分享给朋友及分享到QQ
            'updateTimelineShareData', //自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
            'onMenuShareTimeline', // 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口(即将废弃)
            'onMenuShareAppMessage', // 获取“分享给朋友”按钮点击状态及自定义分享内容接口(即将废弃)
            'onMenuShareQQ', // 获取“分享到QQ”按钮点击状态及自定义分享内容接口(即将废弃)
            'onMenuShareQZone', // 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口(即将废弃)
            'getLocation', //获取位置  
            'openLocation', //打开位置  
            'scanQRCode', //扫一扫接口  
            'chooseWXPay', //微信支付  
            'chooseImage', //拍照或从手机相册中选图接口  
            'previewImage', //预览图片接口  
            'uploadImage' //上传图片  
          ]
        };
    
    1. 请忽略控制台打印的Unknown custom element:<wx-open-launch-weapp>错误
      这个坑需要注意:如果通过控制台发现如下错误,请直接忽略。不要去百度解决办法什么的。
      在这里插入图片描述

    2. 必须真机调试才能看到效果

    这个必须引起重视!!!必须真机调试才能看到效果。
    也就是你必须将你的项目打包部署到设置了JS安全接口域名的服务器上,然后通过手机端访问,然后才能在手机上看到一个丑丑的打开小程序 的按钮。原谅我此处忘记截图了。

    可能出错的点

    如果按照上述配置未能成功出现打开小程序按钮,那么可能时如下几个地方有问题,请开发者自查。

    1. 是否已经成功集成了微信SDK

    若成功接入微信SDK,控制台会有明显的提醒

    1. 是否在微信config配置中声明了将要使用的开放标签。
    2. 是否已经将项目打包部署到设置JS安全接口域名的服务器。

    若是步骤3出现问题,则在微信开发者工具控制台会报40048错误

    1. 微信版本或者手机系统版本是否满足要求

    根据前文前提条件自查

    1. 如果还有其它问题,欢迎留言讨论。

    (正文完)

    最近一直在作微信公众号的开发,自己也申请了一个公众号,刚开始弄,主要是分享作者从各个平台收集的前端优质文章,优质教程和工具; 以知识小报的形式周更,避免打扰! 有感兴趣的同好可以扫码关注下
    🚀查看前端知识营地介绍
    在这里插入图片描述

    展开全文
  • 微信 自定义标签代码

    2015-01-24 23:15:30
    微信 自定义标签代码,采用了flowlayout布局
  • 适用于微信开放标签签名算法wx-open-launch-weapp
  • 微信mac / ipad协议Demo源码 声明 直接自己学习研究使用,不保证可用,引起任何法律纠纷概不负责 QQ交流群
  • 微信做的用户体验非常棒,今天用shape来做下微信标签功能,非常不错,对ios 仿微信添加标签功能感兴趣的朋友一起看看
  • 进行数据的动态更新,使用Mustache的方法,变量名加双括号的语法。可以使用于文本绑定,wxml中格式如下:&lt;text&gt; {{message}} &lt;/text&...js文件如下:Page({ ... message: '显示一下:社会人,...
  • 2018微信性格测试 标签 php源码 2018微信性格测试 标签 php源码 2018微信性格测试 标签 php源码
  • 微信开放标签踩坑记录

    热门讨论 2021-01-14 10:16:00
    初始化wx.config时,需要在openTagList中增加自己需要的开放标签 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log...
  • UNI-APP/VUE 项目集成微信SDK教程和...本项目是基于已经认证的微信服务号(是服务号不是微信公众号/订阅号)进行开发,根据官方文档微信公众号也是可以集成SDK的,但是微信开放标签,目前主要是跳转到小程序和跳转到APP
  • 微信小程序标签上的data-hi属性是什么?还有没有其他data-XX的属性? 还有微信不能使用DOM操作要怎么增删改查元素和元素属性的值?
  • 微信小程序轮播图片标签 微信小程序轮播图片标签 微信小程序轮播图片标签 微信小程序轮播图片标签 微信小程序轮播图片标签
  • Python获取微信好友标签信息

    千次阅读 2020-06-12 19:10:04
    import itchat 微信库 import os 文件下载库 一.微信请求函数 def get_friends(): friends = itchat.get_friends(update=True) return friends # 返回的是微信好友的信息列表 二.统计好友个数函数 def get_...
  • icon 标签一、icon 体验1.1 icon 的三个属性1.2 icon 的基本使用二、实际项目2.1 微信支付界面支付成功展示2.2 跳转等待界面2.3 搜索栏实现 一、icon 体验 先一张图 上图展示的图标便是微信提供的,我们可以直接...
  • 行业-电子政务-丰富微信客户标签的方法、电子装置及存储介质.zip
  • 主要为大家详细介绍了js仿微信公众平台打标签功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 微信小程序-滑动标签页 说明: 实现滑动标签页功能,特色: tab滑动动画 tab滑动和内容滑动联动 数据接口: 使用本地数据 目录结构: pages — 存放项目页面文件 开发环境: 微信web开发者工具 v0.11.112301 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,980
精华内容 41,592
关键字:

微信标签怎么看