• <abbr id="chdyf"></abbr>
    <ruby id="chdyf"><acronym id="chdyf"><meter id="chdyf"></meter></acronym></ruby>
    <bdo id="chdyf"></bdo>
    <dfn id="chdyf"><menu id="chdyf"></menu></dfn>
    1. <menuitem id="chdyf"></menuitem><strong id="chdyf"><menu id="chdyf"></menu></strong>

      <rt id="chdyf"><menu id="chdyf"></menu></rt>
      成人小说一区二区三区,伊人精品成人久久综合全集观看,久久HEZYO色综合,中文字幕精品人妻熟女,影音先锋成人网站,我要看免费一级毛片,中国女人做爰A片,中文字幕av久久爽Av

      首頁(yè)

      獲取json數(shù)據(jù)后在 地圖上打點(diǎn),根據(jù) json不斷移動(dòng)點(diǎn)的位置

      seo達(dá)人

      如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

      <?php echo <<<_END <!doctype html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
          <title>點(diǎn)標(biāo)記</title>
          <link rel="stylesheet" />
          <style>
              .marker {
                  color: #ff6600; padding: 4px 10px;
                  border: 1px solid #fff; white-space: nowrap;
                  font-size: 12px;
                  font-family: "";
                  background-color: #0066ff;  } </style>
          <script src="http://webapi.amap.com/maps?v=1.3&key=您申請(qǐng)的key值"></script>
          <script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
      </head>
      <body>
      <div id="container"></div>
      <script> var marker, map = new AMap.Map("container", {
              resizeEnable: true, center: [126.60580555556, 45.702363888889], zoom: 13 }); var getJSON = function(url) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest();
              xhr.open('get', url, true);
              xhr.responseType = 'json';
              xhr.onload = function() { var status = xhr.status; if (status == 200) {
                  resolve(xhr.response);
                } else {
                  reject(status);
                }
              };
              xhr.send();
            });
          };
      
          getJSON('http://web.cellpies.com/api/driving/getVehicleLocationPoints?vehicleDeviceId=0400000000030603&timeType=4&startTime=2017-03-17%2013:00:00&stopTime=2017-03-17%2014:00:00').then(function(jdata) { //alert('Your Json result is:  ' + jdata); //you can comment this, i used it to debug
              //alert(jdata.data[0].gpsx);
              //alert(jdata.data[0].gpsy); window.i=0; //addMarker(jdata.data[i].gpsx,jdata.data[i].gpsy); setInterval(function () { addMarker(jdata.data[window.i].gpsx,jdata.data[window.i].gpsy); },"1000");
      
          }, function(status) { //error detection.... alert('Something went wrong.');
          }); // 實(shí)例化點(diǎn)標(biāo)記 function addMarker(v1,v2) {
      
           window.i+=10;
              marker = new AMap.Marker({
                  icon: "http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png", position: [v1,v2]
              });
              marker.setMap(map);
          } </script>
      </body>
      </html>
      
      </script>
      </body>
      </html> _END; ?>

      效果圖

      -----------------------------------------------------------------------更新---------------------------------------------------------

      去掉連續(xù)顯示多個(gè)點(diǎn),每次只顯示一個(gè)點(diǎn)

      <?php echo<<<_END <!doctype html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
          <title>點(diǎn)標(biāo)記</title>
          <link rel="stylesheet" />
          <style>
              .marker {
                  color: #ff6600; padding: 4px 10px;
                  border: 1px solid #fff; white-space: nowrap;
                  font-size: 12px;
                  font-family: "";
                  background-color: #0066ff;  } </style>
          <script src="http://webapi.amap.com/maps?v=1.3&key=您申請(qǐng)的key值"></script>
          <script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
      </head>
      <body>
      <div id="container"></div>
      <script> var marker, map = new AMap.Map("container", {
              resizeEnable: true, center: [126.60580555556, 45.702363888889], zoom: 13 }); var getJSON = function(url) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest();
              xhr.open('get', url, true);
              xhr.responseType = 'json';
              xhr.onload = function() { var status = xhr.status; if (status == 200) {
                  resolve(xhr.response);
                } else {
                  reject(status);
                }
              };
              xhr.send();
            });
          };
      
          getJSON('http://web.cellpies.com/api/driving/getVehicleLocationPoints?vehicleDeviceId=0400000000030603&timeType=4&startTime=2017-03-17%2013:00:00&stopTime=2017-03-17%2014:00:00').then(function(jdata) {
              addMarker(jdata.data[0].gpsx,jdata.data[0].gpsy);
              window.i=1; //updateMarker(jdata.data[1].gpsx,jdata.data[1].gpsy); setInterval(function () { updateMarker(jdata.data[window.i].gpsx,jdata.data[window.i].gpsy); },"1000");
      
          }, function(status) { //error detection.... alert('Something went wrong.');
          }); // 實(shí)例化點(diǎn)標(biāo)記 function addMarker(v1,v2) {
      
              marker = new AMap.Marker({
                  icon: "http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png", position: [v1,v2]
              });
              marker.setMap(map);
          } function updateMarker(v1,v2) { //在地圖上更新標(biāo)記
              // 自定義點(diǎn)標(biāo)記內(nèi)容 window.i+=10; var markerContent = document.createElement("div"); // 點(diǎn)標(biāo)記中的圖標(biāo) var markerImg = document.createElement("img");
              markerImg.className = "markerlnglat";
              markerImg.src = "http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png";
              markerContent.appendChild(markerImg); // 點(diǎn)標(biāo)記中的文本 var markerSpan = document.createElement("span");
              markerSpan.className = 'marker';
              markerSpan.innerHTML = "Hi,我換新裝備啦!";
              markerContent.appendChild(markerSpan);
      
              marker.setContent(markerContent); //更新點(diǎn)標(biāo)記內(nèi)容 marker.setPosition([v1,v2]); //更新點(diǎn)標(biāo)記位置  } </script>
      </body>
      </html>
      
      </script>
      </body>
      </html> _END; ?>

       

      涉及setInterval傳參的問(wèn)題。

      發(fā)現(xiàn)用addMarker(jdata.data[i].gpsx,jdata.data[i].gpsy);時(shí)程序可正常運(yùn)行,但是將該函數(shù) 放到setInterval中后卻出現(xiàn)了問(wèn)題,可通過(guò)閉包解決。

      藍(lán)藍(lán)設(shè)計(jì)www.wtxcl.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

      移動(dòng)端用戶體驗(yàn):底部導(dǎo)航

      藍(lán)藍(lán)設(shè)計(jì)的小編

      設(shè)計(jì)師都知道,設(shè)計(jì)不只是為了好看。設(shè)計(jì)也決定用戶如何融入一個(gè)產(chǎn)品,無(wú)論是網(wǎng)站還是app。這是一種交談。導(dǎo)航就是一種交談。因?yàn)槿绻脩舨幻靼资褂梅绞剑愕木W(wǎng)站或app再漂亮都沒(méi)用。

      js瀏覽器兼容問(wèn)題總結(jié)及解決辦法

      seo達(dá)人

      如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

      javascript部分

      1. document.form.item 問(wèn)題 
        問(wèn)題: 
        代碼中存在 document.formName.item(“itemName”) 這樣的語(yǔ)句,不能在FF下運(yùn)行 
        解決方法: 
        改用 document.formName.elements[“elementName”]

      2. 集合類對(duì)象問(wèn)題 
        問(wèn)題: 
        代碼中許多集合類對(duì)象取用時(shí)使用(),IE能接受,F(xiàn)F不能 
        解決方法: 
        改用 [] 作為下標(biāo)運(yùn)算,例:

      document.getElementsByName("inputName")(1) 改為 document.getElementsByName("inputName")[1]
          
      • 1
      1. window.event 
        問(wèn)題: 
        使用 window.event 無(wú)法在FF上運(yùn)行 
        解決方法: 
        FF的 event 只能在事件發(fā)生的現(xiàn)場(chǎng)使用,此問(wèn)題暫無(wú)法解決。可以把 event 傳到函數(shù)里變通解決:
      onMouseMove = "functionName(event)" function functionName (e) { e = e || window.event;
          ......
      }
          
      • 1
      • 2
      • 3
      • 4
      • 5
      1. HTML對(duì)象的 id 作為對(duì)象名的問(wèn)題 
        問(wèn)題: 
        在IE中,HTML對(duì)象的 ID 可以作為 document 的下屬對(duì)象變量名直接使用,在FF中不能 
        解決方法: 
        使用對(duì)象變量時(shí)全部用標(biāo)準(zhǔn)的 getElementById(“idName”)

      2. 用 idName 字符串取得對(duì)象的問(wèn)題 
        問(wèn)題: 
        在IE中,利用 eval(“idName”) 可以取得 id 為 idName 的HTML對(duì)象,在FF中不能 
        解決方法: 
        用 getElementById(“idName”) 代替 eval(“idName”)

      3. 變量名與某HTML對(duì)象 id 相同的問(wèn)題 
        問(wèn)題: 
        在FF中,因?yàn)閷?duì)象 id 不作為HTML對(duì)象的名稱,所以可以使用與HTML對(duì)象 id 相同的變量名,IE中不能 
        解決方法: 
        在聲明變量時(shí),一律加上 var ,以避免歧義,這樣在IE中亦可正常運(yùn)行 
        最好不要取與HTML對(duì)象 id 相同的變量名,以減少錯(cuò)誤

      4. event.x 與 event.y 問(wèn)題 
        問(wèn)題: 
        在IE中,event 對(duì)象有x,y屬性,F(xiàn)F中沒(méi)有 
        解決方法: 
        在FF中,與 event.x 等效的是 event.pageX ,但event.pageX IE中沒(méi)有 
        故采用 event.clientX 代替 event.x ,在IE中也有這個(gè)變量 
        event.clientX 與 event.pageX 有微妙的差別,就是滾動(dòng)條 
        要完全一樣,可以這樣: 
        mX = event.x ? event.x : event.pageX; 
        然后用 mX 代替 event.x

      5. 關(guān)于frame 
        問(wèn)題: 
        在IE中可以用 window.testFrame 取得該frame,F(xiàn)F中不行 
        解決方法:

      window.top.document.getElementById("testFrame").src = 'xx.htm' window.top.frameName.location = 'xx.htm'
          
      • 1
      • 2
      1. 取得元素的屬性 
        在FF中,自己定義的屬性必須 getAttribute() 取得

      2. 在FF中沒(méi)有 parentElement,parement.children 而用 parentNode,parentNode.childNodes 
        問(wèn)題: 
        childNodes 的下標(biāo)的含義在IE和FF中不同,F(xiàn)F的 childNodes 中會(huì)插入空白文本節(jié)點(diǎn) 
        解決方法: 
        可以通過(guò) node.getElementsByTagName() 來(lái)回避這個(gè)問(wèn)題 
        問(wèn)題: 
        當(dāng)html中節(jié)點(diǎn)缺失時(shí),IE和FF對(duì) parentNode 的解釋不同,例如:

      <form> <table> <input/> </table> </form>
          
      • 1
      • 2
      • 3
      • 4
      • 5

      FF中 input.parentNode 的值為form,而IE中 input.parentNode 的值為空節(jié)點(diǎn) 
      問(wèn)題: 
      FF中節(jié)點(diǎn)自己沒(méi)有 removeNode 方法 
      解決方法: 
      必須使用如下方法 node.parentNode.removeChild(node)

      1. const 問(wèn)題 
        問(wèn)題: 
        在IE中不能使用 const 關(guān)鍵字 
        解決方法: 
        以 var 代替

      2. body 對(duì)象 
        FF的 body 在 body 標(biāo)簽沒(méi)有被瀏覽器完全讀入之前就存在,而IE則必須在 body 完全被讀入之后才存在 
        這會(huì)產(chǎn)生在IE下,文檔沒(méi)有載入完時(shí),在body上appendChild會(huì)出現(xiàn)空白頁(yè)面的問(wèn)題 
        解決方法: 
        一切在body上插入節(jié)點(diǎn)的動(dòng)作,全部在onload后進(jìn)行

      3. url encoding 
        問(wèn)題: 
        一般FF無(wú)法識(shí)別js中的& 
        解決方法: 
        在js中如果書(shū)寫(xiě)url就直接寫(xiě)&不要寫(xiě)&

      4. nodeName 和 tagName 問(wèn)題 
        問(wèn)題: 
        在FF中,所有節(jié)點(diǎn)均有 nodeName 值,但 textNode 沒(méi)有 tagName 值,在IE中,nodeName 的使用有問(wèn)題 
        解決方法: 
        使用 tagName,但應(yīng)檢測(cè)其是否為空

      5. 元素屬性 
        IE下 input.type 屬性為只讀,但是FF下可以修改

      6. document.getElementsByName() 和 document.all[name] 的問(wèn)題 
        問(wèn)題: 
        在IE中,getElementsByName()、document.all[name] 均不能用來(lái)取得 div 元素 
        是否還有其它不能取的元素還不知道(這個(gè)問(wèn)題還有爭(zhēng)議,還在研究中)

      7. 調(diào)用子框架或者其它框架中的元素的問(wèn)題 
        在IE中,可以用如下方法來(lái)取得子元素中的值

      document.getElementById("frameName").(document.)elementName
      window.frames["frameName"].elementName
          
      • 1
      • 2

      在FF中則需要改成如下形式來(lái)執(zhí)行,與IE兼容:

      window.frames["frameName"].contentWindow.document.elementName window.frames["frameName"].document.elementName
          
      • 1
      • 2
      1. 對(duì)象寬高賦值問(wèn)題 
        問(wèn)題: 
        FireFox中類似 obj.style.height = imgObj.height 的語(yǔ)句無(wú)效 
        解決方法: 
        統(tǒng)一使用 obj.style.height = imgObj.height + “px”;

      2. innerText的問(wèn)題 
        問(wèn)題: 
        innerText 在IE中能正常工作,但是 innerText 在FireFox中卻不行 
        解決方法: 
        在非IE瀏覽器中使用textContent代替innerText

      3. event.srcElement和event.toElement問(wèn)題 
        問(wèn)題: 
        IE下,even對(duì)象有srcElement屬性,但是沒(méi)有target屬性;Firefox下,even對(duì)象有target屬性,但是沒(méi)有srcElement屬性 
        解決方法:

      var source = e.target || e.srcElement; var target = e.relatedTarget || e.toElement;
          
      • 1
      • 2
      1. 禁止選取網(wǎng)頁(yè)內(nèi)容 
        問(wèn)題: 
        FF需要用CSS禁止,IE用JS禁止 
        解決方法:
      IE: obj.onselectstart = function() {return false;}
      FF: -moz-user-select:none;
          
      • 1
      • 2
      1. 捕獲事件 
        問(wèn)題: 
        FF沒(méi)有setCapture()、releaseCapture()方法 
        解決方法:
      IE: obj.setCapture(); obj.releaseCapture(); FF: window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP); if (!window.captureEvents) {
                 o.setCapture(); }else {
                 window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); }
          if (!window.captureEvents) {
                 o.releaseCapture(); }else {
                 window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP); }
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16

      CSS部分

      div類

      1. 居中問(wèn)題 
        div里的內(nèi)容,IE默認(rèn)為居中,而FF默認(rèn)為左對(duì)齊 
        可以嘗試增加代碼margin:auto

      2. 高度問(wèn)題 
        兩上下排列或嵌套的div,上面的div設(shè)置高度(height),如果div里的實(shí)際內(nèi)容大于所設(shè)高度,在FF中會(huì)出現(xiàn)兩個(gè)div重疊的現(xiàn)象;但在IE中,下面的div會(huì)自動(dòng)給上面的div讓出空間 
        所以為避免出現(xiàn)層的重疊,高度一定要控制恰當(dāng),或者干脆不寫(xiě)高度,讓他自動(dòng)調(diào)節(jié),比較好的方法是 height:100%; 
        但當(dāng)這個(gè)div里面一級(jí)的元素都float了的時(shí)候,則需要在div塊的最后,閉和前加一個(gè)沉底的空div,對(duì)應(yīng)CSS是:

      .float_bottom { clear:both; font-size:0px; margin:0; line-height:0px; }
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      1. clear:both; 
        不想受到float浮動(dòng)的,就在div中寫(xiě)入clear:both;

      2. IE浮動(dòng) margin 產(chǎn)生的雙倍距離

      #box { float:left; width:100px; margin:0 0 0 100px; //這種情況之下IE會(huì)產(chǎn)生200px的距離 display:inline; //使浮動(dòng)忽略 }
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      1. padding 問(wèn)題 
        FF設(shè)置 padding 后,div會(huì)增加 height 和 width,但I(xiàn)E不會(huì) (* 標(biāo)準(zhǔn)的 XHTML1.0 定義 dtd 好像一致了) 
        高度控制恰當(dāng),或嘗試使用 height:100%; 
        寬度減少使用 padding 
        但根據(jù)實(shí)際經(jīng)驗(yàn),一般FF和IE的 padding 不會(huì)有太大區(qū)別,div 的實(shí)際寬 = width + padding ,所以div寫(xiě)全 width 和 padding,width 用實(shí)際想要的寬減去 padding 定義

      2. div嵌套時(shí) y 軸上 padding 和 marign 的問(wèn)題 
        FF里 y 軸上 子div 到 父div 的距離為 父padding + 子marign 
        IE里 y 軸上 子div 到 父div 的距離為 父padding 和 子marign 里大的一個(gè) 
        FF里 y 軸上 父padding=0 且 border=0 時(shí),子div 到 父div 的距離為0,子marign 作用到 父div 外面

      3. padding,marign,height,width 的傻瓜式解決技巧 
        注意是技巧,不是方法: 
        寫(xiě)好標(biāo)準(zhǔn)頭

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
          
      • 1
      • 2

      高盡量用padding,慎用margin,height盡量補(bǔ)上100%,父級(jí)height有定值子級(jí)height不用100%,子級(jí)全為浮動(dòng)時(shí)底部補(bǔ)個(gè)空clear:both的div 
      寬盡量用margin,慎用padding,width算準(zhǔn)實(shí)際要的減去padding

      列表類

      1. ul 標(biāo)簽在FF中默認(rèn)是有 padding 值的,而在IE中只有margin有值 
        先定義 ul {margin:0;padding:0;}

      2. ul和ol列表縮進(jìn)問(wèn)題 
        消除ul、ol等列表的縮進(jìn)時(shí),樣式應(yīng)寫(xiě)成: {list-style:none;margin:0px;padding:0px;}

      顯示類

      1. display:block,inline 兩個(gè)元素 
        display:block; //可以為內(nèi)嵌元素模擬為塊元素 
        display:inline; //實(shí)現(xiàn)同一行排列的的效果 
        display:table; //for FF,模擬table的效果 
        display:block 塊元素,元素的特點(diǎn)是: 
        總是在新行上開(kāi)始; 
        高度,行高以及頂和底邊距都可控制; 
        寬度缺省是它的容器的100%,除非設(shè)定一個(gè)寬度

      IE: filter: progid: DXImageTransform.Microsoft.Alpha(style=0,opacity=60); IE: filter: alpha(opacity=10); FF: opacity:0.6; FF: -moz-opacity:0.10;
          
      • 1
      • 2
      • 3
      • 4

      最好兩個(gè)都寫(xiě),并將opacity屬性放在下面


      css和js的瀏覽器兼容問(wèn)題匯總2009-05-31 13:48首先談一下瀏覽器,雖然現(xiàn)在ie依然是瀏覽器市場(chǎng)的老大,大約占有67%的份額,但是由于其各方面的欠缺,用戶開(kāi)始選擇其他瀏覽器作為自己瀏覽網(wǎng)頁(yè)的主要 工具,比如firefox、theworld、maxthon、chrome、opera等等,在用戶使用比較多的瀏覽器中,分為2大派系 - ie內(nèi)核和非ie內(nèi)核,像theworld、maxthon、greenbrower等等都屬于ie內(nèi)核,而firefox、chrome、opera則 為非ie內(nèi)核,眾多的瀏覽器使我們的web程序就出現(xiàn)了兼容問(wèn)題,像ie就有ie 6、ie7、ie8之分,同樣的樣式控制和js腳本,在不同的ie版本中也會(huì)出現(xiàn)不同的效果,甚至bug,何況在非ie內(nèi)核的firefox、 chrome、opera了。從市場(chǎng)份額分析,目前ie依然是瀏覽器市場(chǎng)老大,并會(huì)在很長(zhǎng)一段時(shí)間內(nèi)很難改變,不過(guò)我們不能忽略firefox以及其他瀏 覽器的快速成長(zhǎng),未來(lái)我們沒(méi)有辦法估計(jì),很多初級(jí)用戶還沒(méi)有看到其他非ie內(nèi)核的優(yōu)勢(shì),當(dāng)他們發(fā)現(xiàn)時(shí),我們的在去滿足他們的需求是否已經(jīng)晚了呢,所以我們 必須做到多瀏覽器的兼容。現(xiàn)在市場(chǎng)上大多web開(kāi)發(fā)著選擇兼容ie7和firefox作為主要兼容對(duì)象,這兩款也是目前用戶使用最多的,那好我們就主要講 兼容這兩款瀏覽器。

      眾多的瀏覽器使我們就要面臨多種瀏覽器測(cè)試的尷尬,比如ie在一臺(tái)機(jī)器上只能安裝一個(gè)版本,我們要測(cè)試程序在ie 3個(gè)版本中的顯示效果,就要在安裝3個(gè)版本的機(jī)器上分別測(cè)試將是一件非常繁瑣的事情,這里推薦一款工具,ietester可以同時(shí)測(cè)試3個(gè)版本的ie程 序,非常不錯(cuò)。至于其他瀏覽器在同一臺(tái)機(jī)器上安裝是沒(méi)有問(wèn)題的,所以我們準(zhǔn)備好了測(cè)試環(huán)境。

      Firefox是一款有著豐富插件的瀏覽器,這里我推薦3款web開(kāi)發(fā)人員必備的開(kāi)發(fā)工具 - Firebug、web developer、ie tab。 
      Firebug 是Firefox下的一款開(kāi)發(fā)類插件,現(xiàn)屬于Firefox的五星級(jí)強(qiáng)力推薦插件之一。它集HTML查看和編輯、Javascript控制臺(tái)、網(wǎng)絡(luò)狀況監(jiān) 視器于一體,是開(kāi)發(fā)JavaScript、CSS、HTML和 Ajax的得力助手。Firebug如同一把精巧的瑞士軍刀,從各個(gè)不同的角度剖析Web頁(yè)面內(nèi)部的細(xì)節(jié)層面,給Web開(kāi)發(fā)者帶來(lái)很大的便利。 
      Web Developer 插件以工具欄的形式對(duì)網(wǎng)頁(yè)的(X)HTML、腳本、多媒體、CSS、緩存、圖象等多方面的實(shí)用工具。使我們能輕易的獲得網(wǎng)頁(yè)的更多信息,使我們進(jìn)一步的了解當(dāng)前所瀏覽的網(wǎng)頁(yè)。 
      ie tab是firefox下一款firefox和ie互相切換的插件,這樣開(kāi)發(fā)人員可以很輕松的一鍵查看2中主流瀏覽器的兼容效果。 
      以上3款工具具體使用方法到Google、baidu中搜索使用關(guān)鍵字即可。 
      debugBar是在ie中類似firebug的工具,不過(guò)功能就差很遠(yuǎn)了,不過(guò)這里也推薦一下。

      Firefox瀏覽器良好支持W3C標(biāo)準(zhǔn),是目前對(duì)CSS支持最好的瀏覽器,而ie是出現(xiàn)的比較早,在w3c支持方面做的一直不是很好,所以兩種瀏覽器在很多方面不盡相同。 
      下面總結(jié)一下這兩種瀏覽器的兼容問(wèn)題: 
      1.集合類對(duì)象問(wèn)題 
      說(shuō)明:IE下,可以使用()或[]獲取集合類對(duì)象; 
      Firefox下,只能使用[]獲取集合類對(duì)象. 
      解決方法:統(tǒng)一使用[]獲取集合類對(duì)象.

      2.HTML對(duì)象獲取問(wèn)題 
      FireFox:document.getElementById(“idName”); 
      ie:document.idname或者document.getElementById(“idName”). 
      解決辦法:統(tǒng)一使用document.getElementById(“idName”);

      3.const問(wèn)題 
      說(shuō)明:Firefox下,可以使用const關(guān)鍵字或var關(guān)鍵字來(lái)定義常量; 
      IE下,只能使用var關(guān)鍵字來(lái)定義常量. 
      解決方法:統(tǒng)一使用var關(guān)鍵字來(lái)定義常量.

      4.window.event問(wèn)題 
      說(shuō)明:window.event只能在IE下運(yùn)行,而不能在Firefox下運(yùn)行,這是因?yàn)镕irefox的event只能在事件發(fā)生的現(xiàn)場(chǎng)使用. Firefox必須從源處加入event作參數(shù)傳遞。Ie忽略該參數(shù),用window.event來(lái)讀取該event。 
      解決方法: 
      IE&Firefox: 
      Submitted(event)”/> …

      function Submitted(evt) { evt=evt?evt:(window.event?window.event:null); }

      5.event.x與event.y問(wèn)題 
      說(shuō)明:IE下,even對(duì)象有x,y屬性,但是沒(méi)有pageX,pageY屬性; 
      Firefox下,even對(duì)象有pageX,pageY屬性,但是沒(méi)有x,y屬性. 
      解決方法:使用mX(mX = event.x ? event.x : event.pageX;)來(lái)代替IE下的event.x或者Firefox下的event.pageX.

      6.event.srcElement問(wèn)題 
      說(shuō)明:IE下,event對(duì)象有srcElement屬性,但是沒(méi)有target屬性; 
      Firefox下,even對(duì)象有target屬性,但是沒(méi)有srcElement屬性. 
      解 決方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來(lái)代替IE下的event.srcElement或者Firefox下的event.target. 請(qǐng)同時(shí)注意event的兼容性問(wèn)題。

      7.window.location.href問(wèn)題 
      說(shuō)明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href; 
      Firefox1.5.x下,只能使用window.location. 
      解決方法:使用window.location來(lái)代替window.location.href.

      8.模態(tài)和非模態(tài)窗口問(wèn)題 
      說(shuō)明:IE下,可以通過(guò)showModalDialog和showModelessDialog打開(kāi)模態(tài)和非模態(tài)窗口;Firefox下則不能. 
      解決方法:直接使用window.open(pageURL,name,parameters)方式打開(kāi)新窗口。 
      如果需要將子窗口中的參數(shù)傳遞回父窗口,可以在子窗口中使用window.opener來(lái)訪問(wèn)父窗口. 
      例如:var parWin = window.opener; parWin.document.getElementById(“Aqing”).value = “Aqing”;

      9.frame問(wèn)題 
      以下面的frame為例: 

      (1)訪問(wèn)frame對(duì)象: 
      IE:使用window.frameId或者window.frameName來(lái)訪問(wèn)這個(gè)frame對(duì)象. frameId和frameName可以同名。 
      Firefox:只能使用window.frameName來(lái)訪問(wèn)這個(gè)frame對(duì)象. 
      另外,在IE和Firefox中都可以使用window.document.getElementById(“frameId”)來(lái)訪問(wèn)這個(gè)frame對(duì)象.

      (2)切換frame內(nèi)容: 
      在 IE和Firefox中都可以使用window.document.getElementById(“testFrame”).src = “xxx.html”或window.frameName.location = “xxx.html”來(lái)切換frame的內(nèi)容. 
      如果需要將frame中的參數(shù)傳回父窗口(注意不是opener,而是parent frame),可以在frame中使用parent來(lái)訪問(wèn)父窗口。例如:parent.document.form1.filename.value=”Aqing”;

      10.body問(wèn)題 
      Firefox的body在body標(biāo)簽沒(méi)有被瀏覽器完全讀入之前就存在;而IE的body則必須在body標(biāo)簽被瀏覽器完全讀入之后才存在.

      1. 事件委托方法 
        IE:document.body.onload = inject; //Function inject()在這之前已被實(shí)現(xiàn) 
        Firefox:document.body.onload = inject();

      2. firefox與IE的父元素(parentElement)的區(qū)別 
        IE:obj.parentElement 
        firefox:obj.parentNode 
        解決方法: 因?yàn)閒irefox與IE都支持DOM,因此使用obj.parentNode是不錯(cuò)選擇.

      13.cursor:hand VS cursor:pointer 
      firefox不支持hand,但ie支持pointer 
      解決方法: 統(tǒng)一使用pointer

      14.innerText在IE中能正常工作,但是innerText在FireFox中卻不行. 需用textContent。 
      解決方法: 
      if(navigator.appName.indexOf(“Explorer”) > -1){ 
      document.getElementById(‘element’).innerText = “my text”; 
      } else{ 
      document.getElementById(‘element’).textContent = “my text”; 
      }

      1. FireFox中設(shè)置HTML標(biāo)簽的style時(shí),所有位置性和字體尺寸的值必須后跟px。這個(gè)ie也是支持的。

      2. ie,firefox以及其它瀏覽器對(duì)于 table 標(biāo)簽的操作都各不相同, 
        在ie中不允許對(duì)table和tr的innerHTML賦值,使用js增加一個(gè)tr時(shí),使用appendChild方法也不管用。 
        解決方法:

      //向table追加一個(gè)空行:
      var   row   =   otable.insertRow(-1); var   cell   =   document.createElement("td"); cell.innerHTML = "   ";  cell.className = "XXXX";  row.appendChild(cell);
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      1. padding 問(wèn)題 
        padding 5px 4px 3px 1px FireFox無(wú)法解釋簡(jiǎn)寫(xiě), 
        必須改成 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;

      2. 消除ul、ol等列表的縮進(jìn)時(shí) 
        樣式應(yīng)寫(xiě)成:list-style:none;margin:0px;padding:0px; 
        其中margin屬性對(duì)IE有效,padding屬性對(duì)FireFox有效

      3. CSS透明 
        IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。 
        FF:opacity:0.6。

      4. CSS圓角 
        IE:不支持圓角。

      FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。
          
      • 1
      1. CSS雙線凹凸邊框
      IE:border:2px   outset;。 
      FF: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080;
          
      • 1
      • 2
      1. 對(duì)select的options集合操作 
        枚 舉元素除了[]外,SelectName.options.item()也是可以的, 另外SelectName.options.length, SelectName.options.add/remove都可以在兩種瀏覽器上使用。注意在add后賦值元素,否則會(huì)失敗。

      2. XMLHTTP的區(qū)別

      //mf if (window.XMLHttpRequest)  //mf {
          xmlhttp=new XMLHttpRequest()
          xmlhttp.onreadystatechange=xmlhttpChange
          xmlhttp.open("GET",url,true)
          xmlhttp.send(null)
          } //ie else if (window.ActiveXObject)  //   code   for   IE {
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") if (xmlhttp)
              {
              xmlhttp.onreadystatechange=xmlhttpChange
              xmlhttp.open("GET",url,true)
              xmlhttp.send()
              }
          }
      } 
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21

      24.css中的width和padding 
      在IE7和FF中width寬度不包括padding,在Ie6中包括padding.

      25.css hack 
      根據(jù)不同瀏覽器對(duì)CSS樣式的支持程度,解析結(jié)果和識(shí)別CSS的優(yōu)先級(jí)不同,設(shè)計(jì)師們就可以根據(jù)這些不同瀏覽器 的特點(diǎn)來(lái)書(shū)寫(xiě)不同的CSS樣式代碼。IE6能識(shí)別下劃線和星號(hào)*,IE7能識(shí)別星號(hào)*,不能識(shí)別下劃線,而firefox兩個(gè)都不能識(shí)別,如此,就可 以針對(duì)IE6.IE7和FF通過(guò)對(duì)這些特殊符號(hào)的使用寫(xiě)不同的代碼了。

      <style> div{ background:green; /* for FireFox */ *background:red; /* for IE7 */ _background:blue; /* for IE6 */ } </style>
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      該樣式顯示的效果是:在FireFox中背景色為green;在IE7中背景色為red;在IE6中背景色為blue。

      此外,!important聲明也可以很好地提升指定樣式規(guī)則的應(yīng)用優(yōu)先權(quán)。在IE6和FF中用!important聲明可以提高優(yōu)先級(jí)別,但在 IE6中 的!important聲明會(huì)被之后的同名屬性定義替換。所以,通過(guò)*和!important聲明兩者的搭配也可以很好地解決IE6,IE7和FF三者之 間的兼容性問(wèn)題。

      區(qū)別FF,IE7,IE6:background:red; *background:green !important; *background:blue;

      注:IE都能識(shí)別;FF不能識(shí)別;IE6能識(shí)別,但不能識(shí)別 !important;IE7能識(shí)別,也能識(shí)別!important;FF不能識(shí)別*,但能識(shí)別!important;

      針對(duì)IE7/firefox 在css的前面加 [xmlns], 如下面的left屬性,如果我想要只針對(duì)IE7/firefox起作用,寫(xiě)法如下: 
      [xmlns] #left { 
      float:left; 
      border:4px solid #999; 
      padding:5px; 
      width:200px; 
      height:200px; 

      只針對(duì)IE6起作用,可以在css前面加* html,如: 
      * html #left { 
      clear:both; 
      }

      只針對(duì)IE7起作用,在css里前面加*+html,如: 
      *+html #left { 
      clear:both; 
      }

      書(shū)寫(xiě)的順序都是FireFox的寫(xiě)在前面,IE7的寫(xiě)在中間,IE6的寫(xiě)在最后面。

      26.使用IE專用的條件注釋

      <!--其他瀏覽器 --> <link rel="stylesheet" type="text/css" href="css.css" /> <!--[if IE 7]> 
      <!-- 適合于IE7 --> <link rel="stylesheet" type="text/css" href="ie7.css" /> <![endif]--> <!--[if lte IE 6]> 
      <!-- 適合于IE6及一下 --> <link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]-->
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

      27.div 的垂直居中問(wèn)題: vertical-align:middle; 將行距增加到和整個(gè)DIV一樣高 line-height:200px; 然后插入文字,就垂直居中了。缺點(diǎn)是要控制內(nèi)容不要換行

      28.cursor: pointer 可以同時(shí)在 IE FF 中顯示游標(biāo)手指狀, hand 僅 IE 可以

      29.FF: 鏈接加邊框和背景色,需設(shè)置 display: block, 同時(shí)設(shè)置 float: left 保證不換行。參照 menubar, 給 a 和 menubar 設(shè)置高度是為了避免底邊顯示錯(cuò)位, 若不設(shè) height, 可以在 menubar 中插入一個(gè)空格。

      30.在mozilla firefox和IE中的BOX模型解釋不一致導(dǎo)致相差2px解決方法:div{margin:30px!important;margin:28px;} 
      注意這兩個(gè)margin的順序一定不能寫(xiě)反,據(jù)阿捷的說(shuō)法!important這個(gè)屬性IE不能識(shí)別,但別的瀏覽器可以識(shí)別。所以在IE下其實(shí)解釋成這樣:div{maring:30px;margin:28px} 
      重復(fù)定義的話按照最后一個(gè)來(lái)執(zhí)行,所以不可以只寫(xiě)margin:XXpx!important;

      31.IE5 和IE6的BOX解釋不一致 
      IE5下div{width:300px;margin:0 10px 0 10px;} 
      div 的寬度會(huì)被解釋為300px-10px(右填充)-10px(左填充)最終div的寬度為280px,而在IE6和其他瀏覽器上寬度則是以 300px+10px(右填充)+10px(左填充)=320px來(lái)計(jì)算的。這時(shí)我們可以做如下修改 div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}

      藍(lán)藍(lán)設(shè)計(jì)www.wtxcl.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)


      簡(jiǎn)述:騰訊移動(dòng)端頁(yè)面設(shè)計(jì)規(guī)范 對(duì)你有啟發(fā)嗎?

      藍(lán)藍(lán)設(shè)計(jì)的小編

      小編今天分享一下騰訊移動(dòng)端頁(yè)面設(shè)計(jì)規(guī)范,看看會(huì)對(duì)你有什么啟發(fā)?

      網(wǎng)站內(nèi)部結(jié)構(gòu)優(yōu)化_如何優(yōu)化網(wǎng)站的內(nèi)部結(jié)構(gòu)

      seo達(dá)人

      如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

      如何優(yōu)化網(wǎng)站的內(nèi)部結(jié)構(gòu)?網(wǎng)站內(nèi)部結(jié)構(gòu)優(yōu)化是網(wǎng)站SEO過(guò)程中不可缺少的環(huán)節(jié),在網(wǎng)站建設(shè)的初期就要做好設(shè)置工作。網(wǎng)站內(nèi)部結(jié)構(gòu)的優(yōu)化主要包括:網(wǎng)站結(jié)構(gòu)、頁(yè)面元素、后期優(yōu)化等,下面就從這幾個(gè)方面為大家講解,希望能給一些不了解的朋友提供實(shí)質(zhì)性的指導(dǎo)作用。

            1、結(jié)構(gòu)目錄

      目錄的設(shè)計(jì)是網(wǎng)站建設(shè)中很關(guān)鍵的環(huán)節(jié),是一個(gè)網(wǎng)站的骨架,所以網(wǎng)站目錄直接關(guān)系到用戶的體驗(yàn)。建議:目錄的組織結(jié)構(gòu)從首頁(yè)到內(nèi)容頁(yè)點(diǎn)擊不超過(guò)三次,也就是三級(jí):首頁(yè)-欄目頁(yè)-內(nèi)容頁(yè)。目錄名可采用網(wǎng)站的一些核心產(chǎn)品詞。

      2、鏈接

      我們說(shuō)一個(gè)網(wǎng)站的優(yōu)化最重要的兩點(diǎn)是什么?對(duì),是鏈接和關(guān)鍵詞。如果說(shuō)目錄是一個(gè)網(wǎng)站的骨架,那么鏈接就是網(wǎng)站的血液。建議:網(wǎng)站鏈接的設(shè)置以英文形式展現(xiàn),簡(jiǎn)短易懂,使用靜態(tài)化URL,迎合搜索引擎的喜好,更好的服務(wù)于網(wǎng)站優(yōu)化。

      3、robots協(xié)議

      robots.txt相當(dāng)于網(wǎng)站的一張臉,一張接客的臉,接的搜索引擎的蜘蛛(或機(jī)器人、爬蟲(chóng))。它是一種抓取協(xié)議文件,用于告訴搜索引擎spider,此網(wǎng)站中的哪些內(nèi)容是不應(yīng)被搜索引擎的索引,哪些是可以被索引的。

      現(xiàn)在很多地方都有自動(dòng)生成工具,百度站長(zhǎng)工具,或者一些插件等,根據(jù)自己的喜好選擇使用。這里有一個(gè)小技巧,將網(wǎng)站的地圖鏈接放置在robots內(nèi),對(duì)網(wǎng)站的收錄絕對(duì)是不小的幫助。具體方法:在最后一行增加 Sitemap:http://www.example.com/sitemap.xml。

      4、Sitemaps

      Sitemaps就是一個(gè)管家,總結(jié)統(tǒng)計(jì)網(wǎng)站的數(shù)據(jù)鏈接,將匯總的結(jié)果更好的展現(xiàn)給網(wǎng)站的客人-搜索引擎spider。

      Sitemaps一般有html與XML兩種格式。目前百度、Google、雅虎、微軟等搜索引擎都支持Sitemaps,Sitemaps的提交可以通過(guò)各個(gè)搜索引擎的站長(zhǎng)平臺(tái)提交,也可以將其地址放在robots.txt文件里,上面已經(jīng)說(shuō)過(guò)了。

      5、404頁(yè)面

        404頁(yè)面是客戶端在瀏覽網(wǎng)頁(yè)時(shí),服務(wù)器無(wú)法正常提供信息,或是服務(wù)器無(wú)法回應(yīng),且不知道原因所返回的頁(yè)面。據(jù)說(shuō)在第三次科技革命之前,互聯(lián)網(wǎng)的形態(tài)就是一個(gè)大型的中央數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)就設(shè)置在404房間里面。那時(shí)候所有的請(qǐng)求都是由人工手動(dòng)完成的,如果在數(shù)據(jù)庫(kù)中沒(méi)有找到請(qǐng)求者所需要的文件,或者由于請(qǐng)求者寫(xiě)錯(cuò)了文件編號(hào),用戶就會(huì)得到一個(gè)返回信息:room 404 : file not found。404錯(cuò)誤信息通常是在目標(biāo)頁(yè)面被更改或移除,或客戶端輸入頁(yè)面地址錯(cuò)誤后顯示的頁(yè)面,人們也就習(xí)慣了用404作為服務(wù)器未找到文件的錯(cuò)誤代碼了。當(dāng)然實(shí)際考證傳說(shuō)中的room 404是不存在的,在http請(qǐng)求3位的返回碼中,4開(kāi)頭的代表客戶錯(cuò)誤,5開(kāi)頭代表服務(wù)器端錯(cuò)誤。

      6、nofollow標(biāo)簽

      nofollow標(biāo)簽是盡量減少垃圾鏈接對(duì)搜索引擎的影響,當(dāng)超鏈接中出現(xiàn)nofollow標(biāo)簽后,搜索引擎會(huì)不考慮這些鏈接的權(quán)重,也不用使用這些鏈接用于排名。

      nofollow標(biāo)簽通常有兩種使用方法:一種方法是將"nofollow"寫(xiě)在網(wǎng)頁(yè)上的meta標(biāo)簽上,例如:。另一種方法是將"nofollow"放在超鏈接中,例如: 。

      需要注意的是,如果一個(gè)網(wǎng)站鏈向了某些被搜索引擎認(rèn)為是垃圾網(wǎng)站的地址,那么這個(gè)網(wǎng)站的權(quán)重也會(huì)受到影響。因此對(duì)于一個(gè)網(wǎng)站來(lái)說(shuō),nofollow標(biāo)簽的使用十分必要。

      7、統(tǒng)計(jì)代碼

      網(wǎng)站統(tǒng)計(jì)分析工具應(yīng)該是每一位站長(zhǎng)都了解的,現(xiàn)在常用的就是百度統(tǒng)計(jì)、cnzz、谷歌分析、51等,具體的就不做介紹了。網(wǎng)站統(tǒng)計(jì)代碼添加時(shí),為了不 影響網(wǎng)站的加載速度,最好放在網(wǎng)站底部。

            相關(guān)拓展:關(guān)鍵詞的爬行和抓取

             搜索引擎派出一個(gè)能夠在網(wǎng)上發(fā)現(xiàn)新網(wǎng)頁(yè)并抓文件的程序,這個(gè)程序通常稱之為蜘蛛。搜索引擎從已知的數(shù)據(jù)庫(kù)出發(fā),就像正常用戶的瀏覽器一樣訪問(wèn)這些網(wǎng)頁(yè)并抓取文件。搜索引擎會(huì)跟蹤網(wǎng)頁(yè)中的鏈接,訪問(wèn)更多的網(wǎng)頁(yè),這個(gè)過(guò)程就叫爬行。這些新的網(wǎng)址會(huì)被存入數(shù)據(jù)庫(kù)等待抓取。所以跟蹤網(wǎng)頁(yè)鏈接是搜索引擎蜘蛛發(fā)現(xiàn)新網(wǎng)址的最基本的方法,所以反向鏈接成為搜索引擎優(yōu)化的最基本因素之一。沒(méi)有反向鏈接,搜索引擎連頁(yè)面都發(fā)現(xiàn)不了,就更談不上排名了。

             搜索引擎抓取的頁(yè)面文件與用戶瀏覽器得到的完全一樣,抓取的文件存入數(shù)據(jù)庫(kù)。

      藍(lán)藍(lán)設(shè)計(jì)www.wtxcl.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

      如何搞定響應(yīng)式網(wǎng)頁(yè)的布局設(shè)計(jì)?

      seo達(dá)人

      如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

      編者按:作為今年大熱的設(shè)計(jì)趨勢(shì),響應(yīng)式已然是設(shè)計(jì)師的標(biāo)配技能。今天阿里的同學(xué)從響應(yīng)式設(shè)計(jì)的布局類型、布局實(shí)現(xiàn)兩方面深入講解,有哪些實(shí)現(xiàn)布局的方式,該采用何種方式,都有相當(dāng)專業(yè)細(xì)致的解答,不多說(shuō),來(lái)收 >>>

      Heyuchan :在談響應(yīng)式布局前,我們先梳理下網(wǎng)頁(yè)設(shè)計(jì)中整體頁(yè)面排版布局,常見(jiàn)的主要有如下幾種類型:

      布局類型


      640?wx_fmt=png&wxfrom=5&wx_lazy=1

      布局實(shí)現(xiàn)


      采用何種方式實(shí)現(xiàn)布局設(shè)計(jì),也有不同的方式,這里基于頁(yè)面的實(shí)現(xiàn)單位而言,分為四種類型:固定布局、可切換的固定布局、彈性布局、混合布局。

      ?固定布局:以像素作為頁(yè)面的基本單位,不管設(shè)備屏幕及瀏覽器寬度,只設(shè)計(jì)一套尺寸;


      ?可切換的固定布局:同樣以像素作為頁(yè)面單位,參考主流設(shè)備尺寸,設(shè)計(jì)幾套不同寬度的布局。通過(guò)設(shè)別的屏幕尺寸或?yàn)g覽器寬度,選擇最合適的那套寬度布局;


      ?彈性布局:以百分比作為頁(yè)面的基本單位,可以適應(yīng)一定范圍內(nèi)所有尺寸的設(shè)備屏幕及瀏覽器寬度,并能完美利用有效空間展現(xiàn)最佳效果;


      ?混合布局:同彈性布局類似,可以適應(yīng)一定范圍內(nèi)所有尺寸的設(shè)備屏幕及瀏覽器寬度,并能完美利用有效空間展現(xiàn)最佳效果;只是混合像素、和百分比兩種單位作為頁(yè)面單位。


      640?wx_fmt=png

      可切換的固定布局、彈性布局、混合布局都是目前可被采用的響應(yīng)式布局方式。

      其中可切換的固定布局的實(shí)現(xiàn)成本,但拓展性比較差;而彈性布局與混合布局效果具響應(yīng)性,都是比較理想的響應(yīng)式布局實(shí)現(xiàn)方式。

      只是對(duì)于不同類型的頁(yè)面排版布局實(shí)現(xiàn)響應(yīng)式設(shè)計(jì),需要采用不用的實(shí)現(xiàn)方式。通欄、等分結(jié)構(gòu)的適合采用彈性布局方式、而對(duì)于非等分的多欄結(jié)構(gòu)往往需要采用混合布局的實(shí)現(xiàn)方式。

      640?wx_fmt=png

      布局響應(yīng) 對(duì)頁(yè)面進(jìn)行響應(yīng)式的設(shè)計(jì)實(shí)現(xiàn),需要對(duì)相同內(nèi)容進(jìn)行不同寬度的布局設(shè)計(jì),有兩種方式:

      桌面優(yōu)先(從桌面端開(kāi)始向下設(shè)計(jì));

      移動(dòng)優(yōu)先(從移動(dòng)端向上設(shè)計(jì));

       無(wú)論基于那種模式的設(shè)計(jì),要兼容所有設(shè)備,布局響應(yīng)時(shí)不可避免地需要對(duì)模塊布局做一些變化(發(fā)生布局改變的臨界點(diǎn)稱之為斷點(diǎn)), 我們通過(guò)JS獲取設(shè)備的屏幕寬度,來(lái)改變網(wǎng)頁(yè)的布局,這一過(guò)程我們可以稱之為布局響應(yīng)屏幕。

      常見(jiàn)的主要有如下幾種方式:

      布局不變,即頁(yè)面中整體模塊布局不發(fā)生變化,主要有:

      ?模塊中內(nèi)容:擠壓-拉伸;

      ?模塊中內(nèi)容:換行-平鋪;

      ?模塊中內(nèi)容:刪減-增加;

      640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png

      布局改變,即頁(yè)面中的整體模塊布局發(fā)生變化,主要有:

      ?模塊位置變換;

      ?模塊展示方式改變:隱藏-展開(kāi);

      ?模塊數(shù)量改變:刪減-增加;

      640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png

      很多時(shí)候,單一方式的布局響應(yīng)無(wú)法滿足理想效果,需要結(jié)合多種組合方式,但原則上盡可能時(shí)保持簡(jiǎn)單輕巧,而且同一斷點(diǎn)內(nèi)(發(fā)生布局改變的臨界點(diǎn)稱之為斷點(diǎn))保持統(tǒng)一邏輯。

      否則頁(yè)面實(shí)現(xiàn)得太過(guò)復(fù)雜,也會(huì)影響整體體驗(yàn)和頁(yè)面性能。

      藍(lán)藍(lán)設(shè)計(jì)www.wtxcl.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

      LOGO UI設(shè)計(jì)7大要點(diǎn)

      藍(lán)藍(lán)設(shè)計(jì)的小編

      大部分視覺(jué)設(shè)計(jì)師在工作中都會(huì)遇到logo UI設(shè)計(jì),每個(gè)UI設(shè)計(jì)師都有自己獨(dú)特的思路和方法。在設(shè)計(jì)過(guò)程中有理性的方法也有感性的發(fā)揮,我接下來(lái)講的理性的部分比較多,因?yàn)楦行缘臇|西跟個(gè)人平時(shí)的積累、經(jīng)驗(yàn)、生活閱歷等等相關(guān)。不是什么大神,寫(xiě)的都是自己慢慢沉淀下來(lái)的方式方法。Logo的意義和重要性,在這不再贅述,我主要講logo設(shè)計(jì)的每個(gè)階段個(gè)人覺(jué)得比較重要的幾點(diǎn)。

      ES6(一):Promise對(duì)象

      seo達(dá)人

      如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

      介紹Promise

      promise的概念和實(shí)現(xiàn)最初來(lái)源于社區(qū),用于解決異步編程的回調(diào)嵌套問(wèn)題,即將多級(jí)的嵌套改良成順序的代碼行。ES6將其寫(xiě)入了語(yǔ)言標(biāo)準(zhǔn),統(tǒng)一了用法,提供了原生的Promise。

      Promise是一個(gè)構(gòu)造函數(shù),用于生成一個(gè)Promise實(shí)例。Promise實(shí)例代表一次異步操作。 它只可能有3種轉(zhuǎn)態(tài),分別是Pending(未決議)Resolved(完成) 和 Rejected(出錯(cuò)) 。

      創(chuàng)建一個(gè)Promise實(shí)例時(shí),其處于Pending狀態(tài),當(dāng)異步操作完成,執(zhí)行回調(diào)函數(shù)的時(shí)候,根據(jù)回調(diào)函數(shù)中的err的值,如果err 為空則異步操作成功,否則異步操作失敗。此后,Promise實(shí)例的狀態(tài)將不再改變。

      Promise實(shí)例

      var pro = function () { return new Promise(function(resolve, reject) { fs.readdir(_dirname, function(err, data) { if (err) {
                      reject(err); //失敗則將Promise對(duì)象置為rejected狀態(tài) } else {
                      resolve(data); //成功則將Promise對(duì)象置為resolved轉(zhuǎn)態(tài) }
              });
          });
      } /*pro是一個(gè)函數(shù)
       調(diào)用該函數(shù)返回一個(gè)Promise實(shí)例
      */ var promiseObject = pro(); /*then方法執(zhí)行Resolved和Rejected狀態(tài)的回調(diào)函數(shù)*/ promiseObject
      .then(doneCallbacks, failCallbacks)
      .catch(function(err) { console.log(err);
      }); var doneCallbacks = function(data) { console.log(data);
      }; var failCallbacks = function(err) { console.log(err)
      };
          
      • 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

      catch是then的一個(gè)語(yǔ)法糖,相當(dāng)于

      promiseObject.then(undefined, function(err) {
          console.log(err)
      });
          
      • 1
      • 2
      • 3

      Promise對(duì)象的錯(cuò)誤具有向后傳遞的性質(zhì),因此,如果在調(diào)用過(guò)程拋出異常,則異常總能被最后一個(gè)catch捕獲。這也是為什么我們習(xí)慣在then的調(diào)用后跟隨一個(gè)catch調(diào)用。

      then的鏈?zhǔn)綄?xiě)法

      then 方法是定義在構(gòu)造函數(shù)Promise 的原型對(duì)象上的。這個(gè)方法為Promise實(shí)例添加狀態(tài)改變時(shí)的回調(diào)函數(shù)。then方法返回一個(gè)新的Promise實(shí)例,因此then方法后面可以調(diào)用then()方法。傳給then()方法的函數(shù),可返回三類值,分別如下:

      • 一個(gè)Promise實(shí)例
      • 一個(gè)普通值
      • 拋出一個(gè)異常

      如果返回的是一個(gè)新的Promise對(duì)象,則下一級(jí)的then接收函數(shù)在這個(gè)Promise實(shí)例 狀態(tài)發(fā)生改變時(shí)被觸發(fā)執(zhí)行。因此,then的鏈?zhǔn)綄?xiě)法,可以按順序執(zhí)行一系列的異步操作,并且后一個(gè)異步操作在前一個(gè)完成之后開(kāi)始。如下代碼實(shí)例所示:

      var fs = require('fs'); var pro = function () { return new Promise(function(resolve, reject) { fs.readdir(_dirname, function(err, data) { if (err) {
                      reject(err); //失敗則將Promise對(duì)象置為rejected狀態(tài) } else {
                      resolve(data); //成功則將Promise對(duì)象置為resolved轉(zhuǎn)態(tài) }
              });
          });
      } var newPro = function(data) { return new Promise(function(resolve, reject) { setTimeout(function(){ resolve(data);
              },2000);
          });
      }; /*pro是一個(gè)函數(shù)
       調(diào)用該函數(shù)返回一個(gè)Promise實(shí)例
      */ var promiseObject = pro(); /*then方法執(zhí)行Resolved和Rejected狀態(tài)的回調(diào)函數(shù)*/ promiseObject
          .then(function(data){ console.log("fisrt sync op");
              console.log(data); return newPro(data);//返回一個(gè)新的Promise對(duì)象 })
          .then(function(data) { console.log("second sync op");
              console.log(data);//兩秒鐘后才會(huì)被執(zhí)行 })
          .catch(function(err) { console.log(err);
          });
      
      promiseObject.then(undefined, function(err) { console.log(err)
      }); var doneCallbacks = function(data) { console.log(data);
      }; var failCallbacks = function(err) { console.log(err)
      }; 
          
      • 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
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53

      把上一級(jí)異步調(diào)用的結(jié)果返回給下一級(jí)調(diào)用,then這樣的鏈?zhǔn)綄?xiě)法,解決了回調(diào)函數(shù)的多層嵌套調(diào)用。

      解決異步嵌套回調(diào)的更多方案

      “回調(diào)金字塔”

      多層嵌套

      bluebird庫(kù) + Generator

      藍(lán)藍(lán)設(shè)計(jì)www.wtxcl.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)


      UI設(shè)計(jì)的工作范疇有哪些?UI設(shè)計(jì)是做什么的?

      藍(lán)藍(lán)設(shè)計(jì)的小編

      當(dāng)我還是一枚單純的p圖師的時(shí)候,誰(shuí)要是叫我美工,我是拒絕的!我跟他們講,我是設(shè)計(jì)師,是能duang的一下就加的設(shè)計(jì)師。突然有一天,有人問(wèn)起我什么是UI,作為一枚經(jīng)歷了歲月沉淪能寫(xiě)點(diǎn)代碼能P圖的大美工(此刻我已經(jīng)不拒絕美工的稱呼了,因?yàn)橐龅胶每凑娴牟荒敲春?jiǎn)單)我告訴他,我就是,然而他不信,他覺(jué)得UI設(shè)計(jì)師該是高大上的,是美工需要仰視的!

      日歷

      鏈接

      個(gè)人資料

      存檔

      主站蜘蛛池模板: 欧美性网| 日本熟女Va视频| 日本久久亚洲| 污网站在线观看视频| 18禁止观看强奷免费国产大片| 国产丝袜精品在线播放| 中文字幕一区三区| 国产在线精品涩涩涩涩91| 国产午夜无码视频免费网站| 免费av网站| 男人天堂中文字幕| 大石桥市| 日韩av高清无码一区二区三区| 538av| 亚州天堂中字幕亚州午夜福| 国产91一区二这在线播放| 久久久久厕拍| 国产黑丝袜在线观看视频| 亚洲V色| 日本视频中文字幕一区在线| 在线看一级无码毛片| 岛国中文字幕一区二区| 久久婷婷五月天| 亚洲中文字幕2022| 精品综合视频精品| 成人一区二区三区| 亚洲男人天堂视频在线| www.黄色| 亚洲二页| 蜜桃视频在线网站免费看| 国产精品综合| 啪啪福利导航| 超碰人妻97| 99热成人精品国产免国语的| AV天堂免费观看| 日韩av中文| 亚洲制服丝袜在线 | 亚洲在线一区| 综合色色网| 熟妇久久无码人妻av蜜臀www| 午夜无码区在线观看|