免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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久久| 91九色精品熟女内射| 色婷婷AV在线| 又大又粗九一在线| 日本色五月| 99综合一区| 性生活视频98791| 久99热| 26uu| 丁香六月开心| AV无码免费| 久久97| 99色网站| 欧美激情凹凸丁香网| 免费国产视频| 71在线精品视频一区| 狠狠干夜夜干| 色爱亚洲| 色五月婷婷中文字幕| 狠狠爱五月婷婷综合六月| 色五月五月婷婷| 深爱丁香网| 久久99免费视频网站| 91丨九色丨东北熟女| 日日插日日干| 天天操电影院色狼性av| 99热日韩| 婷婷精品性性性性性性性| www.色9| 亚洲电影在线观看| 免费看欧美成人A片无码| 五月天激情小说网| 婷婷五月在线视频| 国产午夜精品一区二区| 激情六月婷婷| 色色色地址| 五月开心激情网| 五月丁香婷婷在线综合蜜桃| 99热6这里之有精品| 精品99视频| 操比激情五月| 六月激情网| 牛牛澡牛牛爽| 伊人激情网| 色综合性视频| 思思久热| 综合婷婷五月天| 丁香五月 无码| 97婷婷丁香| 日本偷拍九九九| 丁香五月天激情综合| 九九热思思| 96性爱视频| 丁香五月香蕉在线| www·五月天| 五月婷婷开心亚洲无| 超碰国产av| 六月婷婷日| 五月婷婷色播| 六月婷婷私欲| 亚洲情欲| 人妻人人操| 一级黄色操B| av一区二区电影免费在线观看| 91精品激情9| 亚洲精品一区中文字幕乱码| 1024亚洲无码| 任我鲁这里有精品视频| 久久久婷| 天天爽天天透天天爱| 五月婷婷色男女| 丁香五月婷婷亚洲色图| 五月婷婷丁香社区| 天天爽夜爽| 婷婷九九| 免费在线观看AV网站| 爱久久小说下载网| 五月 成人 婷婷| 婷婷六月丁香欧美视频在线| 激情久久久久| 色色欧美。| 五月色亭丁香| 婷婷丁香射射| 色偷偷狠狠| 欧美人妻一区二区| 丁香五月色| 国内一级片| 91啦丨九色丨刺激中文| 91久久久久久久久久久| 丁香五月在线观看完整版| 丁香婷婷激情网站| 任你草| 亚洲国产精品VA在线看黑人| 91超碰在线观看| 天天搞天天色综合| BBWCUCKOLD精品熟妇| 五月天大香蕉av| www.玖玖婷婷在线| 狠狠狠狠狠狠狠狠草| 五月婷在线播放| 欧美性猛交99久久久99| 精品香蕉99久久久久网站 | 免费视频在线观看的网站| AV亚洲在线| 91艹人| 国产一级片| 天天插夜夜爽| 超碰久热| 五月丁香啪。| 色色网站免费观看| 丁香色婷婷| Y11111111111少妇电影院| 日本色色网站| 亚洲日韩乱码一区二区三区四区| 六月丁香av| 免费99情趣网视频| 天天插天天爽| 99热久| 日日日影院| 亚洲人妻av| 99热草草| tingtingzonghewang| 色五月欧美| 国产精品18久久久| AV九九| 五月婷婷六月丁香激情| 天堂美国久久| 婷婷深爱网| 99色视频在线| 都市激情久久| 日日天天干| 欧美久人人| 综合天堂AV久久久久久久| 久久大香免费| 人妻精品一区二区三区| 丁香五月天激情四射网络不好| 梁铮版《蜘蛛女侠》在线| xx久久| 91n网站cad入口在线观看| 天堂爱爱| 成人国产欧美大片一区| 婷婷色色综合激情| 国产成人精品一区二三区熟女在线 | 五月天综合网| 伍月婷婷免费视频| 一级黄色影片| 四五月婷婷| 99re熱| 六月婷婷色综合| 欧美婷婷色| 99免费成人网| 色欧美一级| 天天做天天爱天天日| 色婷五月天| 五月婷婷与六月丁香图片激情| 丁香五月手机在线| 色狠狠综合网| 天天天天天日| 五月丁香拍拍激情综合| 亚洲第一成人AV| 婷婷五月天色网久| 伊人大香久久| 婷婷五月激情图片| 丁香婷最新动态| 大香蕉av在线| 丁香激情网| 9er热在线精品视频| 国产成人av在线| 99re视频在线播放| 天堂成人A片永久免费网站 | 99热在线这里| 成人中文字幕在线| 色婷婷激情| 99精品在线观看| 超碰国产在线| 婷婷开心综合人妻小说网址| 99re免费视频| 91操碰| 丁香无月在线观看| 在线看片h站| 99热黄| 99热的无码| 久久精品凹凸分类| 五月99久久| 色天使色婷婷| 日韩中文字幕| 五月天伊人久久久久| www,色婷婷| 婷婷色五月天在线| 日日操天天| 偷拍九九五月丁香婷婷| 极品人妻VIDEOSSS人妻| 无码99| 97久久超碰| 免费看欧美成人A片无码| 国产一级婬片毛片| 99碰网站| 婷婷福利影院| 99热国产国产| 婷婷欧美激情| 五月婷婷玖玖综合玖玖爱| 日日夜夜婷婷| 天天干天天干天天干天天干天天| 黄色三级日本| 五月亭亭欧美女人| 五月婷婷很很色| 丁香五月日韩| 99热这里只有精品16| 久久精品五月天| 亚洲网站观看视频| 国产成人网站在线观看| 99这里热| 五月天婷婷在线播放免费| 久久久宗合| 色婷婷呢狠禁久禁| www.狠狠| 色停停香蕉视频| 亚洲欧洲中文日韩久久AV乱码| 噜噜精品| 五月婷婷丁香六月在线| 99惹| 91狠狠综合久久久久久| 亚洲无码11| 亚洲妇女熟BBW| 伊人久久大香线蕉av最新| 亚洲天堂AAA| 狠狠大香婷婷爱| 色玖玖综合| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 精品51XX| 日韩无码一区二区三区四区| 色综合丁香| 影音先锋男士资源网一区| 91狠狠综合久久久| 日韩无码专区| 丁香久久久| 五月丁香六月婷婷在线播放| 婷婷久久六月费| av大香蕉| 丁香五月 综合| 亚洲欧美综合7777色婷婷| 另类图片五月天激情| JAPANRCEP老熟妇乱子伦视频 | 性爱视频久久| 丁香五月激情婷婷| 欧洲色色| 国产精品视频久久99| 精品婷婷五| 超碰免费大香蕉| 丁香综合久久| 久9免费视频| 色情五月| 色色丁香婷婷综合| 99色这里| 综合xx网| 五月婷婷深爱六月| 天天操屄网| 婷婷五月六月丁香综合| 热99在线| 亚洲AV综合网| 色综合激情| 五月激情婷婷丁香| 97在线观看| 激情五月综合| 五月婷婷啪啪啪啪| 五月丁香888| 日韩一级网站| 丁香五月1页| 日韩九九| www.99热在线观看| 欧美激情-区二区三区| 欧美黑人大吊| 91操操操| 色婷婷久久综合中文久久一本| 欧美综合激情五月天| 99久久婷婷五月天| 色呦呦美女| 五月婷婷激情性爱| 色色色综合网| 无语停婷丁香网| 久久大香蕉伊人| 色www.con| 啊V视频在线观看| 五月婷婷在线丁香| 久草xx性爱视频| 99在线视频观看| 六月丁香成人| 亚洲性受XXXX五月丁香| 久草xx性爱视频| 久久丁香五月天| 婷婷综合久久| 久久99精品久| 性色播| 婷婷色系婷色| 成人网在线视频| 久久一热| 禁片二区| 五月综合激情久久| 久久这里只精品| 色五月激情| 最近免费中文字幕大全高清大全1 色狠狠色噜噜AV天堂五区 | 狠狠干在线| 91婷色| 五月婷色| 激情综合在线观看| 丁香五月婷婷手机| 成人丁香五月| 中文字幕综合| 欧美亚洲婷婷五月| 99免费视频| 婷婷丁香五月综合激情小说| 97碰在线| 一起肏在线视频| 日本a片网址| 婷婷综合色播网| 久草大| 爱iii做iiii日| 精品久久久999| 思思久久思思| 香蕉久久国产AV一区二区| 91女人18毛片水多国产| 色黑鬼导航| 欧美日本另类| 99热伊人综合| 欧美综合激情五月天| 亚洲天堂热| 婷婷六久久| 26uuu色噜噜精品一区| 2025天天日爽| 精品自拍99| 九九热再线九九视频免费在线观看| 婷婷五月丁香基地| 91免费试看| 日韩草草草草草草草草草草草草| 婷婷丁香激情综合色情| 精品无吗va视频免费观看| 日本三级中国三级99人妇网站| 97超级碰碰碰| 《蜘蛛女》梁铮1995| 无码激情AAAAA片-区区| 天天天操天天天爰| 婷婷综合视频| 五月六月播婷婷| 丁香六月婷| 五月天婷婷激情四射综合| 色播五月丁香婷婷| 免费观看欧美成人AA片爱我多深| 婷婷丁香六月影视| 极品少妇XXXX精品少妇偷拍| 综合色天天| 99这里只有精| 色5在线| 九九色欲网| 99人妻碰碰碰久久久久视| 九月丁香五月婷婷| 丁香五月婷婷激情蜜桃| 婷婷五月成人系列| 碰碰碰97免费精彩视频| 九九视频在线| 七七九色| 天天日,天天插| 亚洲综合视频网| 91疯狂操操操操| 丁香五月综合在线视频| 九月av在线| 99热6这里只有精品| 亚洲正能量欧美| 五月丁香六月香综合激情| 亚洲综合五月天婷婷| 五月丁香婷色| 97操碰日本女人| 久久人妻伦理| 五月丁香无码| 丁香五月激情婷婷| 就爱射中文字幕资源网| 亚洲视频在线网| 色婷婷AV久久久久久久| 人橾人| 婷婷五月天综合久久| 久久久久久99精品无码| 99这里只有精品| 婷婷丁香五月激情中文字幕版| 日日影院 | 国产精品成人av在线观看春天| 99热综合在线观看| 色播播五月天| 亚洲精品va| 天天精品视频在线观看视频| 26uuu偷拍亚洲欧洲综合| www999日韩精品| 丁香五月1页| 99ER热精品视频| 五月丁香在线综合| www色婷婷久久综合久色| 国产肥白大熟妇BBBB视频| VA婷婷亚洲| 九9九9无码| 五月天激情影院| 性生活久久朋友人妻| 一操久久| .精品久久久麻豆国产精品| 丁香欧美| 99ri视频| 去色色五月天| 日日夜夜天天综合| 婷婷五月丁香综合激情| 国产永久一二一起草| 丁香花综合永久入口| 伊人婷婷五月天| 五月婷婷co.m| 97AV在线视频| 超级碰碰视频无码| 精品亚洲国产成AV人片传媒| AV成人在线网站| 色5月婷婷色| www.99热| 97丁香婷婷| 五月永久激情| 丝袜大香蕉| 久草免费福利视频| 97干在线视频| 婷婷综合精品| 色爱亚洲| 五月丁香无码| 91精品91久久久久77777| 久久人妻人人| 激情色视频| 激情五月综合色| 奇米影视在线视频| 少妇2做爰HD韩国电影| 久久99精品久久久久久三级| 1010日日无码| 五月丁香在线偷拍视频| 久久五月丁香伊人青草| 综合色情网| 色五月自偷自拍婷婷婷婷| 香蕉人妻AV久久久久天天| 中文字幕视频在线播放| 久久婷婷六月综合综合| 亚洲a色| 婷婷五月天影视网址| 99色热视频| 美女被肏网站在线看| 激情综合五月天| 久热这里只有| 日本天天色| 在热视频精品| 亚洲情a| 日韩六六久久电影| 婷婷五月开心中文字幕在线| 亚洲激情五月婷婷日日| 伍月激情天| 做爱夜夜干天天操| 玖月婷婷爱丁香| 久草 天堂| 91久久久久久久91| 久99久精品| 综合玖玖偷拍| 无码yw| 五月天婷婷丁香花| 蜜桃婷婷丁香综合久久开心亚洲| 爱射综合| 99操| 高清无码视频网址| 日本三级日本三级99| 97视频久久| 激情综合五| 五月婷婷av| 久机视频这只有精品| 五月丁香花开综合网| 99九九视屏| 人妻尝试久久久久久久久久久久| 综合网五月天123| 这里只有精品免费视频在线观看| 俺也去在线视频| 天天色天天爱天天爱天天爱y| 亚洲最大五月六月丁香婷婷| 五月综合视频| 五月天激情小说| 婷婷五月激情小说| 综合色色五月| 亚洲成片在线观看| 久久99操| 激情婷婷综合| 五月丁香六月婷婷视频| 五月色综合| 婷婷天堂综合| 思思久久99热只有频精品66| 亚洲天堂制| 综合久久久婷| 婷婷久久午夜网| 成人婷婷深爱综合网| 99色看| 五月丁香婷婷成人网| 性色天| 九九色99| 日韩精品一区二区三区,四区,五区视频| 久cao香蕉影院| 一婬一伦一区二区三区| 婷婷五月丁香五月丁香| 五月天色婷婷网| 超碰99资源站| 日本人人超碰| 大香蕉五月天| 亚洲欧州色情在线观看| 色色五月天激情| 成人.在线日韩| 超碰色女人| 天天舔夜夜操www com| 亚洲综合狠狠艹| 天天综合久久| 丰满少妇猛烈A片免费看观看| 久久机热探花| 综合在线丁香五月| 五月婷婷激情网| AⅤ网站在线看| 欧美大香蕉视频| 去干网最新版本亚洲版| 99视频久久| 亚洲传媒在线观看| 丁香五月婷婷五月天在线| 日日插日日干| 国产伦亲子伦亲子视频观看| 久婷首页| 五月婷婷丁香在线视频| 六月婷婷中文字幕| 婷婷久久性爱| 色色综合色| 另类图片五月天| 日本97在线看片| 婷婷丁香五月天婷婷| 99热这里只有精品2| 五月婷婷激情网| 久久五月天丁香花| 五月天自拍网| 99色色网| 66精品国产成人| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 熟女激情五月天| 狠狠操狠狠| 九九热99熟女| 五月丁香激情综合网| 大战熟女丰满人妻AV| 99激情在线| 99色精品| Av在线资源| 五月婷婷丁香大陆免费| 九九热超碰| 色播六月| 激情丁香婷婷| 91人妻人人操人人爽| www.99热这里只有精品| 五月丁香婷婷欧美色图视频五月丁香777电影 | 无码任你操| 97色精品视频| 1010日日无码| 五月天另类小说久久小说网| 色婷婷视频综合| 97人碰人操| 五月婷婷六月激情网| 亚洲操操| 影音先锋激情网| 丁香婷婷久久| AV美美午夜| 亚洲乱码日产精品BD在线观看| 欧美操人| 99热在线播放| 久久婷婷五月综合色播| 国产性av| 婷婷五月天黄色小说| 中文AV网站| 激情丁香五月婷婷啪啪| 超级碰 久久9| 激情五月天在线视频| 色婷婷色和| 第四色婷婷丁香五月| 人人操碰| 六月久久婷婷| 久久五月婷婷电影| 怡红院精品视频久久久久久久久| 99热在线观看亚洲区| 婷婷综合中文字幕| 毛片毛片毛片毛片| 97操碰人人| 翔田千里 50岁 无码| 婷婷亚洲影院| 成人国产欧美大片一区| 五月婷婷亞洲中文| 日亚二欧美| 丁香婷婷性爱| 色青青五月| 亚洲传媒在线观看| 激情九色| 同性gv国产精品一区二区| 强辱丰满人妻HD中文字幕| 久久成人精品视频| www.五月丁香| AA丁香综合激情| 五月丁香狠狠地噜噜噜噜| 九九热99在线视频| 久久综合丁香激情五月| 人妻肉射免费观看| 国产综合婷婷| 青草视频在线播放| 五月天激情四射网站| 《诡秘之主》在线观看| 久久看九九90| 另类专区在线观看| 伍月婷婷六月丁香| 欧美在线干| 人妻第九页| 激情六月天婷婷| 久久这里面只有精品视频| 色色五月天 亚洲| 五月丁香91| 色 五月婷婷基地| 激情五月,激情综合网| 丁香婷婷久久| 激情丁香九九五月综合网| 五月丁香WWW| 激情综合色婷婷啪啪六月天| 午夜少妇在线观看视频| 国产精品视频免费看| 97色五月天| 97综合色片| www。久久久久一b。Cc| 91色久| 久久欧洲综合网| 丁香五月首页| 亚洲第二AV| 午夜大香蕉| 99这里有精品视频| 这里只有九九精品| 亚洲日本激情| 婷婷爱爱蜜臀天天操| 成人龟情网丁香五月| 五月婷婷大香蕉| 色五月综合在线| 色五月av伊人| 99热福利| 久久性视频| 国产AV网页| 亚洲精品字幕在线观看| 任你爽视频| 五月天婷婷影院影院观看| 日日干日日色| 66精品国产成人| 2020日日干| AV网址大全在| 婷婷色狠狠| 五月婷婷色欲| 亚洲中文字幕在线观看| 五月丁香影院| 九九aV| 99超级碰免费视频| 97干欧美| 日熟女| 色五婷婷开心缴| 欧美综合五月丁香五月天| 婷婷五月天另类视频| 五月五婷婷网| 色八月婷婷| 九九热色视频| 丁香五月天偷拍| 香蕉久久国产AV一区二区| 久久综合无| 午夜九九九九九九九九九九九九九| 成人精品网站在线观看| 色五月开心久久网| 人人叉久| 操人久久| 六月丁香久久| 欧美狠狠草| 5月婷婷综合| 天天草人人摸| 人人人人人人人人人草| 婷婷六月婷婷| 思思热久久爱| 啪啪小说五月天| 五月婷婷激情五月| 9l视频自拍九色9l视频自拍九色9l社区| 激情综合五月天| 六月久久婷婷| 狠狠操天天干| 天天射网站| 精品9久| 丁香五月成人自拍| 成人Av在线大片| 在线视频另类| 玖玖在线资源视频| www久热com| 亚洲另类视频| 无码啪啪| 乱精品一区字幕二区| 91丨九色丨国产| 91在线观看www| 9福利性视频欧美| 天天做天天爱高潮片| 思思久久精品视频| 99热这里只有精品在线播放| 国产性爱一级| 99热精品在线| 九热视频免费观看| 中文字幕av久久爽一区| 五月激情开心婷婷| 五月丁香六月婷婷在线观看| 国产免费AV网站| 日韩免费视频| 久久99久久久久久久噜噜| 91九色在线| 在线观看玖玖资源免费观看| 婷婷成人视频| 五月丁香激情综合网| 国产首页在线| 日日干五月天婷婷| 激情开心五月天婷婷基地丁香社区| 五月丁香六月婷婷啪啪| 超碰99在线| 丁香五月婷婷婷桃花影院| 丁香六月开心| 79精品视频在线观看,| 人人爱国产| 大香焦A∨| 操操啪| 99re热视频这里只精品5| 激情综合亚洲| 欧美一黄一色一乱一伦| 久久这里只有精品5| 狠狠色噜噜色狠狠狠综合久久成人波| 97干在线视频| 99热在线网站| 翔田千里无码| 五月婷激情| 美女伊人久久| 丁香五月婷婷成人网| 国产亚洲99久久精品| 热99.com婷婷| 激情五月天之六月婷婷| 欧美六月| 中文av在线观看| 色色色综合视频| 1024操逼视频| 婷婷丁香色女人| 人人爱干人人爱草| 夜夜 操无码| www.cao.com久久| 激情五月综合六月丁香婷婷狠狠干| 香蕉婷婷色五月| 波多野结衣成人作品在线| 久久AAAA片一区二区| 婷久久| CAOBIBI| 丁香五月综合在线播放 | 99在线观看精品| 婷婷五月丁香性爱| 色青五月天| 精品一二三区久久AAA片| 第四色激情网| 五月天婷婷免费| 狠狠干在线| 六月婷婷在线视频| 香蕉99网| 5月婷婷五月天| 成人无码髙潮喷水A片| 五月丁香激情片| 亚洲操b| 色婷婷AAA| 亚洲在线操| 天堂成人久久| 97影院一级片| 99热在线精品播放| 碰碰91| 婷婷无码视频| 婷婷99狠狠躁天天| 色欲婷婷五月天| 99热亚洲| 色五月首页| 99re思思热久久| 天天五月丁香五月| 久久人妻精品| 久久婷婷五月草视频在线播放| 婷婷爱五月天| 五月婷婷久久开心网| 综合五月天| 激情婷婷丁香色情五月天| 色狠狠色噜噜AV天堂五区| 丁香婷婷丁香五月欧美人| 丁香激情网| 天天拍久久| 日本波多野结衣视频| 天天天操天天天日| 亚洲午夜Av| 日韩性视频| 久久久久久天天日天天爱| 最近中文字幕大全免费版在线 | 天堂二区| 丁香六月综合| 综合色色婷婷| 婷婷色婷婷| 五月婷婷深爱六月| 综合色视频| 婷婷五月综激情| 五月婷丁香花| 综合色色五月| 激情婷婷五月| 日本在线视频www色| 国产成人99久久亚洲综合精品| 婷婷五月中文在线| 最新无码专区| 91无码高清| 激情网战码亚洲A| 久久大香蕉丁香| 亚洲激情五月天| 亚洲午夜AV| 99国产在线精品视频| 色色色色色色网站| 九九黄色网| AV大片在线播放| 久色大| 26UUU成人网| 在线看AV| 亚洲无码播放| 激情五月天网页| 26uuu偷拍亚洲欧洲综合| 丁香五月成人网| 日日夜夜综合| 色婷婷视频| WWW.五月com| 中文字幕在线观看视频www| yazhouzonghesese| 97在线/亚洲| 婷婷色影音天| 激情色播| 五月天婷婷在线AN| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 久久综合55| 超碰国产在线| 五月婷婷六月丁香色| 婷婷六月色| 69人人操人人爽| 综合色播| 99在线精品视频| 熟女五月天久久综合| 99资源在线视频| 影音先锋美国A| 久久久久久综合88| 色狠狠色综合| 五月丁香综合激情在线观看| 天天综合91入口| 男女啪啪做爰高潮无遮挡 | 五月婷婷欧美| 97超喷视频在线观看| 天天日天天摸| AA久久| 夜夜撸天天操| 五月丁香六月婷婷免费| 五月丁香免费视频| 久热在线观看视频9| 九九精品热| 影音先锋一区| 涩五月婷婷| 激情六月一二| www.伊人天堂偷偷婷婷| 天天性视频| 超碰色综合| cao久久| 亚洲无码免费看| 国产日韩精品SUV| 久久激情五月| 婷婷久热| 婷婷久久精品| 四色五月婷婷| 99久久久| 狠狠插日日干撸| 丁香五月天精品| 天天拍夜夜撸| 久久这里只有精品5| 99热新网址| www激情网站| 婷婷五月丁香A∨| 婷婷五月丁香性爱| 五月天婷婷激情六月久久| 亚洲精品久久久久久久久久飞鱼| 婷婷深爱五月天| 直接看的AV| 色五月网址| 色色色综合网| 久久机热/这里只有精品| 九九99免费视频| 成人在线精品| www.超碰| 欧美25p| 狠狠色综合网站久久久久| 亚州色婷婷| 婷香五月| 丁香六月激情综合| www超碰| 色噜噜婷婷| 亚洲婷婷五月天| 被强行糟蹋的女人A片| 国外亚洲成AV人片在线观看| 亚洲V国产V欧美V久久久久久| 国产欧美熟妇另类久久久| 中文字幕网伦射乱中文| 国产黄色在线观看| 99碰碰碰| 9久久AV| 日韩久热| 成人va在线观看视频| 另类图片五月天婷婷| 99热日本| 婷婷五月激情视频| 六月婷婷视频| 久久只有精| 婷婷五月天色网久| 天天夜夜爽| 激情99| 91操碰| 欧洲第一无人区观看| 久草婷婷在线| 99热超碰天堂网| 五月丁香 啪啪| 天天五月香欧美| 99只有这里是精品| 婷色五月天| 思思热在线视频精品| 河北真实伦对白精彩脏话| 香蕉99网| 91操熟女| 亚洲丁香五月深爱五月| 婷婷五月视屏| 婷婷99狠狠躁天天| 怡红院AV亚洲一区二区三区H| 99视频热99| 婷婷少妇激情| 婷婷亚洲五月丁香综合在线| 五月天久久综合婷婷丁香| 亚洲六月色婷婷| WWW.桔色成人.COM| 狠狠综合色网| 青青草a在线| 丁香色五月婷婷| 丁香五月激情婷婷| 欧美在线ee日韩| 啊v视频在线观看| 五月婷六月丁香| 五月丁香无码| 在线看片h站| -91九色大屁股| 婷婷激情五月综合丁香社| 午夜亚洲国产精品av一区二区| 青青草国产亚洲精品久久| 91疯狂操操操操| 色人五月婷婷| 久婷婷婷| 久久五月丁香综合| 色狠狠五月天| 婷婷狠狠色| 双性美人被调教到喷水A片| 色色影院黄大片| 五月婷婷开心色伊人| 日本99色| 婷婷综合仓库中文| 综合网色| 噜噜五月天综合| 婷婷亚洲综合| 色婷婷A| 99免费视频网| 99这里都是精品| 久久久久8888| 五月天婷婷婷| 丰满少妇乱A片无码| 97热在线精品| 五月色丁香视频精品| AV九九| 另类专区在线| 婷婷色色婷婷| 人妻在线观看视频| dingxiangtingtingliuyue| 5月色亭亭视频| 五月花婷婷| 九久久精品视频99| 久99久在线| 思思热视频在线观看| 天天色综网| 99高级会所久久| 日韩成人电影AV| 婷婷五月天午夜激情影院| 色噜噜在线| 中文中文在线| 亚洲成色综合网站免费观看| 99亚州综合精品成人网| 97色97干| 婷婷五月天影视首页| 激情婷婷五月社区| Www.婷婷五月| 欧美午夜乱妇午夜福利| 成人必爱视| www五月| 六月丁香久久| 成人网站在线观看视频| 超碰资源在线| 久久五月天色婷婷| 综合激情肏逼网| 99热在线观看免费精品| 久久婷婷六月综合综合| 五月婷婷亞洲中文| 伊人在线另类| 79色色色色| 激情色情五月天| 韩国天天婷婷| 六月色婷婷综合影视| 激情五月丁香亭亭| 操逼巨乳91| 婷婷在线综合| 亚洲啪啪视频| 色五月婷婷亚洲| 丁香九月婷婷| 91久久久久久久| 色之综合网| 超碰v| 天天日天天做天天操| 日本成人内射| 亚州色色色| 九月婷婷激情| 99热国产精品| 人人爽在线视频综合网| 全部老头和老太XXXXX| 激情五月丁香在线观看直播| 日本V在线观看不卡视频网站| 精品皮股午夜AV| .comwww在线观看免费操| jiZZdr| 女同激情久久av久久| 亚洲色网络| 深爱激情小说五月婷婷| 丁香狠狠干| 99热这里只有精品16| 婷婷激情视频| 久久思思热| 亚洲性色XXXXX| 啪精品| 丁香五月天色婷婷| 狠狠狠狠狠狠狠狠草| 婷婷狠狠青青| 婷婷色啪| 亚洲综合新99视频| 欧美人人草草| 亚洲99综合| 久久五月丁香激情综合| 色色色色色色色色色色色色色色,网站| 天天插天天射| 夜夜涩涩涩| 婷婷五月欧美AA片免费| 中文字幕在线免费| 五月婷婷六月丁香激情综合网| 色综合77777| 99自拍视频网站| 五月综合777| 成人资源在线| 国产在线aaa片一区二区99| 九九精品网| AV色五月婷婷| 任你搞在线观看视频| 思思热99热| 久久人妻伊人| 天天日日夜夜爽| 91综合色噜噜| 亚洲五月婷婷| 亚洲另类视频| 成人婷婷色五月天| www.精品久9| 国产美女无遮挡裸体毛片A片| 亚洲激情免费视频观看| 九九蜜臀精品| 亚洲Av成人在线观看| 国产激情综合五月久久| 亚洲操B| 伦99热| 色啪综合| 日本天堂网站99| 99无码视频| 五月丁香六月综合激情| 婷婷丁香人妻| 久久婷婷影院| 秋霞av不能| 四川女人毛多水多A片| 另类综合激情| 天天做天天摸| 婷婷五月天亚洲天堂| 高清视频一区| 很很色丁香久久停停| 亚洲蜜桃精久久久久久久久久久久| 激情五月天啪啪| 五月天激情啪啪| 色婷婷在线视频久| 激情久久综合| av无码电影| 人操91在线| 国产69久久久欧美黑人A片| 国产日韩av片| 偷拍九九热| 天天射影院| 五月色婷婷综合| av在线激情| 激情五月婷婷五月丁香五月开心五月| 思思热精品免费视频| 五月天婷婷日日爱| 综合婷婷| 综合色影| 久久婷婷五月激情综合| 久热A片| 国产熟妇乱子伦hd| 婷婷激情五月| 青草激情综合| 色区久久| AV在线大香蕉| 色丁香五月| 五月天激情图片| 婷婷六月丁香欧美视频在线| 色五月成人在线| 能看的av片| 激情婷婷丁香色五月综合| 五月婷婷新网站| 99久久丝| 丁香五月六月久久综合 | 五月天激情四射| 五月婷婷久久综合| 在线成人网站| 91久久婷婷| 久久人人九九| 天天肏视频| 午夜丁香| 99热地址| 99日韩| www久久久| 97色碰| 日韩成人精品中文字幕| 欧美色五月| 亚洲日韩一页精品发布| 一级操逼大片| 亚州成人综合在线| 日本久久极品| 2022人人操人人看| 9福利性视频欧美| 九九久久五月天| 天天插天天狠| 丁香五月婷婷动漫视频| 天天干天天操天天上| 情婷婷五月天| 久久这里有精品| 99激情网| 久久99精品视频| 做爰丰满少妇1313| 99热99精品在线观看| 久久婷婷大香蕉| 九九色播五月丁香| 日韩欧洲亚洲| 综合久色五月| 婷婷五月丁香网| 日本爆乳片手机在线播放| 婷婷伊人中文字幕| 99热精品在线在线| 91免费啪视频| 热99精品视频| 开心深爱五月天| 99免费视频在线观看爱| 狠狠色大香蕉| 婷婷丁香18| 丁香五月欧美婷婷综合| 99色.com| 五月婷丁香花| 五月天激情开心网| 99啪啪网| 五月婷婷色| 色爱爱综合网| 婷婷五月丁香六月| 婷婷操逼网| 五月综合久久| 成AV人片一区二区三区久久| 五六月婷婷久久| 欧美熟女99| 五月天婷婷影院影院| 久9久成人精品视频| 亚洲欧洲另类| 任你搞在线观看视频| 99,色| 啪啪亚洲综合| www.超碰| 五月婷婷综合在线视频| 激情视频网址| 丁香五月中文字幕久色| 九九久久五月天| Blackedraw视频一区二区| 九九狠狠干| 99riAv1国产在线观看| 五月天激情无码专区| 9999久久久久| 色9999综合久久| 婷婷偷拍网| 五月丁香激情综合久久| 色99视频| 99九九视频| 草婷婷在线| 五月天激情亚洲| 久碰久| 99在线观看视频蜜臀| 亚洲色网络| 亚洲欧美在线观看| 欧日韩成人| 丁香狠狠色婷婷久久无码视频| 婷婷丁香色五月| 99伊人婷婷在线| 色视五月天婷婷| 色色色综合网| 九草性爱| 亚洲第一视频 久久| 日日噜噜夜夜狠狠久久丁香六月| 六月丁香开心婷婷欧美| 国产六月婷婷| 天天射综合网站| 国产超碰av| 丁香婷婷六月激情| www久久久| 九九99热久久精品66中文字幕| 亚洲综合狠狠艹| 99久热| 美日韩成人| 丁香婷婷激情六月五月开心| 日韩精品视频中文字幕| 久久婷婷五月国产激情综合片| 五月天婷婷无码| 婷婷丁香五月天激情四射| 久热这里只有精品在线观看| 婷婷丁香成人| 大香蕉九九热| 婷婷天天婷婷天天澡| 亚洲色欲AAAAAA| 裸睡玩奶头(高H)| 五月天天天综合| 26uuu亚洲| 超碰人人超碰| 91丨九色丨白浆秘| 激情无码网| 伊人激情影院| 丁香色影院| 婷婷深爱五月| 91久草五月天婷婷| 色五月婷婷五月天激情综合| 久久综合26p| 五月综合影院| 玖玖色综合色| A A色色| 中日韩美欧成人一区二区精品在线| 国内裸舞二区| 丁香九月婷婷| 婷婷综合网在线| 丁香六月啪啪| 色9色| 亚洲欧美在线观看| 国熟女视频| 久久黄色片| 丁香六月婷婷姐网| 色色综合热| 色七七色九九|