92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

首頁

VUE,創建組件的方式

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

方式一

 <!--1.1使用Vue.extend來創建全局的Vue組件--> var tem1 = Vue.extend({
      template:'<h3>這是使用 Vue.extend 創建的組件</h3>' //指定組件要展示的HTML結構
    }); <!--1.2使用Vue.component('組件名稱',創建出來的組件模板對象)--> Vue.component('myTem1',tem1);

    /* <!--注意--> 使用 Vue.component() 定義全局組件的時候,
        組件名稱使用 駝峰命名,則在引用組件的時候,需要把大寫改為小寫,并且用 '-'將單詞連接
        組件名稱不適用駝峰命名,則直接拿名稱來使用即可
     */ <!--組合方式--> Vue.component('myTem1',Vue.extend({
        template : '<h3>這是使用 Vue.extend 創建的組件</h3>'
    })) <div id="app"> <!-- 如果要使用組件,直接把組件的名稱以 HTML 標簽的形式,引入到頁面中--> <my-tem1> </my-tem1> </div> 
    
  • 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

方式二

直接使用Vue.component()

 Vue.component('mycom2',{
        template : '<h3>這是使用 Vue.component 創建的組件</h3>' }) 
    
  • 1
  • 2
  • 3

但是這樣寫會有一個問題:

<!--在h3標簽后緊接一個span標簽的話就會出問題了--> <h3>這是使用 Vue.component 創建的組件</h3> <span>123</span> 
    
  • 1
  • 2


這個問題是在 組件template屬性指向的模板內容,必須有且只能有唯一的一個根元素 
所以修改代碼如下:

Vue.component('mycom2',{
        template : 
            '<div> <h3>這是使用 Vue.component 創建的組件</h3> <span>123</span> </div>'
}) 
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

運行結果如下:

這里寫圖片描述

不過這種方式也有一個瑕疵,就是template 屬性的值是HTML標簽,而在軟件中,并沒有智能提示,容易出錯,若使用這種方式,需要仔細,避免出錯

方式三

<!--1.定義組件:--> Vue.component('mycom3',{
            template : '#tem1'
     }); <!--2.在被控制的 #app 外面使用 template 元素,定義組建的HTML模板結構--> <div id="app"> <!--3. 引用組件 --> <mycom3></mycom3> </div> <template id="tem1"> <div> <h1>這是 template 元素</h1> <span>這種方式好用</span> </div> </template>  
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

運行結果如下:

這里寫圖片描述

這是Vue創建組件(全局)的3種方式,其實相差不多,希望對大家有所幫助


$.ajax()方法詳解

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

1.url
要求為String類型的參數,(默認為當前頁地址)發送請求的地址。

2.type
要求為String類型的參數,請求方式(post或get)默認為get。注意其他http請求方法,例如put和delete也可以使用,但僅部分瀏覽器支持。

3.timeout
要求為Number類型的參數,設置請求超時時間(毫秒)。此設置將覆蓋$.ajaxSetup()方法的全局設置。

4.async
要求為Boolean類型的參數,默認設置為true,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為false。注意,同步請求將鎖住瀏覽器,用戶其他操作必須等待請求完成才可以執行。

5.cache
要求為Boolean類型的參數,默認為true(當dataType為script時,默認為false),設置為false將不會從瀏覽器緩存中加載請求信息。

6.data
要求為Object或String類型的參數,發送到服務器的數據。如果已經不是字符串,將自動轉換為字符串格式。get請求中將附加在url后。防止這種自動轉換,可以查看  processData選項。對象必須為key/value格式,例如{foo1:"bar1",foo2:"bar2"}轉換為&foo1=bar1&foo2=bar2。如果是數組,JQuery將自動為不同值對應同一個名稱。例如{foo:["bar1","bar2"]}轉換為&foo=bar1&foo=bar2。

7.dataType
要求為String類型的參數,預期服務器返回的數據類型。如果不指定,JQuery將自動根據http包mime信息返回responseXML或responseText,并作為回調函數參數傳遞。可用的類型如下:
xml:返回XML文檔,可用JQuery處理。
html:返回純文本HTML信息;包含的script標簽會在插入DOM時執行。
script:返回純文本JavaScript代碼。不會自動緩存結果。除非設置了cache參數。注意在遠程請求時(不在同一個域下),所有post請求都將轉為get請求。
json:返回JSON數據。
jsonp:JSONP格式。使用SONP形式調用函數時,例如myurl?callback=?,JQuery將自動替換后一個“?”為正確的函數名,以執行回調函數。
text:返回純文本字符串。

8.beforeSend
要求為Function類型的參數,發送請求前可以修改XMLHttpRequest對象的函數,例如添加自定義HTTP頭。在beforeSend中如果返回false可以取消本次ajax請求。XMLHttpRequest對象是惟一的參數。
            function(XMLHttpRequest){
               this;   //調用本次ajax請求時傳遞的options參數
            }
9.complete
要求為Function類型的參數,請求完成后調用的回調函數(請求成功或失敗時均調用)。參數:XMLHttpRequest對象和一個描述成功請求類型的字符串。
          function(XMLHttpRequest, textStatus){
             this;    //調用本次ajax請求時傳遞的options參數
          }

10.success:要求為Function類型的參數,請求成功后調用的回調函數,有兩個參數。
         (1)由服務器返回,并根據dataType參數進行處理后的數據。
         (2)描述狀態的字符串。
         function(data, textStatus){
            //data可能是xmlDoc、jsonObj、html、text等等
            this;  //調用本次ajax請求時傳遞的options參數
         }

11.error:
要求為Function類型的參數,請求失敗時被調用的函數。該函數有3個參數,即XMLHttpRequest對象、錯誤信息、捕獲的錯誤對象(可選)。ajax事件函數如下:
       function(XMLHttpRequest, textStatus, errorThrown){
          //通常情況下textStatus和errorThrown只有其中一個包含信息
          this;   //調用本次ajax請求時傳遞的options參數
       }

12.contentType
要求為String類型的參數,當發送信息至服務器時,內容編碼類型默認為"application/x-www-form-urlencoded"。該默認值適合大多數應用場合。

13.dataFilter
要求為Function類型的參數,給Ajax返回的原始數據進行預處理的函數。提供data和type兩個參數。data是Ajax返回的原始數據,type是調用jQuery.ajax時提供的dataType參數。函數返回的值將由jQuery進一步處理。
            function(data, type){
                //返回處理后的數據
                return data;
            }

14.dataFilter
要求為Function類型的參數,給Ajax返回的原始數據進行預處理的函數。提供data和type兩個參數。data是Ajax返回的原始數據,type是調用jQuery.ajax時提供的dataType參數。函數返回的值將由jQuery進一步處理。
            function(data, type){
                //返回處理后的數據
                return data;
            }

15.global
要求為Boolean類型的參數,默認為true。表示是否觸發全局ajax事件。設置為false將不會觸發全局ajax事件,ajaxStart或ajaxStop可用于控制各種ajax事件。

16.ifModified
要求為Boolean類型的參數,默認為false。僅在服務器數據改變時獲取新數據。服務器數據改變判斷的依據是Last-Modified頭信息。默認值是false,即忽略頭信息。

17.jsonp
要求為String類型的參數,在一個jsonp請求中重寫回調函數的名字。該值用來替代在"callback=?"這種GET或POST請求中URL參數里的"callback"部分,例如{jsonp:'onJsonPLoad'}會導致將"onJsonPLoad=?"傳給服務器。

18.username
要求為String類型的參數,用于響應HTTP訪問認證請求的用戶名。

19.password
要求為String類型的參數,用于響應HTTP訪問認證請求的密碼。

20.processData
要求為Boolean類型的參數,默認為true。默認情況下,發送的數據將被轉換為對象(從技術角度來講并非字符串)以配合默認內容類型"application/x-www-form-urlencoded"。如果要發送DOM樹信息或者其他不希望轉換的信息,請設置為false。

21.scriptCharset
要求為String類型的參數,只有當請求時dataType為"jsonp"或者"script",并且type是GET時才會用于強制修改字符集(charset)。通常在本地和遠程的內容編碼不同時使用。

案例代碼:

$(function(){

    $('#send').click(function(){
         $.ajax({
             type: "GET",
             url: "test.json",
             data: {username:$("#username").val(), content:$("#content").val()},
             dataType: "json",
             success: function(data){
                         $('#resText').empty();   //清空resText里面的所有內容
                         var html = ''; 
                         $.each(data, function(commentIndex, comment){
                               html += '<div class="comment"><h6>' + comment['username']
                                         + ':</h6><p class="para"' + comment['content']
                                         + '</p></div>';
                         });
                         $('#resText').html(html);
                      }
         });
    });
});

22.順便說一下$.each()函數:
$.each()函數不同于JQuery對象的each()方法,它是一個全局函數,不操作JQuery對象,而是以一個數組或者對象作為第1個參數,以一個回調函數作為第2個參數。回調函數擁有兩個參數:第1個為對象的成員或數組的索引,第2個為對應變量或內容。

跨域請求及跨域攜帶Cookie解決方案

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

Web項目前后端分離開發時,經常會遇到跨域請求和跨域攜帶Cookie的相關問題:

跨域請求

服務端可以根據實際需求修改下面設置,以Java代碼為做示例:

 //允許跨域的域名,*號為允許所有,存在被 DDoS攻擊的可能。
getResponse().setHeader("Access-Control-Allow-Origin","*");

//表明服務器支持的所有頭信息字段
getResponse().setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma,Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");

/** 目前測試來看為了兼容所有請求方式,上面2個必須設 **/

//如果需要把Cookie發到服務端,需要指定Access-Control-Allow-Credentials字段為true;
getResponse().setHeader("Access-Control-Allow-Credentials", "true");

// 首部字段 Access-Control-Allow-Methods 表明服務器允許客戶端使用 POST, GET 和 OPTIONS 方法發起請求。
//該字段與 HTTP/1.1 Allow: response header 類似,但僅限于在需要訪問控制的場景中使用。
getResponse().setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");

//表明該響應的有效時間為 86400 秒,也就是 24 小時。在有效時間內,瀏覽器無須為同一請求再次發起預檢請求。
//請注意,瀏覽器自身維護了一個最大有效時間,如果該首部字段的值超過了最大有效時間,將不會生效。
getResponse().setHeader("Access-Control-Max-Age", "86400");

// IE8 引入XDomainRequest跨站數據獲取功能,也就是說為了兼容IE
getResponse().setHeader("XDomainRequestAllowed","1"); 
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

跨域請求攜帶Cookie

服務端可以根據實際需求修改下面設置,以Java代碼為做示例:

 //如果需要把Cookie發到服務端,需要指定Access-Control-Allow-Credentials字段為true;
response.setHeader("Access-Control-Allow-Credentials", "true");

//允許跨域的域名,*號為允許所有,存在被 DDoS攻擊的可能。
response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));

//表明服務器支持的頭信息字段
response.setHeader("Access-Control-Allow-Headers","content-type"); 
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

前端根據實際情況修改發起請求的ajax,示例:

 $.ajax({
    type: "POST",
    url: "實際的請求地址",
    data: {參數:參數值},
    dataType: "json",
    crossDomain:true, //設置跨域為true xhrFields: {
              withCredentials: true //默認情況下,標準的跨域請求是不會發送cookie的 },
    success: function(data){ alert("請求成功");      
    }
}); 
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

另外還有代理、jsonp等方式不做介紹了


js 實現 pdf 在線預覽 打印 【完整版

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

1.說下需求:點擊標題  跳轉  預覽的pdf  頁,下載功能 可選【最好有】。

2.實現結果 :

 

 

3.代碼實現:

依賴pdf.js  【需要下載完整  控件】

下載官網:http://mozilla.github.io/pdf.js/

點擊  ‘Download ’   到下載頁

 

git 克隆  或者下載。

下載后文件長這樣:

【重點在后面   項目如何部署組裝】

1.新建一個空項目   把文件放到項目根目錄下:

 

紅色圈里 是官網下載的  就改個文件名字,然后拖進項目里,完全不用動里面任何文件記住,有需要另說。

綠色是我寫的【dowwn.html   是測試文件;static  放pdf  文件】 下面貼代碼:

list.html


    
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
  6. <meta name="apple-mobile-web-app-capable" content="yes">
  7. <meta name="apple-touch-fullscreen" content="yes">
  8. <meta name="full-screen" content="yes">
  9. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  10. <meta name="format-detection" content="telephone=no">
  11. <meta name="format-detection" content="address=no">
  12. <title>list</title>
  13. <style>
  14. *{
  15. margin: 0;
  16. padding: 0;
  17. }
  18. .title{
  19. background: #e50041;
  20. color: #ffffff;
  21. font-size: 16px;
  22. }
  23. .title{
  24. padding:10px 10px ;
  25. }
  26. ul{
  27. padding:0px 10px 10px 10px ;
  28. }
  29. li{
  30. list-style: none;
  31. border-bottom: 1px solid #eeeeee;
  32. height: 50px;
  33. line-height:50px;
  34. }
  35. a{
  36. text-decoration: none;
  37. color: #000;
  38. }
  39. .leftImg{
  40. width: 30px;
  41. vertical-align: middle;
  42. }
  43. .next{
  44. float: right;
  45. /*vertical-align: middle;*/
  46. margin-top: 4.5%;
  47. }
  48. </style>
  49. </head>
  50. <body>
  51. <p class="title">產品說明書</p>
  52. <ul>
  53. <li dataSrc = 'KD-122LA火災探測報警器說明書.pdf' onclick="fun(this)">
  54. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-122LA火災探測報警器說明書ccc</span> <img class="next" src="img/next.png" alt="">
  55. </li>
  56. <li dataSrc = 'KD-212LA可燃氣體探測器說明書.pdf' onclick="fun(this)">
  57. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-212LA 可燃氣體探測器說明書</span> <img class="next" src="img/next.png" alt="">
  58. </li>
  59. <li dataSrc = 'KD-216LA可燃氣體探測器說明書.pdf' onclick="fun(this)">
  60. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-216LA可燃氣體探測器說明書</span> <img class="next" src="img/next.png" alt="">
  61. </li>
  62. <li dataSrc = 'Kd-122LA_KD-601系統遙控器使用說明.pdf' onclick="fun(this)">
  63. <img class="leftImg" src="img/1.png" alt=""> <span href="">Kd-122LA KD-601系統遙控器使用說明</span> <img class="next" src="img/next.png" alt="">
  64. </li>
  65. <li dataSrc = 'KD-602LA_SOS一鍵救助使用說明書.pdf' onclick="fun(this)">
  66. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-602LA SOS一鍵救助使用說明書</span> <img class="next" src="img/next.png" alt="">
  67. </li>
  68. <li dataSrc = 'KD-701LA_溢水探測器使用說明書.pdf' onclick="fun(this)">
  69. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-701LA 溢水探測器使用說明書</span> <img class="next" src="img/next.png" alt="">
  70. </li>
  71. <li dataSrc = 'KD-702LA紅外人體移動探測器說明書.pdf' onclick="fun(this)">
  72. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-702LA紅外人體移動探測器說明書</span> <img class="next" src="img/next.png" alt="">
  73. </li>
  74. <li dataSrc = 'KD-703LA_門窗探測器使用說明書.pdf' onclick="fun(this)">
  75. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-703LA 門窗探測器使用說明書</span> <img class="next" src="img/next.png" alt="">
  76. </li>
  77. <li dataSrc = 'KD-805A_WiFi系統主機使用說明書_V1.00.pdf' onclick="fun(this)">
  78. <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-805A WiFi系統主機使用說明書_V1.00</span> <img class="next" src="img/next.png" alt="">
  79. </li>
  80. <li dataSrc = 'WIFI智慧家庭安防系統操作說明書_v0.01.pdf'onclick="fun(this)">
  81. <img class="leftImg" src="img/1.png" alt=""> <span href="">WIFI智慧家庭安防系統操作說明書_v0.01</span> <img class="next" src="img/next.png" alt="">
  82. </li>
  83. </ul>
  84. <script src="js/jquery.min.js"></script>
  85. <script>
  86. function fun(e){
  87. // console.log(e);
  88. var dataSrc = $(e).attr('dataSrc');
  89. // console.log(dataSrc);
  90. // sessionStorage.setItem('dataSrc',dataSrc);
  91. // window.location.href='index.html'
  92. var urlSrc = 'http://testweixin.kingdun.net.cn/pdf/static/'+dataSrc;
  93. $.ajax({
  94. url: urlSrc,
  95. type: "get",
  96. success: function(xhr, data){
  97. if (navigator.userAgent.indexOf('Android') > -1) {
  98. //判斷移動端是android 還是ios ,若是android 則要借助pdf插件
  99. window.location.href = "http://testweixin.kingdun.net.cn/pdf/pdfjs/web/viewer.html?file="+urlSrc;
  100. } else {
  101. //ios直接打開pdf
  102. //window.location.href = url;
  103. window.location.href = "http://testweixin.kingdun.net.cn/pdf/pdfjs/web/viewer.html?file="+urlSrc;
  104. }
  105. },
  106. error: function(){
  107. //window.location.href = '${ctx}/core/user.androidPdf.do?mid='+mid+"&name="+storagename+"&realname="+realname;
  108. window.location.href = "http://testweixin.kingdun.net.cn/pdf/js/web/viewer.html?file="+urlSrc;
  109. }
  110. });
  111. }
  112. </script>
  113. </body>
  114. </html>

完畢!

注意:

本地測試不了,http://testweixin.kingdun.net.cn   是我們運維小哥哥發版后的服務器。我寫本地不對,你也可以 node.js 自己搭個服務器。

注釋:window.location.href = "http://testweixin.kingdun.net.cn/pdf/pdfjs/web/viewer.html?    直接跳轉到 萬能的pdf 組件里的html 頁,該有的  國際化和下載打印功能   人家都寫好了!

【兼容性】:蘋果手機:直接預覽,手機系統自帶的,但是 不能下載 (有得必有失),可以在 別的應用中打開  例如  wps。

                       安卓:可預覽 ,可下載,在手機默認瀏覽器打開  可支持下載,本人小米8,uc瀏覽器 下載亂碼,但是 小米自帶瀏覽器 可下載pdf文件。

交差。

 

彩蛋:down.html 


    
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
  6. <meta name="apple-mobile-web-app-capable" content="yes">
  7. <meta name="apple-touch-fullscreen" content="yes">
  8. <meta name="full-screen" content="yes">
  9. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  10. <meta name="format-detection" content="telephone=no">
  11. <meta name="format-detection" content="address=no">
  12. <title>list</title>
  13. <style>
  14. *{
  15. margin: 0;
  16. padding: 0;
  17. }
  18. .title{
  19. background: #e50041;
  20. color: #ffffff;
  21. font-size: 16px;
  22. }
  23. .title{
  24. padding:10px 10px ;
  25. }
  26. ul{
  27. padding:0px 10px 10px 10px ;
  28. }
  29. li{
  30. list-style: none;
  31. border-bottom: 1px solid #eeeeee;
  32. height: 50px;
  33. line-height:50px;
  34. }
  35. a{
  36. text-decoration: none;
  37. color: #000;
  38. }
  39. .leftImg{
  40. width: 30px;
  41. vertical-align: middle;
  42. }
  43. .next{
  44. float: right;
  45. /*vertical-align: middle;*/
  46. margin-top: 4.5%;
  47. }
  48. </style>
  49. </head>
  50. <body>
  51. <p class="title">產品說明書</p>
  52. <a href="static/1.pdf">00001</a>
  53. </body>
  54. </html>

哈哈,直接a 標簽   href 跳轉  pdf文件;也是ok的哦!【蘋果手機:直接預覽;;;安卓:下載 鏈接 】


css樣式表中的樣式覆蓋順序,兩個class同時存在會怎樣?

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

有時候在寫CSS的過程中,某些限制總是不起作用,這就涉及了CSS樣式覆蓋的問題,如下

Css代碼 

  1. #navigator {  
  2.     height: 100%;  
  3.     width: 200;  
  4.     position: absolute;  
  5.     left: 0;  
  6.     border: solid 2 #EEE;  
  7. }  
  8.   
  9. .current_block {  
  10.     border: solid 2 #AE0;  
  11. }  

查找一些教材中(w3schools等),只說css的順序是“元素上的style” > “文件頭上的style元素” >“外部樣式文件”,但對于樣式文件中的多個相同樣式的優先級怎樣排列,沒有詳細說明。經過測試和繼續搜索,得知優先級如下排列:

 

1. 樣式表的元素選擇器選擇越,則其中的樣式優先級越高:

id選擇器指定的樣式 > 類選擇器指定的樣式 > 元素類型選擇器指定的樣式

所以上例中,#navigator的樣式優先級大于.current_block的優先級,及時.current_block是添加的,也不起作用。

2. 對于相同類型選擇器制定的樣式,在樣式表文件中,越靠后的優先級越高

注意,這里是樣式表文件中越靠后的優先級越高,而不是在元素class出現的順序。比如.class2 在樣式表中出現在.class1之后:

Css代碼 

  1. .class1 {  
  2.     color: black;  
  3. }  
  4.   
  5. .class2 {  
  6.     color: red;  
  7. }  

而某個元素指定class時采用 class="class2 class1"這種方式指定,此時雖然class1在元素中指定時排在class2的后面,但因為在樣式表文件中class1處于class2前面,此時仍然是class2的優先級更高,color的屬性為red,而非black。

 

3. 如果要讓某個樣式的優先級變高,可以使用!important來指定:

Css代碼 

  1. .class1 {  
  2.     color: black !important;  
  3. }  
  4.   
  5. .class2 {  
  6.     color: red;  
  7. }  

 此時class將使用black,而非red。

對于一開始遇到的問題,有兩種解決方案:

1. 將border從#navigator中拿出來,放到一個class .block中,而.block放到.current_block之前:

Css代碼 

  1. #navigator {  
  2.     height: 100%;  
  3.     width: 200;  
  4.     position: absolute;  
  5.     left: 0;  
  6. }  
  7.   
  8. .block {  
  9.     border: solid 2 #EEE;  
  10. }  
  11.   
  12. .current_block {  
  13.     border: solid 2 #AE0;  
  14. }  

 需要莫仁為#navigator元素指定class="block"

2. 使用!important:

Css代碼 

  1. #navigator {  
  2.     height: 100%;  
  3.     width: 200;  
  4.     position: absolute;  
  5.     left: 0;  
  6.     border: solid 2 #EEE;  
  7. }  
  8.   
  9. .current_block {  
  10.     border: solid 2 #AE0 !important;  
  11. }  

 此時無需作任何其他改動即可生效??梢姷诙N方案更簡單一些。 


JavaScript 獲取窗口屬性

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

獲取窗口屬性

  • 查看滾動條的滾動距離 
    • window.pageXOffset/pageYOffset 
      • IE8及IE8以下不兼容
    • document.body/documentElement.scrollLeft/scrollTop 
      • 兼容性比較混亂,同時取兩個值相加,因為不可能存在兩個同時有值
    • 封裝兼容性方法,求滾動輪滾動離getScrollOffset()

為了解決兼容性的問題,我們來封裝一個函數:

<script type="text/javascript">
    function getScrollOffset() {
        if(window.pageXOffset) { x : window.pageXoffset, y : window.pageYoffset }
        else{
            return { x : document.body.scrollLeft + document.documentElement.scrollLeft, y : document.body.scrollTop + document.documentElement.scrollTop,
            }
        }
    }
</script>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 查看視口的尺寸 
    • window.innerWidth/innerHeight 
      • IE及IE8以下不兼容
    • document.documentElement.clientWidth/clientHeight 
      • 標準模式下,任意瀏覽器都兼容
    • document.body.clientWidth/clientHeight 
      • 適用于怪異模式(向后兼容)下的瀏覽器
    • 封裝兼容性方法,返回瀏覽器視口尺寸getViewportOffset()

為了解決兼容性的問題,我們來封裝一個函數:

<script type="text/javascript"> function getSViewportOffset() { if(window.innerWidth) { return {
                w : window.innerWidth,
                h : window.innerHeight
            }
        }else{ if(document.compatMode ==="BackCompat") { return {
                    w : document.body.clienWidth,
                    h : document.body.clientHeight
                }
            }else{ return {
                    w : document.documentElement.clientWidth,
                    h : document.documrntElement.clientHeight
                }
            }
    }
</script>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 查看元素的幾何尺寸

    • domEle.getBoundingClientRect();
    • 兼容性很好
    • 該方法返回一個對象,對象里面有left,top,right,bottom等屬性。left和top代表該元素左上角的X和Y坐標,right和bottom代表元素右下角的X和Y坐標。
    • height和width屬性老版本IE不顯示(人為解決:分別相減一下就能得出)
    • 返回的結果并不是”實時的”
  • 讓滾動條滾動

    • window上有三個方法
    • scroll(x,y)在x軸、y軸上滾動的位置,scrollTo(x,y) 
      讓滾動條滾動到當前位置,而不是累加距離(這兩種方法是完全一樣的)
    • scrollBy();累加滾動距離
    • 三個方法功能類似,用法都是將x,y坐標傳入。即實現讓滾動條滾動到當前位置。
    • 區別:scrollBy()會在之前的數據基礎之上做累加。
    • eg:利用scroll()頁面定位功能。
    • eg:利用scrollBy()快速閱讀功能。

練習: 
做一個小閱讀器,會自動翻頁。

<!DOCTYPE html> <html> <head> <title>Document</title> </head> <body> 文本內容 <div style="width:100px;height:100px;background-color:orange;color:#fff;font-size:40px;text-align:center;line-height:100px;position:fixed;bottom:200px;right:50px;opcity:0.5;">start</div> <div style="width:100px;height:100px;background-color:orange;color:green;font-size:40px;text-align:center;line-height:100px;position:fixed;bottom:50px;right:50px;opcity:0.5;">stop</div> </body> <script type="text/javascript"> var start = document.getElement.getElementsByTagName('div')[0]; var stop = document.getElement.getElementsByTagName('div')[1]; var timer = 0; var key = true; //加鎖,防止連續點start產生累加加速 start.onclick = function() { if(key) {
            timer = setInterval(function() { window.scollBy(0,10);
            },100);
            key = false;
        }
    }
    stop.onclick = function() { clearInterval(timer);
        key = true;
    } </script>
    
  • 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

JavaScript之作用域,作用域鏈和預解析

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

變量包括:全局變量,局部變量

在JAvaScript中,函數中定義的變量是局部變量

作用域:就是變量的使用范圍,

分為:局部作用域和全局作用域

js中沒有塊級作用域---一對括號中定義的變量,這個變量可以在大括號外面使用

作用域鏈:變量的使用,從里向外,層層的搜索,搜索到了就可以直接使用了


    
  1. var num=10; //作用域鏈 級別:0
  2. var num2=20;
  3. var str = "abc"
  4. function f1() {
  5. var num2=20;
  6. function f2() {
  7. var num3=30;
  8. console.log(num);
  9. }
  10. f2();
  11. }
  12. f1();

 層層搜索,搜索到0級作用域的時候,如果還是沒有找到這個變量,結果就是報錯

預解析:就是在瀏覽器解析代碼之前,把變量的聲明和函數的聲明提前(提升)到該作用域的最上面

(1)變量的提升

下面這種情況,變量的聲明被提前了,但是num的值并沒有提前,結果為undefined


    
  1. //變量的提升
  2. console.log(num);
  3. var num=100;
  4. //提升之后為:
  5. var num;//變量的聲明提前
  6. console.log(num);
  7. var num=100;

 (2)

函數聲明被提前,代碼仍然可以執行


    
  1. //函數的聲明被提前了
  2. f1();
  3. function f1() {
  4. console.log("這個函數,執行了");
  5. }

但是對于下面這種情況,代碼報錯


    
  1. f2();
  2. var f2=function () {
  3. console.log("小楊好帥哦");
  4. }
  5. //聲明提前后:
  6. var f2;//為一個變量,undefind
  7. f2();//undefind加括號是不被認可的,所以報錯
  8. var f2=function () {
  9. console.log("小楊好帥哦");
  10. }

 要想不報錯,代碼可以改為:


    
  1. var f2;
  2. f2=function () {
  3. console.log("小楊好帥哦");
  4. };
  5. f2();

 藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務。


js控制form提交

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

form表單提交,之前有個下載的項目接口,需要上url上邊傳超級多東西,但是 url是限制長度的 每個瀏覽器限制的url長度還不一樣,所以就想到用form表單的action提交表單。

form標簽 定義和用法 詳細了解請點擊

標簽用于為用戶輸入創建 HTML 表單。

表單能夠包含 input 元素,比如文本字段、復選框、單選框、提交按鈕等等。

表單還可以包含 menus、textarea、fieldsetlegend 和 label 元素。

表單用于向服務器傳輸數據。(我們要用到的)

form提交數據用法

在這里我就寫個用js調用事件提交表單。表單不在頁面上顯示的例子。

下面這段代碼 form標簽的屬性 method 就是請求方法 跟 jquery的ajax一樣這里我使用post請求、 form標簽的屬性 enctype 規定發送表單數據之前如何對其進行編碼、form標簽的屬性 target=”_blank” 就相當于在新頁面打開 我這里做的是下載 所以要在新頁面打開。

 <form method="post" enctype="application/x-www-form-urlencoded" id="form-submit" target="_blank">
   <input type="hidden" name="account" value="多毛大叔愛蘿莉"/>
   <input type="hidden" name="password" value="7758521"/>
</form>
<button type="button" id="go">go</button> //這里的name就是相當于post屬性的參數 value就是你傳的值 type是hidden 是因為我不想再頁面上看到他所以讓他隱藏了
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

接下來我們用js調用事件 動態給 form 添加 action 屬性讓form知道我們要讓他請求拿個位置。

// js 獲取form表單 var form_submit = document.getElementById('form-submit'); // js獲取按鈕 var go = document.getElementById('go'); // 當點擊go時執行事件 go.addEventListener('click',function(){ // 動態給form表單設置請求位置 form_submit.active = "http://www.daxuehua.cn"; // 讓form表單提交 form_submit.submit()
})
藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務


原生js實現移動端touch事件,解決穿透問題

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

四種touch事件

touchstart: //手指放到屏幕上時觸發

touchmove: //手指在屏幕上滑動式觸發

touchend: //手指離開屏幕時觸發

touchcancel: //系統取消touch事件的時候觸發 
每個觸摸事件被觸發后,會生成一個event對象,event對象里額外包括以下三個觸摸列表

touches: //當前屏幕上所有手指的列表

targetTouches: //當前dom元素上手指的列表,盡量使用這個代替touches

changedTouches: //涉及當前事件的手指的列表,盡量使用這個代替touches

這些列表里的每次觸摸由touch對象組成,touch對象里包含著觸摸信息,主要屬性如下:

clientX / clientY: //觸摸點相對瀏覽器窗口的位置

pageX / pageY: //觸摸點相對于頁面的位置

screenX / screenY: //觸摸點相對于屏幕的位置

identifier: //touch對象的ID

target: //當前的DOM元素

注意

手指在滑動整個屏幕時,會影響瀏覽器的行為,比如滾動和縮放。所以在調用touch事件時,要注意禁止縮放和滾動。

1.禁止縮放

通過meta元標簽來設置。

<meta name="viewport" content="target-densitydpi=320,width=640,user-scalable=no"> 
    
  • 1
  • 2

2.禁止滾動

preventDefault是阻止默認行為,在touchMove事件中使用可阻止默認行為滾動。

event.preventDefault();

3.解決穿透 
在touchStart事件后添加touchMove事件的監聽,在touchMove事件里添加touchEnd事件的監聽,在touchEnd事件中移除touchMove和touchEnd的事件監聽,即可解決穿透問題

4.removeEventListener 
傳入的處理事件函數一定是相同的函數,不能是匿名函數

案例

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" Content="text/html; charset=utf-8;"> <title>移動端觸摸滑動</title> <meta name="author" content="rainna" /> <meta name="keywords" content="rainna's js lib" /> <meta name="description" content="移動端觸摸滑動" /> <meta name="viewport" content="target-densitydpi=320,width=640,user-scalable=no"> <style> *{margin:0;padding:0;} li{list-style:none;} .m-slider{width:600px;margin:50px 20px;overflow:hidden;} .m-slider .cnt{position:relative;left:0;width:3000px;} .m-slider .cnt li{float:left;width:600px;} .m-slider .cnt img{display:block;width:100%;height:450px;} .m-slider .cnt p{margin:20px 0;} .m-slider .icons{text-align:center;color:#000;} .m-slider .icons span{margin:0 5px;} .m-slider .icons .curr{color:red;} .f-anim{-webkit-transition:left .2s linear;} </style> </head> <body> <div class="m-slider"> <ul class="cnt" id="slider"> <li> <img src="http://imglf1.ph.126.net/qKodH3sZoVbPalKFtHS9mw==/6608946691259322175.jpg"> <p>20140813鏡面的世界,終究只是倒影。看得到你的身影,卻觸摸不到你的未來</p> </li> <li> <img src="http://imglf1.ph.126.net/40-jqH_j6EoCWnZOixY2pA==/4798022453110310215.jpg"> <p>20140812錫林浩特前往東烏旗S101必經之處,一條極美的鐵路。鐵路下面是個小型的鹽沼,淡淡的有了一絲天空之境的感覺??上г诖送媪艘粋€小時也沒有看見一列火車經過,只好繼續趕往東烏旗。</p> </li> <li> <img src="http://imglf0.ph.126.net/Jnmi2y51zVdjKAYlibtpFw==/3068640196117481166.jpg"> <p>20140811水的顏色為什么那么藍,我也納悶,反正自然飽和度和對比度拉完就是這個顏色的</p> </li> <li> <img src="http://imglf1.ph.126.net/79GPsjhwiIj8e-0nP5MsEQ==/6619295294699949331.jpg"> <p>海洋星球3重慶天氣熱得我想臥軌自殺</p> </li> <li> <img src="http://imglf1.ph.126.net/40-jqH_j6EoCWnZOixY2pA==/4798022453110310215.jpg"> <p>以上這些作品分別來自兩位設計師作為觀者,您能否通過設計風格進行區分</p> </li> </ul> <div class="icons" id="icons"> <span class="curr">1</span> <span>2</span> <span>3</span> <span>4</span> <span>5</span> </div> </div> <script> var slider = { //判斷設備是否支持touch事件 touch:('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch,
    slider:document.getElementById('slider'), //事件 events:{
        index:0, //顯示元素的索引 slider:this.slider, //this為slider對象 icons:document.getElementById('icons'),
        icon:this.icons.getElementsByTagName('span'),
        handleEvent:function(event){ var self = this; //this指events對象 if(event.type == 'touchstart'){
                self.start(event);
            }else if(event.type == 'touchmove'){
                self.move(event);
            }else if(event.type == 'touchend'){
                self.end(event);
            }
        }, //滑動開始 start:function(event){ var touch = event.targetTouches[0]; //touches數組對象獲得屏幕上所有的touch,取第一個touch startPos = {x:touch.pageX,y:touch.pageY,time:+new Date}; //取第一個touch的坐標值 isScrolling = 0; //這個參數判斷是垂直滾動還是水平滾動 this.slider.addEventListener('touchmove',this,false); this.slider.addEventListener('touchend',this,false);
        }, //移動 move:function(event){ //當屏幕有多個touch或者頁面被縮放過,就不執行move操作 if(event.targetTouches.length > 1 || event.scale && event.scale !== 1) return; var touch = event.targetTouches[0];
            endPos = {x:touch.pageX - startPos.x,y:touch.pageY - startPos.y};
            isScrolling = Math.abs(endPos.x) < Math.abs(endPos.y) ? 1:0; //isScrolling為1時,表示縱向滑動,0為橫向滑動 if(isScrolling === 0){
                event.preventDefault(); //阻止觸摸事件的默認行為,即阻止滾屏 this.slider.className = 'cnt'; this.slider.style.left = -this.index*600 + endPos.x + 'px';
            }
        }, //滑動釋放 end:function(event){ var duration = +new Date - startPos.time; //滑動的持續時間 if(isScrolling === 0){ //當為水平滾動時 this.icon[this.index].className = ''; if(Number(duration) > 10){ //判斷是左移還是右移,當偏移量大于10時執行 if(endPos.x > 10){ if(this.index !== 0) this.index -= 1;
                    }else if(endPos.x < -10){ if(this.index !== this.icon.length-1) this.index += 1;
                    }
                } this.icon[this.index].className = 'curr'; this.slider.className = 'cnt f-anim'; this.slider.style.left = -this.index*600 + 'px';
            } //解綁事件 this.slider.removeEventListener('touchmove',this,false); this.slider.removeEventListener('touchend',this,false);
        }
    }, //初始化 init:function(){ var self = this; //this指slider對象 if(!!self.touch) self.slider.addEventListener('touchstart',self.events,false); //addEventListener第二個參數可以傳一個對象,會調用該對象的handleEvent屬性 }
};

slider.init(); </script> </body> </html>
藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務。

與原型相關的那些事兒

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

寫在前面: 
1、什么是對象? 
對象就是屬性的集合; 
2、對象與函數的關系? 
對象都可以看做是由構造函數Object實例化生成的; 
函數都可以看做是由構造函數Function實例化生成的; 
構造函數Object也是由構造函數Function生成的;

1、原型prototype

如果讓用簡單的幾句話說一下什么是原型,或者給原型下個定義,我覺得還是有點困難的,困難之處在于即使說了之后,對于聽的人來說,估計也是一頭霧水。不過,關于原型的一些基本的東西還是要說明的,這些基本的東西差不多就可以構成一個對原型的理解。首先,原型是函數才有的一個屬性;其次,原型就是一個對象,我們可以給它添加屬性或方法;最后,原型的作用是實現對象屬性的繼承。

每個對象都有一個隱藏的__proto__屬性,__proto__屬性指向創建該對象的函數的原型prototype;

這里寫圖片描述

每個函數都有一個prototype屬性,其prototype屬性值是一個對象;

這里寫圖片描述

這里寫圖片描述

對象是沒有prototype屬性的,函數是沒有__proto__屬性的;

通過原型prototype,可以實現對象屬性的繼承,即創建在構造函數原型上的方法和屬性可以被所有由該構造函數生成的實例所共享;

2、原型鏈

什么是原型鏈? 
原型鏈描述的是對象的繼承圖譜(類似于家譜圖),當訪問一個對象的屬性的時候,會在該對象中進行查詢,如果在該對象中沒有查詢到,則會沿著該對象的__proto__線進行查詢,直到查詢到該屬性或者到Object.prototype,這樣層層向上查詢的線路就是該對象的原型鏈。

3、instanceof

typeof在判斷引用數據類型時只能返回object和function,不能準確判斷引用數據類型時數組還是對象。而instanceof可以很好用于判斷引用數據類型。

用法: A instanceof B

instanceof是通過判斷對象A的原型鏈上是否存在B的原型來確定A的數據類型;

藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
午夜影视日本亚洲欧洲精品| 国产激情精品一区二区三区| 欧美黑人巨大videos精品| 亚洲自拍偷拍网站| 99在线高清视频在线播放| 欧美自拍视频在线| 成人在线丰满少妇av| 成人免费三级在线| 亚洲夂夂婷婷色拍ww47| 91香蕉视频在线| 在线视频国内一区二区| 亚洲91精品| 日韩一区不卡| 啪啪av大全导航福利综合导航| 日韩一级网站| 久久精品亚洲精品国产欧美kt∨| 久久精品欧洲| 日韩影视高清在线观看| 国产日产亚洲精品| 日韩在线一区二区三区免费视频| 精品伊人久久| 欧美体内谢she精2性欧美| 26uuuu精品一区二区| 在线成人免费观看| 欧美97人人模人人爽人人喊视频| 亚洲欧美综合| 精品久久美女| 国产成人午夜高潮毛片| 人人澡人人澡人人看欧美| 亚洲成色www久久网站| 国产精品2024| 免费在线国产视频| 中文字幕精品一区二区三区精品| 久久夜色精品国产噜噜av小说| 欧美午夜免费电影| 男人天堂亚洲| 91精品国产91久久久| 国产鲁鲁视频在线观看特色| 青青草国产成人a∨下载安卓| 996久久国产精品线观看| 亚洲日本欧美| 爆操欧美美女| 一区二区亚洲精品| 国产精品天干天干在线综合| 日本一区二区三区在线不卡| 婷婷色在线播放| 欧美女优在线视频| 91在线高清观看| 久久精品国产亚洲blacked| 日本aⅴ精品一区二区三区| 亚洲精品免费播放| 亚洲深夜福利网站| 777午夜精品免费视频| 免费在线视频一区| 91久久亚洲| 欧美国产极速在线| 999国产在线视频| 国际精品欧美精品| 国产一区二区三区三区在线观看| 欧美专区一区| 成人在线观看av| 亚洲+变态+欧美+另类+精品| 激情伊人五月天久久综合| 色伊人久久综合中文字幕| 午夜精品久久久久久99热软件| 久久免费国产| 亚洲风情在线资源站| 午夜视频一区在线观看| 91黄色在线| 久久91精品国产91久久久| 欧美人妖在线| 全球av集中精品导航福利| 日韩欧美国产精品一区| 深夜激情久久| 亚洲女成人图区| 国产精品天干天干在观线| 色吧亚洲视频| av一区二区在线观看| 亚洲美女精品久久| 国产欧美日韩亚洲| 国产精品久久国产三级国电话系列| 男女在线视频| 久久影院亚洲| 欧美视频专区一二在线观看| 免费在线观看91| 国产精品亚洲人成在99www| 亚洲午夜一级| 天天综合网 天天综合色| 欧美一级大片在线观看| 亚洲人成高清| 女人让男人操自己视频在线观看| 日韩深夜影院| 91偷拍与自偷拍精品| 中文字幕亚洲综合久久| av资源中文在线| 美女搞黄视频在线观看| 国产剧情av在线播放| 99在线精品视频在线观看| 手机在线观看av网站| 国内精彩免费自拍视频在线观看网址| 欧美激情1区2区3区| 久久久久久久久国产一区| 欧美日韩国产亚洲一区| 男人天堂亚洲| 国产精品久久av| 国产精品推荐精品| 日本一区二区三区视频视频| 亚洲r级在线视频| 午夜在线a亚洲v天堂网2018| 大黄网站在线观看| 国产啪精品视频| 99精品国产99久久久久久白柏| 91色porny| 中文字幕亚洲欧美日韩在线不卡| 久久99久国产精品黄毛片入口| 亚洲欧美日韩一区二区三区在线观看| 亚洲tv在线| 国产精品白丝jk白祙喷水网站| 亚洲欧美激情视频| 色狠狠色狠狠综合| 日本精品久久| 亚洲婷婷丁香| 97视频免费在线观看| 全球中文成人在线| av理论在线观看| 精品在线免费视频| 高清免费成人av| 91丨九色丨蝌蚪丨老版| 欧美在线视频一区| 日韩成人性视频| 草民午夜欧美限制a级福利片| 国产精品一久久香蕉国产线看观看| 亚洲福利视频网站| 欧美电影免费| 性爽视频在线| 欧美va亚洲va香蕉在线| 中文字幕欧美国内| 国产精品国产亚洲伊人久久| 无人区乱码一区二区三区| 亚洲三级电影全部在线观看高清| 96精品久久久久中文字幕| 成人18视频日本| 91社区在线播放| 国内免费精品永久在线视频| 国产精品欧美激情在线播放| 99精品视频一区二区| 国产精品麻豆99久久久久久| 香蕉伊大人中文在线观看| 久久福利视频导航| 波多野在线观看| 亚洲黄色成人网| 久久一区二区中文字幕| 在线精品亚洲欧美日韩国产| 国产一区欧美一区| 国产精品theporn| 在线亚洲人成电影网站色www| 久久婷婷国产综合尤物精品| 91看片在线观看| 欧美日韩你懂的| 亚洲欧美国产va在线影院| 一区二区三区在线高清| 亚洲电影免费观看| 欧美性开放视频| 亚洲黄色成人久久久|