起因:在项目中做登录的输入框是用原生 HTML 写的,但是是套在 form 表单里,在浏览器、安卓端都是完美的,但是在 iOS 出现了内阴影、自带圆角等样式
处理办法:
1 | input { |
起因:因为是h5的项目,我们很自然会遇到兼容平台(ios、安卓)、跨浏览器(微信浏览器、各个手机厂商的浏览器等等)花样百出
经过:在安卓机上,我使用fixed
的布局在屏幕最底部的问题,随着键盘的推起被推到了键盘上,在某些机型上,这个行为会让字和上面的输入框、按钮混在一起,那个布局,叫一个酸爽
结果:在网上百度了很久,都没有找到很完美的方案,最后自己混合着试了试,找到了一个方案
position
由fixed
改成了absolute
window.document.documentElement.clientHeight
获取设备的高度bottom
属性啦在开发中我们遇到过,某一表单的输入框反复被使用,有一些值会被浏览器记住,你可根据输入之后的提示点击选择,这个时候,你会发现输入框的背景色变成了黄色
通过查看元素我们可以发现,这是谷歌浏览器给了一个自动填充文本框的背景样式
可以添加input:-webkit-autofill {-webkit-box-shadow: 0 0 0px 1000px white inset;}
诸如此类的样式覆盖掉浏览器本身的样式
需求:
上半部分展示要保存到本地的图片,下半部分有一个按钮点击下载(其他浏览器)
按照需求,我们需要把展示的图片下载下来
考虑过用 canvas 去渲染图片,但是存在一个致命的问题跨域
1 | const canvasImg = document.getElementsByTagName('canvas')[0]; |
a
标签的download
属性来做下载的操作1 | <a href={data} download={`二维码-${new Date().getSeconds()}.png`}> |
本来打算复用上述的方式,但是微信浏览器内部出于安全角度的考虑把a
标签的下载给禁掉了
所以在微信浏览器上我们换了一个呈现方式 - 长按图片保存
要实现长按图片保存其实不是通过长按展示的那个图片,我们要做一个图片铺在整个屏幕上且是body
元素的直接子元素
1 | const body = document.getElementsByTagName('body')[0]; |