• <center id="sm46c"></center>
  • <dfn id="sm46c"></dfn>
  • <strike id="sm46c"></strike>
  • <cite id="sm46c"><source id="sm46c"></source></cite>
    • <strike id="sm46c"><source id="sm46c"></source></strike>
      <option id="sm46c"></option>
      国产精品天天看天天狠,女高中生强奷系列在线播放,久久无码免费的a毛片大全,国产日韩综合av在线,亚洲国产中文综合专区在,特殊重囗味sm在线观看无码,中文字幕一区二区三区四区在线,无码任你躁久久久久久老妇蜜桃

      首頁

      8個(gè)非常個(gè)性化的CSS3單/復(fù)選框

      高勁

             單選框和復(fù)選框在網(wǎng)頁表單中應(yīng)用十分廣泛,但是瀏覽器默認(rèn)自帶的單選框和復(fù)選框樣式不僅不統(tǒng)一,而且大多都比較簡單丑陋。本文給大家介紹了一些基于CSS3的個(gè)性化單選框和復(fù)選框,一些選中動(dòng)畫是基于jQuery的,你可以挑選喜歡的單選框和復(fù)選框應(yīng)用到自己的網(wǎng)頁中去,非常方便。

               1、jQuery超級(jí)個(gè)性化的單線框和復(fù)選框

             今天要分享的也是一個(gè)非常個(gè)性化的單選框和復(fù)選框插件,顏色你可以自己定義。

            56a706650001cc8206100418.png

                         在線演示  源碼下載

               2、CSS3漂亮的自定義Checkbox復(fù)選框 9款迷人樣式

             今天我們來分享一款9款樣式迷人的CSS3漂亮的自定義checkbox復(fù)選框。這幾款復(fù)選框樣式很豐富,使用起來也比較方便。


      56a70c3e0001aede05880266.jpg

                          在線演示  源碼下載

              3、CSS3自定義美化復(fù)選框Checkbox組合

             今天我們要來分享一組非常漂亮的CSS3自定義復(fù)選框checkbox,每一個(gè)checkbox都有其各自的特點(diǎn)。有幾款checkbox在選中的情況下還會(huì)出現(xiàn)動(dòng)畫效果,非常不錯(cuò)的CSS3自定義美化checkbox組合。

      56a70cbb00019efb06100379.png

                      在線演示   源碼下載

             4、jQuery實(shí)現(xiàn)美化版的單選框和復(fù)選框

             今天這款是利用jQuery實(shí)現(xiàn)的美化版單選框和復(fù)選框,樣式風(fēng)格非常簡潔清爽,是一款很不錯(cuò)的jQuery按鈕插件。

      56a70e01000161c706100252.png

                                在線演示  源碼下載

             5、純CSS3 3D按鈕 按鈕酷似牛奶般剔透

             CSS3按鈕一般都可以設(shè)計(jì)的非常漂亮,利用投影、漸變等CSS3屬性可以把按鈕渲染的十分動(dòng)感。今天分享的這款CSS3按鈕外觀非常特別,它看上去酷似晶瑩剔透的牛奶,而且在點(diǎn)擊按鈕時(shí)出現(xiàn)3D效果的動(dòng)畫,按鈕按下時(shí),按鈕會(huì)輕輕的彈動(dòng)一下,非常逼真。

      56a70e1000013a8d05880281.jpg

                       在線演示  源碼下載

              6、HTML5/CSS3開關(guān)按鈕 立體3D按鈕

              今天介紹的這款HTML5/CSS3開關(guān)切換按鈕是利用純CSS3的,代碼非常簡單,3D效果也還可以。

      56a70e1b0001142f08000557.gif

                        在下演示  源碼下載

               7、CSS3自定義發(fā)光Radiobox單選框

             今天我們要來分享一款CSS3實(shí)現(xiàn)的自定義發(fā)光radiobox單選框插件,該radiobox選中時(shí)也有滑塊的動(dòng)畫。

      56a70e2d0001b19b05880259.jpg

                         在線演示  源碼下載

            8、CSS3實(shí)現(xiàn)自定義Checkbox動(dòng)畫

            今天我們要再來分享一款CSS3自定義checkbox,而且這款checkbox還帶有動(dòng)畫效果,當(dāng)你選中checkbox的時(shí)候,會(huì)以動(dòng)畫的方式打上一個(gè)大大的勾。

      56a70e350001219c05880215.jpg 

                         在線演示  源碼下載



               以上就是8個(gè)非常個(gè)性化的CSS3單/復(fù)選框,希望對(duì)你有所幫助。

             本文鏈接:http://www.codeceo.com/article/10-personal-css3-radiobox-checkbox.html







      20個(gè)最常用的javascript方法函數(shù)收集

      高勁

           收集了一些比較常用的JavaScript函數(shù)

           1、字符串長度截取函數(shù)

           function cutstr(str,len){

                 var temp,icount = 0,patrn = /[^x00-\xff]/,strre=" ";

                 for(var i= 0;i<str.length;i++) {

                      if (icount<len-1){

                          temp =str.substr(i,1);

                          if (patrn.exec(temp)==null){

                             icount =icount+1    

                        }else {

                           icount =icount+2

                       }

                          strre+=temp

                    } else {

                         break;

                     }

                }

                 returen strre+"...";

            }

           2、替換全部

           String.prototype.replaceAll = function(s1,s2) {

                  return this.replace(new RegExp(s1,"gm"),s2);

           }

           3、清除空格

           function trim = function() {

                  var reExtraSpace = /^\s*(.*?)\s+$/;

                  return this.replace(reExtraSpace,"$1");

           }

           4、清除左空格/右空格

            function  ltrim(s){

                  return s.replace(/^(\s*| *)/,"");

            }

           function rtrim(s) {

                 return s.replace(/(\s*| *)$/,"");

            }

            5、判斷是否以某個(gè)字符串開頭

            String.prototype.startWith = function(s) {

                  return this.indexOf(s)==0;

            }

             6、判斷是否以某個(gè)字符串結(jié)束 

            String.prototype.endWith = function(s) {

                  var d = this.length - s.length;

                  return (d >= 0 && this.lastIndexOf(s)==d);

              }

              7、轉(zhuǎn)義HTML標(biāo)簽

             function HtmlEncode(text) {

                   return text.replace(/&/g,'&').replace(/\"/g,' " ').replace(/</g,'<').replace(/>/g,'>');

             }

              8、時(shí)間日期格式轉(zhuǎn)換

             Date.prototype.Format = function(formatStr){

                   var str = formatStr;

                   var week =['日','一','二','三','四','五','六'];

                   str = str.replace(/yyyy|YYYY/,this.getFullYear());

                   str = str.replace(/yy|YY,(this.getYear()%100)>9?(this.getYear()%100).toString():'0'+(this.getYear()%100));

                   str = str.replace(/MM/,(this.getMonth()+1)>9?(this.getMonth()+1).toString():'0'+this.getMonth()+1));

                   str = str.replace(/w|W/g,week[(this.getDay()];

                   str = str.replace(/dd|DD/,(this.getDate()>9?this.getDate().toString():'0'+this.getDate());

                   str = str.replace(/d|D/g,this.getDate());

                   str = str.replace(/hh|HH/,this.getHours()>9?(this.getHours().toString():'0'+this.getHours());

                   str = str.replace(/h|H/g,this.getHours());

                   str = str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0'+this.getMinutes());

                   str = str.replace(/m/g,this.getMinutes());

                   str = str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0'+this.getgetSeconds());

                   str = str.replace(/s|S/g,this.getSeconds());

                  return str;

              }

              9、判斷是否為數(shù)字類型

              function isDigit (value){

                   var patrn = /^[0-9]*$/;

                   if (patrn.exec(value) == null || value=="" ) {

                         return false;  

                   } else {

                        return true;

                  }

              }

             10、設(shè)置cookie

             function setCookie(name,value,Hours){

                    var d =new Date();

                    var offset =8;

                    var utc = d.getTime()+(d.getTimezoneOffset()*60000);

                    var nd = utc+(3600000*offset);

                    var exp = new Date(nd);

                    exp.setTime(exp.getTime()+Hours*60*60*1000);

                    document.cookie = name+"="+escape(value)+";domain=360doc.com;"

             }

             獲取cookie值

             function getCookie(name){

                   var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));

                   if (arr!=null){

                     return unescape(arr[2]);

                  }else {

                   return null;

                   }

             }

            11、加入收藏夾

             function AddFavorite(sURL,sTitle) {

                  try{

                     window.external.addFavorite(sURL,sTitle);

               }catch(e){

                 try{

                     window.sidebar.addPanel(sTitle,sURL,"");

                  }catch(e){

                        alert("加入收藏夾失敗,請使用Ctrl+D進(jìn)行添加");

                   }

                }

             }

            12、設(shè)為首頁

            function setHomepage(){

                   if(document.all){

                     document.body.style.behavior='url(#default#homepage)';

                     document.body.setHomePage('http://w3cboy.com')

               }else if (window.sidebar){

                    if(window.netscape){

                       try{

                          netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")

                    }catch(e){

                       alert("該操作被瀏覽器拒絕,如果想啟用該功能,請?jiān)诘刂窓趦?nèi)輸入about:config,然后將

                       項(xiàng) signed.applets.codebase_principal_support 值該為true");

                   }

                 }

                     var prefs = Components.classes['@mozilla.org/preferences- service;1'].getService(Components.interfaces.nsIPrefBranch); 

                     prefs.setCharPref('browser.startup.homepage', 'http://w3cboy.com');

               }

             }

             13、加載樣式文件

                   function LoadStyle(url) {

                       try { 

                           document.createStyleSheet(url); 

                          } 

                         catch(e) { 

                            var cssLink = document.createElement('link');

                            cssLink.rel = 'stylesheet'; 

                            cssLink.type = 'text/css'; 

                            cssLink.href = url; 

                           var head = document.getElementsByTagName('head')[0]; 

                           head.appendChild(cssLink);

                          } 

                       }

                  14、返回腳本內(nèi)容

                  function evalscript(s) { 

                         if(s.indexOf('<script') == -1) return s; 

                         var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;

                         var arr = []; 

                         while(arr = p.exec(s)) { 

                         var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i; 

                         var arr1 = []; 

                         arr1 = p1.exec(arr[0]); 

                         if(arr1) { 

                               appendscript(arr1[1], '', arr1[2], arr1[3]);

                          } else { 

                               p1 = /<script(.*?)>([^\x00]+?)<\/script>/i; 

                               arr1 = p1.exec(arr[0]); 

                               appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);

                                } 

                             } 

                            return s; 

                        }

                  15、清除腳本內(nèi)容

                   function stripscript(s) { 

                            return s.replace(/<script.*?>.*?<\/script>/ig, ''); 

                    }

                    16、動(dòng)態(tài)加載腳本文件

                   function appendscript(src, text, reload, charset) {

                            var id = hash(src + text); 

                            if(!reload && in_array(id, evalscripts)) return; 

                            if(reload && $(id)) { $(id).parentNode.removeChild($(id));
                      }

                      evalscripts.push(id);

                      var scriptNode = document.createElement("script"); 

                      scriptNode.type = "text/javascript"; 

                      scriptNode.id = id; 

                      scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset); 

                     try { 

                          if(src) { 

                                 scriptNode.src = src; 

                                 scriptNode.onloadDone = false; 

                                 scriptNode.onload = function () { 

                                             scriptNode.onloadDone = true;

                                            JSLOADED[src] = 1; 

                                  }; 

                               scriptNode.onreadystatechange = function () {

                               if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) { 

                                         scriptNode.onloadDone = true; JSLOADED[src] = 1; 

                                        } 

                                     }; 

                                } else if(text){ 

                                      scriptNode.text = text; 

                               } 

                               document.getElementsByTagName('head')[0].appendChild(scriptNode); 

                           } catch(e) {} 

                         }

                 17、返回按ID檢索的元素對(duì)象
                 
      function $(id) {

                          return !id ? null : document.getElementById(id); 

                   }

                 18、跨瀏覽器綁定事件

                 function addEventSamp(obj,evt,fn){ 

                          if(!oTarget){

                                 return;

                           } if (obj.addEventListener) { 

                                    obj.addEventListener(evt, fn, false);

                               }else if(obj.attachEvent){ 

                                   obj.attachEvent('on'+evt,fn); 

                                 }else{

                                     oTarget["on" + sEvtType] = fn; 

                                  }

                          }

                   19、跨瀏覽器刪除事件

                      function delEvt(obj,evt,fn){ if(!obj){

                              return;

                     } if(obj.addEventListener){

                            obj.addEventListener(evt,fn,false); 

                       }else if(oTarget.attachEvent){ 

                          obj.attachEvent("on" + evt,fn); 

                       }else{ 

                           obj["on" + evt] = fn; 

                        } 

                     }

                  20、元素添加on方法

                  Element.prototype.on = Element.prototype.addEventListener;

                   NodeList.prototype.on = function (event, fn) {、

                           []['forEach'].call(this, function (el) { 

                                 el.on(event, fn); 

                            });

                            return this; 

                     };






      一份最詳盡全面的UI界面切圖命名規(guī)范

      高勁

            關(guān)于UI界面的切圖命名規(guī)范,U妹覺得關(guān)鍵是在于團(tuán)隊(duì)能夠有一個(gè)統(tǒng)一的規(guī)則,所以這里只介紹一種通用的命名規(guī)則,當(dāng)然大家也可以根據(jù)自己的實(shí)際情況去制定,這里只提供一種方法與思路,僅供參考。

            規(guī)范的命名方式可以提高開發(fā)人員的的開發(fā)效率和整個(gè)開發(fā)團(tuán)隊(duì)的友好合作。U妹覺得要盡可能用最少的字符而又能完整的表達(dá)標(biāo)識(shí)符的含義。

            一、切圖命名英文縮寫的3個(gè)原則

            1.較短的單詞可以通過去掉“元音”形成縮寫

             2.較長的單詞可去單詞的頭部幾個(gè)字母形成縮寫

             3.還有一些約定成俗的英文單詞縮寫

            二、命名規(guī)則

                模塊_類別_功能_狀態(tài).png

              U妹舉個(gè)例子:nav_button_search_default.png

              釋義為:導(dǎo)航_按鈕_搜索_默認(rèn).png

           啟動(dòng)界面

              啟動(dòng)圖片 default.png

               啟動(dòng)logo default.png

               如:default.png\defoult@2x.png\default-568@2x.png

        登錄界面

         登錄背景    login_bg.png

               登錄logo   login_logo.png 

               輸入框       login_input.png 

               輸入框選中狀態(tài)       login_input_pre.png

               登錄按鈕       login_btn.png

               登錄按鈕選中狀態(tài)  login_btn_pre.png

           導(dǎo)航欄按鈕 (nav) 命名 

               nav_功能描述.png

               如:nav_menu.png\nav_menu_pre.png(同按鈕選中前后兩種狀態(tài)命名 )

           按鈕命名(btn可重復(fù)使用按鈕)

              一般   normal   btn_xxx_normal.png

              點(diǎn)擊  highlight btn_xxx_highlight.png

              不能點(diǎn)擊  disabled  btn_xxx_disable.png

              按下  pressed btn_xxx_pressed.png

              選中  selected btn_xxx_selected.png 做為復(fù)數(shù)選擇出現(xiàn)機(jī)會(huì)不高

              btn_功能屬性或色彩均可.png

              如:btn_blue.png\btn_blue.9.png   藍(lán)色按鈕

          其他命名

             圖標(biāo) icon_xxx.png

             圖片 pic_xxx.png或是img_xxx.png

             照片 pho_xxx.png

             左側(cè)導(dǎo)航 命名 leftbar_功能描述.png

             如:leftbar_info.png\leftbar_info_pre.png   個(gè)人中心 

         底部選項(xiàng)卡按鈕(TabBar)

            命名 Tab_功能描述.png  

             如:tab_set.Png\nav_set_pre.png  設(shè)置 

         主頁命名

            命名 home_功能屬性+描述.png

             如:home_menu_recommended.png  熱門推薦 

             ps:描述可用英文或拼間開頭字母組合等

         列表頁命名規(guī)則

            命名 List_功能屬性+描述.png

             如:list_menu_collect.png  列表頁收藏按鈕

         UI文件命名規(guī)范常用詞

            常用狀態(tài) 

             正常 normat

             按下 pressed 

             選中 selected

             禁用 disabled

             已訪問 visited

             懸停 hover

          控件&部件

             控件:較獨(dú)立的可操作界面元素 

              部件:描述屬于某控件一部分

              按鈕(可點(diǎn)) Btn

             圖標(biāo) Icon不可點(diǎn)、非點(diǎn)擊主體、圖案部件

             標(biāo)記 Sign  列表

             List  菜單 Menu 

             視圖 View

             面板 Panel

             薄板 Sheet

             底部彈出菜單 欄 Bar 

             狀態(tài)欄 StatusBar

             導(dǎo)航欄 NaviBar

             標(biāo)簽欄  TabBar

             工具欄 ToolBar

             切換開關(guān) Switch

             滑動(dòng)器 Slider

             單選框 Radio

             復(fù)選框 CheckBox

             背景 Bg

             蒙版、遮罩 Mask

             收藏 collect

             評(píng)論 comment

             廣告 ad

             時(shí)間 time

             音頻 audio

             視頻 viedio

             不喜歡 dilike

             用戶 user

             首頁 hone

             排名 ranked

             搜索 search

             標(biāo)志 logo

             進(jìn)度條 progress bar

             默認(rèn)圖片 def_

             分隔圖片 seg_

             選擇 sel_

             關(guān)閉 close

             返回 back

             編輯 eidt

             內(nèi)容 content

             左  中  右 left  center   right

             提示信息 msg

             個(gè)人資料 porfile

             彈出 pop

             刪除 delete

             下載 download

             登錄 login

             注冊 regsiter

             標(biāo)題title

             注釋 note

             鏈接 link

             圖片 image(img)

             刷新 refresh

         常用補(bǔ)充描述

            頂部 Top 

             中間 Middle 

             底部 Bottom 

             第一 First 

             第二 Second

             最后 Last

             頁頭 Header

             頁腳  Footer 







       







            


       

            



      如何成為前端開發(fā)高手?

      高勁

            web前端開發(fā)工程是是一個(gè)很新的職業(yè),在國內(nèi)乃至國際上真正開始受到重視的時(shí)間不超過五年。web前端開發(fā),是從網(wǎng)頁制作演變而來的,名稱上有很明顯的時(shí)代特征。隨著人們對(duì)用戶體驗(yàn)的要求越來越高,前端開發(fā)的技術(shù)難度越來越大,web前端開發(fā)工程師這一職業(yè)終于從設(shè)計(jì)和制作不分的局面中獨(dú)立出來。

             早期的前端其實(shí)就是table布局,后來發(fā)展到所謂的div+css網(wǎng)站重構(gòu),再到現(xiàn)在的讓人眼花繚亂的各種各樣的新技術(shù),web前端技術(shù)發(fā)展是非常快速的,因此選擇了前端這個(gè)行業(yè)就意味著不停的學(xué)習(xí)吧。讓我們先看看張克軍繪制的前端知識(shí)體系結(jié)構(gòu):

            前端開發(fā)的核心是HTML+CSS+JavaScript。本質(zhì)上他們構(gòu)成了一個(gè)MVC框架,即HTML作為信息模型(Model),css控制樣式(View),JavaScript負(fù)責(zé)調(diào)度數(shù)據(jù)和實(shí)現(xiàn)某種展現(xiàn)邏輯(Controller)。

            HTML

            1.標(biāo)簽的分類,

            2.標(biāo)簽表示一個(gè)元素

            3.按性質(zhì)分類:block-level 和 inline-level

            4.按語義分類:

                  Headings:h1,h2,h3,h4,h5,h6

                  paragraphs:p

                  Text formatting:em,strong,sub,del,ins,small

                  Lists:ul,li,ol,dl,dt,dd

                  Tables:table,thead,tbody,tr,th,td

                  Forms and input: form,input,select,textarea

                  Others:div,span,a,img,<!---->

                  HTML5:header,footer,article,section

             XHTML

             XHTML于2000年的1月26日成為W3C標(biāo)準(zhǔn)。W3C將XHTML定義為的HTML版本,XHTML將逐漸取代HTML。XHTML是通過把HTML和XML各自的長處加以結(jié)合形成的。XHTML語法規(guī)則如下:

            屬性名和標(biāo)簽名稱必須小寫

            屬性值必須加引號(hào)

            屬性不能簡寫

            用ID屬性代替name屬性

            XHTML元素必須被正確地嵌套

            XHTML元素必須被關(guān)閉

           標(biāo)簽語義化

           為表達(dá)語義而標(biāo)記文檔,而不是為了樣式,結(jié)構(gòu)良好的文檔可以向?yàn)g覽器傳達(dá)盡可能多的語義,不論是瀏覽器位于掌上電腦還是時(shí)髦的桌面圖形瀏覽器。結(jié)構(gòu)良好的文檔都能向用戶傳達(dá)可視化的語義即使是在老的瀏覽器,或是在被用戶關(guān)閉了CSS的現(xiàn)代瀏覽器中。同時(shí)結(jié)構(gòu)良好的HTML代碼也有助于搜索引擎索引你的網(wǎng)站。

            不要使用table布局,table是用來表格顯示的。

            不要到處濫用div標(biāo)簽,div是用來分塊用的。

            不要使用樣式標(biāo)簽,如font,center,big,small,b,i,樣式可以用CSS來控制,b和i可以用strong和em來代替。

            不要使用換行標(biāo)簽<br />和空格來控制樣式,請用CSS。

            盡量不要使用內(nèi)聯(lián)CSS

            CSS

            1.css基礎(chǔ)知識(shí)

              層疊和繼承

              優(yōu)先級(jí)

              盒模型

              定位

              浮動(dòng)

           2.css進(jìn)階

              css sprite

              瀏覽器兼容性

              IE haslayout和block format content

              css frameworks 

              css3

              css性能優(yōu)化

              less and sass

              css sprite主要用于前端性能優(yōu)化的一種技術(shù),原理是通過多張背景圖合成在一張圖片上從而減少http請求,加快載入速度。

              瀏覽器兼容性

              絕大部分情況下,我們需要考慮瀏覽器的兼容性,目前正在使用的瀏覽器版本非常多,IE6,IE7,IE8,IE9,IE10,Chrome,F(xiàn)irefox,Safari。

              IE haslayout和block format content

              IE haslayout是一個(gè)Internet explore for Windows的私有概念,他決定了一個(gè)元素如何顯示以及約束其包含的內(nèi)容、如何與其他元素交互和建立聯(lián)系、如何響應(yīng)和傳遞應(yīng)用程序事件、用戶事件等。而有些HTML元素則默認(rèn)就有l(wèi)ayout。目前只有IE6和IE7有這個(gè)概念。BFC是W3C css2.1規(guī)范中的一個(gè)概念,他決定了元素如何應(yīng)對(duì)其內(nèi)容進(jìn)行定位。以及與其他元素的關(guān)系和相互作用。這個(gè)其實(shí)和瀏覽器的兼容性有關(guān),因?yàn)闆Q大部分的兼容性問題都是他們引起的。參考:css BFC和IE haslayout介紹。

              css framework

              css框架是一系列css文件的集合體,包含了基本的元素重置,頁面排版、網(wǎng)格布局、表單樣式,通用規(guī)則等代碼塊,用于簡化web前端開發(fā)的工作,提高工作效率。目前常見框架有:

             960 grid system

             blueprint css

             bluetrip

             minimum page

             還是一個(gè)比較出名的和特殊的框架是Twitter的bootstrap,bootstrap是快速開發(fā)web應(yīng)用程序前端的工具包。它是一個(gè)css和HTML的集合,它使用了的瀏覽器技術(shù),給你的web開發(fā)提供了時(shí)尚的版式,表單,buttons,表格,網(wǎng)格系統(tǒng)等等。它是基于less開發(fā)的,不支持IE6,在IE7和IE8里效果也不咋地。

             css3

             雖然css3還沒有正式成為標(biāo)準(zhǔn),但是IE9+,Chrome,F(xiàn)irefox等現(xiàn)代瀏覽器都支持css3。css3提供了好多以前需要用JavaScript和切圖才能搞定的功能,目前主要功能更有:圓角、多背景、@font-face、動(dòng)畫與漸變、漸變色、box陰影、RGBa-加入透明色、文字陰影。

             css性能優(yōu)化

             css代碼是控制頁面顯示樣式與效果的最直接“工具”  ,但是在性能調(diào)優(yōu)時(shí)他們通常會(huì)被web開發(fā)工程師所忽略,而事實(shí)上不規(guī)范的css會(huì)對(duì)頁面渲染的效率有嚴(yán)重影響,尤其是對(duì)于結(jié)構(gòu)復(fù)雜的web2.0頁面,這種影響更是不可磨滅的。所以,寫出規(guī)范的、高性能的css代碼會(huì)極大地提高應(yīng)用程序的效率。

             less and sass

             less和sass都是css預(yù)處理器,用來為css增加一些編輯的特性,無需考慮瀏覽器的兼容問題,例如你可以在css中使用變量、簡單的程序邏輯、函數(shù)等等在編程語言中的一些基本技巧,可以讓你的css更加簡潔。適應(yīng)性更強(qiáng),代碼更直觀等諸多好處。

              sass基于ruby開發(fā),less既可以在客戶端運(yùn)行,也可以借助node.js或者rhino在服務(wù)器端運(yùn)行。

          

      你不知道的JavaScript:有趣的setTimeout

      高勁

           話不多說,先上代碼

           for(var j=0;j<10;J++){

               setTimeout(function(){console.log(j);},5000)

           }

           看到這三行代碼,你也許會(huì)不耐煩道:又要講閉包?要吐槽了好么?別急,讓我們先來思考一下,這段代碼在瀏覽器中的執(zhí)行結(jié)果是什么?

           <!-- more -->

           甲:順序打印0到9?

           乙:這題我見過,打印十個(gè)10!

           哪個(gè)答案正確?

           執(zhí)行結(jié)果顯示,瀏覽器打印出十個(gè)10,貌似乙對(duì)了,但是如果你足夠細(xì)心,你會(huì)發(fā)現(xiàn)幾個(gè)問題:為什么會(huì)循環(huán)打印十個(gè)10,而不是0到9?

           從結(jié)果來看,for循環(huán)執(zhí)行完跳出之后,才開始執(zhí)行setTimeout(所以j才等于10),為什么不是每次迭代都執(zhí)行一次setTimeout呢?

      1、為什么會(huì)循環(huán)打印十個(gè)10?

            許多人習(xí)慣用第二個(gè)問題中的執(zhí)行結(jié)果來回答這個(gè)問題:“for循環(huán)執(zhí)行完畢跳出之后才開始執(zhí)行setTimeout,所以才打印了十個(gè)10”。這樣的答案,只能說是既應(yīng)付了自己,又應(yīng)付了別人。其實(shí),要解答第一個(gè)問題,首先要解答第二個(gè)問題。

      2、為什么不是每一次迭代都執(zhí)行一次setTimeout?

           大家都知道,JavaScript在ES6出現(xiàn)以前,是沒有塊狀作用域的,這就意味著,在for循環(huán)中用var定義的變量j,其實(shí)是屬于全局的,那其實(shí)整個(gè)全局作用域中只有一個(gè)j,每次for循環(huán)都是更新這個(gè)j。

             那么現(xiàn)在的關(guān)鍵問題在于,為什么整個(gè)for循環(huán)會(huì)先于setTimeout執(zhí)行,而不是我們正常理解的,一次迭代執(zhí)行一次。這就涉及到了JavaScript的核心特性:單線程。

             JavaScript設(shè)計(jì)的初衷,是瀏覽器用來與用戶進(jìn)行交互和DOM操作的,這就決定了它必須是單線程的。設(shè)想JavaScript同時(shí)有兩個(gè)線程,一個(gè)線程在DOM節(jié)點(diǎn)內(nèi)添加內(nèi)容,一個(gè)線程刪除該節(jié)點(diǎn),瀏覽器就會(huì)出現(xiàn)混亂。所以,為了避免復(fù)雜性,從一誕生,JavaScript就是單線程,這已經(jīng)成為了這門語言的核心特征,將來也不會(huì)改變。

            單線程就意味著,所有任務(wù)需要排隊(duì),前一個(gè)任務(wù)結(jié)束,才會(huì)執(zhí)行下一個(gè)任務(wù),如果前一個(gè)任務(wù)耗時(shí)很長,后一個(gè)任務(wù)就不得不一直等著。

            為了優(yōu)化單線程的性能,JavaScript將任務(wù)分成兩種,一種是同步任務(wù)(synchronous),另一種是異步任務(wù)(asynchronous)。同步任務(wù)指的是,在主線程上排隊(duì)執(zhí)行的任務(wù),只有前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行后一個(gè)任務(wù);異步任務(wù)指的是,不進(jìn)入主線程,而進(jìn)入“任務(wù)隊(duì)列(task queue)”的任務(wù),只用主線程中的同步任務(wù)執(zhí)行完畢,異步任務(wù)才會(huì)進(jìn)入執(zhí)行隊(duì)列執(zhí)行。只要主線程空了,就會(huì)去讀取“任務(wù)隊(duì)列”,這就是JavaScript的運(yùn)作機(jī)制。這個(gè)過程會(huì)不斷重復(fù)。

             而setTimeout就被JavaScript定義為異步任務(wù)。每次for循環(huán)的迭代,都將setTimeout中的回調(diào)函數(shù)加入任務(wù)隊(duì)列等待執(zhí)行。也就是說,只有同步任務(wù)中的for循環(huán)完全結(jié)束,主線程中才會(huì)去任務(wù)列表中找到尚未執(zhí)行的十個(gè)setTimeout(十次迭代)回調(diào)函數(shù)并順序執(zhí)行(先進(jìn)先出)。而此時(shí),j已經(jīng)經(jīng)過循環(huán)結(jié)束變成了10,所以此時(shí)主線程執(zhí)行的,是十個(gè)一模一樣的打印i的回調(diào)函數(shù),即打印十個(gè)10,。至此完美回答了第一和第二個(gè)問題,文章開頭的代碼與下面的代碼其實(shí)是等價(jià)的:

             for(var i=0;i<10;i++){

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

                  setTimeout(console.log(i),5000);

      }

             小小的一個(gè)setTimeout,牽扯出了很多JavaScript的深層次問題,可見JavaScript還有許多地方是值得深入探究的。



      如何拆解復(fù)雜問題?今天這3個(gè)思路來幫你!

      高勁

      阿里巴巴_BBC_UED 王萌:無論你是設(shè)計(jì)、用研還是產(chǎn)品,如何把復(fù)雜籠統(tǒng)的問題拆解成一個(gè)個(gè)小的、可執(zhí)行開展的問題,都是一項(xiàng)必不可少的能力,今天阿里這篇好文幫你迅速掌握起來!

      引言:

      在一秒鐘內(nèi)看到本質(zhì)的人和花半輩子也看不清一件事本質(zhì)的人,自然是不一樣人生。——電影《教父》 本文沒辦法幫你一秒鐘看清人/事,而且也不奢望能做到,但希望能和大家一起朝這個(gè)方向做些努力。

       

      消失的界面!未來的設(shè)計(jì)師該從這四方面提升競爭力

      高勁

      future-designers-competitiveness-1

      編者按:可能有敏銳的同學(xué)已經(jīng)意識(shí)到了,現(xiàn)在很多公司招人,職位都叫產(chǎn)品設(shè)計(jì)師,簡言之就是既要會(huì)界面設(shè)計(jì),更要懂交互、產(chǎn)品等,這也給一心鉆研精美圖標(biāo)和酷炫動(dòng)效的同學(xué)提個(gè)醒,未來UI設(shè)計(jì)師與交互的界限會(huì)越來越模糊,不想提前退休,可別光顧著折騰軟件,好好讀下今天這4個(gè)建議。

      用戶為王!揭秘三個(gè)迅速提高用戶體驗(yàn)的魔鬼細(xì)節(jié)

      高勁

      3-detail-improve-user-experience-1

      編者按:今天這篇推薦一下,聊的是用戶體驗(yàn)中最讓人揪心的三個(gè)流程:授權(quán)征詢、注冊與加載等待。作者總結(jié)了不少實(shí)用的方法,能夠迅速地提高這三個(gè)方面的體驗(yàn),建議學(xué)習(xí) >>>

      從“一問一答”到“聽講故事”的用戶訪談技巧

      高勁

      Lina:訪談是定性研究中最基礎(chǔ)的方法。相對(duì)于分析客觀數(shù)據(jù)的定量研究方法,不論是一對(duì)一的深度訪問還是一對(duì)多的座談會(huì),都會(huì)產(chǎn)生研究人員與用戶的互動(dòng),而互動(dòng)關(guān)系會(huì)極大影響到訪談的質(zhì)量和效果。

      很多人認(rèn)為訪談就是“問答”,研究人員按照研究目的設(shè)定一系列的問題,通過詢問用戶,獲得相應(yīng)的答案,看上去似乎比定量研究簡單許多。然而事實(shí)上并非如此。訪談是需要對(duì)用戶的態(tài)度及行為做研究分析,而出于每個(gè)人的自我防御心理,用戶很難將自己真實(shí)的想法告訴研究人員。如何獲得用戶真實(shí)的情感態(tài)度,是非常考驗(yàn)每一位研究者研究技術(shù)的地方。下面就結(jié)合之前的項(xiàng)目經(jīng)歷,跟大家探討一下訪談技巧的問題。

      濃縮干貨!成就優(yōu)質(zhì)用戶體驗(yàn)的4個(gè)必要元素

      高勁

      4-essential-elements-successful-ux-1

      互聯(lián)網(wǎng)時(shí)代的成功故事里,機(jī)遇和運(yùn)氣是增添它們傳奇色彩的決定性因素。一個(gè)零售企業(yè)適逢互聯(lián)網(wǎng)萌芽,在90年代這個(gè)網(wǎng)絡(luò)拓荒期逐漸膨脹成為響徹北美的互聯(lián)網(wǎng)巨頭,這是亞馬遜的故事。而Facebook的開頭則更有意思一些,校園創(chuàng)業(yè),友情與背叛,在移動(dòng)端設(shè)備過度階段引領(lǐng)社交網(wǎng)絡(luò)變革,成就了另外一個(gè)走上互聯(lián)網(wǎng)時(shí)代的年輕富豪。

      日歷

      鏈接

      個(gè)人資料

      存檔

      主站蜘蛛池模板: 蜜臀av日韩精品一区二区| 18禁免费无码无遮挡网站| 国产人妻人伦精品婷婷| 青青国产揄拍视频| 无码AV高潮喷水无码专区线| 亚洲偷偷自拍码高清视频| 久拍国产在线观看| 黄色片一区| 里番全彩爆乳女教师| 久久亚洲精品中文字幕波多野结衣| 亚洲欧美日韩在线不卡| 无码免费一区二区三区免费播放| 欧美成人一区二免费视频| 狠狠亚洲色一日本高清色| 五月婷婷综合网| 99精品国产再热久久无毒不卡 | 色噜噜狠狠狠狠色综合久一| 美女午夜福利视频一区二区| 国产成人av一区二区三区不卡| 精品国产自在久久现线拍| 久久久精品2019中文字幕之3| 国产精品久久久久久人妻精品| 国产成人理论在线视频观看 | 好了av四色综合无码| 欧美一本大道香蕉综合视频| 免费人成视频在线观看网站 | 欧美精品亚洲精品日韩传电影| 在线a网站| 最新国产精品剧情在线ss| 国产尹人香蕉综合在线电影| 亚洲欧洲日产国码中文字幕| 在线毛片免费| 久久久日韩精品一区二区| 性欧美牲交在线视频| 高潮喷吹一区二区在线观看| 开心色怡人综合网站| 欧美性猛交xxxx乱大交极品 | 春色校园亚洲愉拍自拍| 人妻人人做人做人人爱| 精品不卡一区二区三区| 国产av午夜精品福利|