npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

yu-vue-mobile

v1.6.4

Published

vue移动端组件

Downloads

9

Readme

yu-vue-mobile

vue移动端组件

安装

cnpm install yu-vue-mobile --save

入口文件main.js引入插件

import Vue from 'vue';
import Plugin from 'yu-vue-mobile';   
Vue.use(new Plugin());              //引入

增加的移动端事件(tap):手指轻触屏幕触发

<!-- 原生js绑定事件 -->
let div = document.querySelector('div');
div.addEventListener('tap',e=>{});
div.ontap = function(e){}

<!-- vue绑定事件 -->
<div @tap="fn"></div>

引入阿里图标库(支持多色图标)

/* 在引入本插件时,传阿里图标项目的symbol地址 */
Vue.use(new Plugin('//at.alicdn.com/t/font_1139100_jyj7qajl4q.js')); 

/* 使用: */
<yu-icon icon="icon-taobao"></yu-icon>
/* "icon-taobao" 是某个图标的名称 */

图片懒加载:img元素出现在可视区域时才开始加载,兼容ie9

<img v-lazy="src">

src:require('./xxx.jpg')
/* 
如果浏览器不支持IntersectionObserver,则默认启用window的scroll事件;
如果你的根滚动元素不是window,而是id为'#xxx'的元素;
可以在引入本插件时,提供你的根滚动元素id。
该元素也可以是vue组件中的元素,不用担心元素是否已在浏览器渲染的问题。
提供根滚动元素id,举例:Vue.use(new Plugin(),{ root:'#xxx' }) 
*/

轮播图

<!-- 水平方向 -->
<yu-slide :imgs="imgs" width="300px" ></yu-slide>

imgs:[ require('./1.jpg'), require('./2.jpg') ],  //轮播图片数组
width:"300px"   //轮播窗口的宽度

<!-- 垂直方向 -->
<yu-slide y :imgs="imgs" width="300px"></yu-slide>

vue的过渡动画

<yu-transition name="left" :duration="600">
	<div v-show="show"></div>
</yu-transition>

name:'left'|'right'|'left-right'|'right-left'|'opacity'|'top'|'bottom'|'top-bottom'|'bottom-top', //元素进入和离开的过渡动画
duration:600		//过渡动画持续600毫秒,duration的可选值:300,600,1000,1500,2000,3000,5000,8000

组件缓存(封装了keep-alive和transition)

<yu-cache name="left">
	<v-test v-if="show"></v-test>
</yu-cache>

import vTest from './test.vue'
components:{ vTest },
show:true|false		//控制vTest组件激活或停用,会触发vTest的勾子函数activated或deactivated

路由页面渲染(加了过渡动画和keep-alive的router-view)

<!-- 过渡:left进入和离开 -->
<yu-view transition="left"></yu-view>   

transition:'left'|'right'|'left-right'|'right-left'|'opacity'|'top'|'bottom'|'top-bottom'|'bottom-top', //页面进入和离开的过渡动画

<!-- 如果是命名视图 -->
<yu-view name="a"></yu-view>
name:'a',   //{path:"/",components:{ a:a组件 }},渲染a组件

<!-- 绝对定位占满父元素 -->
<yu-view fill></yu-view>   

<!-- 显示在视图最前面,z-index:1 -->
<yu-view front></yu-view>

路由组件的容器

<!-- 本组件对应的路由路径,必写 -->
<yu-route-page path="/">路由页面内容</yu-route-page>

<!-- 有返回图标,点击执行$router.go(-1) -->
<yu-route-page back>路由页面内容</yu-route-page>

<!-- 子路由组件的过渡动画 -->
<yu-route-page transition="right">路由页面内容</yu-route-page>

<!-- router-view渲染指定name的子路由组件 -->
<yu-route-page name="default">路由页面内容</yu-route-page>

<!-- router-view是本组件内的第一个子元素,(没有top则是最后一个子元素) -->
<yu-route-page top>路由页面内容</yu-route-page>

<!-- 子路由组件置于视觉最前那层,z-index:1 -->
<yu-route-page front>路由页面内容</yu-route-page>

<!-- 子路由组件全屏显示 -->
<yu-route-page fill>路由页面内容</yu-route-page>

遮罩层(透明黑色)

<yu-shade v-model="show"></yu-shade>

show:true|false

下拉刷新、上拉加载

<yu-pull @pull-down="downFn" @pull-up="upFn">
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
</yu-pull>

@pull-down  //当用户下拉刷新时,触发事件
downFn(child){
    setTimeout(()=>{
		child.load = false; //刷新完成,关闭"加载中"样式
	},1000);
}
@pull-up    //当滚动条到底部时,触发事件

侧边栏

//左侧边栏,占屏幕宽度50%
<yu-left v-model="show" :size="50"></yu-left>

//右侧边栏,占屏幕宽度100%
<yu-right v-model="show" :size="100"></yu-right>

//上侧边栏,占屏幕高度50%
<yu-top v-model="show" :size="50"></yu-top>

//下侧边栏,占屏幕高度50%
<yu-bottom v-model="show" :size="50"></yu-bottom>

show:true  //本组件是否显示

路由导航

<yu-router-title :titles="titles" width="100%"></yu-router-title>

titles:[
	{ path:'/a',text:'a' },				//<router-link to="/a">a</router-link>
	{ path:'/b',text:'b' }
],
width:'100%'		//导航的宽度

路由页面渲染(加了手指滑动事件的router-view)

<!-- 水平方向滑动 -->
<yu-router-body :titles="titles"></yu-router-body>

titles:[
	{ path:'/a',text:'a' },	
	{ path:'/b',text:'b' }
],

<!-- 垂直方向滑动 -->
<yu-router-body y :titles="titles"></yu-router-body>

滑动切换页面的导航

<yu-touch-title v-model="index" :titles="titles"></yu-touch-title>

index:0			//当前高亮的导航标题项
titles:[ 'a','b','c','d' ]			//导航标题

横向滑动切换页面

<yu-touch-x v-model="index">
    <div class="page0">0</div>
    <div class="page1">1</div>
    <div class="page2">2</div>
    <div class="page3">3</div>
</yu-touch-x>

index:0,  //当前页面的索引(.page0页面)

纵向滑动切换页面

<yu-touch-y v-model="index">
    <div class="page0">0</div>
    <div class="page1">1</div>
    <div class="page2">2</div>
    <div class="page3">3</div>
</yu-touch-y>

index:0,  //当前页面的索引(.page0页面)

标签页

//横向标签页
<yu-tab-x :titles="titles" :default="0" height="100px">
	<div>标签名0的内容</div>
	<div>标签名1的内容</div>
	<div>标签名2的内容</div>
</yu-tab-x>

//纵向标签页
<yu-tab-y :titles="titles" :default="0" height="100px">
	<div>标签名0的内容</div>
	<div>标签名1的内容</div>
	<div>标签名2的内容</div>
</yu-tab-y>

titles:['标签名0','标签名1','标签名2'],
default:0,  //默认选中第一项:'标签名0'
height:"100px"||"auto"  //标签内容的高度100px,默认是"auto"

表单弹框

<yu-form 
	v-model="show" 
	title="用户注册" 
	:img="require('public/1.jpg')" 
	:labels="['用户','密码','确认密码','手机','邮箱','验证码']" 
	@submit="fn">
</yu-form>

show:true|false,  //控制该弹框是否显示
title:'',   //表单标题
img:'',     //验证码图片的src
labels:[],  //有哪些input输入框

@submit:function(arr){},   //点击表单的提交按钮时触发本事件
<!-- 事件回调函数的参数arr说明: -->
<!-- 
[ 
	{ allow:true, text:'用户', type:'username', value:'' }, 
	{ allow:true, text:'密码', type:'password', value:'' },
	……
] 
-->
<!-- allow:false,则对应的input的border变红 -->
<!-- value:'',是用户在input输入框的输入内容 -->