微信内网页被键盘顶起后不回弹的解决方案

背景介绍

在微信内调试一个有表单弹窗的页面,当激活弹窗内的表单项时,系统键盘弹起并把网页也相应的顶上去了。而在取消输入后,键盘收回,被顶起来的网页内容并没有正确的回落到原来的位置。此时你再对弹窗做一些交互的话就会存在接触点和弹窗真实的 DOM 不在同一个位置,导致交互失败或者错乱的问题。如下图红圈位置:

阅读全文

cmder - windows系统下的命令行工具

由于现在公司用的是Windows电脑,而对于经常要用到命令行工具的开发来说,敲CMD可真是要命的。于是就找到了一款在windows下好用且很强大的cmd命令工具 - Cmder
Cmder = Cmd + PowerShell + Git for Windows + “bash”。

阅读全文

移动端实现CSS hover效果

我们知道在PC上实现鼠标移动到按钮上的交互很简单:利用css的:hover和:active 就可以很好的实现。但是在H5的移动端上面要实现这样的交互有点麻烦,假如你还是只写:hover或:active 的话,在交互上会看到只有:hover或:active时的样式,而且还会一直保持这样样式,除非你在其他地方有交互操作。这多蛋疼啊,难道H5移动端就没办法了吗?有的!

阅读全文

写一个快速生成组件文件的Vue Cli Service插件

每次写 Vue 组件的时候,都要在 Components 文件夹里面手动新建一个文件,然后再把 template、script 和 style 的结构写一遍或者从其他文件 copy 一份出来再粘贴进去实在是费工夫。说实话,我(bu)比(shi)较(lan)懒 (我写 React 组件的时候却是这么干的)。

阅读全文

微信小程序canvas利用网络图片画图之坑

只要是一张可以正常查看的图片,一般老说通过 canvas 就可以将这个图片直接绘制出来。但是在微信小程序里面canvas 有一个坑就是不能够直接利用网络图片进行绘制。这在微信开发者工具中模拟是正常的,但是在手机端则显得力不从心了 — 画不出来啊!!!

不过,并不是没有解决方案。通过使用 wx.getImageInfo 的方式可以将网络图片缓存下来,然后我们使用缓存的图片地址来进行画图。效果是相当的漂亮了。

阅读全文

Centos 6虚拟机安装Nginx

昨天已经把虚拟机安装好了,现在来给虚拟机配置服务器环境。首先来安装Nginx吧:

登录

使用root账号登录虚拟机:

1
2
3
[vagrant@centos6]:# su
密码:
[root@centos6]:#

阅读全文

使用Vagrant、Virtualbox安装Centos 6虚拟机

写在前面

对于前端来讲,通过node就可以很快的启动一个本地服务。但是受限于公网环境,国内的服务提供商提供的node环境以及MongoDB服务价格太高,不得不转向支持PHP的服务器。没办法,只得撸起袖子码php了。

阅读全文

微信小程序wepy框架学习-组件通信

wepy提供了$broadcast$emit$invoke三个方法来为我们实现page和子组件或者组件和组件之间的通信。

$broadcast

page通过$broadcast方法向所有被引用的组件发送指定广播,子组件如果有需要则在events里面设置接收器用来接收page的广播,然后进行相应的事件处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!-- page -->
<view @tap="changeText">
<comA />
<comB />
</view>

<script>
import wepy from 'wepy';
import ComA from 'components/coma';
import ComB from 'components/comb';
export default class Index extends wepy.page {
components = {
comA: ComA,
comB: ComB
};
methods = {
changeText() {
this.$broadcast('com-changeText');
}
};
}
</script>

<!-- comA -->
<view>{{text}}</view>

<script>
import wepy from 'wepy';
export default class ComA extends wepy.component {
data = {
text: 'comA'
};
events = {
'com-changeText': () => {
this.text = 'comA接收到来自父级broadcast的变更';
this.$apply();
}
};
}
</script>

<!-- comB -->
<view>{{text}}</view>

<script>
import wepy from 'wepy';
export default class ComB extends wepy.component {
data = {
text: 'comB'
};
events = {
'com-changeText': () => {
this.text = 'comA接收到来自父级broadcast的变更';
this.$apply();
}
};
}
</script>

阅读全文

微信小程序wepy框架学习-数据绑定

在小程序原生开发里面,我们可以通过 this.setData({}) 来设置操作data数据,而wepy中将该操作进行了封装,我们可以直接使用 this.dataName 来实现data数据的赋值或变更。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- page -->
<view @tap="change">{{title}}</view>

<script>
import wepy from 'wepy';
export default class Index extends wepy.page {
data = {
title: '初始化内容'
};
methods = {
change() {
this.title = '改变内容';
}
};
}
</script>

阅读全文

微信小程序wepy框架学习-Props传值

Props是page和组件,组件和组件之间传递数据的媒介,不仅是数据,还可以是自定义事件(方法)。

静态值

静态值可以看做是一个常量,固定不变的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!-- component -->
<text>{{title}}</text>
<script>
import wepy from 'wepy';
export default class Com extends wepy.component {
props = {
title: String
};
data = {}
}
</script>

<!-- page -->
<view>
<com title="常量值" />
</view>
<script>
import wepy from 'wepy';
import Com from 'components/com'; // 引入com组件
export default class Index extends wepy.page {
components = {
com: Com
};
}
</script>

阅读全文