午夜勾魂曲-午夜福利自怕-午夜福利在线观看6080-午夜福利院电影-国产精品毛片AV久久97-国产精品麻豆高潮刺激A片

首頁

JS設計模式之單例模式、組合模式、觀察者模式、策略模式

前端達人

好,下面我將結(jié)合一些實例,說一下我對組合模式以及觀察者模式的了解:



1、組合模式:



組合模式在對象間形成樹形結(jié)構(gòu);

組合模式中基本對象和組合對象被一致對待;

無須關(guān)心對象有多少層, 調(diào)用時只需在根部進行調(diào)用;

將多個對象的功能,組裝起來,實現(xiàn)批量執(zhí)行;

想象我們現(xiàn)在手上有個萬能遙控器, 當我們回家, 按一下開關(guān), 下列事情將被執(zhí)行:



到家了,開門

開電腦

開音樂




// 先準備一些需要批量執(zhí)行的功能
class GoHome{
    init(){
        console.log("到家了,開門");
    }
}
class OpenComputer{
    init(){
        console.log("開電腦");
    }
}
class OpenMusic{
    init(){
        console.log("開音樂");
    }
}

// 組合器,用來組合功能
class Comb{
    constructor(){
        // 準備容器,用來防止將來組合起來的功能
        this.skills = [];
    }
    // 用來組合的功能,接收要組合的對象
    add(task){
        // 向容器中填入,將來準備批量使用的對象
        this.skills.push(task);
    }
    // 用來批量執(zhí)行的功能
    action(){
        // 拿到容器中所有的對象,才能批量執(zhí)行
        this.skills.forEach( val => {
            val.init();
        } );
    }
}

// 創(chuàng)建一個組合器
var c = new Comb();

// 提前將,將來要批量操作的對象,組合起來
c.add( new GoHome() );
c.add( new OpenComputer() );
c.add( new OpenMusic() );

// 等待何時的時機,執(zhí)行組合器的啟動功能
c.action();
    // 在內(nèi)部,會自動執(zhí)行所有已經(jīng)組合起來的對象的功能



由此,我們可以總結(jié)一下組合模式的特點


1.批量執(zhí)行
2.啟動一個方法,會遍歷多個方法,同時執(zhí)行,有點類似于遞歸的感覺
3.組合模式略微耗性能,但是執(zhí)行方便
 目前只是一個基礎組合。
 高級組合:
1.組合成樹狀結(jié)構(gòu),每個對象下,還會有自己的子對象
2.如果執(zhí)行了父對象的某個方法,所有的子對象會跟隨執(zhí)行
3.組合模式一般建議使用在動態(tài)的html結(jié)構(gòu)上,因為組合模式的結(jié)構(gòu)和html的結(jié)構(gòu),出奇的一致
4.基本對象和組合對象被一致對待, 所以要保證基本對象(葉對象)和組合對象具有一致方法


2、觀察者模式:

觀察者模式也叫也叫Observer模式、訂閱/發(fā)布模式,也是由GoF提出的23種軟件設計模式的一種。
觀察者模式是行為模式之一,它的作用是當一個對象的狀態(tài)發(fā)生變化時,能夠自動通知其他關(guān)聯(lián)對象,自動刷新對象狀態(tài),或者說執(zhí)行對應對象的方法(主題數(shù)據(jù)改變,通知其他相關(guān)個體,做出相應的數(shù)據(jù)更新)。
這種設計模式可以大大降低程序模塊之間的耦合度,便于更加靈活的擴展和維護。
以觀察的角度,發(fā)現(xiàn)對應的狀況,處理問題。
觀察者模式包含兩種角色:
①觀察者(訂閱者):會隨時更新自身的信息或狀態(tài)(訂閱者可以隨時加入或離開);
②被觀察者(發(fā)布者):接收到發(fā)布者發(fā)布的信息,從而做出對應的改變或執(zhí)行。
很方便的實現(xiàn)簡單的廣播通信,實現(xiàn)一對多的對應關(guān)系。
核心思想:觀察者只要訂閱了被觀察者的事件,那么當被觀察者的狀態(tài)改變時,被觀察者會主動去通知觀察者,而無需關(guān)心觀察者得到事件后要去做什么,實際程序中可能是執(zhí)行訂閱者的回調(diào)函數(shù)。
Javascript中實現(xiàn)一個例子:


HTML 學習總結(jié)2 框架 表單

前端達人

這是HTML學習總結(jié)系列的第二篇,第一篇在這里:

HTML 學習總結(jié)1入門 基本概念、格式 文字標簽 圖片標簽 鏈接標簽 表格標簽 注釋

這次的學習內(nèi)容相較第一次分類少,但是比較雜。



框架集標簽

框架標簽是將網(wǎng)頁設置成網(wǎng)頁框架的一種雙標簽,被設計成框架的網(wǎng)頁被切分成若干區(qū)域,沒有實際的內(nèi)容,只當做框架用于鑲嵌其它的網(wǎng)頁。

那么,這個標簽是:

<frameset></frameset>

框架集標簽的屬性

使用的時候需要將HTML文件中的body標簽部分替換為框架標簽,寫成這樣:



<html>
    <head></head>
    <frameset rows="500,*" border="3" noresize="noresize">
    </frame>
</html>

看上面的代碼,用frameset替換掉body不難理解,畢竟我們約定做框架的網(wǎng)頁不具有實體內(nèi)容
接著,這里提到了框架標簽的三個屬性,分別為:

rows/cols 框架的分行或分列
border 分隔框的寬度
noresize 大小是否可調(diào)
現(xiàn)在來分別解釋一下

第一個,rows 或cols 屬性,代表了框架的分行或分列的情況,在引號內(nèi)書寫該屬性的值的時候,不需要指明分成幾欄,只需要指明每一欄占據(jù)的寬度或高度(單位為像素)并使用逗號隔開。瀏覽器在解析的時候會計算到底分成了幾欄。另外,不指定寬度而使其占據(jù)剩余位置時,可以使用通配符 “ * ”。

第二個,border 屬性,代表了分隔框的寬度,這是屬性的數(shù)值單位是像素。所以如果你不想加入邊框,則可以將它設置為零。

第三個,noresize 屬性,表示我們的框架的大小是否可調(diào),frameset標簽默認為大小可調(diào),當用戶鼠標移動到邊框上時,他可以拖拽改變大小。所以如果不想讓用戶隨意改變框架大小,那么可以選擇使用這個屬性 (當然,也可以選擇把邊框的寬度設為零,讓他找不到)。 這個屬性的值同屬性名稱一樣。

最后還需要說明的是:框架集標簽是可以進行嵌套的,也就是說,在已經(jīng)分出來的框架中,我們可以借著分欄。

在框架內(nèi)鑲嵌網(wǎng)頁
剛剛我們使用 frameset 標簽將網(wǎng)頁變成框架并劃分成了若干區(qū)域,每一個區(qū)域都是一個單獨的可顯示頁面的子網(wǎng)頁(筆者起的名)。現(xiàn)在,我們需要在這些區(qū)域內(nèi)為它鑲嵌上一個網(wǎng)頁,這需要用到frame這個單標簽在框架下添加網(wǎng)頁,它的寫法如下:

<frame src="...." name="...." />
1
這里可以看到 frame 標簽的兩個屬性; src 和 name 。它們分別代表著添置連接(這是一個超鏈接,網(wǎng)頁,HTML文件,圖片等都是可以的。有關(guān)超鏈接的信息,可參照上一篇學習總結(jié)或者問問度娘 ),以及框架名稱。

框架的命名,很主要的一個原因在于可以重復利用一個框架,即在其他標簽使用時,可以在某個框架上顯示相應內(nèi)容。還記得上一篇中,我們提到的鏈接標簽 target 屬性中的 “某框架名稱” 這個值嗎?在為框架命名后,就可以使用上述的 target 用法,將打開的網(wǎng)頁放在某個框架中了。

綜上,舉個例子:

先來創(chuàng)造一個帶有嵌套的框架
<!--frame-->
<html>
    <head></head>
    <frameset rows="200,*" border="5" noresize="noresize">
        <frame src="title.html" name="title" />
        <frameset cols="200,*">
            <frame src="selection_bar.html" />
            <frame name="output_page" />
        </frameset>
    </frameset>
</html>



<!--title-->
<html>
    <head></head>
    <body>
        <font size="7" color="blue">
            The test page
        </font>
    </body>
</html>



<!--selection_bar-->
<html>
    <head></head>
    <body>
        <font size="5" color="red">
            Please select websites.
        </font>
        <br /><br />
        <a  target="output_page"/>百度一下<br /><br />
        <a  target="output_page"/>CSDN <br /><br />
    </body>
</html>

最后來看下結(jié)果:

點擊查看原圖


點擊查看原圖點擊查看原圖




vue父組件向子組件傳值

前端達人

非常簡單,相信大家一看就懂

復制到瀏覽器即可使用,注意別忘了引入vue哦


<div id="app">
    <div>{{pmsg}}</div>
    <menu-item :title='ptitle' :content='ptitle'></menu-item>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
    //父組件向子組件傳值-基本使用
    Vue.component('menu-item', {
        props: ['title', 'content'],
        data: function() {
            return {
                msg: '子組件本身的數(shù)據(jù)'
            }
        },
        template: `<div>
      <p>{{msg}}</p>
      <p>{{title}}</p>
      <p>{{content}}</p>
      </div>`
    });
    var vm = new Vue({
        el: '#app',
        data: {
            pmsg: '父組件中內(nèi)容',
            ptitle: '動態(tài)綁定屬性'
        }
    });
</script>
————————————————
版權(quán)聲明:本文為CSDN博主「溫柔的堅持」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43745003/article/details/104908639

JS的原型介紹及原型的繼承

前端達人

前言

在學習JS中的原型,原型鏈,繼承這些知識之前,我們先學習下基礎知識:函數(shù)和對象的關(guān)系。

我們一直都知道,函數(shù)也是對象的一種,因為通過instanceof就可以判斷出來。但是函數(shù)和對象的關(guān)系并不是簡單的包含和被包含的關(guān)系,這兩者之間的關(guān)系還是有點復雜的。接下來我們就來捋一捋。



首先,闡述一點,對象都是通過函數(shù)創(chuàng)建的

對于下面這種類型的代碼,一般叫做“語法糖”

var obj = {a:10,b:20};
var arr = [5, 'x', true];



但是,其實上面這段代碼的實質(zhì)是下面這樣的:


//var obj = { a: 10, b: 20 };
//var arr = [5, 'x', true];

 var obj = new Object();
 obj.a = 10;
 obj.b = 20;

 var arr = new Array();
 arr[0] = 5;
 arr[1] = 'x';
 arr[2] = true;



而Object和Array都是函數(shù),可以自己用typeof函數(shù)進行驗證。
所以,可以得出:對象都是通過函數(shù)創(chuàng)建的

正文
說完了前言,接下來我們進入正題。

原型prototype
在前言中,我們說了函數(shù)也是一種對象,所以函數(shù)也是屬性的集合,同時,也可以對函數(shù)進行自定義屬性。
每個函數(shù)都有一個屬性——prototype。這個prototype的屬性值是一個對象(屬性的集合),默認只有一個叫做constructor的屬性,指向這個函數(shù)本身.

“隱式原型”proto
我們先看一段非常常見的代碼:
function Fn() { }
   Fn.prototype.name = '張三';
    Fn.prototype.getAge = function () {
       return 12;
};
   var fn = new Fn();
   console.log(fn.name);
   console.log(fn.getAge ());

即,F(xiàn)n是一個函數(shù),fn對象是從Fn函數(shù)new出來的,這樣fn對象就可以調(diào)用Fn.prototype中的屬性。

但是,因為每個對象都有一個隱藏的屬性——“proto”,這個屬性引用了創(chuàng)建這個對象的函數(shù)的prototype。即:fn.proto === Fn.prototype
那么,這里的_proto_到底是什么呢?

其實,這個__proto__是一個隱藏的屬性,javascript不希望開發(fā)者用到這個屬性值,有的低版本瀏覽器甚至不支持這個屬性值。

var obj = {};
console.log(obj.__proto__);

每個對象都有一個_proto_屬性,指向創(chuàng)建該對象的函數(shù)的prototype。

構(gòu)造函數(shù)、原型、實例之間的關(guān)系
實例,原型對象,構(gòu)造函數(shù),三者之間的關(guān)系:

(1) 實例有__proto__屬性指向原型對象

(2) 原型對象有constructor指針指向構(gòu)造函數(shù)

(3)構(gòu)造函數(shù)又有prototype屬性指向原型對象
點擊查看原圖


實例和原型關(guān)系檢測

isPrototypeOf()函數(shù),用于檢測兩個對象之間似乎否存在原型關(guān)系,使用方法如下:

  // 查看 Fn 的 prototype 對象,是否是 f 原型
  Fn.prototype.isPrototypeOf(f);   



 //// 查看 f 對象是否是構(gòu)造函數(shù) Fn 的實例
 //console.log(f instanceof Fn); 
 //// 查看 f 對象是否是構(gòu)造函數(shù) Fn 的實例    
 //console.log(f instanceof Object); 

    function Fn(){}
    function Fun(){}
    var f = new Fn();
    console.log( f.__proto__ === Fn.prototype );            // t

    console.log( Fn.prototype.isPrototypeOf(f) );           // t
    console.log( Fun.prototype.isPrototypeOf(f) );          // f
    console.log( Object.prototype.isPrototypeOf(f) );       // t

    console.log( f instanceof Fn );         // t
    console.log( f instanceof Fun );        // f
    console.log( f instanceof Object );     // t
//兩種使用,如果是返回ture,如果不是返回false;
//注意:instanceof運算符右側(cè)為構(gòu)造函數(shù),并且js中所有原型都來自Object構(gòu)造函數(shù)。

JS解析器訪問屬性順序
當訪問實例 f 的屬性或方法時,會先在當前實例對象 f 中查找,如果沒有,則沿著__proto__繼續(xù)向上尋找,如果找到最頂頭的Object還是找不到,則會拋出undefined。如果在實例中找到,或某層原型中找到,就會讀取并使用,同時停止向上找尋。
由此可見,解析器的解析順序遵循就近原則,如果在最近的位置發(fā)現(xiàn)屬性存在,便不會繼續(xù)向上找尋。

原型的應用
數(shù)組去重:

Array.prototype.noRepeat = function(){
    var m = [];
    for(var i=0;i<this.length;i++){
        if(m.indexOf(this[i]) == -1){
            m.push(this[i]);
        }
    }
    return m;
}
var arr = [3,4,5,6,7,6,5,4,3,2,1];
var res = arr.noRepeat();
console.log(res);

var arr1 = ["a","b","c","b","a"];
var res1 = arr1.noRepeat();
console.log(res1);



function Parent(){

}
Parent.prototype.show = function(){
    console.log("哈哈哈");
}

function Child(){

}
for(var i in Parent.prototype){
    Child.prototype[i] = Parent.prototype[i];
}
Child.prototype.show = function(){
    console.log("hello");
}

var p = new Parent();
p.show();
console.log(p.name);

var c = new Child();
c.show();
console.log(c.name);



————————————————
版權(quán)聲明:本文為CSDN博主「zyfacd」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zyfacd/article/details/104909948

vue非父子組件間的傳值

前端達人

vue非父子組件傳值的基本語法

創(chuàng)建一個新的vue對象
var newvue = new Vue()
    
觸發(fā)事件
newvue.$emit('自定義事件名', 參數(shù))
    
監(jiān)聽事件
newvue.on('自定義事件名', 觸發(fā)方法名)
    
銷毀事件
newvue.off('自定義事件名')

案例

放在html頁面上即可顯示,注意要引入vue

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <div>父組件</div>
    <div>
      <button @click='handle'>銷毀事件</button>
    </div>
    <test-tom></test-tom>
    <test-jerry></test-jerry>
  </div>
  <script type="text/javascript" src="js/vue.js"></script>
  <script type="text/javascript">
    /*
      兄弟組件之間數(shù)據(jù)傳遞
    */
    // 提供事件中心
    var hub = new Vue();

    Vue.component('test-tom', {
      data: function(){
        return {
          num: 0
        }
      },
      template: `
        <div>
          <div>TOM:{{num}}</div>
          <div>
            <button @click='handle'>點擊</button>
          </div>
        </div>
      `,
      methods: {
        handle: function(){
          hub.$emit('jerry-event', 2);
        }
      },
      mounted: function() {
        // 監(jiān)聽事件
        hub.$on('tom-event', (val) => {
          this.num += val;
        });
      }
    });
    Vue.component('test-jerry', {
      data: function(){
        return {
          num: 0
        }
      },
      template: `
        <div>
          <div>JERRY:{{num}}</div>
          <div>
            <button @click='handle'>點擊</button>
          </div>
        </div>
      `,
      methods: {
        handle: function(){
          // 觸發(fā)兄弟組件的事件
          hub.$emit('tom-event', 1);
        }
      },
      mounted: function() {
        // 監(jiān)聽事件
        hub.$on('jerry-event', (val) => {
          this.num += val;
        });
      }
    });
    var vm = new Vue({
      el: '#app',
      data: {

      },
      methods: {
        handle: function(){
          hub.$off('tom-event');
          hub.$off('jerry-event');
        }
      }
    });
  </script>
</body>
</html>
————————————————
版權(quán)聲明:本文為CSDN博主「溫柔的堅持」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43745003/article/details/104919633



使用layui實現(xiàn)的左側(cè)菜單欄以及動態(tài)操作tab項

前端達人

首先說一下左側(cè)菜單欄

點擊查看原圖

這是一個最基本的左側(cè)菜單欄,實現(xiàn)的過程很簡單,官方的說明文檔就有,但是我在導入layer.js之后,直接復制這段官方代碼到我的編輯器上時,發(fā)現(xiàn)頁面是這樣的:


20180301152527380.png

發(fā)現(xiàn),綁定屬性的菜單并沒有下拉選項,這個問題在我導入layer.all.js之后解決了,而且發(fā)現(xiàn)如果是在頁面的最上方導入的話也沒有下拉選項,只有在html代碼下面導入,才可以顯示 ,不知道是什么原因

下面說重點,動態(tài)操作tab項

頁面截圖:

20180301152822865.png

tab項右鍵菜單:


20180301152903581.png

這里右鍵菜單的樣式并沒有做太多的美化。

html代碼:(頁面中關(guān)于引入js和css文件的部分被我省略了,還有要注意jQuery的引入順序)

<div class="layui-tab layui-tab-card site-demo-button" style="position: relative;">
            <ul class="layui-nav layui-nav-tree layui-nav-side">
                <li class="layui-nav-item layui-nav-itemed">
                    <a href="javascript:;">默認展開</a>
                    <dl class="layui-nav-child">
                        <dd>
                            <a data-url="a" data-id="11" data-title="選項a" href="#" class="site-demo-active" data-type="tabAdd">選項a</a>
                        </dd>
                        <dd>
                            <a href="#" data-url="b" data-title="選項b"  data-id="22" class="site-demo-active" data-type="tabAdd">選項b</a>
                        </dd>
                        <dd>
                            <a href="">跳轉(zhuǎn)</a>
                        </dd>
                    </dl>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;">解決方案</a>
                    <dl class="layui-nav-child">
                        <dd>
                            <a href="">移動模塊</a>
                        </dd>
                        <dd>
                            <a href="">后臺模版</a>
                        </dd>
                        <dd>
                            <a href="">電商平臺</a>
                        </dd>
                    </dl>
                </li>
                <li class="layui-nav-item">
                    <a href="#" data-url="c" data-title="選項c"  data-id="33" class="site-demo-active" data-type="tabAdd">產(chǎn)品c</a>
                </li>
                <li class="layui-nav-item">
                    <a href="">大數(shù)據(jù)</a>
                </li>
            </ul>

            <div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin-left: 200px;">
                <ul class="layui-tab-title">
                </ul>
                <ul class="rightmenu" style="display: none;position: absolute;">
                    <li data-type="closethis">關(guān)閉當前</li>
                    <li data-type="closeall">關(guān)閉所有</li>
                </ul>
                <div class="layui-tab-content">
                </div>
            </div>

        </div>
js代碼:

layui.use('element', function() {
            var $ = layui.jquery;
            var element = layui.element; //Tab的切換功能,切換事件監(jiān)聽等,需要依賴element模塊

            //觸發(fā)事件
            var active = {
                //在這里給active綁定幾項事件,后面可通過active調(diào)用這些事件
                tabAdd: function(url,id,name) {
                    //新增一個Tab項 傳入三個參數(shù),分別對應其標題,tab頁面的地址,還有一個規(guī)定的id,是標簽中data-id的屬性值
                    //關(guān)于tabAdd的方法所傳入的參數(shù)可看layui的開發(fā)文檔中基礎方法部分
                    element.tabAdd('demo', {
                        title: name,
                        content: '<iframe data-frameid="'+id+'" scrolling="auto" frameborder="0" src="'+url+'.html" style="width:100%;height:99%;"></iframe>',
                        id: id //規(guī)定好的id
                    })
                     CustomRightClick(id); //給tab綁定右擊事件
                     FrameWH();  //計算ifram層的大小
                },
                tabChange: function(id) {
                    //切換到指定Tab項
                    element.tabChange('demo', id); //根據(jù)傳入的id傳入到指定的tab項
                }, 
                tabDelete: function (id) {
                element.tabDelete("demo", id);//刪除
                }
                , tabDeleteAll: function (ids) {//刪除所有
                    $.each(ids, function (i,item) {
                        element.tabDelete("demo", item); //ids是一個數(shù)組,里面存放了多個id,調(diào)用tabDelete方法分別刪除
                    })
                }
            };

            //當點擊有site-demo-active屬性的標簽時,即左側(cè)菜單欄中內(nèi)容 ,觸發(fā)點擊事件
            $('.site-demo-active').on('click', function() {
                var dataid = $(this);

                //這時會判斷右側(cè).layui-tab-title屬性下的有l(wèi)ay-id屬性的li的數(shù)目,即已經(jīng)打開的tab項數(shù)目
                if ($(".layui-tab-title li[lay-id]").length <= 0) {
                    //如果比零小,則直接打開新的tab項
                    active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"),dataid.attr("data-title"));
                } else {
                    //否則判斷該tab項是否以及存在

                    var isData = false; //初始化一個標志,為false說明未打開該tab項 為true則說明已有
                    $.each($(".layui-tab-title li[lay-id]"), function () {
                        //如果點擊左側(cè)菜單欄所傳入的id 在右側(cè)tab項中的lay-id屬性可以找到,則說明該tab項已經(jīng)打開
                        if ($(this).attr("lay-id") == dataid.attr("data-id")) {
                            isData = true;
                        }
                    })
                    if (isData == false) {
                        //標志為false 新增一個tab項
                        active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"),dataid.attr("data-title"));
                    }
                }
                //最后不管是否新增tab,最后都轉(zhuǎn)到要打開的選項頁面上
                active.tabChange(dataid.attr("data-id"));
            });

            function CustomRightClick(id) {
                //取消右鍵  rightmenu屬性開始是隱藏的 ,當右擊的時候顯示,左擊的時候隱藏
                $('.layui-tab-title li').on('contextmenu', function () { return false; })
                $('.layui-tab-title,.layui-tab-title li').click(function () {
                    $('.rightmenu').hide();
                });
                //桌面點擊右擊 
                $('.layui-tab-title li').on('contextmenu', function (e) {
                    var popupmenu = $(".rightmenu");
                    popupmenu.find("li").attr("data-id",id); //在右鍵菜單中的標簽綁定id屬性

                    //判斷右側(cè)菜單的位置 
                    l = ($(document).width() - e.clientX) < popupmenu.width() ? (e.clientX - popupmenu.width()) : e.clientX;
                    t = ($(document).height() - e.clientY) < popupmenu.height() ? (e.clientY - popupmenu.height()) : e.clientY;
                    popupmenu.css({ left: l, top: t }).show(); //進行絕對定位
                    //alert("右鍵菜單")
                    return false;
                });
            }

            $(".rightmenu li").click(function () {

                //右鍵菜單中的選項被點擊之后,判斷type的類型,決定關(guān)閉所有還是關(guān)閉當前。
                if ($(this).attr("data-type") == "closethis") {
                    //如果關(guān)閉當前,即根據(jù)顯示右鍵菜單時所綁定的id,執(zhí)行tabDelete
                    active.tabDelete($(this).attr("data-id"))
                } else if ($(this).attr("data-type") == "closeall") {
                    var tabtitle = $(".layui-tab-title li");
                    var ids = new Array();
                    $.each(tabtitle, function (i) {
                        ids[i] = $(this).attr("lay-id");
                    })
                    //如果關(guān)閉所有 ,即將所有的lay-id放進數(shù)組,執(zhí)行tabDeleteAll
                    active.tabDeleteAll(ids);
                }

                $('.rightmenu').hide(); //最后再隱藏右鍵菜單
            })
            function FrameWH() {
                var h = $(window).height() -41- 10 - 60 -10-44 -10;
                $("iframe").css("height",h+"px");
            }

            $(window).resize(function () {
                FrameWH();
            })
        });

tab項是放在<div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin-left: 200px;"> 這個div中的,其中有一個重要的屬性lay-filter,在js中調(diào)用的tabAdd,tabDelete等多種方法都攜帶了這個參數(shù),我對此的理解是相當于一個判斷攔截功能,將tab項放在lay-filter=‘demo’的div中。可以借助該參數(shù),完成指定元素的局部更新。

其中還有關(guān)于element的操作,var element = layui.element
element模塊的實例
返回的element變量為該實例的對象,攜帶一些用于元素操作的基礎方法,我們就是用這些方法進行tab項的新增和刪除還有切換。

這是element 中的tabAdd方法,其中的content可以是一個iframe頁面,在此例中,我就是傳遞了一個簡單的頁面,這就實現(xiàn)了不同頁面間的一些切換。

element.tabAdd('demo', {
  title: '選項卡的標題'
  ,content: '選項卡的內(nèi)容' //支持傳入html
  ,id: '選項卡標題的lay-id屬性值'
});

————————————————
版權(quán)聲明:本文為CSDN博主「nb7474」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/nb7474/article/details/79413460/

JavaScript拖拽效果

前端達人

要實現(xiàn)JavaScript的拖拽效果,首先我們需要知道事件對象幾個有關(guān)于實現(xiàn)拖拽效果的坐標

獲取事件對象 var e = e || window.event;



根據(jù)需求需要用到的拖拽效果的坐標



clientX:鼠標點擊位置相對于瀏覽器可視區(qū)域的水平偏移量(不會計算水平滾動的距離)



clientY:鼠標點擊位置相對于瀏覽器可視區(qū)域的垂直偏移量(不會計算垂直滾動條的距離)



offsetX:鼠標點擊位置相對于觸發(fā)事件對象的水平距離



offsetY:鼠標點擊位置相對于觸發(fā)事件對象的垂直距離



pageX:鼠標點擊位置相對于網(wǎng)頁左上角的水平偏移量,也就是clientX加 上水平滾動條的距離



pageY:鼠標點擊位置相對于網(wǎng)頁左上角的垂直平偏移量,也就是clientY加上垂直滾動條的距離



offsetLeft:如果父元素中有定位的元素,那么就返回距離當前元素最近的定位元素邊緣的距離



offsetTop:如果父元素中沒有定位元素,那么就返回相對于body左邊緣距離



獲取元素自身大小:offsetWidth和offsetHeight / clientWidth和clientHeight



offsetWidth和clientWidth的區(qū)別:就是offsetWidth包含邊框,clientWidth不包含邊框



實現(xiàn)拖拽需要用到:clientWidth、clientHeight、clientX、clientY、offsetLeft、offsetTop


首先搭建好html結(jié)構(gòu)和css樣式


 <div class="wrap">
        <div class="cover">

        </div>
    </div>

* {
            margin: 0;
            padding: 0;
        }

        .wrap {
            width: 500px;
            height: 500px;
            border: 1px solid deeppink;
            position: relative;
            margin: 50px auto;
        }

        .cover {
            width: 150px;
            height: 150px;
            background: rgba(200, 7, 99, 0.5);
            display: none;
            position: absolute;
            left: 0;
            top: 0;
            cursor: move;
        }
注意:需要給大盒子和小盒子進行定位:子絕父相
接下來就JavaScript代碼

<script>
    var wrap = document.querySelector(".wrap");
    var cover = document.querySelector(".cover");
    wrap.onmouseover = function() {
        cover.style.display = "block";
        wrap.onmousemove = function(e) {
            var e = e || window.event;
            var x1 = e.clientX;
            var y1 = e.clientY;
//這里獲取到的e.clientX和e.clientY,可以看情況和需求改為e.pageX和e.pageY             
            var halfWidth = cover.clientWidth / 2;
            var halfHeight = cover.clientHeight / 2;
            var wrapLeft = wrap.offsetLeft;
            var wrapTop = wrap.offsetTop;
            var l = x1 - wrapLeft - halfWidth;
            var t = y1 - wrapTop - halfHeight;

            if (l <= 0) {
                l = 0
            }
            if (l >= wrap.clientWidth - cover.clientWidth) {
                l = wrap.clientWidth - cover.clientWidth
            }
            if (t <= 0) {
                t = 0
            }
            if (t >= wrap.clientHeight - cover.clientHeight) {
                t = wrap.clientHeight - cover.clientHeight
            }
            cover.style.left = l + "px";
            cover.style.top = t + "px"
        }
    }
    wrap.onmouseout = function() {
        cover.style.display = "none";
    }
</script>

  var halfWidth = cover.clientWidth / 2;
            var halfHeight = cover.clientHeight / 2;
            var wrapLeft = wrap.offsetLeft;
            var wrapTop = wrap.offsetTop;
            var l = x1 - wrapLeft - halfWidth;
            var t = y1 - wrapTop - halfHeight;
            //限制范圍
             if (l <= 0) {
                l = 0
            }
            if (l >= wrap.clientWidth - cover.clientWidth) {
                l = wrap.clientWidth - cover.clientWidth
            }
            if (t <= 0) {
                t = 0
            }
            if (t >= wrap.clientHeight - cover.clientHeight) {
                t = wrap.clientHeight - cover.clientHeight
            }
注意:這里要限制小盒子在大盒子之間移動的范圍,左上角的限制,當小盒子超出范圍時,將0賦值給l和t。右下角小盒子移動的范圍在大盒子寬度減去小盒子的寬度。
其中為了使鼠標一直處于小盒子(cover)的最中間,需要減去小盒子寬度的一半。
再減去大盒子距離頁面左邊的邊距和上邊的邊距就可以得到坐標

只要鼠標移入大盒子中,就能直接拖拽小盒子,并且鼠標一直處于小盒子的最中間。這樣便完成了簡單的拖拽效果。

20200315200118747.png
20200315200118747.png


————————————————
版權(quán)聲明:本文為CSDN博主「_kaze」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/luffy_999/article/details/104884538

響應式布局如何實現(xiàn)

前端達人

css面試題@響應式布局如何實現(xiàn)

1為什么要使用響應式布局

響應式布局可以讓網(wǎng)站同時適配不同分辨率和不同的手機端,讓客戶有更好

的體驗。



2如何實現(xiàn)

方案一:百分比布局

利用對屬性設置百分比來適配不同屏幕,注意這里的百分比是相對于父元素; 能夠設置的屬性有width,、height、padding、margin,其他屬性比如border、 font-size不能用百分比來設置的

由于沒辦法對font-size進行百分比設置,所以用的最多就是對圖片和大塊布局進行百分比設置。



方案二:使用媒體查詢 (CSS3@media 查詢)

利用媒體查詢設置不同分辨率下的css樣式,來適配不同屏幕。

媒體查詢相對于百分比布局,可以對布局進行更細致的調(diào)整,但需要在每個分辨率下面都寫一套css樣式。

該布局的話適用于簡單的網(wǎng)頁,可以使移動端和pc端使用一套網(wǎng)址。從而節(jié)約成本。也方便后期的維護,bootcss就是用了CSS3的media來實現(xiàn)響應的 但是相對于復雜的網(wǎng)頁就不適合了(如:淘寶,京東)等等



方案三.rem 響應式布局

rem布局的原理

rem:相對于根元素(即html元素)font-size計算值的倍數(shù)。

如 html的font-size為100px;那么2rem就為200px。

通俗的來講的話rem就是通過JavaScript來獲取頁面的寬度,從而動態(tài)的計算rem。這樣就會使不同分辨率下展現(xiàn)出相同的效果。

//代碼展示

css面試題@響應式布局如何實現(xiàn)
1為什么要使用響應式布局
響應式布局可以讓網(wǎng)站同時適配不同分辨率和不同的手機端,讓客戶有更好
的體驗。

2如何實現(xiàn)
方案一:百分比布局
利用對屬性設置百分比來適配不同屏幕,注意這里的百分比是相對于父元素; 能夠設置的屬性有width,、height、padding、margin,其他屬性比如border、 font-size不能用百分比來設置的
由于沒辦法對font-size進行百分比設置,所以用的最多就是對圖片和大塊布局進行百分比設置。

方案二:使用媒體查詢 (CSS3@media 查詢)
利用媒體查詢設置不同分辨率下的css樣式,來適配不同屏幕。
媒體查詢相對于百分比布局,可以對布局進行更細致的調(diào)整,但需要在每個分辨率下面都寫一套css樣式。
該布局的話適用于簡單的網(wǎng)頁,可以使移動端和pc端使用一套網(wǎng)址。從而節(jié)約成本。也方便后期的維護,bootcss就是用了CSS3的media來實現(xiàn)響應的 但是相對于復雜的網(wǎng)頁就不適合了(如:淘寶,京東)等等

方案三.rem 響應式布局
rem布局的原理
rem:相對于根元素(即html元素)font-size計算值的倍數(shù)。
如 html的font-size為100px;那么2rem就為200px。
通俗的來講的話rem就是通過JavaScript來獲取頁面的寬度,從而動態(tài)的計算rem。這樣就會使不同分辨率下展現(xiàn)出相同的效果。
//代碼展示
上述代碼中 7.5為動態(tài)的值,根據(jù)設計圖的寬度進行動態(tài)的改變。window.onresize的作用是:當頁面的寬度或高度發(fā)生改變時,再次進行調(diào)用rem函數(shù)。

方案四.vw 響應式布局
vm,vh相應式布局通俗來講就是有一點類似百分比布局 將頁面的寬和高分別分為100份 1vm就是為寬度的百分之一,同理1vh及為高度的百分之一。段手機端用的最多就是這個方法,能保持不同屏幕下元素顯示效果一致,也不用寫多套樣式。

方案五.flex 彈性布局
flex就是利用css3中的彈性盒子向下兼容到IE10
利用flex屬性來適配不同屏幕, 該方法一般都會結(jié)合rem布局來寫移動端頁面

————————————————
版權(quán)聲明:本文為CSDN博主「姚先生丶」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/listStyleScript/article/details/104862009

如何在網(wǎng)頁前端里可視化你的知識圖譜

前端達人

如何在網(wǎng)頁前端里可視化你的知識圖譜
最近費盡千辛萬苦構(gòu)造了一份可以用(大概)的知識圖譜,并且把要利用知識圖譜做的領域命名實體識別和一些推薦的功能做成Web版的demo,順帶想實現(xiàn)一些可視化知識圖譜的功能。

(憑啥知識圖譜就只能在Neo4j里自嗨,不能來前端show一下,歧視嗎(¬_¬))

找了做前端圖表展示的開源庫,D3.js和Echarts都能做,我拿Echarts實現(xiàn)了一下功能,先看一下在現(xiàn)在項目里一個基于知識圖譜查詢的實際效果:
20200314114824402.png

接下里看看如何的實現(xiàn):

  1. 首先在本地下載Echarts相關(guān)的js文件,在線引用也可以,html文件里如下引用:
 <script src="/static/js/echarts.common.min.js"></script>   
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@4.5.0/dist/echarts.min.js"></script>
給要展示的圖準備一個Dom:

<!-- 為ECharts準備一個具備大小的Dom -->
    <div class = "col-md-12">
        <div class="panel panel-default ">
            <header class="panel-heading">
                關(guān)系圖 :
            </header>
            <div class = "panel-body ">
                <div id="graph" style="width: 100%;height:600px;"></div>
            </div>
        </div>
    </div>


3.設置好節(jié)點和鏈接關(guān)系,這里為了簡單手寫了一個蘋果梨子和水果之間的關(guān)系,項目里采用Django框架的交互讀取查詢的結(jié)果放入節(jié)點(data)和鏈接(links)里面了:

data = [
        {name:'蘋果',category:1,id:0},
        {name:'梨子',catagory:1,id:1},
        {name:'水果',category:2,id:2}
        ]
    links = [
        {source:0,target:2,category:0,value:'屬于',symbolSize:10},
        {source:1,target:2,category:0,value:'屬于',symbolSize:10}
    ]


置Echarts圖:

var myChart = echarts.init(document.getElementById('graph'));

    option = {
        title: {
            text: ''
        },
        tooltip: {},
        animationDurationUpdate: 1500,
        animationEasingUpdate: 'quinticInOut',
        label: {
            normal: {
                show: true,
                textStyle: {
                    fontSize: 12
                },
            }
        },
        legend: {
            x: "center",
            show: false
        },
        series: [

            {
                type: 'graph',
                layout: 'force',
                symbolSize: 45,
                focusNodeAdjacency: true,
                roam: true,
                edgeSymbol: ['none', 'arrow'],
                categories: [{
                    name: '查詢實體',
                    itemStyle: {
                        normal: {
                            color: "#009800",
                        }
                    }
                }, {
                    name: 'instance',
                    itemStyle: {
                        normal: {
                            color: "#4592FF",
                        }
                    }
                }, {
                    name: 'class',
                    itemStyle: {
                        normal: {
                            color: "#C71585",
                        }
                    }
                }],
                label: {
                    normal: {
                        show: true,
                        textStyle: {
                            fontSize: 12,
                        },
                    }
                },
                force: {
                    repulsion: 1000
                },
                edgeSymbolSize: [4, 50],
                edgeLabel: {
                    normal: {
                        show: true,
                        textStyle: {
                            fontSize: 10
                        },
                        formatter: "{c}"
                    }
                },
                data: data,
                links: links,
                lineStyle: {
                    normal: {
                        opacity: 0.9,
                        width: 1.3,
                        curveness: 0,
                        color:"#262626",
                    }
                }
            }
        ]
    };
    // 使用剛指定的配置項和數(shù)據(jù)顯示圖表。
    myChart.setOption(option);
這樣就成功實現(xiàn)了一個簡單的圖譜可視化:

20200314115929363.png



————————————————
版權(quán)聲明:本文為CSDN博主「游離態(tài)GLZ不可能是金融技術(shù)宅」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_37477357/article/details/104857495


JavaWeb項目之實現(xiàn)用戶注冊、登錄與預約功能

前端達人

JavaWeb項目之實現(xiàn)用戶注冊、登錄與預約功能


  • 四:效果展示
  • 一:項目需求

    1.實現(xiàn)注冊與登錄功能:
    要求用到驗證碼,登錄后該出不再顯示登錄與注冊,而是顯示用戶名。
    2.實現(xiàn)預約功能:
    實現(xiàn)“運動”與“學習”兩方面的邀約功能,并將邀約數(shù)據(jù)保存到數(shù)據(jù)庫中,數(shù)據(jù)庫使用Mysql。
    運動可以邀約:籃球、足球、乒乓球等
    學習可以邀約:自習、輔導等

    二:總體概述

    在正式開始編碼之前,需要先導入相關(guān)jar包并配置好相關(guān)的配置文件,同時也需要導入前端給的頁面代碼。接著是建立好相應的數(shù)據(jù)庫結(jié)構(gòu),并初步構(gòu)建好三層架構(gòu)的想法思路。

    20200313144400508.png

   20200313144131716.png

20200313144239593.png



三:代碼分析

1.登錄功能

web層

20200313132713991.png


  • 20200313133324242.png

  • service層

  • 2020031313345737.png

  • dao層

  • 20200313133603198.png

  • 然后在這里寫一下對于驗證碼處理和點擊圖片更換驗證碼功能的一些細節(jié)。
    如下圖所示,為了保證servlet層能夠正確接收到界面所展示的驗證碼信息,同時因為session對象是項目自生成的,所以我直接獲取session對象并以類似于鍵值對的形式將頁面驗證碼信息存入session中。

  • 接下來是jsp頁面對于驗證碼展示的一些處理

  • 20200313135922196.png

  • 20200313135956797.png

在這里,因為點擊驗證碼更換操作需要用到js,所以我百度得到了上圖這樣一串代碼。其中時間戳的作用是通過改變每次請求的時間參數(shù)來獲得刷新效果,即改變url中的響應頭信息。

2.注冊功能
事實上,有了登錄功能的實現(xiàn),注冊功能的代碼與其都是大同小異的。最大的不同應該就是Dao層執(zhí)行的操作不同

20200313142134901.png

3.預約功能

預約功能的實現(xiàn)更是與注冊功能的實現(xiàn)基本一致。所不同的應該是jsp頁面對單選框輸入的設置。

20200313142805359.png


四:效果展示

點擊查看原圖




日歷

鏈接

個人資料

藍藍設計的小編 http://www.gerard.com.cn

存檔

主站蜘蛛池模板: 中文无码av一区二区三区 | 亚洲精品国产视频 | 久久久精品视频网站 | 国产精品中文久久久久久 | 国产性自拍 | 欧美乱大交xxxxx古装 | 欧美日韩va| 中文字幕无线观看中文字幕 | 狠狠色综合网站久久久久久久高清 | 国产精品极品白嫩在线 | 狠狠躁三区二区久久天天 | 一级黄色视屏 | 内射夜晚在线观看 | 免费毛片网站 | 亚洲一区国产精品 | 国产对白精品刺激二区国语 | 欧美成在线 | 黄瓜视频在线观看 | 久久国产香蕉视频 | 两性色午夜视频免费播放 | 久久精品成人免费国产片桃视频 | 饥渴少妇激情毛片视频 | 韩国三级在线看 | 亚洲精品乱码久久久久久中文字幕 | 少妇做爰免费视看片 | 日韩精品一二三 | 国产做爰全免费的视频黑人 | 日本无码人妻精品一区二区蜜桃 | 夜夜操狠狠操 | 2017天天干| 夜色资源ye321 在线观看 | 寡妇一级片 | 日本人三级 | 久久综合网欧美色妞网 | 国产一区亚洲二区 | 国产精品久久欧美久久一区 | 亚洲国产av无码精品 | 91精品国产色综合久久不卡98口 | 黄色片中文字幕 | 国产91在线观看丝袜 | 免费天堂av| 91av免费观看| 三级全黄做爰在线观看 | 日本一本久草 | 国产中文在线播放 | 国产午夜不卡av免费 | 99婷婷| 国内精品国产三级国产在线专 | 久久棈精品久久久久久噜噜 | 国产网友自拍在线视频 | 藏精阁成人免费观看在线视频 | 久久99久久99精品中文字幕 | 97人人草| 超碰在线观看99 | 午夜视频在线免费观看 | 国产伦精品一区二区三区在线 | 成人网站免费大全日韩国产 | 在线欧美| 国产69精品久久久久999小说 | 性猛交xxxx免费看蜜桃 | jizz4国产| 国产91成人| 欧美精品久久久久久久免费 | 日韩一级片网址 | 老熟妇仑乱一区二区视頻 | 久久久久久久女女女又又 | 中文字幕亚洲综合久久青草 | 不卡的av片 | 思思99热久久精品在线6 | 欧美日韩免费网站 | 国产一区二区三区四区 | 夜夜嗨网址| 老司机激情影院 | 天天操天天谢 | 91亚洲免费 | 琪琪色综合网 | 一级高清毛片 | 中文字幕2区 | 日本特级黄色 | 越南少妇做受xxx片 越南性xxxx精品hd | 国产美女高潮一区二区三区 | 国产精品一区二区羞羞答答 | 免费一级黄色 | 偷拍盗摄高潮叫床对白清晰 | 男女国产精品 | 久久久久国色av免费观看性色 | av免费网址 | 天天爽夜夜爽一区二区三区 | 鲁一鲁天天 | 色婷婷av777 色婷婷av99xx | 尤物视频在线 | 久久ww精品w免费人成 | 午夜视频免费观看 | 丁香花小说手机在线观看免费 | av中文字幕在线看 | 少妇福利在线 | 国产xxxx做受视频 | 国产老头与老太xxxxx看看吧 | 狠狠精品久久久无码中文字幕 | 免费夜色污私人影院在线观看 | 麻豆一区二区99久久久久 | 一级做a爰片久久毛片a | 性猛交xxxx | 五月婷婷爱爱 | 18岁日韩内射颜射午夜久久成人 | 久久人妖| 中文字幕亚洲精品日韩一区 | 国产综合在线视频 | 最新国产在线拍揄自揄视频 | 国产美女精品一区二区三区 | 欧美精品成人久久 | 本色视频aaaaaa一级网站 | 国产精品毛片久久久久久 | 国产亚洲精品久久久久久久久动漫 | 亚洲性生活网站 | 免费观看又色又爽又黄的传媒 | 精品久久久久久久久久久国产字幕 | 国产在线观看h | 天天色综合天天 | 一本一本久久a久久精品综合 | 国产一级视频在线 | 久久精品国产成人av | 黄网在线观看视频 | 欧美特级a | 欧美手机看片 | 中国壮男强迫野外china | 中国女人内谢69xxxxxa片 | 国产精品国产三级国产aⅴ浪潮 | 国产做a爱免费视频在线观看 | 日本极度另类 | 杨幂一区二区三区免费看视频 | 天天躁夜夜躁狠狠躁2020色戒 | 中文字幕丰满伦子无码 | 亚洲图色视频 | 黑人一级女人全片 | 91一区二区三区在线观看 | 欧美国产日产一区二区 | 无码东京热一区二区三区 | 新sss欧美整片在线播放 | 天天躁日日躁xxxxaaaa | 亚洲国产成人久久精品大牛影视 | 男女做羞羞在线观看 | 欧美三根一起进三p | 三级毛片在线 | 少妇av射精精品蜜桃专区 | 天堂а√在线中文在线鲁大师 | 成人午夜在线播放 | 乱妇乱女熟妇熟女网站 | 99久久国产综合精品麻豆 | 国产精品久久久久久一区二区 | 国产又粗又猛又黄又爽无遮挡 | 捆绑白丝粉色jk震动捧喷白浆 | 欧美日韩人成综合在线播放 | jizz韩国| 激情成人综合网 | 亚洲视频一| 亚洲一区二区三区含羞草 | 欧美在线观看视频免费 | 性开放少妇xxx视频 性开放网站 | 成人福利在线观看 | 黑人精品欧美一区二区蜜桃 | 色婷婷亚洲六月婷婷中文字幕 | 久久久国产一区二区三区四区小说 | 亚洲二区在线播放视频 | 国产又爽又黄又无遮挡的激情视频 | 日韩欧美亚洲国产 | 曰本无码人妻丰满熟妇5g影院 | 久久久久久久一区 | 五月婷婷操 | 少妇裸体啪啪激情高潮 | 伊人春色影院 | 亚洲区一区二区三区 | 日美韩一区二区三区 | 亚洲精品久久久久久久久久 | 成人美女黄网站色大色费全看在线观看 | 91手机在线视频 | www黄色网| 免费黄色大片 | 免费视频日韩 | 一区二区三区蜜桃 | 国产高清精品一区二区三区 | 日韩精品一区二区三区四区视频 | 免费一级做a爰片久久毛片 免费一区 | 国产偷v国产偷∨精品视频 国产偷v国产偷v精品视频 | 国产精品网站在线观看免费传媒 | 国产美女91呻吟求 | 粉嫩av在线播放一绯色 | 久久精品国产精品亚洲红杏 | 69视频在线观看免费 | 91看片成人| 中文乱码字慕人妻熟女人妻 | 国产丝袜人妖cd露出 | 日韩国产欧美一区二区三区 | 在线观看国产91 | 高清视频一区二区三区 | 免费中文字幕日韩欧美 | 51免费看片视频在线播放 | 国产视频自拍一区 | 国产视频导航 | 免费无码又爽又黄又刺激网站 | 久久一级大片 | 国产精品午夜福利视频234区 | 天堂在线网| av在线免费观看不卡 | 亚洲中文字幕精品久久 | 中文一二三区 | 大桥未久av在线 | 中国美女囗交视频 | 国产精品免费看久久久无码 | 51精品国产人成在线观看 | 香蕉视频二区 | 亚洲成人免费视频在线 | 成人亚洲一区二区 | av最新 | 另类亚洲激情 | 亚洲卡一卡二 | 国产韩国精品一区二区三区久久 | 九九九久久国产免费 | 久久天天躁夜夜躁狠狠躁2022 | 色七七网站 | 野花社区视频www官网 | 97色偷偷色噜噜狠狠爱网站 | 色欲久久久天天天综合网精品 | 国内极品少妇1000激情啪啪千 | 午夜性刺激免费视频 | 日韩亚洲欧美中文在线 | 国产精品一二三四区 | 成人极品视频 | 天天操狠狠操夜夜操 | 国产一区二区精品丝袜 | 99久久精品免费看国产 | 看国产黄色片 | 91免费看大片 | 成人无码www在线看免费 | 国产高清日韩 | 永久免费精品精品永久-夜色 | 日本加勒比在线 | 免费av网页 | 日韩精品视频在线观看免费 | 欧美三级黄色 | 999在线观看精品免费不卡网站 | 中日躁夜夜躁 | 夜夜爽一区二区三区 | 国产成人在线视频网站 | 妞干网欧美 | 中文无码av一区二区三区 | 精品在线播放视频 | 四月婷婷| 国产一级片播放 | 国产成人自拍网站 | 久久综合狠狠综合久久综合88 | 日日躁夜夜摸月月添添添 | 91极品身材尤物theporn | 杨思敏全身裸体毛片看 | 国产精品videossex久久发布 | 免费久久av| 中国孕妇变态孕交xxxx | 超碰碰97| 欧美国产日韩在线视频 | 99艹| 国产高潮又爽又刺激的视频免费 | 久久久亚洲欧洲日产国码二区 | 亚洲在线免费 | 97超碰人人爱| 成人手机在线观看 | 99成人在线 | 国产成年无码久久久久下载 | 内射夜晚在线观看 | 浓精h攵女乱爱av | 久久综合九色综合网站 | a天堂在线观看 | 无套内射在线无码播放 | 校园春色综合版 | 麻豆免费观看视频 | 老司机在线ae85| 极品妇女扒开粉嫩小泬 | 警花系列乱肉辣文小说 | 99久久免费精品国产男女高不卡 | 欧美丰满少妇高潮18p | 国产91在线播放九色 | 东京热无码av男人的天堂 | 欧美野外疯狂做受xxxx高潮 | 免费国偷自产拍精品视频 | 日本亚洲精品一区二区三区 | xx久久| 欧美精品色哟哟 | 人人干人人看 | 韩国美女视频黄是免费 | www.99精品 | 国产96在线 | 欧美 | 牛牛av| 2018国产精华国产精品 | 国产高清日韩 | 午夜影院在线观看免费 | 久久久精品久久久久 | 亚洲人交配视频 | 国产欧美一区二区三区四区 | 三级亚洲 | 四虎黄色| 含羞草www国产在线视频 | 国产精品久久久久久久久久小说 | 久久思| 二区三区在线观看 | 日本免费视频在线观看 | 国产精品二区一区二区aⅴ 国产精品粉嫩懂色av | 久久久久爽人综合网站 | 中文字幕一区二区三区人妻少妇 | 亚洲 欧美 另类 综合 偷拍 | 91手机在线视频 | 2019日韩中文字幕mv | 国产黄色一区 | 乱子伦视频在线看 | 91免费高清视频 | 国产精品国产自线拍免费软件 | 亚洲精品成人片在线观看精品字幕 | 午夜影视免费 | 国产成人无码a区精油按摩 蜜桃久久精品成人无码av | 男女性爽大片视频 | 亚洲精品久久久乳夜夜欧美 | 美女黄网站成人免费视频 | 一品二品三品中文字幕 | 天美乌鸦星空mv | 欧美高清一级 | 强奷乱码中文字幕熟女一 | 日本wwwxx| 五月激情婷婷丁香综合基地 | 特一级一性一交一视一频 | 在线不卡aⅴ片免费观看 | 亚洲成人精品在线观看 | 岳奶大又白下面又肥又黑水多 | 天天做天天爱夜夜爽导航 | 成人在线免费观看网站 | 久久婷婷五月综合色一区二区 | 特黄特色的大片观看免费视频 | 国产a级精品毛片 | 国模丽丽啪啪一区二区 | 色婷婷综合成人 | 久久九九日本韩国精品 | 91天堂在线| 深夜网站在线观看 | 国产精品入口福利 | 又欲又肉又黄高h1v1 | 亚州中文 | 成人av激情| 国产精品永久免费 | 91精品久久久久久久久久久 | 无码av大香线蕉伊人久久 | 亚洲国产一区二区三区波多野结衣 | 国内精品视频一区 | 国产无遮挡又黄又大又爽 | 天堂8中文在线 | 欧美性大战久久久久久久蜜桃 | 黄色一级免费视频 | 国产看片网站 | av一区二区三区在线观看 | 亚洲一区免费在线 | 蜜乳av中文 | 动漫人妻h无码中文字幕 | 亚洲日韩国产二区无码 | 国产一区二区在线视频观看 | 国产xxxx高清在线观看 | 在线a网站| 亚洲日韩精品a∨片无码加勒比 | 亚洲国产成人在线视频 | 国产偷国产偷亚洲清高app | 欧美三级大片 | 日韩一区二区免费播放 | 久色成人| 好湿好紧太硬了我太爽了视频 | 久久久97| 国产成人精品综合在线观看 | 国内精品一区二区三区不卡 | 日本中文字幕在线观看视频 | 996久久国产精品线观看 | 免费麻豆国产一区二区三区四区 | 亚洲精品一区二区三区在线观看 | 精品乱子伦一区二区三区 | 综合网中文字幕 | 国产后进极品圆润翘臀在后面玩 | 三上悠亚久久精品 | 国产区精品在线观看 | 国产日产欧产美 | 狼人青草久久网伊人 | 久久视频免费看 | 中文字幕中出 | 国产精品综合久久久 | 黄色成人在线网站 | 久久精品国产曰本波多野结衣 | 色婷婷av99xx| mm31美女爽爽爽爱做视频vr | 玖玖爱精品| 亚洲尹人 | 天堂av在线官网 | 欧美一区二区三区精品免费 | 蜜臀av在线免费观看 | 国产狂做受xxxxx高潮 | 成人精品免费 | 女同三级bd高清在线播放 | 中文字幕福利视频 | h片在线观看免费 | 蜜桃av一区二区 | 国产人成在线 | 天天操天天干天天干 | 久久精品视频播放 | 精品久久香蕉国产线看观看亚洲 | 久久久久91| 免费的污网站 | 一级免费看视频 | 欧美黑人孕妇孕交 | 亚洲黑丝在线 | 国产人成免费爽爽爽视频 | 伊人夜夜 | 丁香六月欧美 | 老熟仑妇乱一区二区 | 亚洲欧美乱综合图片区小说区 | 亚洲视频欧洲视频 | 亚洲二三区 | 巨胸美女狂喷奶水www网站 | 午夜国产福利 | 韩国伦理中文字幕 | 中文字幕第一页永久有效 | 日剧大尺度床戏做爰 | 欧美日韩aaa | 一女二男一黄一片 | 亚洲女优视频 | 性开放xxxhd视频 | 黑人爱爱视频 | 国产精品igao视频网入口 | 国产性生交xxxxx免费 | 成人做爰高潮片免费看 | 少妇网站在线观看 | eeuss鲁片一区二区三区69 | www黄色大片 | 久草在线视频在线观看 | av官网在线观看 | 国产丝袜人妖cd露出 | 免费黄色一级 | av色婷婷| 久久99精品久久久久久久久久久久 | 丰满人妻一区二区三区免费视频 | 色无极亚洲色图 | 糖心vlog一区二区三区在线 | 美国做爰xxxⅹ性视频 | 国产午夜福利视频在线观看 | 精品少妇一区二区 | 国产精品视频yy9299一区 | 体内谢xxxxx视少妇频 | 日韩放荡少妇无码视频 | 国产精品成人免费视频网站 | 好吊色一区二区三区 | 99视频在线精品免费观看2 | 视频在线一区二区 | 污污视频网站在线 | 91福利在线视频 | 美女毛毛片 | av毛片在线 | 日韩人妻无码精品-专区 | 国产 校园 另类 小说区 | 午夜无人区免费网站 | 成人精品一区二区三区 | 久久精品国产欧美日韩 | 中文字幕乱码久久午夜不卡 | 一本色道久久综合无码人妻 | 最近最好的中文字幕2019免费 | 国产一卡二卡在线 | 国产成人精品av久久 | 香蕉91视频 | www久久久com | 天堂а√中文最新版地址在线 | 一级片中文字幕 | 一本大道久久精品懂色aⅴ 一本大道久久卡一卡二卡三乱码 | 懂色一区二区三区久久久 | 国产成人免费高清激情视频 | 亚洲乱码视频 | 国产精品久久国产精品99 | 日韩一页 | 国产成人精品亚洲线观看 | 亚洲三级在线播放 | 白丝乳交内射一二三区 | 日本少妇热妇bbbbbb | 国产女人在线 | 国产思思99re99在线观看 | 日韩精品成人av | 亚洲人成网站日本片 | 牛牛a级毛片在线播放 | 91精品综合久久久久久 | 亚洲欧洲无码av电影在线观看 | 亚洲综合在线网 | 久久国产午夜精品理论片推荐 | 黄色免费片 | 欧美z○zo重口另类黄 | 人人爱超碰 | 日韩免费三级 | 乱lun合集在线观看视频 | www激情网com| 亚洲一区二区观看 | 国产一级小视频 | 黄色二级毛片 | 全部免费播放在线毛片 | 奇米四色在线观看 | 交专区videossex非洲 | 欧美xxxx做受欧美 | 欧美人成在线 | 性折磨bdsm虐乳欧美激情另类 | 国产日韩亚洲欧美 | 999在线视频 | 天堂mv在线mv免费mv香蕉 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 欧美va天堂va视频va在线 | 亚洲36d大奶网 | 性高湖久久久久久久久aaaaa | 欧美亚韩一区二区三区 | 91丨九色丨海角社区 | 99久久精品国产一区二区成人 | 日韩激情视频网站 | 久久亚洲色一区二区三区 | 国产激情偷乱视频一区二区三区 | 黄色毛片三级 | 欧美极品在线观看 | 午夜视频成人 | 三级av网址 | 无码任你躁久久久久久老妇 | 99re热这里只有精品视频 | 欧美影院| 午夜成人亚洲理论片在线观看 | 国产男女猛烈无遮挡免费网站 | 久久婷婷国产色一区二区三区 | а√天堂8资源中文在线 | 宅男噜噜66国产精品观看 | 免费一级做a爰片性色毛片 免费一级做a爰片性视频 | 亚洲精品成人无码中文毛片不卡 | 欧美性网址 | bt7086福利一区国产 | 久久69精品久久久久久国产越南 | 欧美性猛交xxxx乱大交 | 久久久久久久久久福利 | 精品一区二区三区免费 | 午夜精品久久久久久久99樱花 | 亚洲精华国产精华精华液网站 | 精品久久久久久久久久久下田 | 黄色小说在线观看视频 | 99久久精品久久久久久动态片 | 中文在线√天堂 | 亚洲精品美女久久久久久久 | 亚洲国产精品一区二区久久 | 毛片h| 琪琪久久| 国产 欧美 日韩 在线 | 国产伦精品视频一区二区三区 | 暧暧视频在线观看 | 高清免费视频日本 | 国产一区二区观看 | 少妇激情视频一二三区 | 成人午夜又粗又硬又大 | 中文字幕精品亚洲无线码二区 | 国产大学生av | 视频久久 | 手机在线观看免费av | 国产中文字幕在线免费观看 | 亚洲精品久久久久久下一站 | 欧美日韩伊人 | 午夜美女国产毛片福利视频 | 午夜看片在线观看 | 久久久久区 | 喷水白丝蜜臀av久久av | 国产精品国产免费无码专区不卡 | 国内综合精品午夜久久资源 | 狠狠色噜噜狠狠狠狠97俺也去 | 国产v综合v亚洲欧美久久 | 国产av无码专区亚洲awww | 一个人在线观看免费视频www | 国产国拍精品亚洲 | 少妇中文字幕 | 中文毛片无遮挡高清免费 | 久久网站免费观看 | 风韵丰满熟妇啪啪区老老熟妇 | 欧美日本韩国在线 | 亚洲国产第一页 | 久久精品国产成人 | 午夜影院免费看 | 大胸奶汁乳流奶水出来h | 久久99国产精品久久99果冻传媒 | 久9精品| 91一区| 99久久久久久99国产精品免 | 国产精品每日更新 | 91亚洲精品久久久中文字幕 | 日本免费成人 | 久久久久久久久久久久久久久久久 | 少妇偷乱偷乱视频在线 | 少妇愉情理伦片高潮日本 | 日日日噜噜噜 | 99精品国产在热久久无码 | 99久久人妻无码精品系列蜜桃 | 欧美美女性生活 | 久久久久久久久久久久久9999 | 亚洲超碰在线 | 欧美精品二区三区 | 三级伦理精品专区 | 51福利视频 | 99er久久 | 亚洲乱码av| 久久精品无码观看tv | 色婷婷狠狠久久综合五月 | 一级特黄录像免费观看 | 久久人人爽人人爽人人片亞洲 | 国产一区二区三区四区五区vm | 亚洲中文字幕精品久久 | 午夜爱爱免费视频体验区 | 国产情侣第一页 | 无码吃奶揉捏奶头高潮视频 | 女人洗澡一级特黄毛片 | 日韩福利在线 | 极品一区 | 久久精品人人做人人妻人人玩 |