欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

深入理解DOM與盒子模型:13個(gè)核心API實(shí)戰(zhàn)指南與性能優(yōu)化

深入理解DOM與盒子模型:13個(gè)核心API實(shí)戰(zhàn)指南與性能優(yōu)化 1. 項(xiàng)目概述從“文檔”到“可編程世界”的橋梁如果你剛開始接觸JavaScript或者已經(jīng)寫過一些交互效果但總覺得對(duì)頁面的控制力不夠那么“DOM”這個(gè)概念就是你必須要翻越的一座山。它不是一座難以逾越的高山而更像是一個(gè)功能強(qiáng)大的控制臺(tái)讓你能真正地“指揮”瀏覽器頁面上的每一個(gè)元素。簡單來說DOMDocument Object Model文檔對(duì)象模型是瀏覽器將我們寫的HTML和CSS代碼解析、轉(zhuǎn)換成的一個(gè)結(jié)構(gòu)化、可編程的對(duì)象集合。你可以把它想象成一份家用電器的電路圖HTML定義了有哪些電器如燈泡、開關(guān)CSS定義了它們的外觀燈泡的瓦數(shù)、顏色而DOM則是這份電路圖在工程師手中的“可編程版本”——工程師可以通過指令JS代碼來實(shí)時(shí)控制哪個(gè)開關(guān)通電、哪個(gè)燈泡變亮或改變顏色。這個(gè)項(xiàng)目標(biāo)題“JS中DOM是什么、DOM的基本操作、DOM操作盒子模型的13個(gè)api——大總結(jié)”非常精準(zhǔn)地概括了前端開發(fā)者從理解到精通的必經(jīng)之路。它回答了三個(gè)核心問題是什么理解DOM的本質(zhì)、怎么用掌握基礎(chǔ)操作以及如何精用通過盒子模型API進(jìn)行精細(xì)化控制。尤其是最后提到的“13個(gè)API”這絕不是簡單的羅列而是前端開發(fā)中進(jìn)行布局計(jì)算、動(dòng)畫實(shí)現(xiàn)、響應(yīng)式交互時(shí)最常用、也最容易混淆的一組核心工具。掌握它們意味著你從“能寫交互”進(jìn)化到了“能精準(zhǔn)控制交互”。接下來我將以一個(gè)從業(yè)超過十年的前端視角為你徹底拆解DOM不僅告訴你每個(gè)API怎么用更會(huì)分享在真實(shí)項(xiàng)目中我們?nèi)绾芜x擇、組合這些API來解決具體問題以及那些官方文檔里不會(huì)寫的“坑”和“最佳實(shí)踐”。無論你是剛?cè)腴T的新手還是想系統(tǒng)梳理知識(shí)的中級(jí)開發(fā)者這篇總結(jié)都將是一份可以直接放入收藏夾的實(shí)戰(zhàn)指南。2. DOM的本質(zhì)與核心思想拆解2.1 樹形結(jié)構(gòu)理解一切操作的基礎(chǔ)瀏覽器拿到一個(gè)HTML文檔后第一步就是“解析”。它會(huì)從頭到尾讀取HTML標(biāo)簽并根據(jù)標(biāo)簽的嵌套關(guān)系在內(nèi)存中構(gòu)建一棵“節(jié)點(diǎn)樹”Node Tree。這棵樹的根是document對(duì)象每一個(gè)HTML標(biāo)簽、屬性、甚至文本內(nèi)容都會(huì)成為這棵樹上的一個(gè)“節(jié)點(diǎn)”Node。舉個(gè)例子對(duì)于下面這段簡單的HTML!DOCTYPE html html head title我的頁面/title /head body h1歡迎/h1 p這是一個(gè)strong段落/strong。/p ul li項(xiàng)目一/li li項(xiàng)目二/li /ul /body /html瀏覽器構(gòu)建的DOM樹結(jié)構(gòu)大致如下一種心智模型document ├── html (元素節(jié)點(diǎn)) │ ├── head (元素節(jié)點(diǎn)) │ │ └── title (元素節(jié)點(diǎn)) │ │ └── “我的頁面” (文本節(jié)點(diǎn)) │ └── body (元素節(jié)點(diǎn)) │ ├── h1 (元素節(jié)點(diǎn)) │ │ └── “歡迎” (文本節(jié)點(diǎn)) │ ├── p (元素節(jié)點(diǎn)) │ │ ├── “這是一個(gè)” (文本節(jié)點(diǎn)) │ │ ├── strong (元素節(jié)點(diǎn)) │ │ │ └── “段落” (文本節(jié)點(diǎn)) │ │ └── “?!?(文本節(jié)點(diǎn)) │ └── ul (元素節(jié)點(diǎn)) │ ├── li (元素節(jié)點(diǎn)) │ │ └── “項(xiàng)目一” (文本節(jié)點(diǎn)) │ └── li (元素節(jié)點(diǎn)) │ └── “項(xiàng)目二” (文本節(jié)點(diǎn))為什么理解樹形結(jié)構(gòu)至關(guān)重要因?yàn)樗械腄OM操作本質(zhì)上都是對(duì)這棵“樹”進(jìn)行“增刪改查”。你要找到一個(gè)元素查你需要知道它是哪個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)父子關(guān)系、兄弟節(jié)點(diǎn)兄弟關(guān)系。你要插入一個(gè)新元素增你必須明確它要插入到哪個(gè)父節(jié)點(diǎn)之下、在哪個(gè)兄弟節(jié)點(diǎn)之前或之后。這種樹形思維是寫出高效、準(zhǔn)確DOM操作代碼的前提。很多新手寫選擇器時(shí)感覺吃力或者動(dòng)態(tài)插入元素位置不對(duì)根源往往是對(duì)這顆“樹”的結(jié)構(gòu)關(guān)系不清晰。2.2 節(jié)點(diǎn)類型不只是“標(biāo)簽”DOM樹上的每個(gè)點(diǎn)都是一個(gè)節(jié)點(diǎn)但節(jié)點(diǎn)有不同的類型對(duì)應(yīng)著不同的屬性和方法。最常見的幾種是元素節(jié)點(diǎn) (Element Node)對(duì)應(yīng)HTML標(biāo)簽如div,p,span。它是我們操作的主要對(duì)象。文本節(jié)點(diǎn) (Text Node)包含在元素節(jié)點(diǎn)內(nèi)的純文本內(nèi)容。屬性節(jié)點(diǎn) (Attr Node)在HTML規(guī)范中屬性也被視為節(jié)點(diǎn)但在現(xiàn)代DOM操作中我們通常直接通過元素節(jié)點(diǎn)的.getAttribute()或.setAttribute()方法來操作很少直接操作屬性節(jié)點(diǎn)對(duì)象。文檔節(jié)點(diǎn) (Document Node)即document對(duì)象它是整個(gè)DOM的入口。實(shí)操心得在遍歷DOM例如用childNodes屬性時(shí)你會(huì)得到一個(gè)包含所有類型節(jié)點(diǎn)的列表。如果你只想處理元素節(jié)點(diǎn)需要判斷節(jié)點(diǎn)的nodeType屬性元素節(jié)點(diǎn)為1文本節(jié)點(diǎn)為3或者直接使用只返回元素節(jié)點(diǎn)的屬性如children。這是一個(gè)常見的細(xì)節(jié)忽略它可能會(huì)導(dǎo)致代碼出現(xiàn)意想不到的行為比如你以為在遍歷子元素結(jié)果卻操作了文本節(jié)點(diǎn)。2.3 渲染與回流重繪DOM操作的性能代價(jià)這是理解DOM操作為什么需要謹(jǐn)慎的關(guān)鍵。瀏覽器的工作流程可以簡化為構(gòu)建DOM樹 - 結(jié)合CSS構(gòu)建渲染樹Render Tree - 布局Layout或稱Reflow計(jì)算每個(gè)元素的位置和大小 - 繪制Paint填充像素。當(dāng)你通過JavaScript修改DOM時(shí)尤其是修改影響幾何屬性的樣式如寬度、高度、位置瀏覽器可能需要重新計(jì)算布局回流/Reflow然后重新繪制受影響的部分重繪/Repaint。這是一個(gè)相對(duì)昂貴的操作。高頻次、低效的DOM操作是前端性能的主要?dú)⑹种?。例如在循環(huán)中直接修改元素的樣式// 性能較差的做法每次循環(huán)都觸發(fā)一次樣式計(jì)算和可能的回流 const elements document.querySelectorAll(.item); for (let i 0; i elements.length; i) { elements[i].style.width (100 i * 10) px; // 每次賦值都可能觸發(fā)回流 }優(yōu)化策略讀寫分離盡量避免交替進(jìn)行讀取和修改DOM幾何屬性的操作。瀏覽器有渲染隊(duì)列優(yōu)化但連續(xù)的讀寫會(huì)強(qiáng)制刷新隊(duì)列。使用文檔片段DocumentFragment進(jìn)行大量DOM插入時(shí)先在一個(gè)內(nèi)存中的DocumentFragment里組裝好所有子節(jié)點(diǎn)然后一次性插入真實(shí)DOM。這能極大減少回流次數(shù)。批量修改樣式優(yōu)先通過修改元素的className來切換一組預(yù)定義的CSS樣式而不是逐條修改style屬性?;蛘呤褂胑l.style.cssText一次性設(shè)置多個(gè)樣式。脫離動(dòng)畫流對(duì)要進(jìn)行復(fù)雜動(dòng)畫的元素可以先設(shè)置position: absolute或fixed使其脫離普通文檔流這樣它的動(dòng)畫變化不會(huì)導(dǎo)致其他元素回流。理解DOM的性能影響能讓你從“功能實(shí)現(xiàn)”層面上升到“高質(zhì)量實(shí)現(xiàn)”層面。3. DOM基礎(chǔ)操作全解析增刪改查的四種武器掌握了DOM的思想模型后我們進(jìn)入實(shí)戰(zhàn)環(huán)節(jié)。所有對(duì)DOM的操作無外乎“增、刪、改、查”四類。下面我們結(jié)合代碼和場(chǎng)景逐一拆解。3.1 查精準(zhǔn)定位目標(biāo)元素“查”是第一步也是用得最多的操作?,F(xiàn)代瀏覽器提供了強(qiáng)大且靈活的選擇器API。3.1.1 傳統(tǒng)方法基于節(jié)點(diǎn)關(guān)系這些方法直接利用DOM樹的結(jié)構(gòu)關(guān)系進(jìn)行查找在簡單場(chǎng)景或需要遍歷時(shí)有用。document.getElementById(‘id’)通過ID獲取返回單個(gè)元素。ID在頁面中應(yīng)唯一。document.getElementsByTagName(‘tagName’)通過標(biāo)簽名獲取返回一個(gè)動(dòng)態(tài)的HTML集合HTMLCollection。document.getElementsByClassName(‘className’)通過類名獲取返回一個(gè)動(dòng)態(tài)的HTML集合。parentNode.querySelector(‘selector’)從指定父節(jié)點(diǎn)下根據(jù)CSS選擇器查找第一個(gè)匹配的元素。parentNode.querySelectorAll(‘selector’)根據(jù)CSS選擇器查找所有匹配的元素返回一個(gè)靜態(tài)的NodeList。動(dòng)態(tài)集合 vs 靜態(tài)集合這是新手容易混淆的點(diǎn)。getElementsBy系列返回的是“動(dòng)態(tài)集合”意味著當(dāng)DOM結(jié)構(gòu)發(fā)生變化時(shí)這個(gè)集合會(huì)自動(dòng)更新。而querySelectorAll返回的是“靜態(tài)集合”它是在調(diào)用那一刻的快照后續(xù)DOM的變化不會(huì)反映在這個(gè)集合里。在循環(huán)中動(dòng)態(tài)刪除元素時(shí)使用動(dòng)態(tài)集合需要格外小心因?yàn)樗拈L度會(huì)實(shí)時(shí)變化可能導(dǎo)致循環(huán)下標(biāo)錯(cuò)亂。3.1.2 現(xiàn)代首選querySelector/querySelectorAll這兩個(gè)方法憑借其強(qiáng)大的CSS選擇器支持已成為事實(shí)上的標(biāo)準(zhǔn)。你可以使用任何CSS選擇器如#container .item:nth-child(2)非常靈活。// 查找ID為nav下的第一個(gè)li元素 const firstNavItem document.querySelector(#nav li); // 查找所有擁有data-active屬性的按鈕 const activeButtons document.querySelectorAll(button[data-active]); // 查找某個(gè)元素直接父節(jié)點(diǎn)下類名為child的直接子元素 const directChildren element.parentNode.querySelectorAll(:scope .child);注意querySelector返回的是第一個(gè)匹配項(xiàng)。如果沒找到返回null。querySelectorAll沒找到則返回空的NodeList。務(wù)必做好空值判斷避免后續(xù)操作報(bào)錯(cuò)。3.1.3 節(jié)點(diǎn)關(guān)系導(dǎo)航當(dāng)你已經(jīng)獲得一個(gè)元素引用需要找它的“親戚”時(shí)這些屬性非常有用父子關(guān)系parentNode,parentElement,children(只含元素節(jié)點(diǎn)),firstElementChild,lastElementChild。兄弟關(guān)系previousElementSibling,nextElementSibling(忽略文本節(jié)點(diǎn)常用),previousSibling,nextSibling(包含所有類型節(jié)點(diǎn))。3.2 增創(chuàng)建與插入新內(nèi)容創(chuàng)建新節(jié)點(diǎn)并插入到DOM樹中的指定位置。3.2.1 創(chuàng)建節(jié)點(diǎn)document.createElement(‘tagName’)創(chuàng)建一個(gè)新的元素節(jié)點(diǎn)。document.createTextNode(‘text’)創(chuàng)建一個(gè)文本節(jié)點(diǎn)。element.cloneNode(deep)克隆一個(gè)已有節(jié)點(diǎn)。deep為true時(shí)深克隆包括所有子節(jié)點(diǎn)為false時(shí)只克隆節(jié)點(diǎn)本身。3.2.2 插入節(jié)點(diǎn)關(guān)鍵在于找準(zhǔn)“插入點(diǎn)”。parent.appendChild(newNode)將新節(jié)點(diǎn)作為最后一個(gè)子節(jié)點(diǎn)插入。parent.insertBefore(newNode, referenceNode)在指定的參考子節(jié)點(diǎn)referenceNode之前插入新節(jié)點(diǎn)。如果referenceNode為null則效果同appendChild。parent.insertAdjacentElement(position, element)更靈活的方法可以將元素插入到相對(duì)于當(dāng)前元素的特定位置。position可以是‘beforebegin’(元素自身之前),‘a(chǎn)fterbegin’(元素內(nèi)部第一個(gè)子節(jié)點(diǎn)之前),‘beforeend’(元素內(nèi)部最后一個(gè)子節(jié)點(diǎn)之后),‘a(chǎn)fterend’(元素自身之后)。element.innerHTML通過字符串設(shè)置或獲取元素內(nèi)部的HTML內(nèi)容。這是一把雙刃劍它可以快速構(gòu)建復(fù)雜結(jié)構(gòu)但存在安全隱患如果字符串來自用戶輸入可能導(dǎo)致XSS攻擊和性能問題會(huì)銷毀舊節(jié)點(diǎn)觸發(fā)完整解析。實(shí)戰(zhàn)示例高效插入列表項(xiàng)假設(shè)有一個(gè)任務(wù)列表ul id“todo-list”我們需要?jiǎng)討B(tài)添加多個(gè)新任務(wù)。const todoList document.getElementById(todo-list); const tasks [寫代碼, 讀文檔, 測(cè)試功能]; // 低效做法每次插入都觸發(fā)回流 // for (let task of tasks) { // const li document.createElement(li); // li.textContent task; // todoList.appendChild(li); // 每次append都會(huì)導(dǎo)致瀏覽器重新計(jì)算布局 // } // 高效做法使用文檔片段 const fragment document.createDocumentFragment(); // 創(chuàng)建一個(gè)內(nèi)存中的片段 for (let task of tasks) { const li document.createElement(li); li.textContent task; fragment.appendChild(li); // 在內(nèi)存中操作不涉及真實(shí)DOM } todoList.appendChild(fragment); // 一次性插入只觸發(fā)一次回流使用DocumentFragment是處理批量DOM插入的性能最佳實(shí)踐。3.3 改更新內(nèi)容與屬性修改已有節(jié)點(diǎn)包括其內(nèi)容、屬性和樣式。3.3.1 修改內(nèi)容element.textContent獲取或設(shè)置元素及其后代的文本內(nèi)容。設(shè)置時(shí)會(huì)替換所有子節(jié)點(diǎn)且其中的HTML標(biāo)簽會(huì)被轉(zhuǎn)義為純文本。這是設(shè)置純文本內(nèi)容最安全、性能最好的方式。element.innerHTML獲取或設(shè)置元素內(nèi)部的HTML字符串??梢园瑯?biāo)簽瀏覽器會(huì)解析它。警惕XSS除非你完全信任內(nèi)容的來源否則不要直接用用戶輸入的數(shù)據(jù)來設(shè)置innerHTML。element.innerText考慮CSS樣式后的文本內(nèi)容會(huì)觸發(fā)回流且性能不如textContent通常不推薦用于程序化修改。3.3.2 修改屬性標(biāo)準(zhǔn)屬性大多數(shù)HTML標(biāo)準(zhǔn)屬性如id,className,href,src可以直接通過元素對(duì)象的屬性來訪問和修改。例如imgEl.src ‘new.jpg’;。自定義屬性HTML5推薦使用>const btn document.querySelector(button); // 添加類 btn.classList.add(active); // 移除類 btn.classList.remove(disabled); // 切換類有則刪無則加 btn.classList.toggle(highlight); // 判斷是否包含某個(gè)類 if (btn.classList.contains(primary)) { // do something }3.4 刪移除不需要的節(jié)點(diǎn)parent.removeChild(childNode)從父節(jié)點(diǎn)中移除指定的子節(jié)點(diǎn)。注意這個(gè)方法需要你知道父節(jié)點(diǎn)是誰。它返回被移除的節(jié)點(diǎn)這個(gè)節(jié)點(diǎn)還在內(nèi)存中你可以之后再插入到別處。node.remove()更現(xiàn)代、更簡潔的方法。節(jié)點(diǎn)自己調(diào)用將自己從DOM樹中移除。不需要先找到父節(jié)點(diǎn)。const oldItem document.getElementById(item-to-delete); // 傳統(tǒng)方法 if (oldItem.parentNode) { oldItem.parentNode.removeChild(oldItem); } // 現(xiàn)代方法IE不支持但現(xiàn)代項(xiàng)目無需考慮 oldItem.remove();移除節(jié)點(diǎn)后瀏覽器會(huì)進(jìn)行垃圾回收釋放內(nèi)存。但如果你仍然在JavaScript變量中持有對(duì)該節(jié)點(diǎn)的引用它就不會(huì)被回收可能導(dǎo)致內(nèi)存泄漏。在單頁應(yīng)用(SPA)或復(fù)雜組件中這是一個(gè)需要注意的問題。4. 深入盒子模型13個(gè)核心API的精準(zhǔn)運(yùn)用CSS盒子模型是網(wǎng)頁布局的基石而JavaScript操作盒子模型相關(guān)屬性的API則是實(shí)現(xiàn)動(dòng)態(tài)布局、精準(zhǔn)定位、動(dòng)畫效果和響應(yīng)式交互的核心工具。這13個(gè)API可以分為幾大類尺寸與位置、視口與滾動(dòng)、計(jì)算樣式。理解它們的區(qū)別和適用場(chǎng)景是前端進(jìn)階的關(guān)鍵。4.1 元素自身尺寸offset與client系列這兩組屬性都是只讀的返回以像素為單位的整數(shù)值。它們獲取的是元素的“視覺尺寸”包括邊框、內(nèi)邊距和內(nèi)容。4.1.1 offset系列包含邊框(border)的尺寸element.offsetWidth/element.offsetHeight返回元素的整體寬度/高度包括內(nèi)容(content) 內(nèi)邊距(padding) 邊框(border)不包含外邊距(margin)。如果元素被隱藏display: none則返回0。element.offsetTop/element.offsetLeft返回元素上邊框/左邊框相對(duì)于最近的非靜態(tài)定位(position不為static)的祖先元素(offsetParent)內(nèi)邊框的距離。如果沒有這樣的祖先則相對(duì)于body或html。4.1.2 client系列包含內(nèi)邊距(padding)但不含邊框的尺寸element.clientWidth/element.clientHeight返回元素內(nèi)部可視區(qū)域的寬度/高度包括內(nèi)容(content) 內(nèi)邊距(padding)不包含滾動(dòng)條寬度和邊框(border)。element.clientTop/element.clientLeft這組屬性名字容易誤導(dǎo)。它們實(shí)際上返回的是元素上邊框/左邊框的寬度。相當(dāng)于border-top-width和border-left-width。對(duì)比與使用場(chǎng)景你想知道一個(gè)帶邊框的按鈕總共占多大空間用offsetWidth/Height。你想知道一個(gè)容器內(nèi)部實(shí)際可用于放置內(nèi)容的區(qū)域有多大用clientWidth/Height。你想計(jì)算一個(gè)元素相對(duì)于其定位父容器的位置用offsetTop/Left。實(shí)操陷阱offsetParent并不總是父元素。如果父元素設(shè)置了position: static默認(rèn)值offsetParent會(huì)繼續(xù)向上查找直到找到position為relative,absolute,fixed或sticky的祖先或者直接找到body。這在進(jìn)行復(fù)雜的位置計(jì)算時(shí)需要特別注意。4.2 滾動(dòng)尺寸與位置scroll系列這組屬性用于處理元素內(nèi)容溢出、出現(xiàn)滾動(dòng)條的情況。element.scrollWidth/element.scrollHeight返回元素內(nèi)容的實(shí)際總寬度/高度包括由于溢出而不可見的部分。它等于clientWidth/Height加上被滾動(dòng)隱藏的部分。element.scrollTop/element.scrollLeft可讀寫。獲取或設(shè)置元素內(nèi)容垂直/水平方向滾動(dòng)的像素?cái)?shù)。設(shè)置它們可以控制滾動(dòng)位置。經(jīng)典應(yīng)用判斷是否滾動(dòng)到底部const container document.getElementById(scroll-container); // 判斷垂直方向是否已滾動(dòng)到底部允許1像素的容差 function isScrolledToBottom() { // scrollHeight是整個(gè)內(nèi)容高度scrollTop是已滾動(dòng)的距離clientHeight是可視區(qū)域高度 return Math.abs(container.scrollHeight - container.scrollTop - container.clientHeight) 1; } container.addEventListener(scroll, function() { if (isScrolledToBottom()) { console.log(已滾動(dòng)到底部可以加載更多內(nèi)容了); // 觸發(fā)加載更多數(shù)據(jù)的操作 } });另一個(gè)常見場(chǎng)景平滑滾動(dòng)到指定元素document.getElementById(btn-top).addEventListener(click, function() { // 方法1直接設(shè)置scrollTop瞬間跳轉(zhuǎn) // document.documentElement.scrollTop 0; // 方法2使用scrollTo API實(shí)現(xiàn)平滑滾動(dòng)推薦 window.scrollTo({ top: 0, behavior: smooth // 指定滾動(dòng)行為為平滑 }); });4.3 視口與窗口尺寸window與document這些屬性用于獲取瀏覽器窗口或整個(gè)文檔的尺寸在實(shí)現(xiàn)全屏、響應(yīng)式或視口相關(guān)效果時(shí)必不可少。window.innerWidth/window.innerHeight返回瀏覽器視口(viewport)的寬度和高度包括垂直滾動(dòng)條的寬度如果存在。window.outerWidth/window.outerHeight返回整個(gè)瀏覽器窗口的寬度和高度包括工具欄、地址欄等界面元素。document.documentElement.clientWidth/document.documentElement.clientHeight返回視口(viewport)的寬度和高度不包括滾動(dòng)條。這通常被認(rèn)為是獲取“可用視口尺寸”最標(biāo)準(zhǔn)的方式。document.documentElement.scrollWidth/document.documentElement.scrollHeight返回整個(gè)文檔的實(shí)際總寬度和高度。window.pageXOffset(window.scrollX) /window.pageYOffset(window.scrollY)返回文檔在水平/垂直方向已滾動(dòng)的像素?cái)?shù)。它們是只讀的。視口尺寸獲取的“坑”與最佳實(shí)踐 在CSS中我們有vw,vh單位但在JS中獲取準(zhǔn)確的、不含滾動(dòng)條的視口尺寸對(duì)于布局計(jì)算至關(guān)重要。window.innerWidth包含了滾動(dòng)條這可能導(dǎo)致你的計(jì)算出現(xiàn)幾個(gè)像素的偏差。最可靠的方法是使用document.documentElement.clientWidth。響應(yīng)式布局監(jiān)聽// 監(jiān)聽窗口大小變化實(shí)現(xiàn)響應(yīng)式邏輯 function handleResize() { const viewportWidth document.documentElement.clientWidth; if (viewportWidth 768) { // 移動(dòng)端布局邏輯 console.log(切換到移動(dòng)端模式); } else if (viewportWidth 1024) { // 平板端布局邏輯 console.log(切換到平板端模式); } else { // 桌面端布局邏輯 console.log(切換到桌面端模式); } } // 防抖處理避免resize事件觸發(fā)過于頻繁 let resizeTimer; window.addEventListener(resize, function() { clearTimeout(resizeTimer); resizeTimer setTimeout(handleResize, 250); // 250毫秒后執(zhí)行 }); // 初始化執(zhí)行一次 handleResize();4.4 獲取精確樣式getComputedStyle上面提到的offset、client、scroll系列屬性返回的都是像素值而且是整數(shù)。但CSS樣式可能是em、rem、%或vw等單位。如何獲取元素經(jīng)過所有CSS規(guī)則計(jì)算后的最終樣式值計(jì)算樣式這就需要window.getComputedStyle(element [, pseudoElt])。作用返回一個(gè)實(shí)時(shí)的CSSStyleDeclaration對(duì)象包含了元素所有最終使用的CSS屬性值。與element.style的區(qū)別element.style只能獲取和設(shè)置元素的內(nèi)聯(lián)樣式寫在style屬性里的而getComputedStyle獲取的是所有來源內(nèi)聯(lián)、內(nèi)部、外部樣式表層疊計(jì)算后的最終結(jié)果。返回值所有尺寸值通常都會(huì)被計(jì)算成像素px字符串顏色會(huì)被計(jì)算成rgb()或rgba()格式。const box document.querySelector(.box); const computedStyle window.getComputedStyle(box); console.log(computedStyle.width); // 例如 200px console.log(computedStyle.backgroundColor); // 例如 rgb(255, 0, 0) console.log(computedStyle.getPropertyValue(width)); // 另一種獲取方式重要注意事項(xiàng)getComputedStyle返回的值是只讀的。你不能通過這個(gè)對(duì)象來修改樣式。要修改樣式仍需通過element.style或修改類名。它返回的尺寸值通常是帶px單位的字符串進(jìn)行數(shù)學(xué)計(jì)算前需要parseFloat()轉(zhuǎn)換。對(duì)于某些簡寫屬性如background,margin不同瀏覽器返回的完整值可能格式不一致。獲取具體子屬性如margin-top更可靠。第二個(gè)可選參數(shù)用于獲取偽元素的樣式例如getComputedStyle(element, ‘::before’)。4.5 幾何位置getBoundingClientRect這是功能最強(qiáng)大的幾何API之一。element.getBoundingClientRect()返回一個(gè)DOMRect對(duì)象提供了元素相對(duì)于瀏覽器視口左上角的精確位置和尺寸信息。返回的DOMRect對(duì)象包含以下屬性均為浮點(diǎn)數(shù)x/left: 元素左邊界相對(duì)于視口左邊的距離。y/top: 元素上邊界相對(duì)于視口上邊的距離。width: 元素的寬度等同于offsetWidth但值為浮點(diǎn)數(shù)。height: 元素的高度等同于offsetHeight但值為浮點(diǎn)數(shù)。right: 元素右邊界相對(duì)于視口左邊的距離 (left width)。bottom: 元素下邊界相對(duì)于視口上邊的距離 (top height)。核心應(yīng)用場(chǎng)景判斷元素是否在視口內(nèi)實(shí)現(xiàn)懶加載或曝光統(tǒng)計(jì)function isElementInViewport(el) { const rect el.getBoundingClientRect(); return ( rect.top 0 rect.left 0 rect.bottom (window.innerHeight || document.documentElement.clientHeight) rect.right (window.innerWidth || document.documentElement.clientWidth) ); }實(shí)現(xiàn)拖拽功能結(jié)合mousedown、mousemove、mouseup事件通過計(jì)算鼠標(biāo)移動(dòng)距離和元素初始rect來更新元素位置。實(shí)現(xiàn)工具提示(Tooltip)定位計(jì)算觸發(fā)元素的位置然后動(dòng)態(tài)計(jì)算并設(shè)置Tooltip元素的top和left值使其顯示在合適位置。碰撞檢測(cè)判斷兩個(gè)元素是否發(fā)生重疊。性能提示getBoundingClientRect()和getComputedStyle()都是會(huì)強(qiáng)制觸發(fā)瀏覽器同步重排Recalculate Style 或 Layout的“昂貴”操作。在循環(huán)或頻繁觸發(fā)的函數(shù)如scroll事件回調(diào)中應(yīng)謹(jǐn)慎使用避免連續(xù)調(diào)用??梢钥紤]使用requestAnimationFrame進(jìn)行節(jié)流或者利用Intersection Observer API現(xiàn)代瀏覽器支持來更高效地監(jiān)聽元素是否進(jìn)入視口。5. 實(shí)戰(zhàn)綜合一個(gè)可復(fù)用的動(dòng)態(tài)布局計(jì)算工具理解了理論我們通過一個(gè)實(shí)戰(zhàn)項(xiàng)目來融會(huì)貫通。假設(shè)我們需要開發(fā)一個(gè)圖片瀑布流組件核心需求是容器寬度固定圖片寬度固定但高度不一需要計(jì)算每張圖片應(yīng)該放置的位置實(shí)現(xiàn)從左到右、從上到下緊湊排列。這個(gè)需求的核心就是通過JS動(dòng)態(tài)計(jì)算每個(gè)圖片元素的尺寸和位置。我們將用到offsetWidth、getBoundingClientRect以及樣式操作。5.1 工具函數(shù)設(shè)計(jì)計(jì)算瀑布流布局/** * 瀑布流布局計(jì)算函數(shù) * param {string} containerSelector - 瀑布流容器的選擇器 * param {string} itemSelector - 子項(xiàng)如圖片的選擇器 * param {number} columnCount - 列數(shù) * param {number} gap - 列間距像素 */ function waterfallLayout(containerSelector, itemSelector, columnCount 4, gap 10) { const container document.querySelector(containerSelector); if (!container) return; const items Array.from(container.querySelectorAll(itemSelector)); if (items.length 0) return; // 1. 初始化列高數(shù)組和容器寬度 const columnHeights new Array(columnCount).fill(0); const containerWidth container.offsetWidth; // 獲取容器實(shí)際寬度 // 計(jì)算每項(xiàng)寬度考慮間距 const itemWidth (containerWidth - (columnCount - 1) * gap) / columnCount; // 2. 先重置所有項(xiàng)的位置為計(jì)算做準(zhǔn)備 items.forEach(item { item.style.position absolute; // 使用絕對(duì)定位進(jìn)行精確控制 item.style.width ${itemWidth}px; // 高度由圖片自身決定我們只獲取 }); // 3. 強(qiáng)制重排以獲取正確的圖片高度注意性能僅初始化時(shí)執(zhí)行一次 // 這里為了演示我們假設(shè)圖片已加載或使用imagesLoaded庫確保高度正確 // 實(shí)際項(xiàng)目中應(yīng)在圖片onload后執(zhí)行布局計(jì)算 // 4. 遍歷所有項(xiàng)計(jì)算位置 items.forEach(item { // 找到當(dāng)前高度最小的列 const minHeight Math.min(...columnHeights); const targetColumnIndex columnHeights.indexOf(minHeight); // 計(jì)算該項(xiàng)的left和top值 const left targetColumnIndex * (itemWidth gap); const top columnHeights[targetColumnIndex]; // 應(yīng)用位置 item.style.left ${left}px; item.style.top ${top}px; // 更新該列的高度當(dāng)前列高 該項(xiàng)高度 行間距 // 注意這里需要獲取item的完整高度包括margin使用getBoundingClientRect const itemRect item.getBoundingClientRect(); columnHeights[targetColumnIndex] top itemRect.height gap; }); // 5. 設(shè)置容器高度為最高列的高度以便容器能包裹所有內(nèi)容 const maxHeight Math.max(...columnHeights); container.style.height ${maxHeight}px; container.style.position relative; // 容器作為定位基準(zhǔn) }5.2 使用示例與優(yōu)化div idwaterfall-container stylewidth: 800px; border: 1px solid #ccc; div classitemimg srcimg1.jpg alt/div div classitemimg srcimg2.jpg alt/div !-- ... 更多圖片項(xiàng) ... -- /div// 頁面加載和窗口變化時(shí)重新布局 window.addEventListener(load, () waterfallLayout(#waterfall-container, .item, 4)); window.addEventListener(resize, () { // 防抖處理避免頻繁計(jì)算 clearTimeout(window.resizeTimer); window.resizeTimer setTimeout(() waterfallLayout(#waterfall-container, .item, 4), 200); }); // 如果是動(dòng)態(tài)加載圖片需要在圖片加載完成后重新布局 // 可以使用 imagesLoaded 庫或監(jiān)聽每張圖片的 load 事件 document.querySelectorAll(#waterfall-container img).forEach(img { img.addEventListener(load, () { waterfallLayout(#waterfall-container, .item, 4); }); });5.3 關(guān)鍵點(diǎn)解析與避坑指南offsetWidthvsgetBoundingClientRect().width我們使用container.offsetWidth獲取容器寬度因?yàn)樗且粋€(gè)整數(shù)值且包含了邊框和內(nèi)邊距符合布局計(jì)算需求。對(duì)于子項(xiàng)高度我們使用item.getBoundingClientRect().height因?yàn)樗塬@取到浮點(diǎn)數(shù)精度的高度可能由圖片或內(nèi)容決定并且包含了元素的margin如果存在計(jì)算更精確。強(qiáng)制重排在循環(huán)開始前我們?cè)O(shè)置了所有項(xiàng)的width和position。瀏覽器不會(huì)立即應(yīng)用這些樣式直到我們讀取它們的幾何屬性如getBoundingClientRect。我們的代碼流程先設(shè)置樣式再讀取高度本身是符合“批量讀寫”優(yōu)化原則的。但如果圖片未加載高度為0布局會(huì)出錯(cuò)。因此確保內(nèi)容已渲染是動(dòng)態(tài)布局計(jì)算的前提。性能考量這個(gè)布局函數(shù)在項(xiàng)目多、計(jì)算復(fù)雜時(shí)可能成為性能瓶頸。優(yōu)化方法包括使用requestAnimationFrame對(duì)布局更新進(jìn)行調(diào)度對(duì)于新增項(xiàng)目可以只計(jì)算新增項(xiàng)而不是全部重算增量布局如果列數(shù)固定可以提前計(jì)算好每列的left值避免在循環(huán)中重復(fù)計(jì)算。CSS替代方案現(xiàn)代CSS的grid布局和flexbox也能實(shí)現(xiàn)類似瀑布流且性能通常更好。但在需要精確控制每項(xiàng)位置、或兼容舊瀏覽器時(shí)這種JS方案仍是必要的。6. 常見問題、排查技巧與性能優(yōu)化實(shí)錄在實(shí)際開發(fā)中操作DOM和盒子模型時(shí)總會(huì)遇到各種“坑”。下面是我從多年項(xiàng)目中總結(jié)的一些典型問題和解決方案。6.1 為什么我獲取的元素尺寸是0這是最常見的問題之一??赡艿脑蛴性乇浑[藏如果元素的display屬性為none那么offsetWidth/Height和clientWidth/Height都會(huì)返回0。getBoundingClientRect()返回的寬高可能也是0或非常小。解決方案確保在獲取尺寸前元素是可見的例如display: block。樣式未應(yīng)用/渲染未完成如果你在元素被插入DOM之前或?yàn)g覽器尚未完成渲染時(shí)就獲取尺寸得到的就是0。解決方案將尺寸獲取的代碼放在window.load事件、圖片的onload事件、或者使用setTimeout(fn, 0)將其推入下一個(gè)事件循環(huán)執(zhí)行。對(duì)于Vue/React等框架應(yīng)在mounted/componentDidMount或$nextTick生命周期鉤子中執(zhí)行。父容器尺寸未定如果元素是百分比寬度而其父容器寬度為auto或未定義元素可能無法計(jì)算出具體尺寸。解決方案檢查父容器的布局確保其有明確的尺寸。6.2 offsetTop/Left 值不符合預(yù)期offsetParent的陷阱offsetTop/Left是相對(duì)于offsetParent計(jì)算的。如果元素的父級(jí)沒有設(shè)置非static的定位offsetParent可能會(huì)是body或html導(dǎo)致數(shù)值很大。解決方案檢查元素的定位上下文或者考慮使用getBoundingClientRect().top來獲取相對(duì)于視口的位置再結(jié)合window.pageYOffset計(jì)算相對(duì)于文檔的位置。邊框和滾動(dòng)的影響offsetTop返回的是元素上邊框外邊緣到offsetParent上邊框內(nèi)邊緣的距離。如果offsetParent有內(nèi)邊距(padding)或邊框(border)這個(gè)距離是包含這些的。getBoundingClientRect().top則是元素上邊框外邊緣到視口頂部的距離概念不同。6.3 滾動(dòng)相關(guān)的跳動(dòng)或卡頓滾動(dòng)事件性能直接在scroll事件回調(diào)中執(zhí)行g(shù)etBoundingClientRect()或offsetTop等會(huì)觸發(fā)回流的操作會(huì)導(dǎo)致滾動(dòng)卡頓。解決方案使用防抖(debounce)或節(jié)流(throttle)技術(shù)或者使用requestAnimationFrame來調(diào)度這些昂貴操作。let ticking false; window.addEventListener(scroll, function() { if (!ticking) { window.requestAnimationFrame(function() { // 在這里執(zhí)行需要獲取位置的操作 doSomething(); ticking false; }); ticking true; } });scrollTop賦值無效有時(shí)設(shè)置element.scrollTop value后元素并未滾動(dòng)。檢查1) 該元素是否設(shè)置了overflow: scroll或auto并且內(nèi)容確實(shí)溢出了2) 嘗試在setTimeout中賦值或使用element.scrollTo({top: value})。6.4 樣式獲取與設(shè)置的精度問題getComputedStyle返回帶單位字符串getComputedStyle(el).width返回如200.5px。進(jìn)行數(shù)學(xué)計(jì)算前務(wù)必用parseFloat()轉(zhuǎn)換parseFloat(getComputedStyle(el).width)。zoom或transform: scale的影響如果元素或其祖先元素應(yīng)用了CSS縮放(zoom)或變換縮放(transform: scale())通過JS獲取的尺寸如offsetWidth可能仍然是未縮放前的邏輯像素尺寸而視覺尺寸已經(jīng)改變。這會(huì)導(dǎo)致計(jì)算偏差。處理這種情況非常復(fù)雜通常需要結(jié)合getBoundingClientRect()返回的是視覺像素和window.devicePixelRatio進(jìn)行綜合計(jì)算。6.5 內(nèi)存泄漏隱患在單頁應(yīng)用(SPA)或長時(shí)間運(yùn)行的頁面中被移除的DOM節(jié)點(diǎn)如果仍然被JavaScript變量引用就無法被垃圾回收。常見于在全局或模塊級(jí)變量中緩存了DOM元素之后元素被移除但引用未清除。事件監(jiān)聽器未移除給DOM元素添加了事件監(jiān)聽器元素移除前沒有用removeEventListener移除。解決方案養(yǎng)成良好習(xí)慣。在移除元素前手動(dòng)解除對(duì)其的引用設(shè)為null并移除其上的事件監(jiān)聽器?,F(xiàn)代框架如Vue/React的虛擬DOM機(jī)制在很大程度上幫你管理了這些但在直接操作DOM時(shí)仍需留意。DOM操作是前端開發(fā)的基石從簡單的元素選擇到復(fù)雜的布局計(jì)算每一步都考驗(yàn)著開發(fā)者對(duì)瀏覽器渲染機(jī)制的理解深度。理解并熟練運(yùn)用這些API尤其是盒子模型相關(guān)的13個(gè)核心屬性能讓你在實(shí)現(xiàn)交互效果、動(dòng)態(tài)布局和性能優(yōu)化時(shí)游刃有余。記住任何DOM操作都要思考其性能代價(jià)在功能實(shí)現(xiàn)和用戶體驗(yàn)之間找到最佳平衡點(diǎn)。最好的代碼往往是那些既完成了功能又讓瀏覽器感到“輕松”的代碼。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
人妻久久久久久久久久久| 激情狠狠丁香月| 欧美三级欧美一级| 日日干综合| 色婷婷综合网| 狠狠狠夜夜夜| 99色看这里只有精品| 色色色综合| 婷婷丁香五月天中文字幕| 综合图区激情| 五月激情丁香久久综合网| 色色色色区| 色碰97| 天天弄天天操| 97碰人人操| 久久视这里只有精品| 中文幕无线码中文字蜜桃| www.日日日.com| 精品综合网在线| 99热免费精品| 婷婷五月天激情网站| 大香蕉人在线65| 天天插天天插| 九九热10| 99精品在这里| 99热这里只有精品最新网址| 婷婷黄色五月天在线视频| 99热亚州综合| 五月四色激情| 日韩人妻AV在线| 久久最新色| 激情五月综合色婷婷| 秋霞日本免费毛片A片| 蜜桃人妻无码AV天堂三区| 色五月婷婷九月| 欧美欧盟性爱网| 日韩不卡123| 五月丁香激情综合网| 这里只精品热在线18| 色综合久久88色综合天天99| 日操熟女| 99精品久久久久久久久| 超碰在线免费观看3 9| 久热免费视频| 无遮挡国产高潮视频免费观看| 久久久91| 五月天婷婷在线观看| 99热99re6国产在线播放| 婷婷色网| 天天摸.天天mo| 精品牛仔裤超碰| 久久久人人操A V| 五月停停大香蕉| 99自拍视频在线观看| 婷婷狠狠干| 日日操夜夜爽天天天| 99热新网址| 国产综合81p| 天天久久九九| 丁香五婷| 久久激情五月天| 十区av| 久久九九激情五月天 | 99热这里精品| 99爱爱| 成人av免费观看| 婷婷激情六月视频| www.精品99| 亚洲色五月婷婷| 丁香激情六月天婷婷| 在线天堂9| 99热这里只有精品1| 五月丁香狠狠地噜噜噜噜| 日 日干 日日做| 色婷婷最爱五月| 激情婷婷人妻| 婷婷王月天影院| 色婷婷激情五月天在线观看| 天天日日夜夜| www.国产色| 人人摸人人干| 亚洲综合碰| 99re久热| 久热99| 婷婷综合在线| 五月婷久久在线| 天天久综合| 天天摸天天做天天爱天天爽| 夜夜久久综合网| 久久与婷婷| 婷婷丁香成人| 国产亚洲成AV人片在线观黄桃| 五月婷婷六月丁香| 成片免费观看大全| 97人妻碰碰碰久久香蕉| 色五月天综合| 五月丁香婷草| av大片在线| 天天干天天日蜜臀av| 日本久久久97| 久热只有这里有精品| 婷婷五月激情基地| 在线观看婷婷5月| 91在线日| 9色小视频在线观看| 超碰色人妾| 在线成人网址| 亚洲精品大片| 五月色情| 中文字幕av久久爽一区| 久 久9 9 热 视 频| 五月天婷婷激情| 97久久超碰| 中文字幕在线aⅴ免费观看| 色色婷婷色色| 婷婷五月激情四月综合 | 色一情一乱一乱一区91| 色色AV色色色东莞| 亚洲色无码A片一区二区麻豆| 97操碰日本女人| 99re热99| 婷婷色综合av| 中文字幕高清av| 黄网网站在线播放| 激情五月天网站| 亚洲熟妇AV乱码在线观看| 久啪欧美| 亚洲激情综合免费| 极品人妻VIDEOSSS人妻| 五月丁香啪| 一区=区操屄高清大全av| 婷婷久久亚洲| 天堂在线9| 国产做爰视频免费播放| 夜夜涩涩涩| 婷婷在线视频| 国产综合丁香五月天| 五月伊人综合| 99热日本| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 欧美性爱5月天天天看| 色九月婷婷丁香| 黄急一级视频| 操逼福利视频| 国产精自产拍久久久久久蜜 | 五月天激情影院| 99热无码| 九九伦子片| Av狠狠色丁香婷| 天天做天天爱综合| 中文超碰视在线| 96人人操人人操人人| 九九这里只有精品| 丁香五月婷婷激情尤物| 夜夜久久综合网| 激情小说色五月| 色婷婷五月影视| 婷婷性爱网| 丁香五月激情综合婷综| 色色色综合| 99色热综合| 色优久久| 五月丁香激情片| 另类专区在线| 激情文学 综合 色| AV九九| 丁香五月影院| 免费看欧美成人A片无码| 六月丁香成人| 少妇人妻偷人精品无码视频新浪| 久久成人天| 亚洲精品V天堂中文字幕| 五月天婷婷色在线视频免费观看| 色婷婷网| 丁香五月av在线| 婷婷中合| 久久a热| www.亚洲激情.com| 久青操| 2015超碰| 丁香五月影院| 天天色综合综合| 亚洲9久久精品| 99国产小视频| 怡红院成人AV| 五月天综合网| 婷婷四色成人综合色视| 99在线播放| 婷婷色片| 99热欧| 婷色天堂| 色99日韩| 天天日夜夜草进麻麻的子宫| 开心五月婷婷综合在线精品素人| 99热这里只有精品2| 九九色中文| 亚洲 精品 综合 精品| 91se在线视频| 伊人六月丁香婷婷| 五月天婷婷情色| 五月婷视频| 久久与婷婷| 超碰99热精品在线| 久久五月综合| 五月香六月婷| 久久激情视频99| 色五月激情五月| 精品A√| 色婷婷五月综合在线| 噜噜噜久久| 99热99色| 任你搞在线观看视频| 色婷婷五月天久久| 内射激情在线| 久久婷婷网| 在线只有精品| 丁香五月影视| www.五月.com| 六月色色婷婷| 色五月首页| 成人网在线观看视频| 夜夜骑天天操| 97深爱伊人综合| 欧美婷婷九月| 999热视频精品99免费在线| 狠狠干综合| 色色99色色| 五月丁香六月停停停| 婷婷五月天色色| 天天色天天舔天天爱天天爽| 色色色色热热| 久久久久五月丁香| 超碰在线免费观看日韩| WWW久久久| 亚洲久久婷婷| 狠狠擼综合| 99人人操人人爱久久久| 精品一区久热| 九九在线精品| 六月丁香久久| 国产成人AV在线| 淫荡综合网| 婷婷欧美偷拍综合| 九九人妻福利| 婷婷五月激情的图片| 色九九一二| 欧美三级A做爰在线观看| 久艹大香蕉| 美女100%露全身无挡网站| 激情久久丁香| 七七色色综合| 久青操| 97婷婷五月丁香| 精品人妻伦九区久久AAA片| 97欧美在线| 久久精品视频9| 丁香婷婷久久激情| 婷婷久久五月天亚洲欧美国产日韩在线观看| 色色性爱视频| 日本va欧美va欧美va| 五月熟妇婷婷久久| 开心五月色婷| 岛国av电影网站| 亚洲中文无码成人| 成人欧美一区二区三区在线观看| 立川无码av| 久久婷婷综| 国产特黄色精品一区二区三区精品无广告| 日本黄色一级| 美国少妇性做爰| 婷婷丁香激情综合色情| 日本婷婷| 日本在线视频www色| 老司机日日夜夜青草| 久久久久久丁香五月| 婷婷六月色丁香视频在线观看| 色色操| 丁香九月久久| 五月丁香婷婷激情在线视频| 丁香五月婷婷骚视屏| 五月天婷婷色播在线网| 天天做 天天爱| 天天天摸夜夜夜玩| 人人爱人人草| 99这里只有精品视频| 激情婷婷五月天| 99精在线| 丁香五月花影院| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 婷婷激情九月| 疯狂做受XXXX高潮A片| 小视频一区 | 欧美综合激情五月丁香| 这里只有精品1| 色丁香五月婷婷| 婷婷综合在线| 五月天另类视频| 色私五月婷婷| 五月激情影院| 激情五月婷婷色色| 久热这里只精品| 无码地址| 丁香五月激情五月开心五月| 久久99操| 国产亚洲成AV人片在线观黄桃| 丁香婷婷五月份| 婷婷丁香五月天色色| 伊人九九综合| 涩涩涩婷婷| 精品国产va久久久| 久9热| 超碰在线免费观看日韩| 五月丁香六月婷| 蜜桃婷婷丁香| 天天插天天射| 婷婷99中文字幕| 激情五月婷婷伊人| 爱久综合| 日日插日日干| 办公室少妇激情呻吟A片在线观看| 色护士综合| 欧美久久婷婷| 五月天婷婷综合| av国产精品| 99视频久久久| 亚洲aV写真天天综合网久久| 精品人妻伦一二三区久久| 丁香97综合| 激情啪啪五月天| 久久99网| 伊大人久久| 性五月激情| 人人摸人人| 国外亚洲成AV人片在线观看| 啪啪啪大香蕉| 99在线视频播放| 天天干天天av天天射| 婷婷偷拍网| 五月婷婷综合视频| 亚洲第二AV| 久久久jd| 五月婷在线| 丁香五月天婷婷激情| 亚洲欧美在线观看| 午夜 外网 精品 在线| 激情综合五月| 日本激情91| 欧美内射AA| 欧美男女婷婷| 色导航色婷婷五月天在线观看| 无码激情AAAAA片-区区| 99久久综合网| 九九综合影音先锋| 热99re| 色婷视频| 日韩一66精品| 亚洲国产精品VA在线看黑人| www.伊人天堂偷偷婷婷| 成 人片 黄 色 大 片| 精品思思久久| 任你草| 性爱AV天堂| 五月天综合在线| 人人干99| 色色射| 国产 码在线成人网站| 五月婷婷三级| 青草青草久热这里只有精品| 色播丁香| 天天日夜夜帕| 大香蕉Av在线| 夜夜操天天干| 天天模,夜夜模夜夜爽| 人妻丰满精品一区二区A片| 婷婷欧美激情综合| 婷婷色五月大香蕉在线| 丁香久久| 91精品久久久久久| 99人妻碰碰久久久禁片| 久久婷婷五月综合伊人| 久久狠婷婷| www.射伊蕉婷婷| 国产成人在线精品| 丁香五月天啪啪| 人人操AV| 婷婷六月中文字幕| 欧美日韩中国| 久久婷婷五月天| 成人色站,在线视频,看片-SS1AV| 婷婷综合仓库中文| 大香蕉久久久| hd五月婷婷在线| 色色999三级片| 五月花免费视频| 色婷天天| 五月伊人91| 婷婷色五月天在线| 99re99热| 久久婷婷综合色丁香| 成人综合视频在线| 天天 日综合| 婷婷五月丁香激情图片| 五月婷婷六月丁香综合在线| 性天天中文网| 色欲人妻综合aaaaaaaa网| 国产乱妇乱子在线播视频播放网站| 伊人久久五月天| 婷婷精品综合| 强辱丰满人妻HD中文字幕| 久草xx性爱视频| 99热这里有精品首页10| 香蕉久久av一区二区三区| 天天色天天色天天色天天色天天色| 99九九热视频免费| 国产毛片精品一区二区色欲黄A片| 婷婷丁香五月亚洲免费| 婷婷色播色五月五色五月天色妇| 第1影院之五月婷婷| 在线综合网| 色J香五月天| 久久98| 久久九九99视频| 9999久久久久| 日本婷婷色日| 色婷婷六月精品| 99九色视频在线观看| 天天草女人| 五月激情视频| 日日日日日| 五月天色五月天| 99精品热视频| 亚洲免费av观看| .精品久久久麻豆国产精品| 另类精品视频在线观看| 99热这里只有在线| 五月天色婷婷图片| 国产日批视频| 99精品无码视频| 99狠狠操一| 大香蕉在线99热| 婷婷欧美| 婷婷五月激情图片| 99热精品在线观看| 性视频久久| 久久人妻www| 伊人久久婷婷五月天激情四射| 黄网免费观看| 大香蕉婷婷五月| 久久性爱激情| se婷97| 久草婷婷网| 天天拍天天操| 99热这里只有精品8| 五月天淫乱视频| 99色免费观看全部| 日日舔夜夜操| 夜夜爽天天爽| 亚洲五月停停| 五月天综合网| 玖玖爱资源站| 久久婷婷五月天| 日韩人妻在线观看| 99热爱爱干干日| 综合网啪| 五月天综合久久| pom538精品视频| 激情图片婷婷丁香五月| 香蕉狠狠爱视频| 亚洲色色色| 久久激情网| 天天干天干| 亚洲狠狠干| 婷婷伊人网| 日本五月婷婷| 色呦呦美女| 极品另类| 尔尔AV一区| 狠狠干夜夜干| 大地资源色婷婷视频在线| 激情五月综合网| 极品人妻VIDEOSSS人妻| 综合久久五| 丁香婷婷综合影院| 大香蕉婷婷久久| 亚洲AV综合在线观看| 亚洲99综合| 99精品热| 五月天激情AAAA| 五月开心深深爱激情综合| 丁香五月婷久久| www.色婷婷.com| 91视频一起草| 天天天天干| 粉嫩AV久久一区二区三区| 九九综合影音先锋| 婷婷欧美激情| 日韩狠狠色婷婷| 五月天婷婷黄色| 婷婷五月丁香香蕉| 国产在这里只有精品| www.久久99| 好叼操在线观看| 婷婷欧美激情| 六月婷伊人| 欧美va在线| 大香蕉久热| 亚洲精品亚洲人成人网| 色婷婷成人久久| 99热免费精品| 久久婷出差欧美色两性综合网| 色婷婷在线视频综合| av人人干| 亚洲亚洲人成综合网络| 日本精品九九九| www。五月天激情| 色色色色av777| 综合五月天| 色五月激情综合网| www.久久婷婷| 天天操天天操| 日本色色图| www.91五月| 日韩av在线电影| 九九热99精品| 五月天婷婷视频| 欧美A片在线视频免费观看| 欧美色97| 99热这里只有精品18| 少妇高潮一区二区三区99欧美| 亚洲精品又粗又大又爽A片| 一起操 91N.com| 亚洲视频在线观看99| 综合一本道| 丁香在线视频| 色婷婷AV在线| 99re热视频这里只精品| 极品人妻VIDEOSSS人妻| 99人妻碰碰碰久久久久禁片| 天天操人人干| 91无码一起草| AV五月丁香| 黄色三级日本| 熟女啪啪视频| 天天草比天天爽| 无码人妻少妇色欲AV一区二区| 97日在线视频| 综合久久五月天| 三级黄色大片视频| 欧美激情丁香五月天久久婷婷一区| 开心激情站| 婷婷9月天| 性 色 婷婷| 99久久网站| 激情五月婷婷视频一区二区三区| 五月婷婷激情综合拍| 丰满老熟妇BBBBB搡BBB| 激情视频婷婷五月花| 天天干天天做| 999久久久国产精品| 亚洲色A| 国精产品一区一区三区免费视频 | 欧洲不卡视频| 久久婷婷夜| 九九99一区| 亚洲无码性爱| 五月好婷婷| 久久色六月| 伊人超碰| 大香蕉五月婷婷丁香| 婷婷性爱无码视频| 极品人妻VIDEOSSS人妻| 婷婷综合网伊人| 狠狠狠狠狠干| 激情亚洲婷婷六月| 青青久久五月天丁香婷婷| 亚洲 无码 中文字幕 中出| 99精品在线播放| 激情五月天婷婷久久久久久久久久久| 五月婷婷六月丁香| 日韩无码人妻一区二区三区综合| 搡BBBB搡BBB搡五十| 激情网狠狠干| 色99久草在线| 欧美黄色韩日网| 久xxxx| 久久久27操| 婷婷午夜精品久久久| 婷婷五月天Av| 五月丁香六月婷婷精品| 国产在线aaa片一区二区99| 色五月在线| 思思久久99热只有频精品66| 亚洲情a| 激情丁香五月天图片| 丁香五月婷婷在线| 激情欧美婷婷| 99丁香婷婷综合网| 婷婷色婷婷| 九九五月天| 五月丁香久久| 深爱五月网| 狠狠爱五月婷婷| 婷色五月| 色五月婷婷啪啪五月| 1024在线视频| 综合色播| 五月天色婷婷基地| 丁香久月婷| 日韩aaaaa| 九九热这里只有精品9| 婷婷伊人五月丁香天堂网| 99热这里都是精品| 爱草视频在线观看| 玖玖99精品视频| wwwss在线观看| 另类图片 五月激情| 91seAV| 另类视频在线| 99视频网| 五月天天天综合| 97操碰日本女人| 色综合九九| 涩涩婷婷五月| 玖玖综合网| 久久精彩视频18| 99操逼视频| 99色播| 久久久性爱网| 色婷婷很很丝袜| 亚洲区视频| 婷婷五月丁综合| 五月丁香美女视频| 99内射视频| 日本不卡高字幕在线2019| 99激情| www.丁香黄色五月天人与| 久久婷婷综合基地| 久久久色情| 97色婷婷| 精品人人操| 久久这里有精品视频| 五月天婷综合网站| 婷婷伊人久久| 99热99在线精品| 野战J办公桌椅H| 婷婷六月色| 天天插综合| 五月天婷婷色播| 激情五月综合网| 九月色婷婷综合| 五月天婷婷综合色| 被强行糟蹋的女人A片| 色婷婷操逼| 久久综合丁香激情五月| WWW.桔色成人.COM| 五月天丁香| 久热超碰91| 狠狠色综合五月| 丁香五月激情综合在线观看| 色很很96| 久热九九| 婷婷久久五月天| 日本操片| 久久久五月天网站| 亚洲综合成人网站| 久久婷婷五| 丁香五月玖玖| 91热在线观看视频| 色噜噜狠狠狠狠色综合久欧美| 精品夜夜澡人妻无码AV| 免费观看的av| 成人综合网站| 搡BBBB搡BBB搡18| 免费视频无码| 538在线精品| 无码少妇高潮喷水A片免费| www.夜夜操.com| 久久精品这里只有精品免费首页| 天天色亚洲| 日本一级黄色电影| 亚洲天堂热| 五月丁香啪啪啪| 99热综合| 狠狠久久婷五月综合色| 久久久久97| 日本少妇AA一级特黄大片| 日本人妻久久| 踪合专区啪啪| 欧美操人| 丁香五月日啪| 色五月视频,小说| 国产亚洲精久久久久| 91精品久久久久久综合五月天| 99热无码首页| 色色五月综合| 91九色丨国产丨爆乳| 九九99免费视频| 激情婷婷五月久久| 日韩成人精品一区久久久久| 深爱1激情网| 激情五月天偷拍综合网| 色综合婷婷| 开心激情站| 无码视频国内精品久久久| 国产精品24r| 超碰爱爱爱| 9久热| 丁香五月大片| www色五月| 亚洲综合在线视频| 99原创自拍视频在线观看| 久久99久久99www| 99久久99视频| 精品99久久久久成人网站免费| 五月激情综合深爱| 99色热视频| 精品亚洲国产成人A片在线鸭王| 丁香啪啪中文字幕| 亚洲永久免费| 99精品久久久久久久婷婷久久| 九九性爱网| 丁香五月天激情综合| 五月婷婷很很色| 综激情网| 午夜无码精品色综合久久| 99成人| 风流少妇A片一区二区蜜桃| 99精品手机在线视频| 亚洲综合99| 亚洲激情精品| 成年人丁香五月| Av免费网站在线| 天天干一干| 久久丁香婷| 伊人婷婷青青cao| 久久人妻视步| 99热精品在线播放| 亚洲XX网| 久久机热这里只有精品| 99re思思热久久| 人人操碰| 99久久思思| 啊V视频在线观看| 99热九九九九| 日日操夜夜爽天天天| 97人妻碰碰碰久久香蕉| 狠狠婷婷日韩| 五月天婷婷丁香花| 思思热在线播放| 金品在线视频99| 婷婷五月丁香色情| 夜夜干夜夜操| 婷婷欧美激情综合| 婷婷综合精品视频97| 一级黄色影片| 色播六月| 97九色视频| 亚洲无码九九九| 婷激情五月| 欧美大肥婆大肥BBBBB| 99操中文视频| 9久热在线视频精品| 国产女生爱爱AA| 四色女婷婷| 成人做爰高潮A片免费视频| 日本婷久久| 久久久人妻| 久久五月婷综合网| 婷婷激情五月天小说| 亚洲无AV在线中文字幕| 日本激情ⅩXX免费视频| 丁香九月激情| 五月婷婷久久综合| 天天色天天射天天日| 丁香六月婷婷色XXXXX| 91热视频| 五月亭亭综合五码| www.色多多婷| 丁香网五月天激情| 99热每日| 亚洲第一精品成人999久久精品| 激情操逼婷婷| 天天操天天操天天操| 欧类av怡春院| 亭亭五月激情亚洲在线| 五月丁香六月激情| 日日狠狠久久偷偷四色综合免费 | 影音先锋人妻出差| 亚洲欧美综合7777色亭亭| 深爱激情网噜噜色| 婷婷亚洲在线| 五月天啪啪| 伊人五月天久久| 99热国产免费| 久久在这里99| 五月天激情网站| 五月亚洲激情| 九九艹女| 天天干一干| 婷婷欧美综合| 99免费在线视频| 五月天婷婷在线啪啪视频| 少妇被下春药玩弄A片| 激情五月com| 免费观看日韩成人av| 久久丁香五月天| 另类 在线| 99re热视频这里只精品| 婷婷美女精品视频| 日韩国产AV播放| 99精品综合视频| 黄网网站在线播放| 国产精品第一国产精品| 婷婷色网站| 婷婷丁香五月亚洲17cao| 亚洲激情五月| 色99网| 亚洲十月婷婷综合| 91在线视频综合| 五月天六月色| 深爱激情av| 丁香五月人妻| 五月天开心网| 五月天另类视频| 国产亚洲99久久精品| 97精品人人A片免费看| 丁香五月婷婷影院| 久久婷婷五月综合| 日本久久色| 草一草avb| 五月社区婷婷激情| 98永久精品| 五月婷婷丁香六月| 天天摸天天透天天舔| 人妻久久做| 色yeye欧美| www.婷婷六月天| 五月天综合影院| 超碰狠狠操| 日韩av高清| 99精彩视频| 综合图片色色| 欧美激情xxxXX| 丁香五月综合久久| 青草青草视频2免费观看| 久久人人妻| 伊人成人宗合网| 强奸幻女毛片| 激情五月婷婷综合| 思思re99视频在线观看| 精品三区影院| 这里有精品99| 久久狠婷婷| 爱99干99| 五月婷婷香| 久久这里只有精品8| 日日操夜夜爽天天天| 色五月天丁香婷婷| 嫩草视频。| 国产激情久久久| 99re热在线视频观看| 九九综合| 九九综合色| 免费观看的av| 久色五月| 婷婷五月丁香基| 婷婷在线播放av| 人人爱干人人爱草| AV在线观看网站| 五月婷综合| 人人爽欧美婷婷久久久五月丁香| 丁香五月婷婷日本| 婷婷色五月天在线观看| 色9999日韩国产| 五月激情综合网| 天天五月情| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 97亚洲色 torrent magnet| 久久精品99久久久久久久久| 五月丁香六月激情| 精品国产乱码久久久久久免费| 五月天伊人网| 色五月综合| 五月丁香色婷婷久久| 九九这里都是精品| 激情小说视频图片网| 色婷婷五月综合网| 激情亚洲婷婷六月| 狠狠狠激情网| 婷婷色色综合激情| 婷婷五月丁香六月伊人网| 99re这里只有精品99| 六月婷婷av| 丁香五月激情啪| 一起草无码| 中文AV在线观看| 综合网啪| 91九色 婷婷| AV性爱在线| 五月婷婷丁香色吧网| 日日操人人操| 婷婷色情五月| 婷婷六月丁香欧美视频在线| 亚洲色优| 色播五月天激情| www.色九月| 五月久久婷婷丁香| 久操人妻| 日韩另类| 成人做爰A片免费看网站找不到了 国产露脸150部国语对白 | Va另类视频| 狠狠色狠狠色综合日日91| 人人舔天天| 色五狠狠| 99九九在线视频| 91美女被操| 婷婷色六月| 亚洲精品又粗又大又爽A片| 狠狠精品干练久久久无码中文字幕| 99国产精品白浆在线观看免费| 婷婷综合性爱网| 开心久久网婷婷| 99碰网站| 久久九九怡红院| 日韩无码人妻一区二区三区综合| 五月天婷婷高清无码| 丁香六月欧美| 大香蕉婷婷色| 性一交一乱一交A片久| 蜜臀综合久草| 日本97在线| 天天人人综合| 淫水导航| 亚洲激情综| 日本片日本片祼观看网站在线看中文版网页在线看 | 天天久久狠狠色综合| 干亚洲天堂| 五月开行婷婷色五月| 六月撸婷婷| 五月婷在线| 国产综合A片| 99久久精品色老| 激情伍月 欧美| 精品人妻久久久久久| 99国产在线| 五月亭亭六月激情| 天天干电影| 大香蕉啪啪啪| 人人操人人添人人摸97| 99精品国产在热久久| 操一操插一插| 五月天婷婷久久| 五月精品99综合| 爱操人妻| 婷婷色丁香六月| 丁香五月天视频| 久久艹网| 丁香五月另类小说在线阅读| 婷婷五月天国产| 极品人妻VIDEOSSS人妻| www.色九月| 婷婷色五月色妇| 中文字幕不卡+婷婷五月| 97爱艹婷婷开心丁香激情综合| 婷婷爱爱蜜臀天天操| 色五月六月婷婷| 人人爱国产| 亚洲蜜乳AV| 婷婷深爱色五月| 五月婷在线观看| www.1024久久| 夜夜天天久久婷婷| 另类激情五月| 中文字幕综合色| 91精品熟女| 97人人做| 综合久久首页| 五月天激情婷婷五月天久久| 深夜男女福利刺激影院一区完整| 新男人天堂人妻| www.伊人天堂偷偷婷婷| 99热综合| www.久久久久久| 99re这里只有精品视频了| 涩涩五月天| 任你草| 婷婷 丁香 精品| 欧美久久久中文字幕| 一根材五月婷成人| 色色色成人网| 五月丁香六月婷婷成人| 天天干夜夜谢| 人妻在线观看视频| 99亚洲大片精品永久在线观看 | 婷婷激情丁香五月天综合| 激情四射婷婷| 久久亚洲天堂| 五月丁香六月综合激情无码软件亮点| 久久婷婷六月综合资源| 激情亚洲网| 人人操97| 色婷精品91| 91凹凸在线| 婷婷五月色| 大香蕉啪啪啪啪啪啪| 婷婷色狠狠| 99福利视频导航| 狠狠色婷婷六月激情网| 白人荫道BBWBBB大荫道| 亚洲性爱干干| 天天日夜夜爽| 色播播之激情五月婷婷| 99色热| 狠狠88综合久久久久噜噜噜| 99久久综合网| 婷婷五月 丁香六月| 在线日韩视频| 色五月丁香一区在线| 欧美在线| 丁香五月婷婷激情123| 五月色情| 99er6热在线观看精品6| 91 久热| 婷婷五月天堂| 亚洲色夜| 成人在线日韩| 婷婷激情五月天天天开心| 99久re热视频精品98| 久久6这里只有精品| 大战熟女丰满人妻AV| 五月婷婷影视| 亚洲殴洲精品Av在线| 欧美色色色色色| 人人操女人| 国产激情AV| 97五月天婷婷午夜| 影音先锋自拍网| 色亚洲欧洲| 色色色五月婷| 小视频久久久aaa| 久久视频婷婷视频| 婷婷六月成人| 九九热最新| 婷婷五月天成人| 国产精品扒开腿做爽爽爽A片唱戏| 天堂婷婷丁香六月网| 狠狠干狠狠操狠狠爱| 久久婷狠狠色| 亚洲成色综合网站免费观看| 色婷婷综合久久| 欧美五月婷婷| 一级片sese片.COM| 99精品视频免费观看近期发布| 成人精品亚洲性爱| 99re免费精品视频| 国产真实乱了老女人视频| 深爱1激情网| 久热91精品| 国产精品扒开腿做爽爽爽A片唱戏 亚洲爆乳无码精品AAA片蜜桃 | 日本久久综合| 亚洲日韩一页精品发布| 五月亭亭狠狠| 日本熟女视频一区二区| 伊综合蕉| 婷婷五月天激情四射| 婷婷开心激情综合五月天| 色欲久久久久久综合网综合网| 热九九精品| 色婷婷基地| 婷婷月五天在线在线看| 久777| 97人人操人人爽| 婷婷免费无视频| 九色91国产| 久久婷婷五月综合色区| 婷婷久热| 欧美日韩AAA| 99精品视频免费在线播放| 天堂网操| 99爱爱| 亚洲秘 无码一区二区三区妃光/1| 色五月xxx| 久人操| 操老逼综合网| 99热精品在线观看| 人人草人| 亚洲天堂AAA| www.99久| 亚洲天堂九九九| 成人国产欧美大片一区| 另类 在线| 思思热久久久在线| 丁香五月六月久久综合| 免费看无码视频A级| 激婷网| www久| 色五月婷婷综合在线| 丁香五月激情无码视频| 青青草性爱视频| 亚洲色激情| 人人操婷婷| 亚洲中文字幕在线观看| 亚洲综合在线视频| www.婷婷| 丁香六月伊人| 秋霞电影理论| 天天综合亚洲综合网天天αⅴ| 激情图片99| 天花AV无码| 91丨九色丨国产| 丰满女老板BD高清A片| 天天干天天干天天干天天干天| 色天五月天在线观看视频| 婷婷五月六月丁香综合| 婷婷AV丁香| 婷婷和五月天| 久99视频在线观看| 欧美色97| 99碰| 亚洲黄3级片网站欧美| 九月婷婷综合在线| 九九九干精品| 婷婷五月天A V| 亚洲天堂AAA| 99在线精品视频免费| 日韩成人电影AV| 久久免费操| XX久久| 91免费看片| 五月天婷婷情色| 狠狠色丁香婷婷| 亚洲天堂碰碰婷婷| 97sese婷婷| 色约约视频一区二区三区四区五区 | www久热com| 开心五月婷婷99| 天天爽天天草| 五月丁香六月香综合激情| 婷婷五月天激情五月天网站| 天天热夜夜操| 五月天色网站| 韩国三级五月天婷婷。| 六月丁香色婷婷| 色偷偷色婷婷| 激情六月婷婷| 六月婷婷啪啪| 婷婷精品免费久久| 五月婷婷天| 激情综合亚洲| 日本乱子人伦在线视频| 91干婷婷| 俺去婷婷 丁香| 色婷在线视频| 丁香婷婷五月六月久久| 九九99免费视频| 天天天天天天天干| 激情婷婷丁香色情五月天| 狠狠色 综合色区| 91婷婷五月天嫩女| 激情图片久久| 婷婷视频网| 国产乱子轮XXX农村| 色婷婷色丁香色欲av| 综合久久99| 无码激情AAAAA片-区区| 九九精品大香蕉| 日本黄色精品| 九九色人| 操笔无码| 天天操天爱综合| 99re这里只有| 天天干天天色综合| 亚洲亚洲人成综合网络| 91精品久| 久久五月激情综合| 久久久久亚洲A∨成人乱码电影| 爱的综合网| 五月丁香婷婷综合网| 亭亭五月色男人| 成人AV在线中文版| 久久玖玖综合| 99国产小视频免费观看| 欧美成人五月天| A片一曲| 久久九九视频网站| 99热亚洲精品66| 91操片| AA片在线观看视频在线播放| 人人操人人看97干| 色综天天综合| 婷婷五月天另类网站| 日韩久久色| 亚洲成人无码专区| 中文色婷婷| 色五月天在线| 99ri在线| 99干免费视频| 久九色| 午夜激情五月天| 能看的av网站| 日笨久久网| 99爱这里只有精品| 99热免费| 成人做爰高潮A片免费视频| 影音先锋天天日| 激情五月综亚网| 久久婷婷网站| 午夜激情四射影院| 久热精品视频在线观| 激情五月婷婷丁香| 久久99国产综合精品免费| 波多野结衣AV无码Porn| 婷婷六月中文字幕| 欧美久久婷婷| 99人人干人人操| 狠狠搞综合色| www.91久久| 超碰在线94| 五月婷婷免费| 婷婷97| 99色五月| 夜夜爽天操| 色婷婷丁香五月| 色五月成人| 欧美日本另类| 久热久69| 天天摸天天舔天天爽| 九九九色综合| 五月丁香久久色| 狠狠操狠狠干综合| 国色天香成人网| 99久久综合| 在线网黄| 99热在线看| 99青青草| 五月婷婷视频| 小视频aaa久久久| 99久久6| 91婷婷在线| 婷婷成人五月天| 国产a视频| 秋霞三及片| 99综合五月免费视频色婷婷| 五月婷婷色综图片| 天天操天天操天天操天天操天天操| 午夜爱爱网站| 久久精品夜色噜噜亚洲a∨| 秋霞网在线免费基地五月婷婷丁香| 26UUU精品一区二区Com| 久久精品99国产精品日本| 丁香五月天色综合| 欧美日韩aaa| 精品思思久久| av中文在线| 日韩另类| 另类在线| 欧美婷婷| 人人草人人爱| 久热这里只有国产| 日日操日日撸| 亚洲欧洲99| 激情久久久| 成人婷婷桔色| 在线看的免费网站| 天天成人综合视频| www.婷婷久久五月天|