Mobile web

原文链接:http://blog.csdn.net/small_rice_/article/details/22690535

在智能手机横行的时代,作为一个web前端,不会编写移动web界面,的确是件悲催的事情。当公司准备做一个微信的微网站时,作为一个多年经验的web前端码农,我迷茫了,真心不知道从何下手。

接下来就是搜一堆教程,然后开始编写代码,三天后,我的第一个移动端web页面编写完成。

回头想想,移动端的web页面代码编写远没有我想的那样复杂(可能是我做的这个项目比较简单的缘故)。但是就入门来说,其实是蛮简单的,我把他总结为一下几个方面:特殊的meta标签/百分百比布局宽度/rem设置字体大小/css3的使用。

好吧,让我们开始吧,以下是移动web新手的浅见,老鸟请绕行,如有赐教不胜感激。

1.特殊的meta标签;

因为现在我们用的智能手机(iOS,Android)的浏览器都是基于webkit内核,这里有一些针对webkit的特殊meta标签,在开发移动端web是起到很重要的作用:

<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;

<meta content="yes" name="apple-mobile-web-app-capable" />

复制代码

iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;

<meta content="black" name="apple-mobile-web-app-status-bar-style" />

复制代码

iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;

  • <meta content="telephone=no" name="format-detection" />

复制代码

告诉设备忽略将页面中的数字识别为电话号码。

  • <meta content="email=no" name="format-detection" />

复制代码

Android中禁止自动识别页面中的邮件地址,iOS中不会自动识别邮件地址;

(注:由于webkit的浏览器对于html5的支持比较好,所以我们在声明头部的时候最好用html5的声明方式。当然如果你习惯了html4,那我只能告诉你,还是先学学html5在接着看吧!)

2.百分百布局;

拿到设计师的640px(以iPhone4的比例做的设计稿)的设计稿后,我就严格的按照设计稿设置了各个模块的高度/字号。接下来悲催的事情发生了,写出来的页面在手机上显示的异常大。我傻了,这是嘛情况!后来咨询专业人士才了解到,虽然iphone4的分辨率是960x640px,但是其屏幕的像素密度比较高,它的实际大小应该是减半的。所以在写代码时一切的高度/字号都要是设计稿的1/2。接着说百分比布局:

在做移动web页面时,我们要用百分比布局来实现自适应屏幕宽度。有pc端web页面开发经验的同学就会知道,元素的盒子模型(不清楚的同学可以去w3school上查查)。

那我想要一个元素100%显示,又必须有一个固定的padding-left/padding-right,还有1px的边框,怎么办?

  • element{
  • width: 100%;
  • padding-left: 10px;
  • border: 1px solid blue;
  • }

复制代码

这样编写代码必然导致出现横向滚动条,肿么办?要相信问题就是用来解决的。这时候伟大的css3为我们提供了box-sizing属性,对于这个属性的具体解释不做赘述(想深入了解的同学可以到w3school查看,要知道自己动手会更容易记忆)。让我们看看如何解决上面的问题:

  • element{
  • width: 100%;
  • padding-left: 10px;
  • box-sizing:border-box;
  • -webkit-box-sizing:border-box;
  • border: 1px solid blue;
  • }

复制代码

好的,问题被解决了!

3. rem设置字体大小;

在这里让我们花一些梳理一下css中的单位:px/em/rem(以下内容摘自0101后花园

px:就是css中最基本的长度单位了,用px做单位基本上没什么问题,可以做到让页面按套路精确的展现。但是,(听到但是的时候是不是突然有些不适,就像每次开发的同学喊我的时候,我的潜意识会告诉自己,坏了又出bug了!!)如果全篇用px布局会暗藏一个问题,就是当用户和Ctrl滚页面的时候(说白了就是ctrl+,ctrl-),你会发现页面结构产生了不可预知的错乱,因此有砖家倡导使用em替代px。

em:em是相对单位,em相对的基准点就是浏览器的字体大小(浏览器默认字体为16px),所以1em默认等于16px。那么14px=0.875em; 公式是14/16=0.875em。用em来写的话,就可以解决ctrl+,ctrl-时造成的页面错乱问题。

可是,问题又来了,em准确的说是相对于父节点的字号来计算的,如果自身定义了字号那么就相对自身字号来计算,举例如下:

  • html { font-size: 100%; }
  • .box-0 {
  • height: 1em; /* 此时height等于16px */
  • }
  • .box-1 {
  • font-size: 0.625em; /* 此时基准字号以变更为16*0.625=10px */
  • height: 1em; /* 此时实际height等于10px */
  • }

复制代码

看明白了吧,1em并不是一个固定不变的值,再加上数学是体育老师教的,这不是自作孽吗。没关系,css3为我们引入一个新的单位就是rem可以解决这个问题。

rem:rem和em一样也是一个相对单位,为了方便理解,我们就理解rem为root em,顾名思义rem只相对跟节点<html>计算,这就是说只要在根节点设定好参考值,那么全篇的1rem都相等,计算方式同em,默认1rem=16px; 同理你可以设定html { font-size:62.5% } 那么1rem就等于10px,以此类推 …(当然万恶的ie678不支持rem,但是还好我们在做的是移动端web页面)

4.使用css3;

做这种高大上的移动web页面怎么能少的了css3。不过平时css3用的比较少,这里记下几个我在这个项目中用到的css3属性。更深入的亲们自己去学咯。同样,这里不对属性做赘述,放着强大的w3school不用,我只能对你说:药不能停啊!:

A.圆角(这个太常用了)

  • element{
  • border: 1px solid blue;
  • -moz-border-radius: 3px;
  • -webkit-border-radius: 3px;
  • border-radius: 3px;
  • }

复制代码

B.渐变(这个在做按钮的时候很常用)

  • element{
  • background-image: -moz-linear-gradient(top, #2288cc, #389de2); /* Firefox */
  • background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #389de2), color-stop(1, #2288cc)); /* Saf4+, Chrome */
  • }

复制代码

C.去掉手持设备点击时出现的透明层 (一般会在头部做格式化)

  • a,button,input{
  • -webkit-tap-highlight-color: rgba(0,0,0,0);
  • -webkit-tap-highlight-color: transparent; /* For some Androids */
  • }

复制代码

在应用了此属性时,链接的active属性会实效,解决的方法是,在页面unload时运行document.addEventListener("touchstart", function(){}, true);使active状态可用。(注:在小米系统下,点击链接仍然会出现红色的边框,各位同学如有解决方法,请赐教,不胜感激。)

D.改变盒子模型(上面已讲过)

  • element{
  • box-sizing:border-box;
  • -webkit-box-sizing:border-box;
  • }
时间: 2024-08-13 07:35:21

Mobile web的相关文章

Mobile Web 开发,布局必须用 table,这要写进手则

直到今天,JavaScript 的世界仍然洪荒. 比如说 Angular 的 ngView 是不能玩儿嵌套的. 试了 angular-ui-router,未果,因和 $locationProvider & ngRoute 的设置冲突.弃之. 是.没有克服不了的技术困难.如果有,绕过去就是了.所以,还是没有. 没有解决不了的技术问题.如果有,让它不是问题就是了.所以,还是没有. -------------------------- 何时冒出一个叫什么猎豹的浏览器?用的是 IE 的内核.IE 下,读

非常实用的mobile web application远程调试工具 weinre

在移动web应用中,由于没有类似chrome和firebug的调试工具,调试起来比在PC上相对麻烦一些,有时候只能反复进行修改比对,但使用weinre我们可以轻松做到远程调试的功能. 什么是weinre? 官方解释: we是指web,in是指inspector,re是指remote,合起来就是weinre. http://people.apache.org/~pmuellr/weinre/ 如何安装? weinre基于node,使用npm快速安装: npm install weinre 使用 使

Automating mobile web apps

Automating mobile web apps If you're interested in automating your web app in Mobile Safari on iOS or Chrome on Android, Appium can help you. Basically, you write a normal WebDriver test, and use Appium as the Selenium server with a special set of de

mobile web retina 下 1px 边框解决方案

http://www.tuicool.com/articles/ZRv6bun 再谈mobile web retina 下 1px 边框解决方案 时间 2015-01-03 12:03:31  Hugo Web前端开发 原文  http://www.ghugo.com/css-retina-hairline/ 主题 WebKitiOSCSS 本文实际上想说的是ios8下 1px解决方案. 1px的边框在devicePixelRatio = 2的retina屏下会显示成2px,在iphone 6

Mobile Web调试工具Weinre (reproduce)

Mobile Web调试工具Weinre 现在.将来,用移动设备上网越来越成为主流.但对于开发者们来说,移动web的调试一直是个难题,前期可以使用模拟器来协助调试,但到了真机调试阶段就让人非常头痛.而Weinre就是解决这难题的利器. Weinre的本意是Web Inspector Remote,它是一种远程调试工具.功能与Firebug.Webkit inspector类似,可以帮助我们即时更改页面元素.样式,调试JS等,下面就简单介绍下如何使用.下面以以Windows系统为例: 一.首先确保

13 Reasons Why You Should Pay Attention to Mobile Web Performance

Mobile is no longer on the sidelines. If you’re not already thinking mobile first, you should at least consider it. Let’s go over compelling data that demonstrate the importance of focusing on performance for mobile devices. Business is Booming on th

打造离线使用的Mobile Web App

最近公司举办技术大赛,我和同事一起制作了一个叫做10K Hours的Mobile Web App,可以帮助你通过一万小时的努力,成为某个领域的专家.正好前段时间翻译了一本书<HTML5 Mobile Development Cookbook>,中文译本在此.其中讲到了不少移动端Web开发的Best Practices,正好就用到了10K Hours这个应用上.其中我觉得非常有用但是又让人头痛的一个功能就是AppCache:它可以让用户在访问一次网页以后,下次再来时不能访问网络的情况下,也可以使

Mobile Web开发实践

移动设备的快速发展给用户带来了很大的便利.用户使用Android.iPhone和其它移动设备很容易接入互联网.移动设备对网页的性能要求比较高,下面就说说Mobile Web开发的一些心得. Viewport 当你用iPhone访问一个没有面向移动设备优化过的网站时(最好选取960px宽度的网站),你会发现iPhone上面刚好可以把整个页面显示出来,但是页面被缩小了非常多,字体非常小.这其实是Sarari默认把自己当成980px宽度来处理的,而所有iPhone(竖屏)的真实宽度为320px,事实上

front end about mobile web techs

WEB OF DEVICES http://www.w3.org/standards/webofdevices/ MOBILE WEB http://www.w3.org/standards/webdesign/mobilweb JAVASCRIPT APIS CURRENT STATUS http://www.w3.org/standards/techs/js#w3c_all

Mobile web application框架技术

1.jquery mobile,这个2010年8月发起的项目经过1年的发展目前已经发布了jquery mobile beta2.是目前知名度较高(借光jquery),发展较快并且在国内被应用较多的一个框架. 官方主页::http://jquerymobile.com/ 2.jQTouch 是一个基于jQuery 的插件,主要用于手机上的 Webkit 浏览器上实现一些包括动画.列表导航.默认应用样式等各种常见UI效果的JavaScript 库.支持包括 iPhone.Android 等手机.<B