云顶娱乐棋牌-云顶娱乐每天送6元
做最好的网站

Sprites实行应用,二十二个HTML5和CSS3表单教程

HTML head 头标签

2016/02/24 · HTML5 · 1 评论 · 头标签

原稿出处: paddingme   

HTML head 尾部分的价签、成分有为数不菲,涉及到浏览器对网页的渲染,SEO 等等,而各样浏览器内核以至各样国内浏览器厂家都多少自个儿的价签成分,那就招致了广大差别性。移动网络时期,head 尾部结构,移动端的 meta 成分,显得更为主要。通晓各样标签的意思,写出满足本身须要的 head 头标签,是本文的目标。本篇以一丝的篇章为底蕴,举办扩充总括介绍常用的 head 中相继标签、成分的含义以致利用情况。

浅谈javascript函数节流

2016/03/14 · JavaScript · 函数

初藳出处: 涂根华Sprites实行应用,二十二个HTML5和CSS3表单教程。   

什么样是函数节流?

     函数节流轻易的来讲正是不想让该函数在异常的短的年月内连接被调用,譬如大家最常见的是窗口缩放的时候,日常会实行一些其余的操作函数,比如发一个ajax央浼等等业务,那么此时窗口缩放的时候,有十分的大大概三翻五次发三个须要,那实际不是大家想要的,大概是说咱俩常见的鼠标移入移出tab切换效果,有时候接二连三且活动的飞跃的时候,会有闪光的效果,这时候我们就能够利用函数节流来操作。我们都知道,DOM的操作会很成本或影响属性的,借使是说在窗口缩放的时候,为因素绑定多量的dom操作的话,会掀起大量的连年计算,举例在IE下,过多的DOM操作会影响浏览器品质,甚至严重的情形下,会挑起浏览器崩溃的发生。今年大家就足以应用函数节流来优化代码了~

函数节流的基本原理:

     使用一个放大计时器,先延时该函数的实施,比如采取setTomeout()那个函数延迟生龙活虎段时间后执行函数,假设在该时间段内还触发了别样事件,大家得以使用打消方法 clearTimeout()来肃清该电磁打点计时器,再setTimeout()二个新的反应计时器延迟弹指实行。

作者们先来看二个简约的window.resize的demo例子,譬喻本身先定义贰个大局变量count=0;当自身触发一回window.resize的时候,该全局变量count++; 大家来探视在调控新竹打印出count的作用;JS代码如下:

var count = 0; window.onresize = function(){ count++; console.log(count); }

1
2
3
4
5
var count = 0;
window.onresize = function(){
    count++;
    console.log(count);
}

实行截图效果如下:

云顶娱乐棋牌 1

如上resize的代码,轻松的缩放二回就打字与印刷出累累,那实际不是大家想要的职能,这是轻松的测量检验,那假若我们换成ajax供给的话,那么就能缩放一遍窗口会三回九转触发数十次ajax需要,上边大家试着使用函数节流的操作试试一下;

函数节流的率先种方案封装如下:

function throttleFunc(method,context){ clearTimeout(method.tId); method.tId = setTimeout(function(){ method.call(context); },100); }

1
2
3
4
5
6
function throttleFunc(method,context){
     clearTimeout(method.tId);
     method.tId = setTimeout(function(){
         method.call(context);
     },100);
}

我们再来封装一下窗口缩放的demo

var count = 0; function myFunc() { count++; console.log(count); } window.onresize = function(){ throttleFunc(myFunc); } function throttleFunc(method,context){ clearTimeout(method.tId); method.tId = setTimeout(function(){ method.call(context); },100); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var count = 0;
function myFunc() {
   count++;
   console.log(count);
}
window.onresize = function(){
    throttleFunc(myFunc);
}
function throttleFunc(method,context){
     clearTimeout(method.tId);
     method.tId = setTimeout(function(){
         method.call(context);
     },100);
}

如上代码,我们再来看看效果,窗口缩放和推广成效会看到,只进行了叁次;打字与印刷了二遍。

上边的代码应用贰个停车计时器每间隔100皮秒实践三次;

我们也得以利用闭包的点子对下面的函数举办再装进一下;

函数节流的第两种包装方法如下:

function throttle(fn, delay){ var timer = null; return function(){ var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function(){ fn.apply(context, args); }, delay); }; };

1
2
3
4
5
6
7
8
9
10
11
function throttle(fn, delay){
     var timer = null;
     return function(){
         var context = this,
             args = arguments;
         clearTimeout(timer);
         timer = setTimeout(function(){
             fn.apply(context, args);
         }, delay);
     };
};

地点第三种方案是选用闭包的方法形成二个私家的效用域来贮存在停车计时器timer,第两种方案的timer是由此传参数的格局引进的。

调用demo代码如下:

var count = 0; function myFunc() { count++; console.log(count); } var func = throttle(myFunc,100); window.onresize = function(){ func(); } function throttle(fn, delay){ var timer = null; return function(){ var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function(){ fn.apply(context, args); }, delay); }; };

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var count = 0;
function myFunc() {
    count++;
    console.log(count);
}
var func = throttle(myFunc,100);
window.onresize = function(){
   func();
}        
function throttle(fn, delay){
     var timer = null;
     return function(){
         var context = this,
             args = arguments;
         clearTimeout(timer);
         timer = setTimeout(function(){
             fn.apply(context, args);
         }, delay);
     };
};

函数节流的主导观念是:正是想让一个函数不要施行的太频仍,收缩部分过快的来节流函数,举个例子当我们转移窗口缩放的时候,浏览器的区间有极大希望是16ms,那是浏览器自带的日子间隔,大家不能够转移,而作者辈经过节流的主意能够试着改动一下这么些间距,尽量微微延长下那一个调用时间,因而大家能够打包如下函数:

函数节流的第三种包装方法

function throttle3(fn,delay,runDelay){ var timer = null; var t_start; return function(){ var context = this, args = arguments, t_cur = new Date(); timer & clearTimeout(timer); if(!t_start) { t_start = t_cur; } if(t_cur - t_start >= runDelay) { fn.apply(context,args); t_start = t_cur; }else { timer = setTimeout(function(){ fn.apply(context,args); },delay); } } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function throttle3(fn,delay,runDelay){
      var timer = null;
      var t_start;
      return function(){
         var context = this,
             args = arguments,
             t_cur = new Date();
         timer & clearTimeout(timer);
         if(!t_start) {
             t_start = t_cur;
         }
         if(t_cur - t_start >= runDelay) {
              fn.apply(context,args);
              t_start = t_cur;
         }else {
              timer = setTimeout(function(){
                  fn.apply(context,args);
               },delay);
         }
    }
}

调用demo如下:

var count = 0; function myFunc() { count++; console.log(count); } var func = throttle3(myFunc,50,100); window.onresize = function(){ func();} function throttle3(fn,delay,runDelay){ var timer = null; var t_start; return function(){ var context = this, args = arguments, t_cur = new Date(); timer & clearTimeout(timer); if(!t_start) { t_start = t_cur; } if(t_cur - t_start >= runDelay) { fn.apply(context,args); t_start = t_cur; }else { timer = setTimeout(function(){ fn.apply(context,args); },delay); } } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var count = 0;
function myFunc() {
   count++;
   console.log(count);
}
var func = throttle3(myFunc,50,100);
window.onresize = function(){
   func();}
function throttle3(fn,delay,runDelay){
      var timer = null;
      var t_start;
      return function(){
          var context = this,
              args = arguments,
              t_cur = new Date();
          timer & clearTimeout(timer);
          if(!t_start) {
              t_start = t_cur;
          }
          if(t_cur - t_start >= runDelay) {
                fn.apply(context,args);
                t_start = t_cur;
          }else {
                timer = setTimeout(function(){
                     fn.apply(context,args);
                },delay);
          }
      }
}

上面包车型地铁第多个函数是包装后的函数,有多少个参数,我们能够协调安装触发事件的年月间距,则意味,如上代码50ms三番五次调用函数,后三个调用会把前叁个调用的等候管理掉,但每间距100ms会起码施行贰回,具体运用哪生机勃勃种方法只要看自个儿的度量,可是我个人感觉第三种封装函数的点子够大家使用的,当然传说第两种方式质量越来越好~

1 赞 3 收藏 评论

云顶娱乐棋牌 2

eval深入分析JSON字符串的三个未有毛病

2016/02/24 · JavaScript · JSON

原稿出处: 韩子迟   

前边写过豆蔻梢头篇 至于 JSON 的介绍随笔,里面聊起了 JSON 的剖判。我们都知情,高档浏览器可以用  JSON.parse() API 将三个 JSON 字符串深入分析成 JSON 数据,微微欠妥点的做法,我们得以用 eval() 函数。

JavaScript

var str = '{"name": "hanzichi", "age": 10}'; var obj = eval('(' + str + ')'); console.log(obj); // Object {name: "hanzichi", age: 10}

1
2
3
var str = '{"name": "hanzichi", "age": 10}';
var obj = eval('(' + str + ')');
console.log(obj); // Object {name: "hanzichi", age: 10}

 

是还是不是注意到,向 eval() 传参时,str 变量外裹了风姿浪漫层小括号?为啥要那样做?

我们先来拜望 eval 函数的定义甚至选拔。

eval() 的参数是一个字符串。假设字符串表示了多个表达式,eval() 会对表明式求值。借使参数表示了一个或八个 JavaScript 评释, 那么 eval() 会实行表明。不要调用 eval() 来为算数表明式求值; JavaScript 会自动为算数表达式求值。

简短地说,eval 函数的参数是二个字符串,借使把字符串 “noString” 化管理,那么获得的将是常规的可以运作的 JavaScript 语句。

怎么说?举个栗子,如下代码:

JavaScript

var str = "alert('hello world')"; eval(str);

1
2
var str = "alert('hello world')";
eval(str);

实践后弹出 “hello world”。我们把 str 变量 “noString” 化,严酷点的做法正是去掉外面的引号,内部调解(转义等),然后就改为了:

JavaScript

alert('hello world')

1
alert('hello world')

very good!那是健康的能够运维的 JavaScript 语句!运转之!

再回去起头的主题素材,为啥 JSON 字符串要裹上小括号。假使不加,是其同样子的:

JavaScript

var str = '{"name": "hanzichi", "age": 10}'; var obj = eval(str); // Uncaught SyntaxError: Unexpected token :

1
2
var str = '{"name": "hanzichi", "age": 10}';
var obj = eval(str);  // Uncaught SyntaxError: Unexpected token :

恩,报错了。为何会报错?试试把 str “noString” 化,实施一下:

JavaScript

{"name": "hanzichi", "age": 10}; // Uncaught SyntaxError: Unexpected token :

1
{"name": "hanzichi", "age": 10};  // Uncaught SyntaxError: Unexpected token :

分明,三个 JSON 对象只怕说是贰个目的根本就不是能实行的 JavaScript 语句!等等,试试以下代码:

JavaScript

var str = '{name: "hanzichi"}'; var obj = eval(str); console.log(obj); // hanzichi

1
2
3
var str = '{name: "hanzichi"}';
var obj = eval(str);
console.log(obj); // hanzichi

那又是怎么鬼?但是给 name 加上 “” 又报错?

JavaScript

var str = '{"name": "hanzichi"}'; var obj = eval(str); // Uncaught SyntaxError: Unexpected token : console.log(obj);

1
2
3
var str = '{"name": "hanzichi"}';
var obj = eval(str);  // Uncaught SyntaxError: Unexpected token :
console.log(obj);

好啊,快晕了,其实仍然是能够将 str “nostring” 化,看看是还是不是能科学实施的 JavaScript 语句。前面贰个的结果是:

JavaScript

{name: "hanzichi"}

1
{name: "hanzichi"}

那着实是一条官方的 JavaScript 语句。{} 我们不光能在 if、for 语句等情况使用,甚至足以在其他时候,因为 ES6 在此以前 JavaScript 唯有块级功能域,所以对于作用域什么的并不会有何样冲突。去掉 {} 后 name: "hanzichi"也是法定的言语,八个 label 语句,label 语句在跳出嵌套的轮回中格外好用,具体能够参谋 label,而作为 label 语句的标识,name 是无法带引号的,标识能放在 JavaScript 代码的此外职务,用不到也没涉及。

如若四个对象有了三个 key,举个例子 {name: "hanzichi", age: 10} ,ok,五个 label 语句?将 “hanzhichi” 以致 10 分别作为是讲话,不过 话语之间只可以用封号连接!(表明式之间工夫用逗号)。所以改成下边那样也是从未有过难题的:

JavaScript

var str = '{name: "hanzichi"; age: 10}'; var obj = eval(str); console.log(obj); // 10

1
2
3
var str = '{name: "hanzichi"; age: 10}';
var obj = eval(str);  
console.log(obj); // 10

越扯越远,文章起先代码的失实的缘由是找到了,为何套个括号就能够化解呢?轻易的话,() 会把语句转变到表明式,称为语句表明式。括号里的代码都会被改造为表明式求值并且返回,指标字面量必需作为表明式而存在

本文并不会大谈表达式,关于表明式,可以参照文末链接。值得记住的少数是,表明式长久有四个再次来到值。超过二分之一表明式会卷入在() 内,小括号内不可能为空,如若有三个表达式,用逗号隔断,也等于所谓的逗号表明式,会回来最后叁个的值。

聊到表明式,不能不提函数表明式,早先翻译过意气风发篇关于立刻实行函数表明式的稿子,能够参照他事他说加以考察下,文末。

Read More:

  • [译]JavaScript中:表明式和说话的界别
  • (译)详解javascript马上施行函数表达式(IIFE)
  • 深深商量javascript的 {} 语句块

    1 赞 1 收藏 评论

云顶娱乐棋牌 3

拥抱Web设计新势头:SVG Sprites施行应用

2016/07/30 · HTML5 · 1 评论 · Sprites, SVG

初稿出处: 坑坑洼洼实验室   

云顶娱乐棋牌 4

二十四个HTML5和CSS3表单教程

2011/10/25 · HTML5 · CSS3, HTML5

采纳HTML5和CSS3,还应该有一点可观的评释文档,你能够做些有创造技艺的网页表单。由此,本文收拾汇总了二十五个CSS3表单教程。

点击各种小题目下方图片,就可以步向相应匈牙利(Magyarország)语教程。

Slick login form with HTML5 & CSS3
HTML5 & CSS3 envelope contact form
Build a Neat HTML5 Powered Contact Form

云顶娱乐棋牌 5
Create a Stylish Contact Form with HTML5 & CSS3

云顶娱乐棋牌 6
Fun with HTML5 Forms

云顶娱乐棋牌 7
Design a Prettier Web Form with CSS 3

云顶娱乐棋牌 8
Create A Clean and Stylish CSS3 Contact Form

云顶娱乐棋牌 9
Create a Slick CSS3 Login Form NO IMAGES ALLOWED

云顶娱乐棋牌 10
Fancy Forms: HTML5 + CSS3 – JS

云顶娱乐棋牌 11
How to Create A Multi-Step Signup Form With CSS3 and jQuery

云顶娱乐棋牌 12
Glowform CSS3 Image-less Glowing Form Tech

云顶娱乐棋牌 13
A jQuery & CSS3 Drop-Down Menu With Integrated Forms

云顶娱乐棋牌 14
Create a Clean and Stylish Login Form With HTML5 and CSS3

云顶娱乐棋牌 15
How to Create a Contact Form using HTML5, CSS3 and PHP

云顶娱乐棋牌 16
Carbon Fiber Signup Form With PHP, jQuery and CSS3

云顶娱乐棋牌 17
Designing Modern Web Forms with HTML 5 and CSS3

云顶娱乐棋牌 18
HTML5/CSS3 Contact Form Tutorial

云顶娱乐棋牌 19
Beautiful CSS3 Search Form

云顶娱乐棋牌 20
Clean and Stylish CSS3 Form

云顶娱乐棋牌 21
How To Create A HTML5 Contact Form

云顶娱乐棋牌 22
How To Create An Ajax-Based HTML5/CSS3 Contact Form

云顶娱乐棋牌 23
Free slick css form

云顶娱乐棋牌 24

 

赞 4 收藏 评论

云顶娱乐棋牌 25

DOCTYPE

DOCTYPE(Document Type),该评释位于文档中最前面包车型客车地点,处于 html 标签以前,此标签告知浏览器文书档案使用哪种HTML 或许 XHTML 标准。

DTD(Document Type Definition) 声明以 <!DOCTYPE> 起先,不区分抑扬顿挫写,前面没有其它内容,假设有此外内容(空格除外)会使浏览器在 IE 下张开怪异形式(quirks mode)渲染网页。公共 DTD,名称格式为注册//组织//类型 标签//语言,注册指组织是或不是由国标化组织(ISO)注册,+表示是,-代表不是。组织即组织名称,如:W3C。类型一般是 DTD。标签是内定公开文本描述,即对所援用的公开文本的唯生机勃勃描述性名称,后边可附带版本号。最终语言是 DTD 语言的 ISO 639 语言标记符,如:EN 表表示情爱尔兰语,ZH 表示粤语。XHTML 1.0 可注明三种 DTD 类型。分别代表严谨版本,过渡版本,以致依照框架的 HTML 文档。

  • HTML 4.01 strict
XHTML

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"&gt;

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f4a3d4b690825595726-1">
1
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f4a3d4b690825595726-1" class="crayon-line">
 &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;
</div>
</div></td>
</tr>
</tbody>
</table>
  • HTML 4.01 Transitional
XHTML

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&gt;

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f4a3d4b699456112895-1">
1
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f4a3d4b699456112895-1" class="crayon-line">
 &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
</div>
</div></td>
</tr>
</tbody>
</table>
  • HTML 4.01 Frameset
JavaScript

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd"&gt;

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f4a3d4b69d342863431-1">
1
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f4a3d4b69d342863431-1" class="crayon-line">
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Frameset//EN&quot; &quot;http://www.w3.org/TR/html4/frameset.dtd&quot;&gt;
</div>
</div></td>
</tr>
</tbody>
</table>
  • 新颖 HTML5 推出进一步简明的书写,它迈进向后卓殊,推荐应用。
JavaScript

&lt;!doctype html&gt;

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f4a3d4b6a1157483452-1">
1
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f4a3d4b6a1157483452-1" class="crayon-line">
&lt;!doctype html&gt;
</div>
</div></td>
</tr>
</tbody>
</table>

在 HTML中 doctype 有五个至关心器重要指标。

  • 对文书档案进行实用验证。

    它告诉顾客代理和校验器这一个文书档案是比照什么 DTD 写的。这么些动作是丧气的,每一回页面加载时,浏览器并不会下载 DTD 并检讨合法性,唯有当手动校验页面时才启用。

  • 支配浏览器的展现格局

    对于实操,公告浏览器读取文书档案时用哪类解析算法。如果未有写,则浏览器则依照自家的规行矩步对代码进行解析,大概会严重影响 html 排版布局。浏览器有三种方法深入分析 HTML 文书档案。 *云顶娱乐棋牌, 非怪异(标准)模式 * 古怪方式 * 部分离奇(近乎规范)方式关于IE浏览器的文书档案格局,浏览器情势,严酷方式,怪异形式,DOCTYPE 标签,可详细阅读模式?标准!的内容。

前言

随着活动互连网的光顾,种种高清显示器移动设备的千千万万,导致H5应用在活动器材retina显示屏下平常会超越Logo不清晰的难点。

为了消释荧屏分辨率对Logo影响的标题,平时选择CSS Coca Cola,Icon Font,CSS Icon以至SVG以适应@x1屏、@2屏、@3屏,绝相比较较来说SVG矢量性、缩放无损等相当多优点,更应受前端设计员的尊重,可在重重铺面包车型地铁运动项目应用中却超少有,究其主要原因在于SVG开辟学习话费比较高以至在绘制的属性上比PNG要差。此篇小说将从SVG快捷导出到SVG、SVG Symbol组件化在等级次序中实战举办疏解,并提供SVG Symbol急速导出工具,教您怎么着压实SVG开拓效能减弱资金财产。

charset

宣称文书档案使用的字符编码,

XHTML

<meta charset="utf-8">

1
<meta charset="utf-8">

html5 从前网页中会这样写:

XHTML

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

那多个是均等的,具体可活动阅读:<meta charset='utf-8'> vs <meta http-equiv='Content-Type'>,所以提议接收比较短的,易于回忆。

SVG简介

SVG是大器晚成种开放标准的矢量图形语言,使用svg格式大家可以一向用代码来形容图像,能够用别样文字管理工具展开svg图像,通过更换一些代码来使图像具备交互效率,并能够任何时候插入到HTML中通过浏览器来浏览。

lang属性

简体粤语

XHTML

<html lang="zh-cmn-Hans">

1
<html lang="zh-cmn-Hans">

繁体中文

XHTML

<html lang="zh-cmn-Hant">

1
<html lang="zh-cmn-Hant">

为什么 lang="zh-cmn-Hans" 并不是大家平淡无奇写的 lang="zh-CN" 呢,请移步阅读: 页尾部的扬言应该是用 lang=”zh” 照旧 lang=”zh-cn”。

SVG优缺点:

优点 缺点
1.缩放无损还原,显示清晰 1.SVG在绘制的性能上比PNG要差
2.语义性良好 2.局限性,对应单色或普通渐变没什么问题,但对不规则的渐变以及特效叠加效果显示不全
3.可用CSS控制图标样式以及动画 3.兼容性稍差,android4.1才开始支持
4.减少http请求 4.学习应用成本较高

本文由云顶娱乐棋牌发布于云顶娱乐棋牌,转载请注明出处:Sprites实行应用,二十二个HTML5和CSS3表单教程

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。