zoukankan      html  css  js  c++  java
  • HTML页面规范分解

    百度,淘宝,腾讯三大巨头HTML页面规范分解

     
    【兼容html5方案】
    百度贴吧,百度图片的实现
    复制代码
    <!--[if lt IE 9]>
    <script>
    (function(){
        var tags = ['header','footer','figure','figcaption','details','summary','hgroup','nav','aside','article','section','mark','abbr','meter','output','progress','time','video','audio','canvas','dialog'];
        for(var i=tags.length - 1;i>-1;i--){ document.createElement(tags[i]);}
    })();
    </script>
    <![endif]-->
    <style>
    header,footer,section,article,aside,nav,figure{display:block;margin:0;padding:0;border:0;}
    </style>
    复制代码
    腾讯isux研究院的实现
    <!--[if lt IE 9]>
     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
     
    淘宝- 我的淘宝页实现同上,只不过是不同版本
    <!-- [if lt IE 9]>
    <script src="http://g.tbcdn.cn//tb/mytaobao/12.12.15/common/??html5shiv-min.js"></script>
    <![endif]-->
     
    不得不提的一个插件 https://github.com/aFarkas/html5shiv 在github 上达到了3453 星的高度,获得了国内外的广泛认可,如果你厌烦了满页面的div 想尽早拥抱html5 元素,就使用它吧。
     
    【兼容模式的选择】
    关于兼容模式
    百度首页使用的是
    <meta http-equiv=X-UA-Compatible content=IE=EmulateIE7>
    百度搜索页使用的是
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    百度图片,腾讯isux研究院,淘宝收藏页使用的是
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    X-UA-Compatible 这是个是IE8的专用标记,用来指定IE8浏览器去模拟某个特定版本的IE浏览器的渲染方式 

    chrome=1写法可以达到的效果是如果安装了GCF,则使用GCF来渲染页面,如果未安装GCF,则使用最高版本的IE内核进行渲染。

    百度首页那么点东西他当然不在乎用哪种模式,更多地去照顾老式浏览器; 搜索页倾向于速度有GCF的时候更愿意使用chorme渲染。

    不得不吐槽,国内各的银行支付时的兼容支持,由此第三种得到大家的共同认可似乎也无可厚非。

     
    【移动至上】
     
    腾讯isux研究院的实现
    <!-- Mobile Specific Metas
    ================================================== -->
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes" />
     
    淘宝主页的实现
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
    <meta content="yes" name="apple-mobile-web-app-capable" />
    这里没贴百度的,不代表百度不重视这一块,反而太重视了,19亿$买了91无线 再加上 百度App 贴吧App 音乐App 图片APP ... 全有了。
     
    【建议升级】
    复制代码
    <!--[if lt IE 8]>
    <div class="g_tips">
        <p>已经有超过90%的用户使用更高版本 <a target="_blank" title="下载Chrome" href="http://www.google.com/chrome/">Google Chrome</a> 或 <a target="_blank" href="http://www.microsoft.com/zh-cn/download/ie.aspx?q=internet+explorer">Internet Explorer</a> 体验到了更精彩的页面,你还不试试?</p>
    </div>
    <![endif]-->
    <style>
    .g_tips{background:#FFF691;color:#010101;text-align:center;height:40px;line-height:40px;font-family:'STHeiti','5fae8f6f96c59ed1'}.g_tips a{color:#676767;padding:0 2px;zoom:1}
    </style>
    复制代码
     
    什么,连ie8都不是? 无法容忍啊,建议你早点换吧! 
     
    【参考模版】
    复制代码
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>页面名称</title>
        <meta name="keywords" content=""/>
        <meta name="description" content=""/>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <!-- Mobile Specific Metas
        ================================================== -->
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no">
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <!-- CSS
        ================================================== -->
        <link rel="shortcut icon" href="http://www.yunos.com/favicon.ico">
        <link rel="stylesheet" href="http://m.alicdn.com/css/index.css"/>
        <style>/* css */</style>
    </head>
     
    <body>
        <!--[if lt IE 8]>
        <div class="g_tips">
            <p>
                已经有超过90%的用户使用更高版本
                <a target="_blank" title="下载Chrome" href="http://www.google.com/chrome/">Google Chrome</a>
                或
                <a target="_blank" href="http://www.microsoft.com/zh-cn/download/ie.aspx?q=internet+explorer">Internet Explorer</a>
                体验到了更流畅更精彩的页面,你还不试试?
            </p>
        </div>
        <![endif]-->
     
        <h1>300,000,00</h1>
     
        <script src="js/index.js"></script>
        <script>// js
      </script>
    </body>
    </html>
    复制代码
    <html lang="zh-CN"> 性属说明这个html内容是以中文为显示和阅读基础,多语言的网站建议添加。
    • 通常情况下CSS放文档开始,脚本放在文档末尾我想不用解释太多
    • 如果一个页面足够简单,写在页面上是完全 OK 的,特别是一些简单的专题,但是项目上需谨慎使用
     
    页面全局变量命名随记 PDC FP PageInfo window.g_config (function(){window.PDC={}})(); 
     
     
    【CDN加速】【dataUrl】【css spirte】【按需加载和loader机制】【压缩检查发布

    作为一个前端开发,这些你做了吗?

     

    设计模式学习之抽象工厂(Abstract Factory,创建型模式)(3)

     

    假如我们的苹果和香蕉还分为北方的和南方的,那么苹果Apple和香蕉Banana就是抽象类了,所以采集的方法就应该抽象的

    第一步:

    我们会创建北方的苹果NorthApple类和SourthBanana类,这两个类继承Apple,北方的香蕉NorthBanana类和SourthBanana类,其中实现各自的采集方法get()

    第二步:

    当然我们通过北方水果工厂NorthFruitFactory和南方水果工厂SourthFruitFactory来获取北方的苹果和香蕉这两个实例,这两个工厂实现FruitFactory这个接口,接口中有两个未实现的获取苹果和香蕉的实例方法,由NorthFruitFactory和SourthFruitFactory具体实现

    第三步:

    当我们调用的时候就可以通过抽象工厂来获取想要的实例对象,通过实例对象来调用对应的方法

    FruitFactory factory = new SourthFruitFactory();
    Fruit fruit =factory.getApple();//获取南方的苹果
    fruit.get();

    代码如下:

    Fruit.java

    package com.designpattern.abstractfactory;
    
    public interface Fruit {
        public void get();
    }


    Apple.java

    package com.designpattern.abstractfactory;
    
    public abstract class Apple implements Fruit{
        public abstract void get();
    }

    Banana.java

    package com.designpattern.abstractfactory;
    
    public abstract class Banana implements Fruit{
        public abstract void get();
    }

    NorthApple.java

    复制代码
    package com.designpattern.abstractfactory;
    
    public class NorthApple extends Apple {
        public void get() {
            System.out.println("采集北方苹果");
        }
    
    }
    复制代码

    NorthBanana.java

    复制代码
    package com.designpattern.abstractfactory;
    
    public class NorthBanana extends Banana {
        public void get() {
            System.out.println("采集北方香蕉");
        }
    
    }
    复制代码

    SourthApple.java

    复制代码
    package com.designpattern.abstractfactory;
    
    public class SourthApple extends Apple {
        public void get() {
            System.out.println("采集南方苹果");
        }
    
    }
    复制代码

    SourthBanana.java

    复制代码
    package com.designpattern.abstractfactory;
    
    public class SourthBanana extends Banana {
        public void get() {
            System.out.println("采集南方香蕉");
        }
    
    }
    复制代码

    FruitFactory.java

    package com.designpattern.abstractfactory;
    
    public interface FruitFactory {
        public Fruit getApple();
        public Fruit getBanana();
    }

    NorthFruitFactory.java

    复制代码
    package com.designpattern.abstractfactory;
    
    public class NorthFruitFactory implements FruitFactory {
    
        public Fruit getApple() {
            return new NorthApple();
    
        }
    
        public Fruit getBanana() {
            return new NorthBanana();
    
        }
    
    }
    复制代码

    SourthFruitFactory.java

    复制代码
    package com.designpattern.abstractfactory;
    
    public class SourthFruitFactory implements FruitFactory {
    
        public Fruit getApple() {
            return new SourthApple();
            
        }
    
        public Fruit getBanana() {
            return new SourthBanana();
            
        }
    
        
    }
    复制代码

    MainClass.java

    复制代码
    package com.designpattern.abstractfactory;
    
    public class MainClass {
        public static void main(String[] args) {
            FruitFactory factory = new SourthFruitFactory();//我们只需要知道具体的工厂,而不需要知道具体的类
            Fruit fruit =factory.getApple();
            fruit.get();
        }
    }
    复制代码

    一、什么是抽象工厂模式

    在讲解抽象工厂模式之前,我们需要知道两个概念:

            产品等级结构。产品的等级结构也就是产品的继承结构。例如一个为空调的抽象类,它有海尔空调、格力空调、美的空调等一系列的子类,那么这个抽象类空调和他的子类就构成了一个产品等级结构,苹果就分为北方苹果和南方苹果。

            产品族。产品族是在抽象工厂模式中的。在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品。比如,海尔工厂生产海尔空调。海尔冰箱,那么海尔空调则位于空调产品族中。北方水果工厂就生产北方的苹果和北方的香蕉。

    抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。

    二、抽象工厂的优缺点

    优点

               1、  抽象工厂隔离了具体类的生成,是的客户端不需要知道什么被创建。所有的具体工厂都实现了抽象工厂中定义的公共接口,因此只需要改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。

               2、  当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。

    缺点

               添加新的行为时比较麻烦。如果需要添加一个新产品族对象时,需要更改接口及其下所有子类,这必然会带来很大的麻烦。

     
     
    分类: 设计模式
     
     
  • 相关阅读:
    设计模式C++描述----06.适配器(Adapter)模式
    设计模式C++描述----05.职责链(Chain of Responsibility)模式
    设计模式C++描述----04.观察者(Observer)模式
    设计模式C++描述----03.工厂(Factory)模式
    设计模式的几种原则
    设计模式C++描述----02.模板(Template)模式
    常用 UML 类图
    前端插件之Bootstrap Switch 选择框开关控制
    Django处理流程
    Django之logging日志
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3527605.html
Copyright © 2011-2022 走看看