一、h5网站input 设置为type=number的问题

h5网页input 的type设置为number一般会产生三个问题,一个问题是maxlength属性不好用了。另外一个是form提交的时候,默认给取整了。三是部分安卓手机出现样式问题。

问题一解决,我目前用的是js。如下

  1. <input type="number" oninput="checkTextLength(this ,10)">
  2. function checkTextLength(obj, length) {
  3. if(obj.value.length > length) {
  4. obj.value = obj.value.substr(0, length);
  5. }
  6. }

或者

  1. <input type="number" oninput="if(value.length>5)value=value.slice(0,5)" />

或者

简单方法,直接把number改成tel 然后设置maxlength

问题二,是因为form提交默认做了表单验证,step默认是1,要设置step属性,假如保留2位小数,写法如下:

  1. <input type="number" step="0.01" />

关于step,我在这里做简单的介绍,input 中type=number,一般会自动生成一个上下箭头,点击上箭头默认增加一个step,点击下箭头默认会减少一个step。number中默认step是1。也就是step=0.01,可以允许输入2位小数,并且点击上下箭头分别增加0.01和减少0.01。

假如step和min一起使用,那么数值必须在min和max之间。

看下面的例子:

  1. <input type="number" step="3.1" min="1" />

输入框可以输入哪些数字?

首先,最小值是1,那么可以输入1.0,第二个是可以输入(1+3.1)那就是4.1,以此类推,每次点击上下箭头都会增加或者减少3.1,输入其他数字无效。这就是step的简单介绍。

问题三,去除input默认样式

  1. input[type=number] {
  2. -moz-appearance:textfield;
  3. }
  4. input[type=number]::-webkit-inner-spin-button,
  5. input[type=number]::-webkit-outer-spin-button {
  6. -webkit-appearance: none;
  7. margin: 0;
  8. }

二、ios 设置input 按钮样式会被默认样式覆盖

解决方式如下:

  1. input,
  2. textarea {
  3. border: 0;
  4. -webkit-appearance: none;
  5. }

设置默认样式为none

三、IOS键盘字母输入,默认首字母大写

解决方案,设置如下属性

  1. <input type="text" autocapitalize="off" />

四、select 下拉选择设置右对齐

设置如下:

  1. select option {
  2. direction: rtl;
  3. }

五、通过transform进行skew变形,rotate旋转会造成出现锯齿现象

可以设置如下:

  1. -webkit-transform: rotate(-4deg) skew(10deg) translateZ(0);
  2. transform: rotate(-4deg) skew(10deg) translateZ(0);
  3. outline: 1px solid rgba(255,255,255,0)

六、移动端点击300ms延迟

300ms尚可接受,不过因为300ms产生的问题,我们必须要解决。300ms导致用户体验并不是很好,解决这个问题,我们一般在移动端用tap事件来取代click事件。

推荐两个js,一个是fastclick,一个是tap.js

关于300ms延迟,具体请看:http://thx.github.io/mobile/300ms-click-delay/

七、移动端点透问题

案例如下:

  1. <div id="haorooms">点头事件测试</div>
  2. <a href="www.haorooms.com">www.haorooms.com</a>

div是绝对定位的蒙层,并且z-index高于a。而a标签是页面中的一个链接,我们给div绑定tap事件:

  1. $('#haorooms').on('tap',function(){
  2. $('#haorooms').hide();
  3. });

我们点击蒙层时 div正常消失,但是当我们在a标签上点击蒙层时,发现a链接被触发,这就是所谓的点透事件。

原因:

touchstart 早于 touchend 早于click。 亦即click的触发是有延迟的,这个时间大概在300ms左右,也就是说我们tap触发之后蒙层隐藏, 此时 click还没有触发,300ms之后由于蒙层隐藏,我们的click触发到了下面的a链接上。

解决:

1、 尽量都使用touch事件来替换click事件。例如用touchend事件(推荐)。

2、用fastclick,https://github.com/ftlabs/fastclick

3 、用preventDefault阻止a标签的click

4、延迟一定的时间(300ms+)来处理事件 (不推荐)

5、以上一般都能解决,实在不行就换成click事件。

下面介绍一下touchend事件,如下:

  1. $("#haorooms").on("touchend", function (event) {
  2. event.preventDefault();
  3. });

八、消除 IE10 里面的那个叉号

  1. input:-ms-clear{display:none;}

九、关于 iOS 与 OS X 端字体的优化(横竖屏会出现字体加粗不一致等)

iOS 浏览器横屏时会重置字体大小,设置 text-size-adjust 为 none 可以解决 iOS 上的问题,但桌面版 Safari 的字体缩放功能会失效,因此最佳方案是将 text-size-adjust 为 100% 。

  1. -webkit-text-size-adjust: 100%;
  2. -ms-text-size-adjust: 100%;
  3. text-size-adjust: 100%;

十、关于 iOS 系统中,中文输入法输入英文时,字母之间可能会出现一个六分之一空格

可以通过正则去掉

  1. this.value = this.value.replace(/\u2006/g, '');

十一、移动端 HTML5 audio autoplay 失效问题

这个不是 BUG,由于自动播放网页中的音频或视频,会给用户带来一些困扰或者不必要的流量消耗,所以苹果系统和安卓系统通常都会禁止自动播放和使用 JS 的触发播放,必须由用户来触发才可以播放。

解决方法思路:先通过用户 touchstart 触碰,触发播放并暂停(音频开始加载,后面用 JS 再操作就没问题了)。

解决代码:

  1. document.addEventListener('touchstart', function () {
  2. document.getElementsByTagName('audio')[0].play();
  3. document.getElementsByTagName('audio')[0].pause();
  4. });

十二、移动端 HTML5 input date 不支持 placeholder 问题

这个我感觉没有什么好的解决方案,用如下方法

  1. <input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" id="date">

有的浏览器可能要点击两遍!

方法二

  1. input[type="date"]:before{
  2. content: attr(placeholder);
  3. color:#ddd;
  4. }

js部分

  1. var o = document.getElementById('date');
  2. o.onfocus = function(){
  3. this.removeAttribute('placeholder');
  4. };
  5. o.onblur = function(){
  6. if(this.value == '') this.setAttribute('placeholder','请输入日期');
  7. };

通过上面代码应该就可以解决了!

十三、部分机型存在type为search的input,自带close按钮样式修改方法

有些机型的搜索input控件会自带close按钮(一个伪元素),而通常为了兼容所有浏览器,我们会自己实现一个,此时去掉原生close按钮的方法为

  1. #Search::-webkit-search-cancel-button{
  2. display: none;
  3. }

如果想使用原生close按钮,又想使其符合设计风格,可以对这个伪元素的样式进行修改。

美化的话,请看http://www.haorooms.com/post/qd_ghfx 这篇文章的第五条!

十四、唤起select的option展开

zepto方式:

  1. $(sltElement).trrgger("mousedown");

原生js方式:

  1. function showDropdown(sltElement) {
  2. var event;
  3. event = document.createEvent('MouseEvents');
  4. event.initMouseEvent('mousedown', true, true, window);
  5. sltElement.dispatchEvent(event);
  6. };

十五、手机端一像素border设置

假如border所在div的class名字是haorooms

  1. .haorooms:after,
  2. .haorooms:after {
  3. border-top: 1px solid #bfbfbf;
  4. content: ' ';
  5. display: block;
  6. width: 100%;
  7. position: absolute;
  8. left: 0;
  9. bottom: 0;
  10. }
  11. /* 1.5倍 */
  12. @media only screen and (-webkit-min-device-pixel-ratio: 1.5),
  13. only screen and (min--moz-device-pixel-ratio: 1.5),
  14. only screen and (-o-min-device-pixel-ratio: 150/100),
  15. only screen and (min-device-pixel-ratio: 1.5) {
  16. .haorooms:after,
  17. .haorooms:after {
  18. -webkit-transform: scaleY(0.7);
  19. transform: scaleY(0.7);
  20. }
  21. }
  22. /* Retina 适配 */
  23. @media only screen and (-webkit-min-device-pixel-ratio: 2.0),
  24. only screen and (min--moz-device-pixel-ratio: 2.0),
  25. only screen and (-o-min-device-pixel-ratio: 200/100),
  26. only screen and (min-device-pixel-ratio: 2.0) {
  27. .haorooms:after,
  28. .haorooms:after {
  29. -webkit-transform: scaleY(0.5);
  30. transform: scaleY(0.5);
  31. }
  32. }
  33. /* 三倍屏 适配 */
  34. @media only screen and (-webkit-min-device-pixel-ratio: 2.5),
  35. only screen and (min--moz-device-pixel-ratio: 2.5),
  36. only screen and (-o-min-device-pixel-ratio: 250/100),
  37. only screen and (min-device-pixel-ratio: 2.5) {
  38. .haorooms:after,
  39. .haorooms:after {
  40. -webkit-transform: scaleY(0.33333334);
  41. transform: scaleY(0.33333334);
  42. }
  43. }

十六、根据设备价值@2x或者@1x或者@3x的图片

sass代码

  1. @mixin bgimage($url) {
  2. background-image: url($url + "@1x.png");
  3. @media only screen and (-webkit-min-device-pixel-ratio: 2.0),
  4. only screen and (min-device-pixel-ratio: 2.0) {
  5. background-image: url($url + "@2x.png");
  6. }
  7. }

引入如下:

  1. @include bgimage("./img/site/piowrap");

十七、Sass中@function中px转rem

  1. $browser-default-font-size: 16px !default;//变量的值可以根据自己需求定义
  2. html {
  3. font-size: $browser-default-font-size;
  4. }
  5. @function pxTorem($px){//$px为需要转换的字号
  6. @return $px / $browser-default-font-size * 1rem;
  7. }

touchweb网站常见问题,手机网站注意问题的更多相关文章

  1. dedecms网站扩展手机网站—共用数据库真正做到电脑手机同步访问,原pc站无需改动,对原pc站无任何影响

    在如今无线互联网大潮的冲击下,越来越多的pc网站访问量下降,首当其冲的就是以pc网站为生的站长们,为了顺应无线互联网的要求,站长们很有必要为自己的pc网站扩展一套手机网站,更早的抓住手机用户的流量,使 ...

  2. 支付宝支付之扫码支付(电脑网站支付)、H5支付(手机网站支付)相关业务流程分析总结

    前言 在上一篇文章<微信支付之扫码支付.公众号支付.H5支付.小程序支付相关业务流程分析总结>中,分析和总结了微信支付相关支付类型的业务流程,这里作为与微信支付平起平坐不相伯仲的支付宝支付 ...

  3. 【扫盲】HTML5、Web APP、3G网站、Wap网站傻傻分不清楚

           移动互联网指手机网站和app,其中app分为native app(原生app),web app(html5开发),Hybrid app(前两种app结合):手机网站分为wap网站和3g网 ...

  4. 支付宝PC即时到账和手机网站支付同步

    前几个月做了一个旅游网站,有PC站和手机站,涉及支付宝支付功能. 要求:PC站下的单,用户用手机登录也能支付;同理,手机站下的单,PC端登录也能支付. 附支付宝开放平台网址:即时到账 ,手机网站支付. ...

  5. 帝国cms制作手机网站

    1.操作前,我们需要先对网站数据库进行备份. 接下来我们添加手机站的模板组.点击"模板", 选择"模板组管理"中的"导入/导出模板组",然后 ...

  6. rem单位在手机网站中的使用

    em单位是相对于父节点的font-size,会有一些组合的问题,而rem是相对于根节点(或者是html节点),也就是说你可以在html节点定义一个单独的字体大小,然后所有其他元素使用rem相对于这个字 ...

  7. 如何在电脑上测试手机网站(补充)和phonegap

    颜海镜 介绍了专业人士精准测试手机网站的经验 http://www.cnblogs.com/yanhaijing/p/3557261.html, 因为太专业了,稍显复杂和琐碎,这里我介绍下我一直关注的 ...

  8. 分析app和wap手机网站的不同

    随着手机3G.4G时代的到来,手机功能的越来越强大,手机App的市场是越来越火爆,时代在更新随之而来的事物也在更新,不能更上时代的步伐是落后的表现,所以不仅仅是手机APP在完善,手机网站WAP也在不断 ...

  9. 自己动手搞定支付宝手机网站支付接口 FOR ECShop

    支付宝WAP网站版本的支付接口网上整合的比较少,看到很多网站在卖,顿觉无语. 主要是得自己查看支付宝官方提供的SDK中的开发文档. 支付宝sdk下载地址:https://doc.open.alipay ...

  10. 移动平台3G手机网站前端开发布局技巧

    本文转载至:移动平台3G手机网站前端开发布局技巧汇总 - 前端开发-武方博 您或许正在或准备参与一个WepApp项目,您或许正在Google搜索mobile development相 关的文章,您或许 ...

随机推荐

  1. Widows自带系统监控工具——24小时监控服务器性能

    博文来源:https://blog.csdn.net/qq_41650233/article/details/84313153 操作步骤1.运行程序perfmon.exe 2.在数据收集器下选择[用户 ...

  2. jdk7和8中关于HashMap和concurrentHashMap的扩容过程总结,以及HashMap死循环

    题外话:为什么要hashcode进行spread? 充分使用key.hashCode()的高16位信息,保证hash分布更分散, 扩容操作是新建2倍于原表大小的新表,并将原表结点拷贝一份放在新表中,对 ...

  3. jmeter beanshell遍历接口返回的json数组

    import java.util.LinkedHashMap; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Pred ...

  4. win下开机不登陆系统自动运行程序的解决方案

    文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. Jet的电脑可以定时开机了,但是他希望XP系统启动后在不登陆用户的情况下运行锐捷和 ...

  5. 解决用SHA256算法做私钥签名时,遇到“指定的算法无效”的问题

    在上一篇随笔“记一次三方接口开发的数据加密方案”中,使用SHA256对数据进行签名时,我提到了一个异常,System.Security.Cryptography.CryptographicExcept ...

  6. 猎鱼达人_PC按键

    更新模式[强制] 更新版本[3.13] 更新链接[https://yunfei-1256035889.cos.ap-beijing.myqcloud.com/%E6%8C%89%E9%94%AE%E7 ...

  7. JAVA基础复习与总结<九> 线程的基本概念_Thread继承创建线程

    多线程 一.线程的概念 1.1 程序.进程.线程 程序:Program 是一个静态的概念 进程:Process 是一个动态的概念 进程是程序的一次动态执行过程,占用特定的地址空间. 每个进程都是独立的 ...

  8. 关于阿里ICON矢量图(SVG)上传问题.

    注意点: 1. 存储为svg格式(建议使用存储为svg,不要使用导出为svg)2. 图像位置:链接(注意哦,不要点嵌入和保留编辑功能)---确定3. AI里面选中图形,点对象-路径-轮廓化描边 软件编 ...

  9. DataTable的Merge\COPY\AcceptChange使用说明

    在C#内使用DataTable的Merge().Copy().AcceptChange().Clone()方法的用途如下: 1.Merge()可将两个不同的表结构的表进行合并,合并后新表的列为之前两表 ...

  10. box-shadow 画叮当猫

    值 描述 h-shadow 必需.水平阴影的位置.允许负值 v-shadow 必需.垂直阴影的位置.允许负值 blur 可选.模糊距离 spread 可选.阴影的尺寸 color 可选.阴影的颜色.请 ...