微信小程序开发经验:风格、形象、固定位置
1.风格问题
我们主要讲的是微信小程序和之前的网页开发中元素不一致的问题。 ?不要掉落。后来发现原因是after伪元素(如果是浏览器的话,如果有伪元素的话,直接在开发者工具里可以看到,但是在widget里看不到。我想这仍然有点令人困惑)。
解决方案:
.btn::after{
border:none;
}
复制代码
顺便列出一下微信小程序Put的默认样式:
button {
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
padding-left: 14px;
padding-right: 14px;
box-sizing: border-box;
font-size: 18px;
text-align: center;
text-decoration: none;
line-height: 2.55555556;
border-radius: 5px;
-webkit-tap-highlight-color: transparent;
overflow: hidden;
color: #000000;
background-color: #F8F8F8;
}
复制代码
默认行高、padding、margin这些功能还是需要注意的。
1.2 图像
小程序中图像的 image 元素具有 mode 属性,用于定义图像的裁剪和缩放模式,图像组件的默认宽度为 300x2p 和 5p 。也就是说,如果不设置mode属性,只设置宽度,图片肯定会发生变化,因为图片的高度现在是225px,不自适应。
提供两种解决方案:
- 设置模式属性
// mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式。
// 我常用的模式是:
// widthFix 宽度不变,高度自动变化,保持原图宽高比不变
// 也就是说设置mode="widthFix"后只设置width属性,图片也可以自适应
// wxml
<image
mode="widthFix"
class="info--head"
></image>
// wxss
.info--head {
width: 750rpx;
}
复制代码
- 不设置模式属性。设置宽度和高度以定义图像的宽度和高度,而不会使图像扭曲太多。我认为它最适合轮播图片。还有目录页面等的缩略图。
1.3固定位置
设置位置:固定;
元素不能位于滚动视图元素中。最好是在外层,不然ios系统会出现各种问题。
2。生命周期
2.1 进入主页 -> 进入子页面 -> 返回主页
生命周期为:主页 isLoad -> 主页面 isShow -> 主页面 isReady -> 子页面 isLoad - > 子页面正在显示 -> 子页面已就绪 -> 子页面正在卸载 -> 主页面正在显示。
可以看到,在这个过程中,子页面的onHide并没有启动。
2.2 在标签页之间切换
上一个标签页是隐藏 -> 当前标签页显示。
您可以看到,在步骤 1 和 2 中,选项卡页不会触发 onUnload 事件。
2.3 on隐藏启动时间
当页面隐藏/切换到后台时启动。例如navigateTo或subtab切换到其他页面、2♽❙等onUnload启动时间》 页面卸载时启动。就像重定向或导航返回到其他页面。 这是我遇到的一只大蜻蜓。当调用wx.chooseImage API时,实际上会触发页面onHide和onShow。事件,也许是因为我对 切换到后台时触发的 onHide 事件了解不够? ? ?我之前做的项目是和即时通讯相关的。我问为什么选择图片后聊天记录乱了。当时确实花费了我很多时间。这真是胡萝卜加大棒。 主要是想在离开页面时清空定时器,但由于对onHide和onUnload的启动时序理解不够深入,所以还专门开了生命周期调试的debug功能。现在我大概明白了。 还有一件事,非常重要。如果webview有定时器,退出widget页面时必须将webview的src属性设置为null,否则webview不会出现被销毁的情况。 ?无论如何,我的计时器仍然存在,因此将 src 设置为 null 可能会解决问题。 ? : 工具 --> 构建 npm; 一旦你做到了,那就好了。 什么???我做错什么了吗?总共只有4步,我这里会出错吗?检查后发现少了一个很重要的步骤:package.json文件。是的,这个文件在项目中是最需要的。为什么我进入微信小程序就忘记了?我感觉我还是读书太少了。 上一次写小程序已经是一年前的事了,所以我想新的API大家都很熟悉了,所以我不想轻易批评它。 ?将网页图片地址替换为本地图片地址 通过指定编码,可以得到类似 html5 FileReader 的效果,例如将文件读取为 base64。小程序支持的编码相当多。你可以自行查看官方文档。 该接口主要用于设置文件大小、大小属性。如果您还需要文件摘要,可以使用以下 API。 该接口主要用于获取文件大小和摘要信息。目前支持md5和sha1。 使用即时通讯时,如果收到新消息,添加内容后需要向下滚动页面。下拉刷新就得回到开头。这个API目前来说非常有用,否则就很无奈了。我记得一年前还没有这个功能。 ?由于API的差异,原则上所有的功能都必须自己封装。总的来说,还可以。 IM上传照片这是一个陷阱。即时消息只能发送base64编码的文件。如果小程序不支持的话,我差点就放弃base64编码了。 不考虑图片压缩,从图片选择到即时通讯,光是Widget中就需要调用4个API。小程序就不能简化一点吗? 这简直就是一个巨大的陷阱。在开始项目之前我去社区查了一下,发现这个API已经不允许弹出提醒了。用户必须点击按钮才能获取它,这意味着没有按钮。 ,连弹窗都打不开。针对这个问题,我直接向后台反馈。他们实际上说,如果它属于其他人,则无需单击按钮即可获取它。为什么需要点击这个按钮?我告诉你,要求用户点击按钮肯定是不现实的。确实很影响用户体验。你必须自己找到办法。 什么? ? ?官方已经说得很清楚了,解决方案只有3种,而且每一种都无法绕过按钮。我能做些什么?最后我讲了很长时间,我还把其他的小程序放在他们面前,让他们一一看看有没有按钮,我终于完成了。 说实话,作为开发者,我还是更喜欢Web开发平台。微信小程序真是一步一步来。如果可以的话我真的不想做微信小程序!可惜不是if o(╥﹏╥)o。 作者:ma1251202.5 selectImage
2.6 遇到的问题
解决方案:
npm init
在项目根目录下新建一个package.json文件。 4。新的API
4.2 FileSystemManager.readFile 读取本地文件内容
4.3 FileSystemManager.getFileInfo 获取该小程序下的本地临时文件或本地缓存文件信息。
4.4 wx.getFileInfo 获取文件信息
4.5 wx.pageScrollTo 滚动页面到目的地
5。获取用户信息 getUserInfo
6。总结
链接:https://juejin.im/post/5c2ecdc26fb9a049ed30ffab
来源:版权所有来源:掘金如需商业转载请联系作者获得许可。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。