亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js模擬滾動條(橫向豎向)

2019-11-20 22:59:15
字體:
來源:轉載
供稿:網友

JS:

復制代碼 代碼如下:

(function(win){
    var doc = win.document,db = doc.body;
    var mousewheel = 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
    var skyScroll = function(opts){ return new skyScroll.prototype.init(opts);};
    skyScroll.prototype = {
        constructor:skyScroll,
        //初始化
        init:function(opts){
            var set = _extend({
                target:'contentbox',
                dir:'top',
                width:500,
                height:300,
                callback:function(){}
            },opts||{});
            var _this = this,mousemoveHandle,mousedownHandle;
            this.target = _$(set.target);
            this.parent = this.target.parentNode;
            this.width = set.width;
            this.height = set.height;
            this.dir = set.dir;
            this.callback = set.callback;
            this.addWarpper(set.dir);
            switch(set.dir){
                case 'top':
                    this.addVscroll();
                    break;
                case 'left':
                    this.addLscroll();
                    break;
                default :
                    this.addVscroll();
                    this.addLscroll();
            };
            _addEvent(doc,'mousedown',function(e){
                var e = e || window.event,target = e.target || e.srcElement,pos= _getMousePos(e);
                if(target == _this.vScroll || target == _this.lScroll){
                    pos.tTop = parseInt(_this.target.style.top);
                    pos.tLeft = parseInt(_this.target.style.left);
                    pos.sTop = parseInt(target.style.top);
                    pos.sLeft = parseInt(target.style.left);
                    mousemoveHandle = _mousemoveHandle.call(_this,pos,target);
                    _addEvent(doc,'mousemove',mousemoveHandle);
                    _addEvent(doc,'mouseup',function(){_removeEvent(doc,'mousemove',mousemoveHandle)});
                };
                if(target == _this.vScrollOuter || target == _this.lScrollOuter){
                    _mounsedownHandle.call(_this,pos,target);
                };
            });
        },  
        //對外提供重新計算滾動條高度或寬度以及滾動范圍的方法,用于動態改變內容時,作出的相對應的調整
        recalculated:function(){
            var H = this.target.offsetHeight,W = this.target.offsetWidth,T = parseInt(this.target.style.top),L = parseInt(this.target.style.left),h,w;
            this.ratio = {l:this.width / W,v:this.height / H};
            this.range = {l:W-this.width, t: H - this.height};
            if(this.vScroll){
                h = Math.round(Math.pow(this.height,2) / H);
                this.vScroll.style.height = h+'px';
                this.vScroll.style.top = Math.round(this.height * (-T/H)) + 'px';
                this.range.st = this.height - h;
                this.wrapper.style.height = this.height + 'px';
            };
            if(this.lScroll){
                w = Math.round(Math.pow(this.width,2) / W)
                this.lScroll.style.width = w + 'px';
                this.lScroll.style.left = Math.round(this.width * (-L/W)) + 'px';
                this.range.sl = this.width - w;
                this.wrapper.style.width = this.width + 'px';
            };
        },
        //對外提供設置滾動條的位置的方法
        set:function(pos){
            if(!_isObject(pos)) throw new Error('參數類型錯誤,參數必須是object!');
            if(pos.top && !isNaN(parseInt(pos.top)) && this.vScroll){
                var top = Math.min(pos.top,this.range.t);
                this.target.style.top = -top + 'px';
                this.vScroll.style.top = Math.round(this.height * (top / this.target.offsetHeight)) + 'px';
            };
            if(pos.left && !isNaN(parseInt(pos.left)) && this.lScroll){
                var left = Math.min(pos.left,this.range.l);
                this.target.style.left = -left + 'px';
                this.lScroll.style.left = Math.round(this.width * (left / this.target.offsetWidth)) + 'px';
            };
        },
        addWarpper:function(dir){
            if(this.wrapper) return;
            var _this = this,W = this.target.offsetWidth,H = this.target.offsetHeight,mousewheelHandle;
            this.wrapper = _createEl('<div class="sky_warpper" style="position:relative;overflow:hidden;"></div>',this.parent);
            this.wrapper.appendChild(this.target);
            this.target.style.cssText = 'position:absolute;top:0;left:0';
            switch(dir){
                case 'top':
                    this.wrapper.style.height = this.height + 'px';
                    this.wrapper.style.width = W + 'px';
                    break;
                case 'left':
                    this.wrapper.style.height = H + 'px';
                    this.wrapper.style.width = this.width + 'px';
                    break;
                default :
                    this.wrapper.style.width = this.width + 'px';
                    this.wrapper.style.height = this.height + 'px';
            };
            _addEvent(this.wrapper,'mouseenter',function(e){
                var pos = {};
                pos.tTop = parseInt(_this.target.style.top);
                pos.tLeft = parseInt(_this.target.style.left);
                if(_this.vScroll) pos.sTop = parseInt(_this.vScroll.style.top);
                if(_this.lScroll) pos.sLeft = parseInt(_this.lScroll.style.left);
                mousewheelHandle = _mousewheelHandle.call(_this,pos);
                _addEvent(_this.wrapper,'mousewheel',mousewheelHandle);
                _addEvent(_this.wrapper,'mouseleave',function(){_removeEvent(_this.wrapper,'mousewheel',mousewheelHandle)});
            });
        },
        //對外提供添加豎向滾動條的方法
        addVscroll:function(){
            if(this.vScroll) return;
            !this.wrapper && this.addWarpper('top');
            this.vScrollOuter = _createEl('<div class="sky_scrollTopOuter" style="position:absolute;top:0;right:0;height:'+this.height+'px;overflow:hidden"></div>',this.wrapper)
            this.vScroll = _createEl('<div class="sky_scrollTop" style="position:absolute;top:0;right:0;"></div>',this.wrapper);
            this.recalculated();
        },
        //對外提供添加橫向滾動條的方法
        addLscroll:function(){
            if(this.lScroll) return;
            !this.wrapper && this.addWarpper('left');
            this.lScrollOuter = _createEl('<div class="sky_scrollLeftOuter" style="position:absolute;bottom:0;left:0;width:'+this.width+'px;overflow:hidden"></div>',this.wrapper)
            this.lScroll = _createEl('<div class="sky_scrollLeft" style="position:absolute;left:0;bottom:0;"></div>',this.wrapper);
            this.recalculated();
        },
        //刪除豎向滾動條
        delVscroll:function(){
            _deleteScroll.call(this,1,this.vScroll,this.vScrollOuter,this.lScroll,this.lScrollOuter);
        },
        //刪除橫向滾動條   
        delLscroll:function(){
            _deleteScroll.call(this,0,this.lScroll,this.lScrollOuter,this.vScroll,this.vScrollOuter);
        }
    };
    skyScroll.prototype.init.prototype = skyScroll.prototype;
    window.skyScroll = skyScroll;
    /*************************私有函數*************************/
    function _mousemoveHandle(pos,target){
        var _this = this;
        return target == this.vScroll ? function(e){
            e = e || window.event;
            var newPos = _getMousePos(e);
            _this.target.style.top = Math.min(0,Math.max(pos.tTop + (pos.y - newPos.y)/_this.ratio.v,-_this.range.t)) + 'px';
            target.style.top = Math.max(0,Math.min(pos.sTop - pos.y + newPos.y,_this.range.st))+ 'px';
            _this.callback.call(_this);
            _cancelSelect()
        }:function(e){
            e = e || window.event;
            var newPos = _getMousePos(e);
            _this.target.style.left = Math.min(0,Math.max(pos.tLeft + (pos.x - newPos.x)/_this.ratio.l,-_this.range.l)) + 'px';
            target.style.left = Math.max(0,Math.min(pos.sLeft - pos.x + newPos.x,_this.range.sl)) + 'px';
            _this.callback.call(_this);
            _cancelSelect();
        }
    };

    function _mousewheelHandle(pos){
        var _this = this;
        return this.vScroll ? function(e){
            e = e || window.event;
            _stopEvent(e);
            var data = e.wheelDelta ? e.wheelDelta /120 : -e.detail/3;
            var top = parseInt(_this.target.style.top);
            var sTop = parseInt(_this.vScroll.style.top);
            var dist = data * 5;
            _this.target.style.top = Math.min(0,Math.max(top + dist / _this.ratio.v, -_this.range.t)) + 'px';
            _this.vScroll.style.top = Math.max(0,Math.min(sTop-dist,_this.range.st)) + 'px';
            _this.callback.call(_this);
        }:function(e){
            e = e || window.event;
            _stopEvent(e);
            var data = e.wheelDelta ? e.wheelDelta /120 : -e.detail/3;
            var left = parseInt(_this.target.style.left);
            var sLeft = parseInt(_this.lScroll.style.left);
            var dist = data * 5;
            _this.target.style.left = Math.min(0,Math.max(left + dist / _this.ratio.l, -_this.range.l)) + 'px';
            _this.lScroll.style.left = Math.max(0,Math.min(sLeft-dist,_this.range.sl)) + 'px';
            _this.callback.call(_this);
        }
    };
    function _mounsedownHandle(pos,target){
        var _this = this;
        var elPos = _getElementPosition(target);
        if(target == this.vScrollOuter){
            console.log(pos.y - elPos.y);
            _this.set({
                top:pos.y - elPos.y
            });
        }else{
            _this.set({
                left:pos.x - elPos.x
            });
        };
    };
    function _deleteScroll(n,s1,s11,s2,s22){
        var o = n ? 'Height' : 'Width' ,s = n ? 'top' : 'left';
        if(!s1) return;
        this.wrapper.removeChild(s1);
        this.wrapper.removeChild(s11);
        n ?  (this.vScroll = null) : (this.lScroll = null);
        if(!s2){
            this.wrapper.parentNode.appendChild(this.target);
            this.wrapper.parentNode.removeChild(this.wrapper);
            this.target.style.cssText = '';
            this.wrapper = null;
        }else{
            this.wrapper.style[o.toLowerCase()] = this.target['offset'+o] + 'px';
            this.recalculated();
        };
        this.target.style[s] = '0px';
        //this.target.style[o.toLowerCase()]= 'auto';
    };
    /*************************工具函數*************************/
    function _$(id){
        return typeof id === 'string' ? doc.getElementById(id) : id;
    };
    function _extend(target,source){
        for(var key in source) target[key] = source[key];
        return target;
    };
    function _createEl(html,parent){
        var div = doc.createElement('div');
        div.innerHTML = html;
        el = div.firstChild;
        parent && parent.appendChild(el);
        return el;
    };
    function _getMousePos(e){
        if(e.pageX || e.pageY) return {x:e.pageX,y:e.pageY};
        return {
            x:e.clientX + document.documentElement.scrollLeft - document.body.clientLeft,
            y:e.clientY + document.documentElement.scrollTop - document.body.clientTop
        };
    };
    function _isObject(o){
        return o === Object(o);
    };
    function _getElByClass(node,oClass,parent){
        var re = [],els,parent = parent || doc;
        els = parent.getElementsByTagName(node);
        for(var i=0,len=els.length;i<len;i++){
            if((' ' + els[i].className+' ').indexOf(' '+oClass+' ') > -1) re.push(els[i]);
        };
        return re;
    };
    function _stopEvent(e){
        e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true);
        e.preventDefault ? e.preventDefault() :(e.returnValue = false);
    };
    function _addEvent(el,type,fn){
        if(typeof el.addEventListener != 'undefined'){
            if(type == 'mouseenter'){
                el.addEventListener('mouseover',_findElement(fn),false);
            }else if(type === 'mouseleave'){
                el.addEventListener('mouseout',_findElement(fn),false);
            }else{
                el.addEventListener(type,fn,false);
            }
        }else if(typeof el.attachEvent != 'undefined'){
            el.attachEvent('on'+type,fn);
        }else{
            el['on'+type] = fn;
        }
    };
    function _removeEvent(el,type,fn){
        if(typeof el.removeEventListener != 'undefined'){
            el.removeEventListener(type,fn,false);
        }else if(typeof el.detachEvent != 'undefined'){
            el.detachEvent('on'+type,fn);
        }else{
            el['on'+type] = null;
        }
    };
    function _findElement(fn){
        return function(e){
            var parent = e.relatedTarget;
            while(parent && parent != this) parent = parent.parentNode;
            if(parent != this) fn.call(this,e);
        }
    };
    function _cancelSelect(){
        if (window.getSelection) {
            if (window.getSelection().empty) {  // Chrome
                window.getSelection().empty();
            } else if (window.getSelection().removeAllRanges) {  // Firefox
                window.getSelection().removeAllRanges();
            }
        }else if (document.selection) {  // IE?
          document.selection.empty();
        }
    };
    function _getElementPosition(el){
        var x = 0,y=0;
        if(el.getBoundingClientRect){
            var pos = el.getBoundingClientRect();
            var d_root = document.documentElement,db = document.body;
            x = pos.left + Math.max(d_root.scrollLeft,db.scrollLeft) - d_root.clientLeft;
            y = pos.top + Math.max(d_root.scrollTop,db.scrollTop) - d_root.clientTop;
        }else{
            while(el != db){
                x += el.offsetLeft;
                y += el.offsetTop;
                el = el.offsetParent;
            };
        };
        return {
            x:x,
            y:y
        };
    };
})(window);

HTML:

復制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title></title>
    <style type="text/css">
        * { margin:0; padding:0;}
        body {font-size:12px; line-height:1.5;}
        #scrollTest {background:#fff;padding:10px;width:1000px;}
        .sky_warpper { margin:100px auto;background:red;}
        .sky_scrollTopOuter {width:7px;background:#ddd;opacity:0.3;}
        .sky_scrollTopOuter:hover {opacity:0.8;width:7px;-webkit-transition:opacity,width 0.3s ease-out;}
        .sky_scrollTop { background:#333;opacity:0.3;width:7px;-webkit-border-radius:5px;-webkit-transition:opacity,width 0.3s ease-out; cursor:default;}
        .sky_warpper:hover .sky_scrollTop { opacity:0.8;width:7px;-webkit-transition:opacity,width 0.3s ease-out;}

        .sky_scrollLeftOuter {height:7px;background:#ddd;opacity:0.3;}
        .sky_scrollLeftOuter:hover {opacity:0.8;height:7px;-webkit-transition:opacity,height 0.3s ease-out;}
        .sky_scrollLeft { background:#333;opacity:0.3;height:7px;-webkit-border-radius:5px;-webkit-transition:opacity,height 0.3s ease-out; cursor:default;}
        .sky_warpper:hover .sky_scrollLeft { opacity:0.8;height:7px;-webkit-transition:opacity,height 0.3s ease-out;}
    </style>
</head>
<body>
    <input type="button" id="addSt" value="添加豎向滾動條" />
    <input type="button" id="addSl" value="添加橫向滾動條" />
    <input type="button" id="delSt" value="刪除豎向滾動條" />
    <input type="button" id="delSl" value="刪除橫向滾動條" />
    <input type="button" id="add" value="增加內容" />
    <input type="button" id="setTop" value="設置上邊距離" />
    <input type="button" id="setLeft" value="設置左邊距離" />
    <div id="scrollTest">
        111111111111111111111111111111譯者按 IE 曾是 web 創新的先驅,但最近幾年因為對 web 標準的支持落后于其他瀏覽器以及低版本 IE 的各種 bug 而被人詬病。雅虎的 Nicholas C. Zakas 帶我們回顧了 IE 在 web 發展過程中扮演的輝煌角色,讓我們能以一個更客觀的眼光來看待 IE??赐赀@篇文章,也許大家都會對 IE 瀏覽器有一定的改觀,這也是我翻譯這篇文章的目的。

譯文

在 Internet Explorer 成為大家都恨之入骨的瀏覽器的很久以前,它曾是整個互聯網的創新驅動力。有時候我們很難記得那些在 IE 6 成為全世界 web 開發者的災難之前 IE 所作的貢獻。不管你信不信,正因為有了 IE 4―6,才會有我們現在所知的 web 開發。IE 的一些獨特的功能過去就曾是事實標準,后來成為了官方標準最終進入了 HTML5 規范。人們也許很難相信,對于我們現在認為理所應當的功能中有很大一部分都應該要想到 IE,但快速地回顧一下歷史可以讓我們知道的確如此。

DOM

如 果 IE 是一個人人都痛恨的瀏覽器,那么「文檔對象模型」(DOM)就是人人都痛恨的 API 了。你可以說 DOM 過于繁瑣、不適合 JavaScript 甚至是有些荒謬,而且這些也都沒錯。然而,DOM 還是給了開發者通過 JavaScript 來訪問網頁的每個部分的途徑。曾經你一度只能通過 JavaScript 訪問頁面中某些特定的元素。IE 3 和 Netscape 3 只允許程序訪問表單元素、圖片以及鏈接。Netscape 4 改進了這一點,把程序可訪問的范圍通過 document.layers 擴展到了它特有的 layer 元素。IE 4 作了進一步改進,把這個范圍通過 document.all 擴展到了頁面的所有元素。

從很多方面來說,document.all 算是 document.getElementById() 的最初版本。你還是要使用元素的 ID 來通過 document.all 訪問它,例如 document.all.myDiv 或是 document.all["myDiv"]。最主要的區別就是 IE 使用了一個集合而非方法,而這和其他當時的訪問方法比如 document.images 及 document.forms 是相吻合的。

IE 4 也第一個引入了用 document.all.tags() 來通過標簽名字獲取一個元素列表的功能。無論從哪點來看,這都是 document.getElementsByTagName() 的最初版本,而且工作方式完全相同。如果你想獲取所有的 div 元素,你可以使用 document.all.tags("div")。甚至在 IE 9 中,這個方法仍然作為 document.getElementsByTagName() 的一個別名存在。

IE 4 同時也為我們引入了可能是有史以來最流行的私有 DOM 擴展:innerHTML??雌饋砦④浀哪菐腿耸钦J識到了通過編程手段來建立一個 DOM 有多么痛苦,所以把這個便捷方法,連同 outerHTML 一起提供給我們。事實證明這兩個方法都非常有用,已經在 HTML5 中被標準化了[1]。隨它們一同而來的用來處理純文本的 API――innerText 以及 outerText――同樣被證明足夠有影響力,因為 DOM Level 3 已經引入了與 innerText 行為相似的 textContent[2]。

按照同樣的思路,IE 4 引入了 insertAdjacentHTML(),這是又一種將 HTML 插入文檔中的方法。雖然這花了更長的時間,但最終也被編入了 HTML5[3],而且目前已被各瀏覽器廣泛支持。

事件

在開始時,JavaScript 并沒有事件機制。網景和微軟都作出了嘗試,并且分別得出了不同的模型。網景給我們帶來了事件捕獲,其思想是一個事件先發送到窗口,然后是文檔,然后一個個直到最終到達預期的目標。網景瀏覽器 6 以前的版本都僅支持事件捕獲。

微 軟采取了一個相反的方法,設計出了事件冒泡。他們認為一個事件應該先從實際的目標出發,然后在上層節點觸發直到文檔。IE 9 以前的瀏覽器僅支持事件冒泡。雖然隨著官方的 DOM 事件規范發展,同時包含了事件捕獲和事件冒泡,但大多數 web 開發者都只使用事件冒泡,而把事件捕獲僅僅留在 JavaScript 類庫中的一些解決方案和小技巧中使用。

除了創造了事件冒泡以外,微軟還創造了一系列后來也最終被標準化的額外事件:

contextmenu 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线视频a| 红桃视频成人在线观看| 欧美裸身视频免费观看| 亚洲最大中文字幕| 国语自产在线不卡| 精品国产欧美一区二区五十路| 最近2019年日本中文免费字幕| 欧美日韩福利电影| 久久人人爽人人爽人人片av高请| 久久精品国产一区二区电影| 成人免费淫片视频软件| 久久久久久久av| 久久中文字幕在线| 久久精品视频导航| 在线视频欧美性高潮| 亚洲性线免费观看视频成熟| 丝袜亚洲另类欧美重口| 亚洲一区二区日本| 欧美成人免费全部| 国产欧美婷婷中文| 欧美成人国产va精品日本一级| 国产精品电影观看| 久久精品国产99国产精品澳门| 精品少妇一区二区30p| 亚洲第一区在线| 欧美性猛xxx| 日韩精品999| 91精品国产777在线观看| 国产成人一区二区三区电影| 午夜精品免费视频| 成人黄色免费片| 欧美国产中文字幕| 欧美一区二区大胆人体摄影专业网站| 国产在线观看精品一区二区三区| 国产成人精品一区二区| 亚洲人成啪啪网站| 欧美小视频在线观看| 欧美成人精品一区二区三区| 亚洲视频专区在线| 欧美一区二区三区精品电影| 国内精品久久久久| 好吊成人免视频| 日韩精品免费在线视频| 在线看国产精品| 精品欧美国产一区二区三区| 91久久精品日日躁夜夜躁国产| 欧美黑人一区二区三区| 欧美色videos| 欧美高清视频免费观看| 国产精品免费久久久久影院| 欧美精品日韩三级| 亚洲精品中文字幕av| 尤物yw午夜国产精品视频明星| 在线看欧美日韩| 国模gogo一区二区大胆私拍| 不卡av在线网站| 一区二区三区精品99久久| 青草青草久热精品视频在线观看| 亚洲午夜未满十八勿入免费观看全集| 久久6免费高清热精品| 国产精品 欧美在线| 亚洲天堂av综合网| 亚洲在线一区二区| 亚洲精品国产成人| 国产97在线亚洲| 久久久久久久久爱| 久久亚洲春色中文字幕| 国产精品极品美女粉嫩高清在线| 欧美高清videos高潮hd| 精品伊人久久97| 中文欧美在线视频| 精品亚洲一区二区三区四区五区| 欧美日韩裸体免费视频| 国产专区欧美专区| 亚洲在线观看视频网站| 亚洲精品中文字幕av| 国产一区二区日韩| 亚州精品天堂中文字幕| 日韩高清有码在线| 日韩亚洲国产中文字幕| 久久精品亚洲一区| 97视频在线观看免费高清完整版在线观看| 97久久久免费福利网址| 国产免费久久av| 国产69久久精品成人看| 操91在线视频| 欧美一区二区三区……| 国产精品久久久久久久av大片| 91成品人片a无限观看| 国产亚洲福利一区| 欧美性高跟鞋xxxxhd| 亚洲aⅴ日韩av电影在线观看| 亚洲精品www| 久久精品中文字幕电影| 美女撒尿一区二区三区| 亚洲欧美中文字幕| 91久久久亚洲精品| 亚洲一区第一页| 国产精品高清网站| 久久久久亚洲精品成人网小说| 欧美日韩国产麻豆| 欧美一区二区影院| 国产69精品久久久| 欧美一级淫片videoshd| 亚洲欧美一区二区激情| 亚洲白拍色综合图区| 亚洲欧美第一页| 永久免费毛片在线播放不卡| 神马久久久久久| 亚洲精品av在线| 国产精品影片在线观看| 亚洲成人久久网| 国产精品永久在线| 欧洲美女7788成人免费视频| 黑人精品xxx一区一二区| 亚洲成人教育av| 最近2019中文免费高清视频观看www99| 欧美精品在线网站| 日韩有码在线电影| 亚洲国产成人精品久久久国产成人一区| 日本久久久久久久| 日韩视频永久免费观看| 日韩av在线网站| 国产精品美女主播| 国产免费一区视频观看免费| 欧美成人精品激情在线观看| 午夜精品福利电影| 亚洲精品欧美一区二区三区| 欧美怡春院一区二区三区| 色综合导航网站| 久久久久久久国产精品| 日本成人精品在线| 亚洲美女在线观看| 尤物精品国产第一福利三区| 国产精品黄视频| 中文字幕日韩有码| 亚洲欧美第一页| y97精品国产97久久久久久| 91黑丝在线观看| 亚洲国产精品嫩草影院久久| 日本精品中文字幕| 欧美日韩一二三四五区| 日韩视频精品在线| 国产精品日韩在线播放| 国产九九精品视频| 国模吧一区二区三区| 国产精品久久久久久亚洲影视| 在线亚洲国产精品网| 亚洲免费伊人电影在线观看av| 亚洲黄在线观看| 色噜噜亚洲精品中文字幕| 亚洲欧洲成视频免费观看| 精品人伦一区二区三区蜜桃网站| 欧美激情va永久在线播放| 国产一区二中文字幕在线看| 97久久精品人人澡人人爽缅北| 欧美在线www| xvideos成人免费中文版| 亚洲欧美国产一本综合首页| 亚洲男人天堂2024| 91精品国产91久久久久久最新| 亚洲午夜精品久久久久久久久久久久| 亚洲有声小说3d| 亚洲欧美变态国产另类|