为了解决用户可能碰到关于"谁有完美世界国际男WX帅气瘦身代码(最好带图)?"相关的问题,志乐园经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"谁有完美世界国际男WX帅气瘦身代码(最好带图)?"相关的详细问题如下:
有的最好带图哈..[3Parts]scaleUp = 109scaleMiddle = 80scaleDown = 80[BlendFace]idFaceShape1 = 62idFaceShape2 = 62blendFaceShape = 50[Face]scaleFaceH = 85scaleFaceV = 136idFaceTex = 44[Faling]idFalingSkin = 433idFalingTex = 437[Forehead]offsetForeheadH = 64offsetForeheadV = 137offsetForeheadZ = 161rotateForehead = 134scaleForehead = 110[YokeBone]offsetYokeBoneH = 184offsetYokeBoneV = 64offsetYokeBoneZ = 132rotateYokeBone = 139scaleYokeBone = 102[Cheek]offsetCheekH = 115offsetCheekV = 140offsetCheekZ = 64scaleCheek = 64[Chain]offsetChainV = 192offsetChainZ = 84rotateChain = 148scaleChainH = 99[Jaw]offsetJawH = 161offsetJawV = 171offsetJawZ = 155scaleJawSpecial = 78scaleJawH = 134scaleJawV = 118[Eye]idEyeBaseTex = 350idEyeHighTex = 49idEyeBallTex = 48idEyeShape = 73scaleEyeH = 160scaleEyeV = 239rotateEye = 121offsetEyeH = 118offsetEyeV = 111offseteyeZ = 73scaleEyeBall = 210scaleEyeH2 = 160scaleEyeV2 = 239rotateEye2 = 121offsetEyeH2 = 118offsetEyeV2 = 111offseteyeZ2 = 73scaleEyeBall2 = 210[Brow]idBrowTex = 46idBrowShape = 68scaleBrowH = 67scaleBrowV = 64rotateBrow = 80offsetBrowH = 160offsetBrowV = 128offsetBrowZ = 120scaleBrowH2 = 67scaleBrowV2 = 64rotateBrow2 = 80offsetBrowH2 = 160offsetBrowV2 = 128offsetBrowZ2 = 120[Nose]idNoseTex = 41idNoseTipShape = 56scaleNoseTipH = 50scaleNoseTipV = 64scaleNoseTipZ = 123offsetNoseTipV = 170idNoseBridgeShape = 55scaleBridgeTipH = 64offsetBridgeTipZ = 192[Mouth]idMouthUpLipLine = 80idMouthMidLipLine = 77idMouthDownLipLine = 83thickUpLip = 106thickDownLip = 100scaleMouthH = 50offsetMouthV = 192offsetMOuthZ = 128idMouthTex = 52offsetCornerOfMouthSpecial = 132scaleMouthH2 = 50offsetCornerOfMouthSpecial2 = 132[Ear]idEarShape = 60scaleEar = 118offsetEarV = 135[Hair]idHairModel = 877idHairTex = 887[Moustache]idMoustacheTex = 204idMoustacheSkin = 186idGoateeTex = 596[Color]colorHair = colorFace = -1colorEye = -1785448colorBrow = -9942720colorMouth = -2320788colorEyeBall = 4286945colorMoustache = -855829[Body]bodyID = 0colorBody = -1headScale = 113upScale = 80waistScale = 80armWidth = 80legWidth = 80breastScale = 70要是嫌不够瘦,就自己把最后的5个数据改小就哦了
||||点击排行详解微信小程序开发教程 - Web前端 - ITeye资讯
相关知识库:
微信应用开放的服务和组件包含如下:
视图容器:视图(View)、滚动视图、Swiper
基础内容:图标、文本、进度条
表单组件:按钮、表单等等
操作反馈
导航
媒体组建:音频、图片、视频。
地图
画布
文件操作能力
网络:上传下载能力、WebSocket
数据:数据缓存能力
位置:获取位置、查看位置
设备:网络状态、系统信息、重力感应、罗盘
界面:设置导航条、导航、动画、绘图等等
开放接口:登录,包括签名加密,用户信息、微信支付、模板消息
审核:
根据《微信小程序平台服务协议》,里面有关描述如下:
2.4 为确保微信小程序平台、微信公众平台、其他用户等各方的安全、稳定及良好的用户体验,腾讯将对需要发布的小程序进行发布审核。
“发布审核”是指由用户发起,将其完成初始化开发的小程序提交至腾讯,由腾讯自行或委托第三方对该小程序的合法性、合理性、安全性、稳定性、可操作性、用户体验等各方面,采用包括但不限于开发信息核对、安全测试、UI测试、随机测试、动态测试、安全测试等方式,进行审查、甄别、试验与评估的过程。发布审核结果包括审核通过与审核不通过两种。审核不通过的,该小程序将无法发布。
之后小程序的审核极有可能采取和App store类似的策略,但相比微信其他平台的审核,各位严格和复杂。
教程:
微信应用号(小程序,「应用号」的新称呼)终于来了!目前还处于内测阶段,微信只邀请了部分企业参与封测。想必大家都关心应用号的最终形态到底是什么样子?怎样将一个「服务号」改造成为「小程序」?我们暂时以一款简单的第三方工具的实例,来演示一下开发过程吧。
OK,为了让大家尽快看到这份教程,博卡君注定要熬夜了!今晚开始更新,希望明天一早就能发布第一篇教程!记录开始!看看几天能完成变身吧!
开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南)
本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果。这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志。
1. 获取微信小程序的 AppID
首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号。注意不可直接使用服务号或订阅号的 AppID。 利用提供的帐号,登录 ,就可以在网站的「设置」-「开发者设置」中,查看到微信小程序的 AppID 了。
注意:如果我们不是用注册时绑定的管理员微信号,在手机上体验该小程序。那么我们还需要操作「绑定开发者」。即在「用户身份-开发者」模块,绑定上需要体验该小程序的微信号。本教程默认注册帐号、体验都是使用管理员微信号。
2.创建项目
我们需要通过开发者工具,来完成小程序创建和代码编辑。
开发者工具***完成后,打开并使用微信扫码登录。选择创建「项目」,填入上文获取到的 AppID,设置一个本地项目的名称(非小程序名称),比如「我的第一个项目」,并选择一个本地的文件夹作为代码存储的目录,点击「新建项目」就可以了。
为方便初学者了解微信小程序的基本代码结构,在创建过程中,如果选择的本地文件夹是个空文件夹,开发者工具会提示,是否需要创建一个 quick start 项目。选择「是」,开发者工具会帮助我们在开发目录里生成一个简单的 demo。
项目创建成功后,我们就可以点击该项目,进入并看到完整的开发者工具界面,点击左侧导航,在「编辑」里可以查看和编辑我们的代码,在「调试」里可以测试代码并模拟小程序在微信客户端效果,在「项目」里可以发送到手机里预览实际效果。
3. 编写代码
点击开发者工具左侧导航的「编辑」,我们可以看到这个项目,已经初始化并包含了一些简单的代码文件。最关键也是必不可少的,是 app.js、app.json、app.wxss 这三个。其中,.js 后缀的是脚本文件,.json 后缀的文件是配置文件,.wxss 后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例。
下面我们简单了解这三个文件的功能,方便修改以及从头开发自己的微信小程序。
app.js 是小程序的脚本代码。我们可以在这个文件中***并处理小程序的生命周期函数、声明全局变量。调用 MINA 提供的丰富的 API,如本例的同步存储及同步读取本地数据。
onLaunch: function () {
//调用API从本地缓存中获取数据
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
getUserInfo:function(cb){
var that =
if(this.globalData.userInfo){
typeof cb == "function" && cb(this.globalData.userInfo)
//调用登录接口
wx.login({
success: function () {
wx.getUserInfo({
success: function (res) {
that.globalData.userInfo = res.userI
typeof cb == "function" && cb(that.globalData.userInfo)
globalData:{
userInfo:null
app.json 是对整个小程序的全局配置。我们可以在这个文件中配置小程序是由哪些页面组成,配置小程序的窗口 背景色,配置导航条样式,配置默认标题。注意该文件不可添加任何注释。
"pages/index/index",
"pages/logs/logs"
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle":"black"
app.wxss 是整个小程序的公共样式表。我们可以在页面组件的class属性上直接使用app.wxss中声明的样式规则。
/**app.wxss**/
.container {
height: 100%;
flex-direction:
align-items:
justify-content: space-
padding: 200rpx 0;
box-sizing: border-
4.创建页面
在这个教程里,我们有两个页面,index 页面和 logs 页面,即欢迎页和小程序启动日志的展示页,他们都在 pages 目录下。微信小程序中的每一个页面的【路径+页面名】都需要写在 app.json 的 pages 中,且 pages 中的第一个页面是小程序的首页。
每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js、index.wxml、index.wxss、index.json。.js 后缀的文件是脚本文件,.json 后缀的文件是配置文件,.wxss 后缀的是样式表文件,.wxml 后缀的文件是页面结构文件。
index.wxml是页面的结构文件:
&view class="container"&
bindtap="bindViewTap" class="userinfo"&
&image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"&&/image&
&text class="userinfo-nickname"&{{userInfo.nickName}}&/text&
&view class="usermotto"&
&text class="user-motto"&{{motto}}&/text&
本例中使用了 、、来搭建页面结构,绑定数据和交互处理函数。
index.js是页面的脚本文件,在这个文件中我们可以***并处理页面的生命周期函数、获取小程序实例,声明并处理数据,响应页面交互事件等。
//index.js
//获取应用实例
var app = getApp()
motto: 'Hello World',
userInfo: {}
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
onLoad: function () {
console.log('onLoad')
var that = this
//调用应用实例的方法获取全局数据
app.getUserInfo(function(userInfo){
//更新数据
that.setData({
userInfo:userInfo
index.wxss是页面的样式表:
/**index.wxss**/
.userinfo {
flex-direction:
align-items:
.userinfo-avatar {
width: 128
height: 128
margin: 20
border-radius: 50%;
.userinfo-nickname {
.usermotto {
margin-top: 200
页面的样式表是非必要的。当有页面样式表时,页面的样式表中的样式规则会层叠覆盖 app.wxss 中的样式规则。如果不指定页面的样式表,也可以在页面的结构文件中直接使用 app.wxss 中指定的样式规则。
index.json是页面的配置文件:
页面的配置文件是非必要的。当有页面的配置文件时,配置项在该页面会覆盖 app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用 app.json 中的默认配置。
logs的页面结构
&!--logs.wxml--&
&view class="container log-list"&
&block wx:for-items="{{logs}}" wx:for-item="log"&
&text class="log-item"&{{index + 1}}. {{log}}&/text&
logs 页面使用 控制标签来组织代码,在 上使用 wx:for-items 绑定 logs 数据,并将 logs 数据循环展开节点
var util = require('../../utils/util.js')
onLoad: function () {
this.setData({
logs: (wx.getStorageSync('logs') || []).map(function (log) {
return util.formatTime(new Date(log))
运行结果如下:
5.手机预览
开发者工具左侧菜单栏选择「项目」,点击「预览」,扫码后即可在微信客户端中体验。
目前,预览和上传功能尚无法实现,需要等待微信官方的下一步更新。
如你所见,微信官方给出的开发指南还非常简单,很多细节、代码和功能都没有明确的展示,所以接下来就到博卡君展示实力的时候啦!开发教程正式开始!
第一章:准备工作
做好准备工作很重要。开发一个微信应用号,你需要提前到微信的官方网站()下载开发者工具。
1.下载最新微信开发者工具,打开后你会看到该界面:
2. 点击「新建 web+」项目,随后出现如下画面:
3. 该页面内的各项内容需要注意----
AppID:依照官方解释来填。
Appname: 项目最外层文件夹名称,如你将其命名为「ABC」,则之后的全部项目内容均将保存在「/ABC/…」目录下。
本地开发目录:项目存放在本地的目录。
注:再次强调,如果你和团队成员共同开发该项目,则建议你们使用同样的目录名称及本地目录,以确保协同开发的统一性。如果你之前已有项目,则导入过程与以上内容近似,不再赘述。
4. 准备工作全部完成后,点击「新建项目」按钮,弹出框点「确定」
5. 如上图所示,此刻,微信开发者工具已经为你自动构建了一个初始的demo项目,该项目内包含了一个微信应用项目所需具备的基本内容和框架结构。点击项目名称(图中即「cards」)进入该项目,就能看到整个项目的基本架构了:
第二章:项目构架
微信目前用户群体非常庞大,微信推出公众号以后,火爆程度大家都看得到,也同样推动着 Html 5 的高速发展,随着公众号业务的需求越来越复杂,应用号现在的到来也是恰到好处。
博卡君发现,微信提供给开发者的方式也在发生全面的改变:从操作 DOM 转为操作数据,基于微信提供的一个过桥工具实现很多 Html 5 在公众号很难实现的功能,有点类似于 hybrid 开发,不同于 hybrid 开发的方式是:微信开放的接口更为严谨,结构必须采用他提供给的组件,外部的框架和插件都不能在这里使用上,让开发者完全脱离操作 DOM,开发思想转变很大。
工欲善其事,必先利其器。理解它的核心功能非常重要,先了解它的整个运作流程。
生命周期:
在index.js里面:
开发者工具上 Console 可以看到:
在首页 console 可以看出顺序是 App Launch-&App Show-&onLoad-&onShow-&onReady。
首先是整个 app 的启动与显示,app 的启动在 app.js 里面可以配置,其次再进入到各个页面的加载显示等等。可以想象到这里可以处理很多东西了,如加载框之类的都可以实现等等。
路由在项目开发中一直是个核心点,在这里其实微信对路由的介绍很少,可见微信在路由方面经过很好的封装,也提供三个跳转方法。
wx.navigateTo(OBJECT):保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。
wx.redirectTo(OBJECT):关闭当前页面,跳转到应用内的某个页面。
wx.navigateBack():关闭当前页面,回退前一页面。
这三个基本上使用足够,在路由方面微信封装的很好,开发者根本不用去配置路由,往往很多框架在路由方面配置很繁琐。
此次微信在组件提供方面也是非常全面,基本上满足项目需求,故而开发速度非常快,开发前可以认真浏览几次,开发效率会很好。
任何外部框架以及插件基本上无法使用,就算原生的 js 插件也很难使用,因为以前的 js 插件也基本上全部是一操作 dom 的形式存在,而微信应用号此次的架构是不允许操作任何 dom,就连以前开发者们习惯使用的动态设置的rem.js也是不支持的。
此次微信还提供了 WebSocket,就可以直接利用它做聊天,可以开发的空间非常大。
跟公众号对比博卡君发现,开发应用号组件化,结构化,多样化。新大陆总是充满着惊喜,更多的彩蛋等着大家来发现。
更多信息请点击原文链接:
[color=brown][/size][/color[size=xx-small]]大大的&& 大大的[size=x-small][/size]
相关资源推荐关于微信中分享到朋友圈代码 - CSDN博客
关于微信中分享到朋友圈代码
最近在做微信的项目,遇到需要转发到朋友圈功能,有需要的朋友可以参考
首先看页面源代码:
&!doctype html&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8& /&
&meta name=&viewport& content=&width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no&/&
&title&发送红包&/title&
&link href=&css/style.css?time=1.5& rel=&stylesheet& type=&text/css& /&
&script type=&text/javascript& src=&/ibs/page/js/jquery-1.11.1.min.js&&&/script&
&script type=&text/javascript& src=&/ibs/page/js/myibs.js&&&/script&
&script type=&text/javascript& src=&/ibs/page/hongbao/js/hb_sharetofriend.js&&&/script&
&script type=&text/javascript& src=&js/WeixinApi.js&&&/script&
&script type=&text/javascript& src=&js/index.js&&&/script&
&script type=&text/javascript&&
$(document).ready(function(){
& $(function(){
&&& $(tips&).click(function () {
&&&&& $('#tips').hide();
&&& }) });
&& & $(function(){
&& && $(&.grzx_fhb_button&).click(function () {
&&&&& $('#tips').show();
&body style=&background-color:#F2F2F4 &&
&&div id=&tips&&
&&&&&&& &div class=&tip1&&&img src=&../images/tip1.png& &&/div&
&&&&&&& &div class=&tiptext&&&点击右上角,将红包分享至朋友圈&&/div&
&&&&&&& &div class=&tip2&&&img src=&../images/tip2.png&&&/div&
&&& &/div&
&div class=&toubu&&&a href=&javascript:void(0);& onClick=&javascript:history.go(-2);&&&img style=&float:margin-top:5padding-left:10width:28height:28px&& src=&images/jiantou.png&&&/a&&span style=&position:left: 130top: 0&&发送红包&/span&&/div&
&div&&img src=&images/hb_sharetofriend.jpg&&&/div&
&div style=&position:left: 60top: 55font-family:微软雅黑;text-align:center& id=&content&&&/div&
&div& style=&margin-left:30&&&img src=&images/sharetofriend.png&&&/div&
&div class=&grzx_fhb_button&&&a href=&javascript:void(0)&&给好友发红包&/a&&/div&
标红色的是需要引入的JSWeixinApi.js代码如下:
&* 微信内置浏览器的Javascript API,功能包括:
&* 1、分享到微信朋友圈
&* 2、分享给微信好友
&* 3、分享到腾讯微博
&* 4、新的分享接口,包含朋友圈、好友、微博的分享(for iOS)
&* 5、隐藏/显示右上角的菜单入口
&* 6、隐藏/显示底部浏览器工具栏
&* 7、获取当前的网络状态
&* 8、调起微信客户端的图片播放组件
&* 9、关闭公众平台Web页面
&* 10、判断当前网页是否在微信内置浏览器中打开
&* 11、增加打开扫描二维码
&* 12、支持WeixinApi的错误监控
&* 13、检测应用程序是否已经***(需要官方开通权限)
&* 14、打开微信内置地图(认证过的公众号可用)
&* 15、发送电子邮件
&* @author zhaoxianlie()
(function (window) {
&&& &use strict&;
&&&& * 定义WeixinApi
&&& var WeixinApi = {
&&&&&&& version:3.2
&&& // 将WeixinApi暴露到window下:全局可使用,对旧版本向下兼容
&&& window.WeixinApi = WeixinA
&&& /////////////////////////// CommonJS /////////////////////////////////
&&& if (typeof define === 'function' && (define.amd || define.cmd)) {
&&&&&&& if (define.amd) {
&&&&&&&&&&& // AMD 规范,for:requirejs
&&&&&&&&&&& define(function () {
&&&&&&&&&&&&&&& return WeixinA
&&&&&&&&&&& });
&&&&&&& } else if (define.cmd) {
&&&&&&&&&&& // CMD 规范,for:seajs
&&&&&&&&&&& define(function (require, exports, module) {
&&&&&&&&&&&&&&& module.exports = WeixinA
&&&&&&&&&&& });
&&&& * 对象简单继承,后面的覆盖前面的,继承深度:deep=1
&&&& * @private
&&& var _extend = function () {
&&&&&&& var result = {}, obj,
&&&&&&& for (var i = 0, len = arguments. i & i++) {
&&&&&&&&&&& obj = arguments[i];
&&&&&&&&&&& if (typeof obj === 'object') {
&&&&&&&&&&&&&&& for (k in obj) {
&&&&&&&&&&&&&&&&&&& result[k] = obj[k];
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&& * 内部私有方法,分享用
&&&& * @private
&&& var _share = function (cmd, data, callbacks) {
&&&&&&& callbacks = callbacks || {};
&&&&&&& // 分享过程中的一些回调
&&&&&&& var progress = function (resp) {
&&&&&&&&&&& switch (true) {
&&&&&&&&&&&&&&& // 用户取消
&&&&&&&&&&&&&&& case /\:cancel$/i.test(resp.err_msg) :
&&&&&&&&&&&&&&&&&&& callbacks.cancel && callbacks.cancel(resp);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& // 发送成功
&&&&&&&&&&&&&&& case /\:(confirm|ok)$/i.test(resp.err_msg):
&&&&&&&&&&&&&&&&&&& callbacks.confirm && callbacks.confirm(resp);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& // fail 发送失败
&&&&&&&&&&&&&&& case /\:fail$/i.test(resp.err_msg) :
&&&&&&&&&&&&&&& default:
&&&&&&&&&&&&&&&&&&& callbacks.fail && callbacks.fail(resp);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&&&&&& // 无论成功失败都会执行的回调
&&&&&&&&&&& callbacks.all && callbacks.all(resp);
&&&&&&& };
&&&&&&& // 执行分享,并处理结果
&&&&&&& var handler = function (theData, argv) {
&&&&&&&&&&& // 新的分享接口,单独处理
&&&&&&&&&&& if (cmd.menu === 'menu:general:share') {
&&&&&&&&&&&&&&& // 如果是收藏操作,并且在wxCallbacks中配置了favorite为false,则不执行回调
&&&&&&&&&&&&&&& if (argv.shareTo == 'favorite' || argv.scene == 'favorite') {
&&&&&&&&&&&&&&&&&&& if (callbacks.favorite === false) {
&&&&&&&&&&&&&&&&&&&&&&& return argv.generalShare(theData, function () {
&&&&&&&&&&&&&&&&&&&&&&& });
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& argv.generalShare(theData, progress);
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& WeixinJSBridge.invoke(cmd.action, theData, progress);
&&&&&&&&&&& }
&&&&&&& };
&&&&&&& // ***分享操作
&&&&&&& WeixinJSBridge.on(cmd.menu, function (argv) {
&&&&&&&&&&& if (callbacks.async && callbacks.ready) {
&&&&&&&&&&&&&&& WeixinApi[&_wx_loadedCb_&] = callbacks.dataLoaded || new Function();
&&&&&&&&&&&&&&& if (WeixinApi[&_wx_loadedCb_&].toString().indexOf(&_wx_loadedCb_&) & 0) {
&&&&&&&&&&&&&&&&&&& WeixinApi[&_wx_loadedCb_&] = new Function();
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& callbacks.dataLoaded = function (newData) {
&&&&&&&&&&&&&&&&&&& // 这种情况下,数据仍需加工
&&&&&&&&&&&&&&&&&&& var theData = _extend(data, newData);
&&&&&&&&&&&&&&&&&&& if (cmd.menu == 'menu:share:timeline' ||
&&&&&&&&&&&&&&&&&&&&&&& (cmd.menu == 'menu:general:share' && argv.shareTo == 'timeline')) {
&&&&&&&&&&&&&&&&&&&&&&& theData = {
&&&&&&&&&&&&&&&&&&&&&&&&&&& &appid&:theData.appId ? theData.appId : '',
&&&&&&&&&&&&&&&&&&&&&&&&&&& &img_url&:theData.imgUrl,
&&&&&&&&&&&&&&&&&&&&&&&&&&& &link&:theData.link,
&&&&&&&&&&&&&&&&&&&&&&&&&&& &desc&:theData.title,
&&&&&&&&&&&&&&&&&&&&&&&&&&& &title&:theData.desc,
&&&&&&&&&&&&&&&&&&&&&&&&&&& &img_width&:&640&,
&&&&&&&&&&&&&&&&&&&&&&&&&&& &img_height&:&640&
&&&&&&&&&&&&&&&&&&&&&&& };
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&& WeixinApi[&_wx_loadedCb_&](theData);
&&&&&&&&&&&&&&&&&&& handler(theData, argv);
&&&&&&&&&&&&&&& };
&&&&&&&&&&&&&&& // 然后就绪
&&&&&&&&&&&&&&& if (!(argv && (argv.shareTo == 'favorite' || argv.scene == 'favorite') && callbacks.favorite === false)) {
&&&&&&&&&&&&&&&&&&& callbacks.ready && callbacks.ready(argv, data);
&&&&&&&&&&&&&&& }
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& // 就绪状态
&&&&&&&&&&&&&&& if (!(argv && (argv.shareTo == 'favorite' || argv.scene == 'favorite') && callbacks.favorite === false)) {
&&&&&&&&&&&&&&&&&&& callbacks.ready && callbacks.ready(argv, data);
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& handler(data, argv);
&&&&&&&&&&& }
&&&&&&& });
&&&& * 分享到微信朋友圈
&&&& * @param&&&&&& {Object}&&& data&&&&&& 待分享的信息
&&&& * @p-config&&& {String}&&& appId&&&&& 公众平台的appId(服务号可用)
&&&& * @p-config&&& {String}&&& imgUrl&&&& 图片地址
&&&& * @p-config&&& {String}&&& link&&&&&& 链接地址
&&&& * @p-config&&& {String}&&& desc&&&&&& 描述
&&&& * @p-config&&& {String}&&& title&&&&& 分享的标题
&&&& * @param&&&&&& {Object}&&& callbacks& 相关回调方法
&&&& * @p-config&&& {Boolean}&& async&&&&&&&&&&&&&&&&&& ready方法是否需要异步执行,默认false
&&&& * @p-config&&& {Function}& ready(argv, data)&&&&&& 就绪状态
&&&& * @p-config&&& {Function}& dataLoaded(data)&&&&&&& 数据加载完成后调用,async为true时有用,也可以为空
&&&& * @p-config&&& {Function}& cancel(resp)&&& 取消
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& confirm(resp)&& 成功
&&&& * @p-config&&& {Function}& all(resp)&&&&&& 无论成功失败都会执行的回调
&&& WeixinApi.shareToTimeline = function (data, callbacks) {
&&&&&&& _share({
&&&&&&&&&&& menu:'menu:share:timeline',
&&&&&&&&&&& action:'shareTimeline'
&&&&&&& }, {
&&&&&&&&&&& &appid&:data.appId ? data.appId : '',
&&&&&&&&&&& &img_url&:data.imgUrl,
&&&&&&&&&&& &link&:data.link,
&&&&&&&&&&& &desc&:data.title,
&&&&&&&&&&& &title&:data.desc,
&&&&&&&&&&& &img_width&:&640&,
&&&&&&&&&&& &img_height&:&640&
&&&&&&& }, callbacks);
&&&& * 发送给微信上的好友
&&&& * @param&&&&&& {Object}&&& data&&&&&& 待分享的信息
&&&& * @p-config&&& {String}&&& appId&&&&& 公众平台的appId(服务号可用)
&&&& * @p-config&&& {String}&&& imgUrl&&&& 图片地址
&&&& * @p-config&&& {String}&&& link&&&&&& 链接地址
&&&& * @p-config&&& {String}&&& desc&&&&&& 描述
&&&& * @p-config&&& {String}&&& title&&&&& 分享的标题
&&&& * @param&&&&&& {Object}&&& callbacks& 相关回调方法
&&&& * @p-config&&& {Boolean}&& async&&&&&&&&&&&&&&&&&& ready方法是否需要异步执行,默认false
&&&& * @p-config&&& {Function}& ready(argv, data)&&&&&& 就绪状态
&&&& * @p-config&&& {Function}& dataLoaded(data)&&&&&&& 数据加载完成后调用,async为true时有用,也可以为空
&&&& * @p-config&&& {Function}& cancel(resp)&&& 取消
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& confirm(resp)&& 成功
&&&& * @p-config&&& {Function}& all(resp)&&&&&& 无论成功失败都会执行的回调
&&& WeixinApi.shareToFriend = function (data, callbacks) {
&&&&&&& _share({
&&&&&&&&&&& menu:'menu:share:appmessage',
&&&&&&&&&&& action:'sendAppMessage'
&&&&&&& }, {
&&&&&&&&&&& &appid&:data.appId ? data.appId : '',
&&&&&&&&&&& &img_url&:data.imgUrl,
&&&&&&&&&&& &link&:data.link,
&&&&&&&&&&& &desc&:data.desc,
&&&&&&&&&&& &title&:data.title,
&&&&&&&&&&& &img_width&:&640&,
&&&&&&&&&&& &img_height&:&640&
&&&&&&& }, callbacks);
&&&& * 分享到腾讯微博
&&&& * @param&&&&&& {Object}&&& data&&&&&& 待分享的信息
&&&& * @p-config&&& {String}&&& link&&&&&& 链接地址
&&&& * @p-config&&& {String}&&& desc&&&&&& 描述
&&&& * @param&&&&&& {Object}&&& callbacks& 相关回调方法
&&&& * @p-config&&& {Boolean}&& async&&&&&&&&&&&&&&&&&& ready方法是否需要异步执行,默认false
&&&& * @p-config&&& {Function}& ready(argv, data)&&&&&& 就绪状态
&&&& * @p-config&&& {Function}& dataLoaded(data)&&&&&&& 数据加载完成后调用,async为true时有用,也可以为空
&&&& * @p-config&&& {Function}& cancel(resp)&&& 取消
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& confirm(resp)&& 成功
&&&& * @p-config&&& {Function}& all(resp)&&&&&& 无论成功失败都会执行的回调
&&& WeixinApi.shareToWeibo = function (data, callbacks) {
&&&&&&& _share({
&&&&&&&&&&& menu:'menu:share:weibo',
&&&&&&&&&&& action:'shareWeibo'
&&&&&&& }, {
&&&&&&&&&&& &content&:data.desc,
&&&&&&&&&&& &url&:data.link
&&&&&&& }, callbacks);
&&&& * 新的分享接口
&&&& * @param&&&&&& {Object}&&& data&&&&&& 待分享的信息
&&&& * @p-config&&& {String}&&& appId&&&&& 公众平台的appId(服务号可用)
&&&& * @p-config&&& {String}&&& imgUrl&&&& 图片地址
&&&& * @p-config&&& {String}&&& link&&&&&& 链接地址
&&&& * @p-config&&& {String}&&& desc&&&&&& 描述
&&&& * @p-config&&& {String}&&& title&&&&& 分享的标题
&&&& * @param&&&&&& {Object}&&& callbacks& 相关回调方法
&&&& * @p-config&&& {Boolean}&& async&&&&&&&&&&&&&&&&&& ready方法是否需要异步执行,默认false
&&&& * @p-config&&& {Function}& ready(argv, data)&&&&&& 就绪状态
&&&& * @p-config&&& {Function}& dataLoaded(data)&&&&&&& 数据加载完成后调用,async为true时有用,也可以为空
&&&& * @p-config&&& {Function}& cancel(resp)&&& 取消
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& confirm(resp)&& 成功
&&&& * @p-config&&& {Function}& all(resp)&&&&&& 无论成功失败都会执行的回调
&&& WeixinApi.generalShare = function (data, callbacks) {
&&&&&&& _share({
&&&&&&&&&&& menu:'menu:general:share'
&&&&&&& }, {
&&&&&&&&&&& &appid&:data.appId ? data.appId : '',
&&&&&&&&&&& &img_url&:data.imgUrl,
&&&&&&&&&&& &link&:data.link,
&&&&&&&&&&& &desc&:data.desc,
&&&&&&&&&&& &title&:data.title,
&&&&&&&&&&& &img_width&:&640&,
&&&&&&&&&&& &img_height&:&640&
&&&&&&& }, callbacks);
&&&& * 加关注(此功能只是暂时先加上,不过因为权限限制问题,不能用,如果你的站点是部署在*.qq.com下,也许可行)
&&&& * @param&&&&&& {String}&&& appWeixinId&&&& 微信公众号ID
&&&& * @param&&&&&& {Object}&&& callbacks&&&&&& 回调方法
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& confirm(resp)&& 成功
&&& WeixinApi.addContact = function (appWeixinId, callbacks) {
&&&&&&& callbacks = callbacks || {};
&&&&&&& WeixinJSBridge.invoke(&addContact&, {
&&&&&&&&&&& webtype:&1&,
&&&&&&&&&&& username:appWeixinId
&&&&&&& }, function (resp) {
&&&&&&&&&&& var success = !resp.err_msg || &add_contact:ok& == resp.err_msg
&&&&&&&&&&&&&&& || &add_contact:added& == resp.err_
&&&&&&&&&&& if (success) {
&&&&&&&&&&&&&&& callbacks.success && callbacks.success(resp);
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& callbacks.fail && callbacks.fail(resp);
&&&&&&&&&&& }
&&&&&&& })
&&&& * 调起微信Native的图片播放组件。
&&&& * 这里必须对参数进行强检测,如果参数不合法,直接会导致微信客户端crash
&&&& * @param {String} curSrc 当前播放的图片地址
&&&& * @param {Array} srcList 图片地址列表
&&& WeixinApi.imagePreview = function (curSrc, srcList) {
&&&&&&& if (!curSrc || !srcList || srcList.length == 0) {
&&&&&&&&&&&
&&&&&&& WeixinJSBridge.invoke('imagePreview', {
&&&&&&&&&&& 'current':curSrc,
&&&&&&&&&&& 'urls':srcList
&&&&&&& });
&&&& * 显示网页右上角的按钮
&&& WeixinApi.showOptionMenu = function () {
&&&&&&& WeixinJSBridge.call('showOptionMenu');
&&&& * 隐藏网页右上角的按钮
&&& WeixinApi.hideOptionMenu = function () {
&&&&&&& WeixinJSBridge.call('hideOptionMenu');
&&&& * 显示底部工具栏
&&& WeixinApi.showToolbar = function () {
&&&&&&& WeixinJSBridge.call('showToolbar');
&&&& * 隐藏底部工具栏
&&& WeixinApi.hideToolbar = function () {
&&&&&&& WeixinJSBridge.call('hideToolbar');
&&&& * 返回如下几种类型:
&&&& * network_type:wifi&&&& wifi网络
&&&& * network_type:edge&&&& 非wifi,包含3G/2G
&&&& * network_type:fail&&&& 网络断开连接
&&&& * network_type:wwan&&&& 2g或者3g
&&&& * 使用方法:
&&&& * WeixinApi.getNetworkType(function(networkType){
&&&& * });
&&&& * @param callback
&&& WeixinApi.getNetworkType = function (callback) {
&&&&&&& if (callback && typeof callback == 'function') {
&&&&&&&&&&& WeixinJSBridge.invoke('getNetworkType', {}, function (e) {
&&&&&&&&&&&&&&& // 在这里拿到e.err_msg,这里面就包含了所有的网络类型
&&&&&&&&&&&&&&& callback(e.err_msg);
&&&&&&&&&&& });
&&&& * 关闭当前微信公众平台页面
&&&& * @param&&&&&& {Object}&&& callbacks&&&&&& 回调方法
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& success(resp)&& 成功
&&& WeixinApi.closeWindow = function (callbacks) {
&&&&&&& callbacks = callbacks || {};
&&&&&&& WeixinJSBridge.invoke(&closeWindow&, {}, function (resp) {
&&&&&&&&&&& switch (resp.err_msg) {
&&&&&&&&&&&&&&& // 关闭成功
&&&&&&&&&&&&&&& case 'close_window:ok':
&&&&&&&&&&&&&&&&&&& callbacks.success && callbacks.success(resp);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& // 关闭失败
&&&&&&&&&&&&&&& default :
&&&&&&&&&&&&&&&&&&& callbacks.fail && callbacks.fail(resp);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&& });
&&&& * 当页面加载完毕后执行,使用方法:
&&&& * WeixinApi.ready(function(Api){
&&&& *&&&& // 从这里只用Api即是WeixinApi
&&&& * });
&&&& * @param readyCallback
&&& WeixinApi.ready = function (readyCallback) {
&&&&&&& if (readyCallback && typeof readyCallback == 'function') {
&&&&&&&&&&& var Api =
&&&&&&&&&&& var wxReadyFunc = function () {
&&&&&&&&&&&&&&& readyCallback(Api);
&&&&&&&&&&& };
&&&&&&&&&&& if (typeof window.WeixinJSBridge == &undefined&) {
&&&&&&&&&&&&&&& if (document.addEventListener) {
&&&&&&&&&&&&&&&&&&& document.addEventListener('WeixinJSBridgeReady', wxReadyFunc, false);
&&&&&&&&&&&&&&& } else if (document.attachEvent) {
&&&&&&&&&&&&&&&&&&& document.attachEvent('WeixinJSBridgeReady', wxReadyFunc);
&&&&&&&&&&&&&&&&&&& document.attachEvent('onWeixinJSBridgeReady', wxReadyFunc);
&&&&&&&&&&&&&&& }
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& wxReadyFunc();
&&&&&&&&&&& }
&&&& * 判断当前网页是否在微信内置浏览器中打开
&&& WeixinApi.openInWeixin = function () {
&&&&&&& return /MicroMessenger/i.test(navigator.userAgent);
&&&& * 打开扫描二维码
&&&& * @param&&&&&& {Object}&&& callbacks&&&&&& 回调方法
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& success(resp)&& 成功
&&& WeixinApi.scanQRCode = function (callbacks) {
&&&&&&& callbacks = callbacks || {};
&&&&&&& WeixinJSBridge.invoke(&scanQRCode&, {}, function (resp) {
&&&&&&&&&&& switch (resp.err_msg) {
&&&&&&&&&&&&&&& // 打开扫描器成功
&&&&&&&&&&&&&&& case 'scan_qrcode:ok':
&&&&&&&&&&&&&&&&&&& callbacks.success && callbacks.success(resp);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& // 打开扫描器失败
&&&&&&&&&&&&&&& default :
&&&&&&&&&&&&&&&&&&& callbacks.fail && callbacks.fail(resp);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&& });
&&&& * 检测应用程序是否已***
&&&& *&&&&&&&& by mingcheng
&&&& * @param&&&&&& {Object}&&& data&&&&&&&&&&&&&& 应用程序的信息
&&&& * @p-config&&& {String}&&& packageUrl&&&&& 应用注册的自定义前缀,如 xxx:// 就取 xxx
&&&& * @p-config&&& {String}&&& packageName&&&&&&& 应用的包名
&&&& * @param&&&&&& {Object}&&& callbacks&&&&&& 相关回调方法
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& success(resp)&& 成功,如果有对应的版本信息,则写入到 resp.version 中
&&&& * @p-config&&& {Function}& all(resp)&&&&&& 无论成功失败都会执行的回调
&&& WeixinApi.getInstallState = function (data, callbacks) {
&&&&&&& callbacks = callbacks || {};
&&&&&&& WeixinJSBridge.invoke(&getInstallState&, {
&&&&&&&&&&& &packageUrl&:data.packageUrl || &&,
&&&&&&&&&&& &packageName&:data.packageName || &&
&&&&&&& }, function (resp) {
&&&&&&&&&&& var msg = resp.err_msg, match = msg.match(/state:yes_?(.*)$/);
&&&&&&&&&&& if (match) {
&&&&&&&&&&&&&&& resp.version = match[1] || &&;
&&&&&&&&&&&&&&& callbacks.success && callbacks.success(resp);
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& callbacks.fail && callbacks.fail(resp);
&&&&&&&&&&& }
&&&&&&&&&&& callbacks.all && callbacks.all(resp);
&&&&&&& });
&&&& * 从网页里直接调起微信地图
&&&& * @param&&&&&& {Object}&&& data&&&&&&&&&&&& 打开地图所需要的数据
&&&& * @p-config&&& {String}&&& latitude&&&&&&&& 纬度
&&&& * @p-config&&& {String}&&& longitude&&&&&&& 经度
&&&& * @p-config&&& {String}&&& name&&&&&&&&&&&& POI名称
&&&& * @p-config&&& {String}&&& adress&&&&&&&&&& 地址
&&&& * @p-config&&& {String}&&& scale&&&&&&&&&&& 缩放
&&&& * @p-config&&& {String}&&& infoUrl&&&&&&&&& 查看位置界面底部的超链接
&&&& * @param&&&&&& {Object}&&& callbacks&&&&&& 相关回调方法
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& success(resp)&& 成功
&&&& * @p-config&&& {Function}& all(resp)&&&&&& 无论成功失败都会执行的回调
&&& WeixinApi.openLocation = function (data, callbacks) {
&&&&&&& callbacks = callbacks || {};
&&&&&&& WeixinJSBridge.invoke('openLocation', {
&&&&&&&&&&& &latitude&:data.latitude,
&&&&&&&&&&& &longitude&:data.longitude,
&&&&&&&&&&& &name&:data.name,
&&&&&&&&&&& &address&:data.address,
&&&&&&&&&&& &scale&:data.scale || 14,
&&&&&&&&&&& &infoUrl&:Url || ''
&&&&&&& }, function (resp) {
&&&&&&&&&&& if (resp.err_msg === &open_location:ok&) {
&&&&&&&&&&&&&&& callbacks.success && callbacks.success(resp);
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& callbacks.fail && callbacks.fail(resp);
&&&&&&&&&&& }
&&&&&&&&&&& callbacks.all && callbacks.all(resp);
&&&&&&& });
&&&& * 发送邮件
&&&& * @param&&&&&& {Object}& data&&&&& 邮件初始内容
&&&& * @p-config&&& {String}& subject&& 邮件标题
&&&& * @p-config&&& {String}& body&&&&& 邮件正文
&&&& * @param&&&&&& {Object}&&& callbacks&&&&&& 相关回调方法
&&&& * @p-config&&& {Function}& fail(resp)&&&&& 失败
&&&& * @p-config&&& {Function}& success(resp)&& 成功
&&&& * @p-config&&& {Function}& all(resp)&&&&&& 无论成功失败都会执行的回调
&&& WeixinApi.sendEmail = function (data, callbacks) {
&&&&&&& callbacks = callbacks || {};
&&&&&&& WeixinJSBridge.invoke(&sendEmail&, {
&&&&&&&&&&& &title&:data.subject,
&&&&&&&&&&& &content&:data.body
&&&&&&& }, function (resp) {
&&&&&&&&&&& if (resp.err_msg === 'send_email:sent') {
&&&&&&&&&&&&&&& callbacks.success && callbacks.success(resp);
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& callbacks.fail && callbacks.fail(resp);
&&&&&&&&&&& }
&&&&&&&&&&& callbacks.all && callbacks.all(resp);
&&&&&&& })
&&&& * 开启Api的debug模式,比如出了个什么错误,能alert告诉你,而不是一直很苦逼的在想哪儿出问题了
&&&& * @param&&& {Function}& callback(error) 出错后的回调,默认是alert
&&& WeixinApi.enableDebugMode = function (callback) {
&&&&&&& /**
&&&&&&&& * @param {String}& errorMessage&& 错误信息
&&&&&&&& * @param {String}& scriptURI&&&&& 出错的文件
&&&&&&&& * @param {Long}&&& lineNumber&&&& 出错代码的行号
&&&&&&&& * @param {Long}&&& columnNumber&& 出错代码的列号
&&&&&&&& */
&&&&&&& window.onerror = function (errorMessage, scriptURI, lineNumber, columnNumber) {
&&&&&&&&&&& // 有callback的情况下,将错误信息传递到options.callback中
&&&&&&&&&&& if (typeof callback === 'function') {
&&&&&&&&&&&&&&& callback({
&&&&&&&&&&&&&&&&&&& message:errorMessage,
&&&&&&&&&&&&&&&&&&& script:scriptURI,
&&&&&&&&&&&&&&&&&&& line:lineNumber,
&&&&&&&&&&&&&&&&&&& column:columnNumber
&&&&&&&&&&&&&&& });
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& // 其他情况,都以alert方式直接提示错误信息
&&&&&&&&&&&&&&& var msgs = [];
&&&&&&&&&&&&&&& msgs.push(&额,代码有错。。。&);
&&&&&&&&&&&&&&& msgs.push(&\n错误信息:&, errorMessage);
&&&&&&&&&&&&&&& msgs.push(&\n出错文件:&, scriptURI);
&&&&&&&&&&&&&&& msgs.push(&\n出错位置:&, lineNumber + '行,' + columnNumber + '列');
&&&&&&&&&&&&&&& alert(msgs.join(''));
&&&&&&&&&&& }
})(window);
index.js代码如下:
$(function(){
&& &initParam();
function initParam(){
&& & var red_packet_id = getParam(&red_packet_id&);
&& & WeixinApi.ready(function(Api) {
&&&&&&&& // 微信分享的数据
&&&&&&&& var wxData = {
&&&&&&&&&&&& &appId&: &&, // 服务号可以填写appId
&&&&&&&&&&&& &imgUrl& : 'http://60.174.248.242:9013/ibs/page/hongbao/images/redPacket.jpg',
&&&&&&&&&&&& &link& : 'http://60.174.248.242:9013/ibs/page/hongbao/getredpacket.html?redPacketId='+red_packet_id,
&&&&&&&&&&&& &desc& : '我在家家帮抢红包赚了很多钱,加入家家帮,一起抢红包吧!',
&&&&&&&&&&&& &title& : &抢红包&
&&&&&&&& };
&&&&&&&& // 分享的回调
&&&&&&&& var wxCallbacks = {
&&&&&&&&&& &
&&&&&&&& };
&&&&&&&& // 用户点开右上角popup菜单后,点击分享给好友,会执行下面这个代码
&&&&&&&& Api.shareToFriend(wxData, wxCallbacks);
&&&&&&&& // 点击分享到朋友圈,会执行下面这个代码
&&&&&&&& Api.shareToTimeline(wxData, wxCallbacks);
&&&&&&&& // 点击分享到腾讯微博,会执行下面这个代码
&&&&&&&& Api.shareToWeibo(wxData, wxCallbacks);
&&&&&&&& // iOS上,可以直接调用这个API进行分享,一句话搞定
&&&&&&&& Api.generalShare(wxData,wxCallbacks);
&&&&&&&& // 有可能用户是直接用微信“扫一扫”打开的,这个情况下,optionMenu是off状态
&&&&&&&& // 为了方便用户测试,我先来trigger show一下
&&&&&&&& var elOptionMenu = document.getElementById('optionMenu');
&&&&&&&& elOptionMenu.click(); // 先隐藏
&&&&&&&& elOptionMenu.click(); // 再显示
代码中加了一个遮罩层,用来指引用户分享到朋友圈的入口,是这段代码:
&&div id=&tips&&
&&&&&&& &div class=&tip1&&&img src=&../images/tip1.png& &&/div&
&&&&&&& &div class=&tiptext&&&点击右上角,将红包分享至朋友圈&&/div&
&&&&&&& &div class=&tip2&&&img src=&../images/tip2.png&&&/div&
&&& &/div&
所用样式为:
&& &width: 100%;
&& &height: 100%;
&& &display:
&& &background: url(../images/002.png)
&& &position:
&& &padding-top: 10%;
&& &z-index: 1000;
&& &width: 100%;
.tip1 img {
&& &width: 30%;
&& &float:
&& &margin-right: 20%;
.tiptext {
&& &width: 100%;
&& &height: 1
&& &margin: 2em 0;
&& &float:
&& &font-size: 16
&& &color: #
&& &text-align:
&& &text-height: 2
&& &width: 100%;
.tip2 img {
&& &width: 30%;
&& &float:
&& &margin: 0 35%;
遮罩层用到的图片是下面2个
上面有两张,底色为白色,所以看的不是很清楚
下面是效果图:
本文已收录于以下专栏:
相关文章推荐
#shareit {
-webkit-user-select:
width: 100%;
在开发中,为了避免二次提交,遮罩层的运用越来越普遍
在自定义微信分享时有时想要更加人性化的去提示用户,所以增加遮罩层。
下面就我做过的案例进行讲解:(效果图)
JSP: 遮罩层图片
JS: 在页面...
如图所示,用小程序实现的遮罩层,代码如下
根据您当前所在位置,向您推荐以下服务站点,该服务点服务范围周边3公里
// alert(location.href.split('#')[0])
$(function(){
var nonceS
微信接口文档地址:https://mp./wiki?t=resource/res_main&id=mp&token=&lang=zh_CN
实现步骤:
var imgUrl = &图片地址&;
var lineLink = &网址&;
var descContent = '爱在五月,\n\n妈咪爱1+1亲子健康之旅开启...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)