web移动端常用知识点笔记

摘要:因为平时搞移动端的比例多一点,做个小小的总结。虽然网上很多这方面的总结,不过还是想自己也总结一下,适合自己的才是最好的。这样也方便以后自己的查阅

viewport模板——通用

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 -->
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
 <!-- 当网站添加到主屏幕快速启动方式,可隐藏地址栏,仅针对ios的safari ios7.0版本以后,safari上已看不到效 -->
<meta content="yes" name="apple-mobile-web-app-capable">
<!-- 将网站添加到主屏幕快速启动方式,仅针对ios的safari顶端状态条的样式  可选default、black、black-translucent-->
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<!-- 忽略将页面中的数字识别为电话号码 -->
<meta content="telephone=no" name="format-detection">
<!-- 忽略Android平台中对邮箱地址的识别 -->
<meta content="email=no" name="format-detection">
<title>标题</title>
<link rel="stylesheet" href="style.css">
</head>

<body>
   内容
</body>

</html>

  

 

移动端字体font-family

body {font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;}

  

css3多文本换行

p {
    overflow : hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

解决ios下输入框为fixed的乱位

在ios里面,当一个文本框的样式为fixed时候,如果这个文本框获得焦点,它的位置就会乱掉,由于ios里面做了自适应居中,这个fixed的文本框会跑到页面中间。类似:

(请原谅盗图,我错了)

解决办法有如下两个:

1、可以在文本框获得焦点的时候将fixed改为absolute,失去焦点时在改回fixed,但是这样会让屏幕有上下滑动的体验不太好。

.fixfixed {
position:absolute;
}
$(document)
	.on(‘focus‘, ‘input‘, function(e) {

        $(this).addClass(‘fixfixed‘);

	})
	.on(‘blur‘, ‘input‘, function(e) {
       $(this).removeClass(‘fixfixed‘);
	})

2、还有一种就是用一个假的fixed的文本框放在页面顶部,一个absolute的文本框隐藏在页面顶部,当fixed的文本框获得焦点时候将其隐藏,然后显示absolute的文本框,当失去焦点时,在把absolute的文本框隐藏,fixed的文本框显示。

.fixfixed {
position:absolute;
}
$(document)
    .on(‘focus‘, ‘input‘, function(e) {
        $absolute..show();
        $(this).hide();
    })
    .on(‘blur‘, ‘input‘, function(e) {
         $fixed..show();
        $(this).hide();
    });

快速回弹滚动

在有滚动的地方加上下面这段css,滑动起来就会特别的顺畅。而不会出现那种一卡一卡的现象。主要还是针对ios机,个人觉得这个很实用

.div {

        overflow: auto;
        -webkit-overflow-scrolling: touch;
    }

 

ios和android局部滚动时隐藏原生滚动条

.ennobleList::-webkit-scrollbar {
  opacity: 0;
}
.ennobleList::-webkit-scrollbar:horizontal {
  opacity: 0;
}

禁止ios&android长按时下载图片

.css{-webkit-touch-callout: none}

  

禁止ios和android用户选中文字

.css{-webkit-user-select:none}

使用弹性盒子box布局

//css
.box {
    	display: box;
        display: -webkit-box;
        -webkit-box-align: center; // 设置里面的元素垂直居中
        -webkit-box-pack: center; // 设置水平居中
        width: 200px;
        height: 30px;
    }
    .box .box_flex1{
        box-flex: 1;
        -webkit-box-flex: 1;
        -moz-box-flex: 1;
        background: blue;
    }
    .box .box_flex2 {
        box-flex: 2;
        -webkit-box-flex: 2;
        -moz-box-flex:2;
        background: red;
    }
    .box .box_flex3 {
        box-flex: 1;
        -webkit-box-flex: 1;
        -moz-box-flex: 1;
        background: green;
    }

//html 

<ul class="box">
    <li class="box_flex1">1</li>
    <li class="box_flex2">2</li>
    <li class="box_flex3">3</li>
</ul>

  

自适应布局模式

为了适应不同分辨率的手机,我们不建议把宽度写死。而是采用自适应的布局。可以看看我的这篇博文

http://www.cnblogs.com/xianyulaodi/p/5533201.html

禁用 ios用户点击链接时,会出现一个半透明灰色遮罩

a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0;)}

background-image和image的加载区别

  在网页加载的过程中,以css背景图存在的图片background-image会等到结构加载完成(网页的内容全部显示以后)才开始加载,

而html中的标签img是网页结构(内容)的一部分会在加载结构的过程中加载,换句话讲,网页会先加载标签img的内容,再加载背景图片background-image,

如果你用引入了一个很大的图片,那么在这个图片下载完成之前,img后的内容都不会显示。而如果用css来引入同样的图片,网页结构和内容加载完成之后,

才开始加载背景图片,不会影响你浏览网页内容。

伪元素改变number类型input框的默认样式

input[type=number]::-webkit-textfield-decoration-container {
    background-color: transparent;
}
input[type=number]::-webkit-inner-spin-button {
     -webkit-appearance: none;
}
input[type=number]::-webkit-outer-spin-button {
     -webkit-appearance: none;
}

改变placeholder的颜色值

input::-webkit-input-placeholder{color:#AAAAAA;}
input:focus::-webkit-input-placeholder{color:#EEEEEE;}

旋转事件和样式:

可以参考这篇文章 :http://www.cnblogs.com/xianyulaodi/p/5533185.html

打电话和发短信:

打电话://注意号码,不要乱搞

<a href="tel:110">打电话给:110</a>

发短信:

<a href="sms:110">发短信给: 110</a>

transition闪屏

在 Chrome and Safari中,修复使用CSS transforms 或者 animations时可能会有页面闪烁的效果

下面的代码可以修复此情况:

.cube {
   -webkit-backface-visibility: hidden;
   -moz-backface-visibility: hidden;
   -ms-backface-visibility: hidden;
   backface-visibility: hidden;

   -webkit-perspective: 1000;
   -moz-perspective: 1000;
   -ms-perspective: 1000;
   perspective: 1000;
   /* Other transform properties here */
}

在webkit内核的浏览器中,可用下面的方法

.cube {
   -webkit-transform: translate3d(0, 0, 0);
   -moz-transform: translate3d(0, 0, 0);
   -ms-transform: translate3d(0, 0, 0);
   transform: translate3d(0, 0, 0);
  /* Other transform properties here */
}

 

长时间按住页面出现闪退

element {
  -webkit-touch-callout: none;
}

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

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

   

移动端点透问题

这个问题比较经典,小小总结

情景再现:

<div id="mask">点击测试</div>
<a href="#">www.baidu.com</a>

div是绝对定位的遮罩层,并且z-index比a要高,a是一个链接,跳转到百度。我们给div绑定一个tap事件

$(‘#mask‘).on(‘tap‘,function(){
     $(‘#mask‘).hide();
});

按照我们预想,遮罩层div消失了。但是当我们在a标签上点击遮罩层时,a链接被触发,跳转了。也就是出现我们所说的点透事件。

出现原因:

事件的触发顺序:touchstart >touchmove>touchend >click

也就是说,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)实在不行就换成click事件

使用touchend事件解决方法,如下:

$("#mask").on("touchend", function (e) {
   e.preventDefault();

});

虽然网上很多这方面的总结,不过这套总结是适合我自己的。方便以后自己查阅

未完待续,持续更新.....

 

如果您觉得文章有用,也可以给咸鱼老弟发个微信小额红包鼓励鼓励,哈哈

 
时间: 2024-10-13 21:29:30

web移动端常用知识点笔记的相关文章

移动端常用知识点

对移动端的开发也不是非常了解,只是做过一些手机端项目,小编今天在这里整理一些常用的移 动开发知识点,有兴趣的朋友也可以了解一下,当然,如果有所补充,也可发email给小编哦- -- 1.viewport :所谓viewport,即除去所有工具栏.状态栏.滚动条等之后用于查看网页的区域,假设现在有一张报纸摆在你面前,但是这张报纸被一本书压住了,所以你只能看到报纸的一部分,这部分的可视区域就是指viewport: 1 <meta name="viewport" content=&qu

移动端开发知识点总结

在去年的这个时候,开始慢慢接触到移动端,接触移动端并不早.但那时查找相关资料不是很多(没技术,找不到),只有在慢慢的摸索敲打代码中寻找方法!记得那时一直纠结为什么别人的图片在手机上那么清晰,而我们做的就那么的模糊,后来听过放大图片,之后用代码缩小,才保证在手机上清晰.(后面才了解到是DPI, retina 2x 的问题). 废话少说,进入正题! 以下为移动端需要的知识点整理: 1)移动端屏幕多种多样,DPI(像素密度)不同,越高图像越清晰.而普通android手机和iphone手机的分辨率的基本

Web测试的常用测试用例与知识

1. Web测试中关于登录的测试 2. 搜索功能测试用例设计 3. 翻页功能测试用例 4. 输入框的测试 5. Web测试的常用的检查点 6. 用户及权限管理功能常规测试方法 7. Web测试之兼容性测试 8. Web测试-sql注入 9. Web测试中书写用例时要考虑的检查点 10. 手机电子邮件测试用例 11. 记事本与日历的测试用例 12. Web测试总结 13. 让web站点崩溃最常见的七大原因 14. Web应用程序是否存在跨站点脚本漏洞 15. Web测试总结(全) 16. 理解we

端游、手游服务端常用的架构是什么样的? 源码下载

本文引用于:征途源码论坛(www.zhengtuwl.com)-----专注各类免费精品源码下载的平台 类型1:卡牌.跑酷等弱交互服务端卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: <ignore_js_op> 登录时可以使用非对称加密(RSA, DH),服务器根据客户端uid,当前时间戳还有服务端私钥,计算哈希得到的加密 key 并发送给客户端.之后双方都用 HTTP通信,并用那个key

依赖注入及AOP简述(十)——Web开发中常用Scope简介 .

1.2.    Web开发中常用Scope简介 这里主要介绍基于Servlet的Web开发中常用的Scope. l        第一个比较常用的就是Application级Scope,通常我们会将一些贯穿整个EAR都会用到的常量定义.通用的服务组件.类似DBConnection连接创建等比较消耗资源的组件等等放到这个Scope中去.Application级Scope是与应用程序的ServletContext共存亡的,因此可以理解为所部署应用程序的ServletContext中的“单例Scope

SeaJS:一个适用于 Web 浏览器端的模块加载器

什么是SeaJS?SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Definition)规范.SeaJS本身遵循(Keep it Simple, Stupid)理念开发,API仅有几个. 为什么用SeaJS?假如我们要开发一个web应用App,在这个应用中需要使用jquery框架.App的首页index.html会用到module1.js,module1.js依赖module2

BOM知识点笔记

Window 对象常见属性 innerHeight  当前窗口文档显示区域的高(这里的宽度和高度不包括菜单栏.工具栏以及滚动条等的高度.) innerWidth   当前窗口文档显示区域的宽(这里的宽度和高度不包括菜单栏.工具栏以及滚动条等的高度.) outerHeight  当前窗口文档(包含菜单栏.控制台.边框)的高 outerWidth   当前窗口文档(包含边框.滚动条)的宽 window对象常见方法 clearInterval()  setInterval()  setTimeout(

CSS3常用知识点

CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa"] { //TODO } /* E[attr|=val] 表示的要么一个单独的属性值 要么这个属性值是以"-"分隔的*/ .attr3 a[class|="kawa"] { //TODO } /* E[attr*=val] 表示的属性值里包含val字符并且在&

web服务的一些基础笔记

1. MIME(Multipurpose Internet Mail Extension,多用途互联网邮件扩展) 它是SMTP能够传输非文本格式文件的根源,将他引入到HTTP,那么HTTP也可以传输图片声音等非文本格式的文件,所以他也是HTTP可以传输非文本格式文件的根源. 将非文本数据在传输数据前重新编码为文本格式,接收方能够用相反的方式将其重新还原为原来的格式,还能够用相应的程序来打开. 2.flash,Applet(Java中), Flash也是一种变成语言.可以有动态网页. 3.动态网页