Hybrid框架UI重构之路:五、前端那点事儿(HTML、CSS)

上文回顾 :Hybird框架UI重构之路:四、分而治之

这里讲述在开发的过程中,一些HTML、CSS的关键点。

单页模式的页面结构

在单页模式中,弱化HTML的概念,把HTML当成一个容器,BODY中显示的主体内容才是页面,一个HTML容器中可以存放1个或者多个页面,每个页面放置于section中。而一个页面(section)中必有主体内容(content),也有可能包含头部内容、底部内容,甚至一些侧滑菜单等。

所以,以我们通常看到的一个移动应用的界面中包含了顶部Title和主体内容的页面代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="width=480,user-scalable=no" />

<link rel="stylesheet" href="css/bingotouch.css" />
<link rel="stylesheet" href="css/app.css" />

<!-- 函数库 -->
<script src="js/cordova.js"></script>
<script src="js/zepto.js"></script>
<script src="js/iscroll.js"></script>
<script src="js/baiduTemplate.js"></script>
<script src="js/bingotouch.js"></script>
<script src="js/app/app.js"></script>

<title>BingoTouch</title>
</head>
<body>
    <div id="section_container">
      <section id="index_section" class="active">
          <div class="header" data-fixed="top">
              <div class="title row-box">
                 <div class="box-left">
                 </div>
                 <div class="span1">
                     <h1>首页</h1>
                 </div>
                 <div class="box-right">
                 </div>
             </div>
          </div>
          <div class="content">
             <h1>欢迎使用BingoTouch</h1>
          </div>
          <div class="footer" data-fixed="bottom">
          </div>
      </section>
    </div>
</body>
</html>

这里可以看到单页的基本结构是以Section为单个页面的容器,页面中显示的标题导航header和主体内容content都位于Section之下,并且各自可以显示需要的内容。

也就是如下图的一个结构:

片段页面相对就简单很多,如下代码:

<section id="demo_section">
    <div class="header" data-fixed="top">
      <div class="title row-box">
              <div class="box-left">
          </div>
          <div class="span1">
              <h1>Demo</h1>
          </div>
          <div class="box-right">
          </div>
        </div>
    </div>
    <div class="content">
      <h1>欢迎使用BingoTouch</h1>
    </div>
    <div class="footer" data-fixed="bottom">
    </div>
</section>

页面片段也即是主页面里面的section块,从这里看其他页面是很简洁的。

 

viewport

viewport这东西不详细描述,我只是被整得快疯了,几个属性width、height、initial-scale、minimum-scale、maximum-scale、user-scalable。

ios : 在ios上很正常,设啥就是啥。

android : 在android上千奇百怪,简直是“茅坑里的石头”。尽管网上很多的文章对viewport都有阐述,但所写的描述、公式、示例没有一个能说对(我有用不同手机测试过),都没能完全说明白,都是对一点错一点,似对似错。而公司也没有人能好好说明它,之后我测试过,当测试到第5个机型就测不下去了,都不同各异,没有共同的特点,只能暂停下来(做其他事,测试事情先延后)。

现在使用的设置viewport的脚本在已测试过的机型都没有问题,所以暂不深究了,代码如下。

var viewport = "";
var userAgent = navigator.userAgent.toLowerCase();

if (/android (\d+\.\d+)/.test(userAgent)) {
    viewport ="width=device-width,initial-scale=1,user-scalable=no,target-densitydpi =240";
} else {
    if(userAgent.match(/ipad/i)){
        viewport = "width=640,user-scalable=no";
    }else if(userAgent.match(/iphone os/i) == "iphone os"){
         viewport = "width=480,user-scalable=no";
    }
}
//add view
if ($("meta[name='viewport']").length > 0) {
    $("meta[name='viewport']").attr("content", viewport);
} else {
    var element = document.createElement('meta');
    element.name = "viewport";
    element.content = viewport;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(element);
}

PS:对于不理解东西,我不喜欢只一对一解决,例如某个机型的viewport设置有问题,设置某些属性就可以了,但可能不知为什么。我是希望能明白本质原因,以后可以做到举一反三,才是我想的。另外,如果有人明白viewport且做过测试(这点很重要),能否告诉我你的理解,求交流。

 

扁平化

扁平化不是新的东西,目前很多公司的项目都是渐变的风格,主要是体现是在header、footer、button等一些控件。而扁平化也仅仅是将渐变的效果去掉,并没有什么特别。

 

图标

图标有两种,一种是图片图标,一种是字体图标。

我有一篇文章有详细介绍:http://www.cnblogs.com/lovesong/p/4115991.html

 

总结

我并没有写开发的具体内容(太多东西,没办法几篇文章讲完,也没必要,毕竟思路才是正途),也就不多讲,旨在介绍我开发的方式、方法、步奏,以及一点关键的前端问题。

 

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/4297182.html

转载:http://www.cnblogs.com/lovesong/p/4297182.html

时间: 2024-08-03 10:42:32

Hybrid框架UI重构之路:五、前端那点事儿(HTML、CSS)的相关文章

Hybrid框架UI重构之路:六、前端那点事儿(Javascript)

上文回顾 :Hybird框架UI重构之路:五.前端那点事儿(HTML.CSS) 这里讲述在开发的过程中,一些JS的关键点. 换肤 对于终端的换肤,我之前一篇文章有说了我的想法. 请查看:http://www.cnblogs.com/lovesong/p/4122262.html   iscroll的问题 1.使用iscroll的页面里面有表单元素,当键盘弹出再缩回后,页面拖不到最顶地方. 这个在android上总出现,使用的iscroll版本是4.2.5. 这原来是个很棘手的问题,导致了有inp

Hybrid框架UI重构之路:四、分而治之

上文回顾:Hybird框架UI重构之路:三.工欲善其事,必先利其器 上一篇文章有说到less.grunt这两个工具,是为了css.js分模块使用的.UI框架提供给使用者的时候,是一个大的xxx.js.xxx.css,但在开发时候,必须划分模块. CSS模块划分 1.variables.less 这里面是一些样式的变量.函数 例: 字体: @baseFontSize: 20px; 圆角: .rounded-corners (@radius: 5px) { border-radius: @radiu

Hybrid框架UI重构之路:三、工欲善其事,必先利其器

上文回顾:Hybird框架UI重构之路:二.事出有因 工欲善其事,必先利其器,事是重构的目标,器是开发环境. 这篇文章将讲述重构时的UI框架的目录结构,且需要使用的开发工具. 目录结构 demo : 开发框架的模板(单页模式) demo-muti : 开发框架的模板(多页模式) demo-scene : 示例模板.一个完整的示例,目的是给使用者稍作修改就可以使用在项目上. demo-template : 给使用者使用的开发模板. demo-whole : 可在PC上演示的示例模板 dist :

Hybrid框架UI重构之路:二、事出有因

上文回顾:Hybird框架UI重构之路:一.师其长技以自强   一切的重构都是有原因的,或许为了更快速度.更好体验.更快捷开发等,于是就有了自己的开发目标,简单看看未重构前UI("中国移动式"风格). 上一篇文章说明调查了这么多类似框架,对比了他们的特点,而比对自身UI,也是存在可优化的地方,于是有了下面几点目标(仅仅UI框架方面,不涉及原生部分). (1)规范开发 1.SVN版本控制.之前的UI框架部分是没有进行svn版本控制的,于是会导致个问题--有些文件在多次修改后,连当初的开发

Hybrid框架UI重构之路:一、师其长技以自强

这两年在支撑公司的Hybrid框架的运维发展,让人确认这种移动开发方式确实是一条不错的路.混合应用这种开发方式降低开发难度,极大的提高开发效率,最重要的一点效果可以接近原生应用.框架的本身是需要持续不断发展的,这里开始我讲述我重构Hybird框架的UI的这三个月(2014-11--2015-1),而在重构之前,预先调查了目前所了解的几个混合应用的框架,师其长技以自强. PS:Hybrid应用是web页面与原生壳(Android.IOS)的结合最后打成安装包的应用.     重构的前奏曲: Api

急:项目框架的重构问题

问题描述 急:项目框架的重构问题 spring+status2+ hibernate项目改成spring+spring MVC+ hibernate都需要重构哪些地方 解决方案 重构项目前端js框架 解决方案二: 将strust2的控制器写法改成springmvc的控制器写法,其他基本没什么变化 解决方案三: 主要是传值的问题不一样吧,其他基本还好

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇 Google主推-Android开发利器--Android Studio,这可能是最全的AS教程! Android Studio,自Google2013年发布以来,就倍受Android开发者的喜爱,我们本书,就是基于Android Studio来进行案例演示的,大家都知道,Android

我的VSTO之路(五):Outlook初步开发之联系人扩展

原文:我的VSTO之路(五):Outlook初步开发之联系人扩展 上一讲我们完成对Word的介绍,文本开始,我将着重介绍Outlook.Outlook是微软Office中一个非常实用的工具,尤其在一个拥有Windows Domain的公司局域网中,Outlook是员工最常用的通讯工具,所以对Outlook实行进一步的定制开发的需求量是很大的.本文中,我先以联系人的扩展为开始,讲解如何开发一个强大的Outlook插件.   故事的开始 首先我们假设一个场景.有一天,市场部的同事来找你帮个小忙(有经

赵慧玲:网络重构之路漫长,SDNFV挑战诸多

4月18日,2017全球未来网络发展峰会SDN/NFV技术与应用论坛于南京江宁隆重召开.会上,中国通信学会常务理事赵慧玲发表了"SDNFV实践与挑战"的主题演讲.赵慧玲表示,网络重构的主要挑战涉及网络层面和运营层面,其中网络层面主要涉及SDN和NFV,而运营层面主要包括网络编排和业务编排两大方面. 据悉,Gartner技术成熟度曲线表明,SDN/NFV已经趋近成熟.数据显示2015到2016年间,运营商采用x86的服务器中47%用于SDN/NFV(OSS/BSS占29%,云关联服务占1