网页如何做到适应在手机上浏览

http://bbs.php100.com/read-htm-tid-482066.html

目前有很多不错的mobile开发框架可以使用,这些框架已经为手机端的特殊性提供了很好的支持和效果插件,比如:jquery mobile、kendoui等~~


不过,谢谢框架因为其开源性或商业化,可能你学习和认知起来会有一定的时间,维护起来会有一定的困难。另外,通过一段时间的项目实验,我发现,这些框架的【个性化】比较少,也就是说,它提供的样式就是最终的样式了,你修改他的样式最终做出符合自己效果图的东西还是比较困难的。也就是说:使用框架进行批量生产可以,制作个性站点就有点复杂!

那么我是制作方法就是自己去按写网页的方法去写手机端的页面。这需要注意几个方面:

1.添加特定的meta信息:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="format-detection" content="telephone=no" />

上述的几个meta信息,第一个是设定手机端的屏幕尺寸的,第二个是设定iphone端页面全屏的,第三个则是取消数字被识别为电话号码的!当然,还有其他很多,你可以google一下,我的项目中通常只用到这几个而已!

第一个meta写法就可以到达你要的效果!…………

2.图片分辨率

大家都知道手机端屏幕目前来说大部分都是视网膜屏幕,普通的图片显示起来通常会变的比较模糊,通常的做法就是把图片设置为双倍,显示为正常,比如:我要显示200*100的图片,那么我可以做一个400*200的图片,然后在调用的时候写:<img src="123.jpg" style="width:200px;height:100px;" alt="" />这样图片被缩小一倍后就显示的清楚了。

css中图片,通常也需要设置一下background-size属性,常用的就是cover、0px 100%;等这样的值,他主要实现等比缩放、单向缩放。比如,我有一个图标,是使用的背景,该元素的尺寸是20*20,图片文件的尺寸是40*40,那么,可以在css中这样细写:
.aa {width:20px;height:20px;background:url(images/aa.png) no-repeat center top; background-size:cover;}
但是,如果写一个渐变效果,或者带纹理的效果,那就需要使用到单边缩放了,也就是一个方向保持原始的尺寸,一个方向拉伸为指定的尺寸。

3.字体字号

可以继续沿用PC网页中的12、14、16、18px这样的设置,以16px为基准就可以了(始终的大小),12号最小,用于说明类的信息。特殊字号统一设定。

4.css3

圆角、投影、背景透明度还是需要使用css3的。这些东西也通常写到一个独立的文件中,因为他要涉及很多写法,太过分散不宜维护,例如:

#aa,.bb,span {border-radius:5px;  -webkit-border-radius:5px;  -moz-border-radius:5px;  -o-border-radius:5px;}

5.滚动条

手机端不支持css的滚动条属性,也就是,平时我们在电脑端设定一个容器的内容溢出后出现滚动条,但是手机端不会。利用手机端的滚动条有多种方法,
第一种是牺牲站点效果,使用通页布局,这个就是像平时的网页一样,一个很长很长的页面,这样系统就有滚动条的。模拟全屏应用就没办法了。

第二种是使用iscroll插件,他可以配合你的框架设定方法来完成一个全屏app的设计,比如:你设定头部、页脚的尺寸和固定位置,然后,用js动态设定内容区域的宽度就可以了,然后给内容区域设定滚动条。

6.触屏事件 touchstart、touchmove、touchend

触屏事件是手机端专有的js事件,他可以用来制作很多东西,通常手机端的拖动幻灯片、slider控件等都需要用到拖动事件,不过,拖动事件的调用方法是这样的:
复制代码
$(document).ready(function(){var inX,inY,deX,deY,touch2,canDrag;//按下document.getElementById("tba").addEventListener("touchstart",function(e){var touch = e.targetTouches[0];canDrag = true;$("#debug ul").append('<li>触摸开始...</li>');$("#tba").addClass("tba_down");//元素自身位置var dePos = $("#tba").position();deX = dePos.left;deY = dePos.top;//按下时的位置inX = touch.pageX - deX;inY = touch.pageY - deY;$("#posa").text(touch.pageX + ":" + touch.pageY);//拖放document.getElementById("tba").addEventListener("touchmove",function(e){if(canDrag){var touch2 = e.targetTouches[0];e.preventDefault();$("#posb").text(touch2.screenX + ":" + touch2.screenY);$("#tba").css({left:touch2.screenX - inX,top:touch2.screenY - inY});}});});//松开document.getElementById("tba").addEventListener("touchend",function(e){$("#debug ul").append('<li>触摸结束...</li>');$("#tba").animate({left:"0px",top:"0px"});$("#tba").removeClass();canDrag = false;});
......
.....

具体的用法个人还没有研究。不过你也是可以使用第三方插件完成的,比如:http://www.jqueryrain.com/2012/07/flipsnap-js-snap-scroll-for-touch-device/

7.行高line-height

有款浏览器叫欧朋浏览器。这货不支持圆角、不支持投影、不支持行高,他只支持类似wap的网页界面。而系统原生的浏览器以及一些大的知名手机浏览器对上述东西的支持还是比较好的。但是,因为手机浏览器设计的各异,很多方法和效果可能在不同的浏览器上有不同的使用效果,比如:UC浏览器的左右滑动翻页,百度浏览器的向上滑动关闭等,他们很有可能和我们自身设计的方法冲突,导致页面被错误的关闭等....

总结:
手机端的页面和电脑端的页面一样,也可以分为普通样式和个性样式,普通样式的话,能够支持大多数的浏览器。模拟app就稍微麻烦一些,需要给页面引用大量的js效果,这包括页面加载、系统控件等,有些手机浏览器帮我们完成了,有些则需要手动设计,完完全全的模拟手机app还是比较复杂的(模拟不如直接基于SDK开发一个)。


OK,发一个自己做的项目截图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学到了!MySQL 8 新增的「隐藏索引」真不错

MySQL 8.0 虽然发布很久了&#xff0c;但可能大家都停留在 5.7.x&#xff0c;甚至更老&#xff0c;其实 MySQL 8.0 新增了许多重磅新特性&#xff0c;比如栈长今天要介绍的 "隐藏索引" 或者 "不可见索引"。隐藏索引是什么鬼&#xff1f; 隐藏索引 字面意思…

Java ClassLoader findLibrary()方法与示例

ClassLoader类findLibrary()方法 (ClassLoader Class findLibrary() method) findLibrary() method is available in java.lang package. findLibrary()方法在java.lang包中可用。 findLibrary() method is used to find the absolute pathname of the given native library. f…

iOS开发-自定义UIAlterView(iOS 7)

App中不可能少了弹框&#xff0c;弹框是交互的必要形式&#xff0c;使用起来也非常简单&#xff0c;不过最近需要自定义一个弹框&#xff0c;虽然iOS本身的弹框已经能满足大部分的需求&#xff0c;但是不可避免还是需要做一些自定义的工作。iOS7之前是可以自定义AlterView的&am…

jsp中redirect和forward的区别

在网上看到一些帖子&#xff0c;总结了一些区别&#xff0c;可以从以下几个方面来看&#xff1a;1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来…

Spring 事务失效的 8 大场景,面试官直呼666...

前几天发了一篇文章里面有一个关于事务失效的问题&#xff1a;用 Spring 的 Transactional 注解控制事务有哪些不生效的场景&#xff1f;其中有个热心粉丝留言分享了下&#xff0c;我觉得总结得有点经验&#xff0c;给置顶了&#xff1a;但是我觉得还是总结得不够全&#xff0c…

python 示例_Python条件类| release()方法与示例

python 示例Python Condition.release()方法 (Python Condition.release() Method) release() is an inbuilt method of the Condition class of the threading module in Python. release()是Python中线程模块的Condition类的内置方法。 Condition class implements conditio…

Java BigInteger类| hashCode()方法与示例

BigInteger类hashCode()方法 (BigInteger Class hashCode() method) hashCode() method is available in java.math package. hashCode()方法在java.math包中可用。 hashCode() method is used to return the hash code value of this BigInteger. hashCode()方法用于返回此Big…

认真聊一下MySQL索引的底层实现!

前言当我们发现SQL执行很慢的时候&#xff0c;自然而然想到的就是加索引&#xff0c;当然他也是高频的面试问题&#xff0c;所以今天我们一起来学习一下MySQL索引的底层实现&#xff1a;B树。树简介、树种类B-树、B树简介B树插入B树查找B树删除B树经典面试题树的简介树的简介树…

js的四舍五入

Math.ceil求最小的整数但不小于本身. Math.round求本身的四舍五入。 Math.floor求最大的整数但不大于本身.

Java BigInteger类| bitCount()方法与示例

BigInteger类的bitCount()方法 (BigInteger Class bitCount() method) bitCount() method is available in java.math package. bitCount()方法在java.math包中可用。 bitCount() method is used to count the number of bits in 2’s complement denotation of this BigIntege…

head first python(第三章)–学习笔记

1.介绍基础文件&#xff0c;输入&#xff0c;输出 open() 打开文件&#xff0c;一次传入一行数据&#xff0c;可以结合for循环和readline()来使用 close() 用来关闭open打开的文件 the_file open(sketch.txt)the_file.close()例子&#xff1a; >>> data open(/root/…

最新大厂面试真题集锦

年后又是一波求职季&#xff0c;正是“金三银四”这个求职黄金期&#xff0c;很多人扎堆在这个时间段跳槽&#xff0c;找工作&#xff0c;程序员也不例外。春节刚过&#xff0c;各公司企业都开始启动了新一年的招聘计划&#xff0c;招聘岗位倍增&#xff0c;求职人数远超于岗位…

java.lang.IllegalThreadStateException 线程运行报错

写程序线程再运行第二遍的时候报java.lang.IllegalThreadStateException。发现一个Thread不能重复用start方法。 解决方法&#xff1a; 1、将extends Thread线程类改成implements Runnable&#xff0c;或者将Thread a new Thread改为Runnable a new Runnable&#xff1b; …

使用OpenCV在Python中进行人脸和眼睛检测

Modules Used: 使用的模块&#xff1a; python-opencv(cv2)python-opencv(cv2) python-opencv(cv2) Opencv(Open source computer vision) is a python library that will help us to solve computer vision problems. Opencv(开源计算机视觉)是一个Python库&#xff0c;可帮…

Java打造一款SSH客户端,已开源!

最近由于项目需求&#xff0c;项目中需要实现一个WebSSH连接终端的功能&#xff0c;由于自己第一次做这类型功能&#xff0c;所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用&#xff0c;当时看到了很多这方面的项目&#xff0c;例如&#xff1a;GateOne、webssh、she…

html中可以自定义属性,,,妈的竟然才知道..

html中可以自定义属性,,,妈的竟然才知道.. <input userinfo"没见过帅哥呀" />

Js实现动态插入删除文本框

自己做了个Js插入文本框的例子&#xff0c;扔上别忘了。 <html><head><title>Untitled Document</title><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><script language"javascript"&g…

ruby 数组元素替换_从Ruby中的集合中删除并替换元素

ruby 数组元素替换Ruby has various specific methods to fulfil specific tasks. At several places, you may need to replace or delete an element from an instance of set class provided that there are certain elements present in the Set. You can perform deletion…

我去,这几个Linux指令太装B了|动图展示

1. sl先看一下呼啸而过的火车&#xff1b;安装指令如下&#xff1b;sduo apt-get install sl执行结果如下&#xff1a;2. htop图形化Linux系统性能监测工具&#xff0c;屌不屌:安装指令如下:sduo apt-get install htop执行结果如下&#xff1b;3. gcp以前用cp复制文件总是看不懂…

书店POS机--细化迭代2--测试

2019独角兽企业重金招聘Python工程师标准>>> (1) 开始一次新的销售&#xff0c;点击书店POS系统的销售&#xff1a; (2) 进入销售模块之后的界面如下&#xff1a; (3)逐条录入商品条目(根据商品编号)&#xff0c;并修改数量。确认无误之后点击“确认”按钮&#x…