久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

數(shù)據(jù)可視化建模與自動(dòng)布局:從數(shù)據(jù)結(jié)構(gòu)到可復(fù)用圖編輯器

數(shù)據(jù)可視化建模與自動(dòng)布局:從數(shù)據(jù)結(jié)構(gòu)到可復(fù)用圖編輯器 “diagram-design”這個(gè)項(xiàng)目名第一眼容易讓人覺(jué)得只是個(gè)畫圖Demo但實(shí)際上它要做的事是“把一張圖變成一套可描述、可計(jì)算、可復(fù)用的數(shù)據(jù)模型”。我在拿到這個(gè)項(xiàng)目時(shí)很快就意識(shí)到它的重點(diǎn)不是“畫得好看”而是“讓圖自己會(huì)排、會(huì)算、會(huì)適配”。簡(jiǎn)單來(lái)說(shuō)它解決的是手工拖拽畫圖效率低、后期維護(hù)成本高、圖表表達(dá)不一致這三類老問(wèn)題。無(wú)論是做架構(gòu)圖、知識(shí)圖譜、依賴關(guān)系圖還是項(xiàng)目匯報(bào)里的數(shù)據(jù)流向圖只要是需要把復(fù)雜關(guān)系可視化的場(chǎng)景這個(gè)工具鏈都值得參考。適合想自己實(shí)現(xiàn)一個(gè)可視化編輯器的前端開(kāi)發(fā)、需要搭建低代碼圖表平臺(tái)的技術(shù)負(fù)責(zé)人以及準(zhǔn)備做圖形化表達(dá)但不知道如何拆解實(shí)體、關(guān)系、布局、渲染四層關(guān)系的初學(xué)者。1. 項(xiàng)目到底解決了什么問(wèn)題1.1 手工畫圖的三個(gè)老大難我在很多項(xiàng)目里看到團(tuán)隊(duì)用白板工具或者繪圖軟件畫各種圖剛開(kāi)始很爽畫完發(fā)出去也很有面子。但最多兩個(gè)月問(wèn)題就集中爆發(fā)業(yè)務(wù)變了要改字段、加模塊可原圖的作者已經(jīng)不在這個(gè)組了剩下的人只能重新畫一遍又或者同一套數(shù)據(jù)在不同人手里畫出了三種風(fēng)格匯報(bào)時(shí)老板問(wèn)“到底哪個(gè)是準(zhǔn)確的”沒(méi)人敢拍板。這類問(wèn)題的本質(zhì)是“圖的語(yǔ)義沒(méi)有和數(shù)據(jù)綁定”。圖只是一張圖片而不是一組結(jié)構(gòu)化對(duì)象。diagram-design的項(xiàng)目思路不同它把圖拆成了節(jié)點(diǎn)Node、連線Edge、分組Group和標(biāo)注Annotation并把這些元素映射到一份配置文件里。這樣當(dāng)數(shù)據(jù)源變化時(shí)圖可以自動(dòng)刷新而不是讓人去手動(dòng)移動(dòng)箭頭。另外一個(gè)我特別在意的問(wèn)題是“改圖成本”。很多團(tuán)隊(duì)會(huì)把系統(tǒng)架構(gòu)圖畫進(jìn)文檔里架構(gòu)一變文檔就過(guò)期翻新文檔又沒(méi)人愿意干。如果圖本身是由代碼或配置生成的那么每次提交代碼時(shí)順帶更新配置文檔圖就永遠(yuǎn)是最新的。這是我始終認(rèn)為“配置即圖表”比“拖拽即圖表”更值得投入的原因。1.2 從“畫圖”到“描述圖”的思路轉(zhuǎn)變傳統(tǒng)繪圖工具的交互邏輯是“選中-拖拽-對(duì)齊-微調(diào)”它更偏向藝術(shù)家視角而diagram-design更傾向于程序員視角你描述圖里有哪些實(shí)體、它們之間有什么關(guān)系、方向是什么、層級(jí)怎么定義剩下的位置計(jì)算交給布局算法。我舉個(gè)最簡(jiǎn)單的例子一個(gè)依賴關(guān)系圖A依賴BB依賴CC又依賴A。如果用手工畫連線的交點(diǎn)會(huì)讓你頭大。但如果用布局算法先把三者的依賴關(guān)系抽象成一張有向圖再用拓?fù)渑判蚺袛鄬蛹?jí)然后用同層對(duì)齊算法計(jì)算每層的上下順序最后用正交連線算法把邊轉(zhuǎn)化成橫平豎直的折線那整個(gè)過(guò)程就是“數(shù)據(jù)進(jìn)圖形出”完全不需要人干預(yù)。這個(gè)思路非常核心它帶來(lái)的好處有幾點(diǎn)數(shù)據(jù)驅(qū)動(dòng)圖中的每個(gè)節(jié)點(diǎn)可以直接對(duì)應(yīng)數(shù)據(jù)庫(kù)里的一張表、接口里的一個(gè)字段、運(yùn)維平臺(tái)里的一臺(tái)機(jī)器。確定性強(qiáng)同一份配置永遠(yuǎn)生成同一張圖不會(huì)因?yàn)楫媹D的人不同而風(fēng)格迥異??蓴U(kuò)展要加新的節(jié)點(diǎn)類型、連線樣式、布局策略都只是增加一個(gè)類或一段配置的問(wèn)題。1.3 項(xiàng)目邊界與適用場(chǎng)景認(rèn)清邊界比急著寫代碼更重要。diagram-design不適合做成Photoshop那種自由畫布工具它更適合做“半結(jié)構(gòu)化”的可視化場(chǎng)景。什么意思就是用戶能調(diào)整節(jié)點(diǎn)位置和分組區(qū)域但圖的總體結(jié)構(gòu)仍然由數(shù)據(jù)模型和布局算法決定。判斷一個(gè)場(chǎng)景適不適合這類項(xiàng)目我一般看三個(gè)條件數(shù)據(jù)是否有明確的實(shí)體關(guān)系圖是否需要頻繁更新多人協(xié)作時(shí)是否需要保證表達(dá)一致性。如果三個(gè)條件至少滿足兩個(gè)那diagram-design這類方案就比通用繪圖軟件合適。典型場(chǎng)景包括業(yè)務(wù)流程圖、系統(tǒng)架構(gòu)圖、微服務(wù)調(diào)用圖、組織架構(gòu)圖、知識(shí)圖譜預(yù)覽以及數(shù)據(jù)血緣分析面板這類需要嵌入到后臺(tái)產(chǎn)品里的局部功能。2. 核心模塊拆解與方案選型2.1 數(shù)據(jù)模型圖的抽象層級(jí)diagram-design的底層不是面、線、顏色這些視覺(jué)概念而是數(shù)據(jù)模型。我設(shè)計(jì)這個(gè)項(xiàng)目時(shí)把模型分成四層第一層是Graph它是最頂層容器保存全局屬性比如畫布尺寸、縮放比例、布局類型。第二層是Node節(jié)點(diǎn)必須包含id、type、position、size、data五類信息其中data是業(yè)務(wù)數(shù)據(jù)體和圖形展示解耦。第三層是Edge保存source、target、direction、points它描述兩節(jié)點(diǎn)之間的關(guān)系但不關(guān)心箭頭長(zhǎng)什么樣。第四層是ViewState記錄用戶縮放水平、已展開(kāi)的分支、被選中的節(jié)點(diǎn)等交互狀態(tài)。這個(gè)分層最大的好處是“數(shù)據(jù)層和渲染層可以獨(dú)立測(cè)試”。我經(jīng)常先只寫一堆JSON跑一遍布局算法確認(rèn)坐標(biāo)都正確了再去做視覺(jué)美化。如果一上來(lái)就綁定了DOM操作調(diào)試會(huì)痛苦得多。實(shí)際建模時(shí)我建議Node的data字段不要直接塞對(duì)象而是存一個(gè)引用或者key通過(guò)store取出。這樣當(dāng)幾百個(gè)節(jié)點(diǎn)需要序列化保存時(shí)圖描述文件不會(huì)無(wú)限膨脹而且還方便做增量更新。2.2 布局引擎為什么算法是靈魂布局是diagram-design里最容易被低估的部分同時(shí)也是我認(rèn)為最值得細(xì)細(xì)打磨的部分。如果節(jié)點(diǎn)位置全靠用戶手動(dòng)拖那再好的圖形引擎也只是一塊大白板。而要自動(dòng)布局就需要一套可插拔的布局策略。我初期實(shí)現(xiàn)時(shí)只做了三種足夠覆蓋80%的業(yè)務(wù)場(chǎng)景層級(jí)布局適合依賴關(guān)系圖、流程圖核心是用最長(zhǎng)路徑分層再按層內(nèi)規(guī)模做垂直對(duì)齊。力導(dǎo)向布局適合知識(shí)圖譜、社交網(wǎng)絡(luò)圖用彈簧模型讓關(guān)聯(lián)緊密的節(jié)點(diǎn)自然靠近。網(wǎng)格布局適合工單看板、卡片大盤純粹按照行列排布簡(jiǎn)單直接。布局算法必須保證“無(wú)重疊”和“連通性可見(jiàn)”。很多初級(jí)實(shí)現(xiàn)容易踩的坑是算完坐標(biāo)后節(jié)點(diǎn)疊成一團(tuán)連線全部穿過(guò)節(jié)點(diǎn)。這個(gè)問(wèn)題沒(méi)有銀彈只能通過(guò)兩個(gè)手段規(guī)避布局前對(duì)圖做連通分量劃分把不相關(guān)的子圖拆開(kāi)單獨(dú)排列布局后對(duì)每一個(gè)節(jié)點(diǎn)做AABB碰撞檢測(cè)發(fā)現(xiàn)重疊就局部迭代外擴(kuò)。2.3 渲染方案SVG還是Canvas我在這件事上糾結(jié)過(guò)很長(zhǎng)時(shí)間最終結(jié)論是“按場(chǎng)景混用”而非二選一。diagram-design的默認(rèn)渲染層用SVG原因是節(jié)點(diǎn)數(shù)量一般不超過(guò)上千SVG的DOM語(yǔ)義讓事件綁定和樣式定制都太方便了——比如節(jié)點(diǎn)hover變色、點(diǎn)擊彈出詳情面板都是天然支持。而且SVG導(dǎo)出為矢量圖在匯報(bào)場(chǎng)景里很實(shí)用。但是當(dāng)節(jié)點(diǎn)數(shù)量上萬(wàn)時(shí)SVG的DOM節(jié)點(diǎn)壓力會(huì)非常明顯滾動(dòng)和縮放都會(huì)卡頓。所以我額外實(shí)現(xiàn)了一個(gè)Canvas渲染通道專門處理大規(guī)模只讀預(yù)覽場(chǎng)景。這個(gè)通道不處理點(diǎn)擊交互只負(fù)責(zé)把布局引擎算好的坐標(biāo)批量畫成圖像。簡(jiǎn)單說(shuō)SVG通道負(fù)責(zé)“編輯態(tài)”Canvas通道負(fù)責(zé)“展示態(tài)”。這里分享一個(gè)細(xì)節(jié)兩套渲染通道對(duì)應(yīng)同一份數(shù)據(jù)模型用戶在編輯態(tài)拖拽了節(jié)點(diǎn)位置模型里更新position展示態(tài)重新繪制時(shí)直接用新坐標(biāo)。兩個(gè)通道之間沒(méi)有任何同步問(wèn)題因?yàn)楫嫴加肋h(yuǎn)是模型的影子絕不能反過(guò)來(lái)讓DOM成為數(shù)據(jù)源。2.4 交互設(shè)計(jì)拖拽、縮放、折疊交互層容易做得很“重”很多編輯器把拖拽、縮放、框選、連線全部堆在一起。diagram-design我做得相對(duì)克制拖拽是移動(dòng)單個(gè)節(jié)點(diǎn)縮放是按住畫布平移和滾輪縮放分組折疊則通過(guò)點(diǎn)擊分組標(biāo)題欄切換。這三個(gè)交互覆蓋了大多數(shù)查看和微調(diào)需求。值得強(qiáng)調(diào)的是“拖拽過(guò)程中要實(shí)時(shí)觸發(fā)布局重算嗎”這個(gè)問(wèn)題的選擇。我的經(jīng)驗(yàn)是不重算拖拽只是改變VieweState里的覆蓋坐標(biāo)全部拖完點(diǎn)擊“自動(dòng)整理”按鈕才回到布局算法重新排列。這么做有幾個(gè)好處操作響應(yīng)不卡用戶手動(dòng)調(diào)整的結(jié)果不會(huì)被算法搶走真正需要重排時(shí)用戶有明確預(yù)期。另外交互層的所有操作都要進(jìn)入操作歷史棧也就是支持撤銷重做。這看起來(lái)是編輯器標(biāo)配但實(shí)現(xiàn)起來(lái)涉及節(jié)點(diǎn)增刪、位置更新、分組變更等多類操作的類型判定如果不提前抽象成一個(gè)command模式后期填坑會(huì)非常痛苦。3. 實(shí)操過(guò)程從零搭起一個(gè)可用版本3.1 定義數(shù)據(jù)模型的JSON Schema一個(gè)新項(xiàng)目最容易犯的錯(cuò)誤是一上來(lái)就畫界面。我現(xiàn)在習(xí)慣從一開(kāi)始就用一份JSON Schema把數(shù)據(jù)結(jié)構(gòu)釘死界面寫得再快也不如數(shù)據(jù)模型穩(wěn)定帶來(lái)的節(jié)省多。下面是我在diagram-design里用的一份示例配置為了演示做了精簡(jiǎn)但字段結(jié)構(gòu)和高保真版本一致。{ graph: { type: hierarchy, width: 1400, height: 900, nodeDefaultWidth: 160, nodeDefaultHeight: 60 }, nodes: [ { id: svc-payment, type: box, data: { title: 支付服務(wù), status: ready, version: v2.3.0 } }, { id: svc-order, type: box, data: { title: 訂單服務(wù), status: warning, version: v1.9.0 } }, { id: svcpool-mysql, type: cylinder, data: { title: 核心庫(kù)主實(shí)例, role: primary } } ], edges: [ { id: e1, source: svc-order, target: svc-payment, kind: sync-call }, { id: e2, source: svc-payment, target: svcpool-mysql, kind: read-write } ], groups: [ { id: grp-order-line, title: 訂單域, nodeIds: [svc-order, svc-payment] } ], viewState: { zoom: 1, unfoldGroups: [grp-order-line], selectedIds: [] } }這份Schema雖然簡(jiǎn)單但骨架已經(jīng)很完整。注意我在Node里沒(méi)有直接存坐標(biāo)而是交給布局引擎去計(jì)算這樣可以避免手工寫布局造成的牽一發(fā)動(dòng)全身。真正的坐標(biāo)會(huì)保存在運(yùn)行時(shí)的一個(gè)Map里序列化時(shí)也不會(huì)寫進(jìn)配置除非用戶主動(dòng)拖拽形成了覆蓋坐標(biāo)。3.2 編寫一個(gè)輕量的層級(jí)布局算法以依賴關(guān)系圖為例我實(shí)現(xiàn)過(guò)一個(gè)經(jīng)典的分層布局算法核心邏輯分三步拓?fù)浞謱?、層?nèi)排序、坐標(biāo)換算。拓?fù)浞謱拥拇a邏輯如下def assign_layers(graph): indegree {n: 0 for n in graph.nodes} out_edges {n: [] for n in graph.nodes} for edge in graph.edges: out_edges[edge.source].append(edge.target) indegree[edge.target] 1 queue [n for n in graph.nodes if indegree[n] 0] layer {} depth 0 while queue: for n in queue: layer[n] depth next_queue [] for n in queue: for t in out_edges[n]: indegree[t] - 1 if indegree[t] 0: next_queue.append(t) queue next_queue depth 1 # 簡(jiǎn)單處理環(huán)剩余未分層節(jié)點(diǎn)放到最后一層 return layer層內(nèi)排序我通常用的是“減少交叉邊”的啟發(fā)式算法也就是同層節(jié)點(diǎn)按與其前驅(qū)節(jié)點(diǎn)連接數(shù)量的加權(quán)和排序這樣可以大幅降低連線交叉。坐標(biāo)換算則更簡(jiǎn)單同一層節(jié)點(diǎn)按順序放到一條水平線上層與層之間用固定間距縱向排開(kāi)。這個(gè)算法的輸出是一份坐標(biāo)映射表nodeId - (x, y)。整個(gè)過(guò)程不依賴任何渲染代碼所以我可以用單測(cè)驗(yàn)證任意復(fù)雜的依賴圖是否會(huì)出現(xiàn)重疊。這是整個(gè)項(xiàng)目里收益最高的測(cè)試強(qiáng)烈建議把這個(gè)單測(cè)寫起來(lái)。3.3 渲染與樣式系統(tǒng)實(shí)現(xiàn)渲染層我做了一套比較靈活的模板方案每種節(jié)點(diǎn)類型對(duì)應(yīng)一個(gè)渲染函數(shù)傳入數(shù)據(jù)模型返回帶樣式的SVG節(jié)點(diǎn)組件。比如普通服務(wù)節(jié)點(diǎn)渲染為圓角矩形內(nèi)部有標(biāo)題和狀態(tài)圓點(diǎn)數(shù)據(jù)庫(kù)節(jié)點(diǎn)渲染為圓柱形干系人節(jié)點(diǎn)渲染為圓形頭像。這樣后續(xù)增加新節(jié)點(diǎn)類型時(shí)不用改動(dòng)主流程只要新增一個(gè)渲染函數(shù)并注冊(cè)進(jìn)去。樣式系統(tǒng)要與主題分離。我定義了三層主題基礎(chǔ)主題負(fù)責(zé)字體、畫布底色、網(wǎng)格線節(jié)點(diǎn)主題負(fù)責(zé)節(jié)點(diǎn)顏色、描邊、陰影連線主題負(fù)責(zé)直線還是折線、顏色和粗細(xì)。切換深色模式時(shí)只替換主題配置不需要重繪模型。寫渲染代碼時(shí)我踩過(guò)一個(gè)坑SVG的auto換行支持很差text標(biāo)簽不會(huì)自動(dòng)換行。我的解決辦法是在渲染前用Canvas的measureText估算文本寬度如果超出節(jié)點(diǎn)寬度就提前拆行再逐行渲染。以下是一段核心的換行邏輯function splitText(text, maxWidth, fontSize) { const ctx measureContext; // 預(yù)先創(chuàng)建的離屏canvas上下文 const chars Array.from(text); const lines []; let current ; for (const ch of chars) { const testLine current ch; if (ctx.measureText(testLine).width maxWidth current) { lines.push(current); current ch; } else { current testLine; } } if (current) lines.push(current); return lines; }這段代碼看起來(lái)普通但它在實(shí)際項(xiàng)目中價(jià)值巨大。因?yàn)樽詣?dòng)布局算出來(lái)的節(jié)點(diǎn)寬度都是統(tǒng)一的如果標(biāo)題超長(zhǎng)不換行要么溢出到節(jié)點(diǎn)外面要么被裁剪掉兩種情況都會(huì)讓使用者覺(jué)得這個(gè)工具“不太聰明”。做了拆行之后節(jié)點(diǎn)高度會(huì)自適應(yīng)觀感會(huì)提升一個(gè)檔次。3.4 規(guī)?;秩九c性能優(yōu)化當(dāng)圖里節(jié)點(diǎn)數(shù)超過(guò)兩千時(shí)優(yōu)化點(diǎn)的順序就變得很重要。我的實(shí)測(cè)結(jié)論是最先優(yōu)化的不是算法而是渲染調(diào)度和事件委托。先說(shuō)渲染調(diào)度。SVG的appendChild操作過(guò)多會(huì)阻塞主線程所以我把初始化渲染改成了分幀渲染每幀只處理200個(gè)節(jié)點(diǎn)加上requestIdleCallback的權(quán)重區(qū)分高優(yōu)先級(jí)節(jié)點(diǎn)先渲染低優(yōu)先級(jí)區(qū)域后補(bǔ)。這樣即使整圖有五千節(jié)點(diǎn)首屏也不會(huì)白屏。再說(shuō)事件委托。拖拽、點(diǎn)擊這類交互如果給每個(gè)節(jié)點(diǎn)都綁定監(jiān)聽(tīng)器內(nèi)存壓力大且不好清理。我用了事件委托在SVG根元素上監(jiān)聽(tīng)pointermove、pointerup等事件再用data-node-id屬性反查目標(biāo)節(jié)點(diǎn)。這個(gè)方案不僅性能好還能自然支持新增節(jié)點(diǎn)無(wú)需重新綁定事件。第三個(gè)優(yōu)化是視口裁剪。我計(jì)算當(dāng)前視口在模型坐標(biāo)系里的可見(jiàn)范圍只渲染落在范圍內(nèi)的節(jié)點(diǎn)和邊其余節(jié)點(diǎn)全部跳過(guò)。等于說(shuō)無(wú)論數(shù)據(jù)量多大單幀渲染量維持在千級(jí)以內(nèi)滾動(dòng)切換視口時(shí)才增量渲染。三檔優(yōu)化下來(lái)一萬(wàn)節(jié)點(diǎn)在普通辦公電腦上也能流暢平移和縮放這就夠用了。4. 常見(jiàn)問(wèn)題與排查實(shí)錄4.1 文本溢出與節(jié)點(diǎn)尺寸失配癥狀節(jié)點(diǎn)標(biāo)題長(zhǎng)一點(diǎn)就頂出圓角矩形邊界或者兩個(gè)節(jié)點(diǎn)之間重疊。排查思路先看字體度量。SVG里同一字號(hào)在不同操作系統(tǒng)下的實(shí)際渲染寬度不同直接按CSS像素字體估算容易不準(zhǔn)。最佳方案是用離屏Canvas的measureText獲取真實(shí)像素寬度再乘以1.2的系數(shù)做安全余量。另一個(gè)隱蔽因素是邊距。節(jié)點(diǎn)文本的padding如果沒(méi)納入尺寸計(jì)算布局引擎按160寬度排布文本卻需要180那必然溢出。所以我建議預(yù)留8~12像素的padding并且layout引擎計(jì)算碰撞時(shí)要用完整的外部包圍盒也就是sizepadding而不是只用內(nèi)層文本區(qū)域。4.2 連線交叉嚴(yán)重癥狀自動(dòng)布局后一半以上的連線交叉圖根本沒(méi)法看。這是布局算法的問(wèn)題不是渲染bug。交叉的根源往往是層內(nèi)節(jié)點(diǎn)順序不匹配比如source層的A、B對(duì)應(yīng)target層的X、Y如果target層順序是Y、X兩條線必然交叉。我的改進(jìn)方案是給層內(nèi)排序增加“祖先節(jié)點(diǎn)加權(quán)”先統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)到上一層所有連接目標(biāo)的節(jié)點(diǎn)索引計(jì)算中位索引再按中位索引排序。這個(gè)思路能立刻減少大部分交叉。再配合“分段線性插值”折線連接方式讓邊在預(yù)測(cè)空間內(nèi)走正交路徑視覺(jué)上比直線連貫穿插干凈很多。4.3 拖拽后坐標(biāo)漂移癥狀鼠標(biāo)按住節(jié)點(diǎn)拖拽節(jié)點(diǎn)比鼠標(biāo)慢半拍或停手后節(jié)點(diǎn)自動(dòng)跳回原位。多半是坐標(biāo)空間不一致。鼠標(biāo)事件的clientX和clientY是屏幕坐標(biāo)而節(jié)點(diǎn)position是模型坐標(biāo)兩者中間隔著畫布縮放比例和畫布平移偏移量。正確的換算公式是const rect svgRoot.getBoundingClientRect(); const modelX (event.clientX - rect.left - viewState.panX) / viewState.zoom; const modelY (event.clientY - rect.top - viewState.panY) / viewState.zoom;我遇到這個(gè)問(wèn)題的次數(shù)比預(yù)想多而且每次都是在小功能改動(dòng)后復(fù)發(fā)。所以現(xiàn)在會(huì)把這一小段坐標(biāo)換算封裝成一個(gè)函數(shù)并在拖拽啟動(dòng)時(shí)強(qiáng)制讀取一次畫布當(dāng)前的pan和zoom值不依賴內(nèi)存里可能存在延遲的舊狀態(tài)。4.4 導(dǎo)出圖片時(shí)背景和透明問(wèn)題很多編輯器都提供“導(dǎo)出PNG”功能diagram-design也不能少。但默認(rèn)導(dǎo)出經(jīng)常遇到兩個(gè)坑導(dǎo)出背景是黑色導(dǎo)出內(nèi)容只有當(dāng)前視口不是全圖。黑色背景通常是因?yàn)镾VG沒(méi)有顯式聲明fill導(dǎo)出時(shí)被默認(rèn)值覆蓋。解決方案是在導(dǎo)出前給根節(jié)點(diǎn)加一個(gè)白底的rect。全圖導(dǎo)出則需要先讀取模型里所有節(jié)點(diǎn)的包圍盒計(jì)算畫布尺寸然后臨時(shí)把viewBox改為全圖范圍等導(dǎo)出完成后再恢復(fù)原來(lái)的縮放狀態(tài)。這樣導(dǎo)出的圖片在任何平臺(tái)上看都是完整且干凈的。4.5 分組折疊后連線懸空折疊分組本身只是隱藏子節(jié)點(diǎn)但子節(jié)點(diǎn)與其他組的連線如果不處理就會(huì)出現(xiàn)“線從空地牽出來(lái)”的懸空效果。我給分組模型增加了一個(gè)entry節(jié)點(diǎn)和exit節(jié)點(diǎn)分組折疊時(shí)所有進(jìn)出邊先匯聚到分組邊界的錨點(diǎn)再由錨點(diǎn)連接到外部其他分組或其他孤立節(jié)點(diǎn)。本質(zhì)上是在抽象層面做了一次“邊的重連”視覺(jué)層面則靠給折線加垂直邊角來(lái)呈現(xiàn)。這個(gè)細(xì)節(jié)雖然復(fù)雜但做好之后分組折疊功能才能真正可用而不是單純隱藏圖層。5. 關(guān)于這個(gè)項(xiàng)目我最后還想說(shuō)的幾件事diagram-design做到后面我發(fā)現(xiàn)難點(diǎn)已經(jīng)不在視覺(jué)表現(xiàn)而在“如何讓數(shù)據(jù)與結(jié)構(gòu)保持同步”。一份配置對(duì)應(yīng)一張圖這句話說(shuō)起來(lái)輕松但真正常態(tài)化運(yùn)行需要把數(shù)據(jù)校驗(yàn)、布局算法、渲染調(diào)度、交互狀態(tài)管理全部打通。很多人在第一步就被困住了因?yàn)樗麄兛傁胫劝旬嫴甲銎猎倩靥顢?shù)據(jù)結(jié)果每一步都在補(bǔ)洞。根據(jù)我的經(jīng)驗(yàn)最值得提前花時(shí)間的部分是JSON Schema設(shè)計(jì)和布局引擎的單測(cè)這兩塊做好之后后面的渲染和交互都會(huì)順理成章。最后再分享一個(gè)實(shí)用習(xí)慣項(xiàng)目中所有坐標(biāo)輸出都加一份“圖形預(yù)覽調(diào)試面板”每一步布局后能直觀看到坐標(biāo)分布而不是靠console.log猜測(cè)問(wèn)題在哪。這個(gè)面板在后期的性能優(yōu)化和維護(hù)中會(huì)幫你省下大量時(shí)間。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲无码AV九九九| 亚洲黄色电影| 久久婷综合| 国产家庭乱伦表演| 激情文学小说一区二区 | 67914亚洲精品| 亚洲国产av中文字幕久久| 欧美色图99| 丰满搜索结果 -第18页- 久久高清无码| 国产人妖视频一区在线观看| 国产日韩久久| 97资源站日韩| 欧美色图自拍| 操91| 精品久久久久久久久久久久 | 99re99视频在线免费观看| 91色久| 99re公开精品免费视频| 在线观看不卡一区二区三区| 日夜伊人网| 日本高清加勒比| 天堂蜜桃无码视频一区二区| 亚洲色综合| 国产精品视频白浆免费| 99激情视频| yellow网站免费观看日韩高清无码| 国产精品国产精品国产| 蜜臀久久99精品久久久久久成人小说 | 丁香五月综合| 色欲日韩欧美在线一区| 一区二区三区激情在线观看| 一本久道在线综合视频| 精品偷拍13p欧美dodk视频| 国产无码久久高清| av影片在线观看不卡| 日韩有码中文字幕女同性恋| 亚州欧美在线| 国产区在线| 欧美色吧综合| 性欧美91| 91久久| 超碰人妻97| 俞拍久久国应视频| 淫荡网址| 一本精品日本在线视频精品| 中文字幕精品一区二| 国产精品精品系列在线观看| 亚洲精品自拍| 国产AV激情无码久久无码| 亚洲性爱电影| 婷婷五月丁香五月| 亚洲影院小综合| 久久不卡一区二区| 国产精品久久久久久久免牛肉蒲团 | 91 国产丝袜在线放观看| 殴美日韩m| 东京成人一区| 色欧美在线| 久久精品熟妇丰满人妻99| 久久久9999| 亚洲人妻中文在线视频| 综合欧美激情网| 国产懂色精品国产av| 国产AV高清AV无码| 免费的av网| 淫骚熟女一区二区三区| 亚洲亚洲亚洲天堂天堂 | 丝袜剧情| 欧美 日韩 婷婷 五月| 日本精品一区二区三| 91天堂丝袜美腿| 久久啊啊| 人人操我人人干| 精品亚洲黄色片 国产精品导航一区二区| 久久久久成人亚洲国产| 色香阁在线| 久久久久久9999| 日本黄色XXX| 日韩一二三区| 一区二区三区 日韩欧美| 日本肏逼视频在线观看| 精品亚洲俞拍视频一区| 99这里只有精品| 亚洲人成在线放东京热| 日韩三级一区 | 午夜欧美J进J出白浆流出久久久| 91九色丰满高潮| 欧美片第一页| 丁香六月激情| 美女骚尻视频| 亚洲精品一区二区精品| 欧美精品四区| 97欧美日韩综合| 日韩综合无码色欲vv| 久热超碰| 欧美日韩亚洲少妇寂寞影院正在播放 | 免费啊啊啊| 蜜臀久久久99久久久久 | 日韩中文字幕国产| 国产欧美一区二区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲乱熟女一区二区三区大香蕉| 婷婷另类小说| 亚洲电影中字一区二区| 91成人精品| 日韩综合成人免费视频| 丰满人妻一区二区三区在线| 女色综合| 久久思思热| 亚洲素人综合| 国产超碰人人操| 欧美久久婷婷| 91国产操逼视频| 99精品久久久久久久婷婷蜜桃| 少妇三P| 91亚洲色图| 色综合久久久久| 国产视频第2页| 欧美Ⅴ性爱| 东京太热久久久| 日产精品久久久一区二区| 18禁免费视频| 亚洲天堂日本| 特级丰满少妇一级AAAA爱毛片| 色女综合| 思思视频免费看网站| 夜夜爽33333| 欧美日本成人一区二区| 欧美最婬乱婬爆婬性视频| 亚洲天天自拍| 久久精品国产99国产精品亚洲| 日产操逼| 久久久性爱视频| 天天操人人操狠狠插| 在线观看午夜婷婷久久久久清性观看| 久操com| 91五月天| 无码抄逼网| 四季av一区二区凹凸精品小说| 亚洲天堂无码| 蜜臀久久99精品久久久久久婷婷| 人妻天堂综合网| 亚洲色图欧美一区二区不卡| 超碰97资源大奶| 免费A片三p视频| 蘋果手機免費看成人Av| 国产av尤物| 性猛交| 欧日韩在线观看| 国产精品久久久久中文字幕| 久9久9久9久9久9久9| 色综合久久888| 操国产高清| 91撸色网 玖玖网 欧美| 国产精品自在自拍视频| 人人么人人操| 亚州图片第一页| 91中文在线| 一级性爱视频免费观看| 少好三P| 夜夜嗨一区二区| 波多野42部激情无码喷潮| 97爱b| 激情五月婷婷| 人人操人人操人人操人人操人人操人人人11.CM | 一级二级三级黑人无码| 中文字幕国产| 亚洲AV高潮| 国产强奸超碰AV| 天天肏视频| 黑人精品久久97| 国产自偷自拍一区| 2019天天干天天操| 亚洲欧美日韩激情不卡| 青青草中日韩在线| 国产大片精久久久久久| 黄片在线免费在线观看| 亚洲图片色图欧美另类| 欧美综合第一页| 精品一二三区女同| 精久久久91| 婷婷五月天成人| 91高清无码下载| 1000部熟女视频在线观看| 欧美伦乱| 老熟妇一区二区三区啪啪| 国产精品国产自产拍高清AV| 99热婷婷| 国产亚洲精品第一最新| 能在线播放的国产三级| 26UUU欧美激情一区二区| 少妇久久久久久| 丰满欧美放荡少妇在线| 超碰97首页| 啊啊啊啊啊操我视频| 久久久婷| 婷婷五月天小说| 女人喷水视频在线观看| 啪啪AV导航| 伊人精品久久网站| 先锋色眉乱伦资源| 岛国视频一二三区| 中日亚韩免费视频| 色天使亚洲综合在线观看| av网站免费看| 久久激情婷婷| 欧美日韩中文视频播放| 操人妻视频| 91操熟女视频| 蜜臀久久99精品久久久久久-DVD| 啊啊啊轻点在线观看| 亚洲精品97中文字幕| av操操不卡| 97色色国产视频| 老熟女91av| 色九九九| 亚州高清色综合| 九九热精彩视频| 素颜老阿姨乱情色| 久久久久久裸体| 久偷拍欧美日韩三区| 亭亭在线资源| 啊啊啊啊,啊啊好多水| 一区二区三区在线日韩影院观看| 青青草久久| 欧美爱国产综合、| 三级色影综合网| 天天综合官网| 中文字幕奈奈美被公侵犯| 秋霞成人一级在线观看| 天天干夜夜操网| 69人妻精品一区二区绯色| 九九av| 中文字幕老熟妇黄色视频| 日韩紧密久久| 激情文学小说一区二区| 日日夜夜精品视频| 国产高清免费不卡av| 青青操轻轻| 五月天婷婷激情| 欧美亚洲性爱一区二区| 日本一级不卡一二区| 亚春色色| 一本色道久久天天射天天干| 岛国片在线观看视频亚洲| 人人摸人人干| 久久久18禁| 久久久久久99999国产精品| 黄页av| 欧美激情性久久久久久| 一区二区娱乐网站| 欧美老妇女内射网址| 韩国嫰模上门援交视频| 欧美色宗合| 牛牛aV| 91狠婷| 97视频www| 青青青在线高清视频在线一二三四区| 在线a v| 欧美日韩高潮喷水91| 国产九区| 97精| 这里都是精品在线观看| 欧美大香蕉97| 少妇淫妇久久久久久久| 操逼日韩无码| 欧美青青视频| 欧美aa一级片| 久久9亚洲| 后入日本1234| 黄在线| 厕所偷拍在线| 亚洲欧美碰碰| 99久久这里只有精品| 97中文字幕一区| 99久久精品欧美国产| 丁香六月激情| 无卡一区=区| 日本免费人成视频播放120秒| 免费观看欧美日韩操逼视频| 天天综合网亚洲综合网| 亚洲 欧美 手机在线观看| 97人人爱人人做人人乐| 九九视频黄色片| 嗯嗯,啊啊,国产精品| 亚洲欧美97√| 色五月av| 中文字幕一区二区三区人妻不卡| 色香色香欲天天天影视综合网| 蜜臀久久99'精品久久久| 国产综合在线视频网站| 色九月综合| 久久免费少妇| 亚洲情色五月天 | 欧美18老人禁| 日韩伦理久 久久 清纯| 亚洲欧美不卡线| 日本色婷婷| 色色九区| 亚洲蜜臀懂色| 精品高清一区二区三区三州| 躁躁日曰躁2020| 91丨豆花丨熟女| 精品国产99| 亚洲国产奇米影视久久| 激情人妻另类| 99re6久热只有精品6在线直播| 久久首页| av天堂手机版追回| 色综九九九一区| 日韩欧美字幕亚洲一区二区| 一本色道久久综合狠狠操| 一区二区三区精品久久| 特色a在线上| 国产精品91一样| 凹凸视频在线一区二区| 欧美国产一区二区三区麻豆传媒| 国产熟女免费观看久久| 91麻豆天美传媒在线| 亚州色图第三区| 尤物网站91| 成人女人国产| 一级黄色性爱A级片| 欧美激色| 色五月大香蕉| 青娱乐淫乱1314| 91欧美美女日韩国产婷婷| 啪啪AV导航| 青青久久久| 日韩在线视频1234| 欧美国产伊人久久久久| 女生久久网| 色欲人妻一区二区在线| 色五月综合| 国产在线视频午夜精华在| 欧美成人国产精品| 中文字幕在线观看丝袜| 大二网站亚洲| 香港久久久| 久久人妻97久久久久久久| 青娱乐欧美激情一区二区| 97超碰中文字幕| 人人色人人射人人妻| 探花在线免费观看视频国产一区| 日韩在线国产字幕| 久操免费电影| 久久久久久久久久久久欧美日| 九九热免费视频| 国产成人 综合亚洲 天堂| 亚洲激情欧美色图| 久久蜜色情在线视频xxx免费观看| JIZZJIZZ国产精品喷水| 超碰在线人妻中文字幕| 亚欧洲日韩国产精品| 啊啊啊97视频| 久久夜夜夜夜| 国产在线76页| 精品黑人一区二区| 精品人体无圣光凹凸| 成人久久久| 成人片视频| 一牛影视久久久一区二区三区| 婷婷丁香五月天亚洲天堂网| 亚洲一区操| 欧美色图综合网| 曰本特级特黄特色黄色A级网站高清在线免费看| 色哟哟的毛片| 9色在线| 中文字幕狠狠玩| 100啪啪视频大全| 99中文字幕| 黑丝制服中文字幕| 成人日本片久久久蜜桃| 久久精品中文| 男人的亚洲天堂| 97超久碰| 欧美18禁91| 在现视频女上位好爽| 色婷婷五月综合| 丁香色五月 97干| 久久久久久精品免费看A级| 国产AV色黄看到爽| 正在播放国产精品一区| 午夜乱轮操逼视频免费看| 天天干天天操天天操夜夜操天天操 | 欧美亚涩| 麻豆60秒| 国产夫妻一区二区| 国产极品久久久| 蜜奶av| 久久综合精品一区二区三区| 欧美91网站| 校园春色亚洲无码| 久久精品高清无码一区| 欧美极品少妇| 国产后入式在线观看| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 色噜噜综合在线| 资源在线观一 二| 人妻激情偷乱视频一区二区三区 | 97视频在线看| 黄片视频观看| 成人小说视频在线精品欧美| 国产女人高潮嗷嗷嗷叫小说| 最近2019中文字幕国语免费版 | 国产精品久久久久久久久久二区三区| 热久久无毒不卡| 啊啊在线| 3PAV乱伦视频| 日韩人妻一二三区视频| 秋霞欧美性爰视频| 婷婷色一区| 亚洲中文电影| 美女黄色91| 九七超碰| 日本东京热加勒比久久| 超碰日本97美女人妻人人玩人人爱| 韩国久久97| 日韩精品怡红院| 视频在线97| 亚洲欧美黄| 国产最新小视频在线播放下载| 黑人操一区二区| 婷婷五月天成人网| 久日91在线| 黄色成年| 国产日逼视频| 97人人干| 激情黄色五月天| 久热这里只有精品9| 老熟女乱伦一区| www国产天美久久久| 91色碰| 好爽免费视频,| 欧美96精品在线| 377p欧洲日本亚洲大胆| 综合久草| 91超碰在线观看| 一区二区精品日韩欧美在线观看| 色色操| 欧美91网站| 中文字幕97| 国产强奸超碰AV| 玖玖综合色| 欧美成人精品一区| 中国国国产一级特黄毛片| 久操B网| 午夜经典| 强奸乱伦av电影| 麻豆人妻少妇在线免费观看| 亚洲风情在线观看| 免费啪啪啪网站18岁| 有码色中文字幕在线观看| 久久高潮妇女视频| 91精品伊人久久久大香线蕉91| 欧美色图片91| 思思热国产高清| 五月天激情视频| 丝袜高跟澳门91视频| 九九精品无码专区免费| 宅男午夜在线视频| 网友自拍第一页| 人妻嗯啊啊在线播放| 无码九九| 视频分类 国内精品| 伊人操操| 亚洲天天做日日做天天谢日日| 9 7超碰在线免费观看| dy888午夜老子影视达达兔| 色婷婷丁香| 另类老少妇| 国产三级多多影院2022国产AA一级毛片无码 | 男人精品天堂一区| 欧美一级国产一级| 日韩不卡网操逼中文字幕日韩| 国产又色又粗又黄又爽| 中文字幕丝袜人妻| 黄色片一区二区三区四区五区| 一牛影视久久久一区二区三区| 97在线视频免费| 亚洲人妻一区二区三区| 热99这里有精品综合久久| 综合色图区| 欧美影院一区二区三区| 狠狠热这里都是精品| 特级特黄一级毛片免费| 久久骚| 国产AV无码AV| 99999亚洲另类| AA丁香综合激情| 超碰97精品| 97香蕉人人乳| 亚洲欧美日韩精品久久久一区二区 | 97日视频| 在线中文字幕极品av| 中文字幕免费看| 99久久久久| 国产熟妇 码视频户外直播| 美女裸体麻豆天美蜜桃91| A 在线网址| 日韩成人人妻网站| 美女啊啊啊啊啊啊啊| 国产精品久久天天干| 久久久久久久久久久久久久久久9| 强奸乱伦日韩AV| 熟妇色99| 91 亚洲情侣偷拍 久久| 人妻啊啊人妻啊| 国产精品99精品视频网站| 免费草草草草草视频| 99这里有精品视频| 正在播放国产精品一区| 日韩精品 欧美激情| 91色爽欧美| 亚洲精品久久久久久久蜜桃臀| 丝袜亚洲综合| 伊人精品国产| 亚洲精品久久久久久久久豆丁网| 日韩国产成人自拍视频| 97超碰超碰| 秋霞一级鲁丝片A片| 羞答答AV中文字| 亚洲情色1区| 欧美视频中文字幕区| 日本不卡一区二区| 欧美日韩妖精91com| 久久综合女优| 亚洲激情网一二三四区| 国产亚洲禁久一区二区 | 亚洲情色婷婷五月天| 国产高清MV操逼视频| 久操免费在线| 91日产桃蜜| 欧美一级专区免费大片 | 久久黄黄黄| 日韩电影天堂视频二区三区| 久久久久9久久久久| 成人国产精品三级A片| 亚洲国产婷婷在线播放| 欧美性爽xyxOOOO| 中文字幕视频二区| 久久人妻一区二区三区高清| 天美一二三在线观看Av| 亚洲91av| 久久超碰爱| 婷婷久热| 国产AV高清AV无码| 偷看洗澡一二三区美女| 特级毛片特黄久久免费看| 亚洲精品乱码线路中文字幕 | 男人天堂站| 色色亚洲| 精品超碰中文在线| 久久伊人大香蕉| 婷婷中文网| 超97在线精品视频| 国产精品久久久无码AV网站| 成人性爱视频在线看| 国产探花日韩援交| 亚洲密乳AV| 久久综合国产精品国产| 不卡av在线中文字幕| 啪啪啪精品| 国产女同视频在线播放| 亚洲免费成人在线高清无码视频| 免费观看性欧美一级| 久久性爱视频99| 国产在线视频二区| 操逼操逼视频操逼| 亚欧成人中文字幕一区| 亚洲一区日韩| 精品视频久久久久九九九九9999| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 校园春色美腿丝袜| 一区二区三区四区理论片| 亚洲综合网91| 凹凸视频在线一区二区| 国产精品久久久无码aV去| 人人操人人色人人摸| 波多野结衣一级视频| 国产精品久久99日日| 国精精品无码一二三区水多多| 岛国片国产成人亚洲播放| 深夜国产一区二区三区在线看| 日韩一性一交一A片俄罗斯| 嫖老熟女A片一二三区| 人人扣人人操| 久久久久久久久久久久久9999| 天天享受天天看| 天天插天天操天天摸天天射天天看| 青青草无码视频| 97日韩欧美亚洲| 色噜噜综合网| 91在线美女| 男人的亚洲天堂| 蜜臀99久久精品久久久久久| 久久久久亚洲Av无码专区老牛影视| 无码137片内射在线影院| 色噜噜精品一区二区三| 亚洲天堂,男人| 国产丰满熟夫69mpp| 久久久久久中文| 欧美色999| 久久一区二区高清免费| 亚洲欧洲小说图片视频| 欧美日韩国产人人| 免费精品无码一级毛片牛牛影视| 亚洲天堂人妻熟妇视频| 伊色综合天堂色97| 日韩精品影视| 日韩免费福利在线观看| 国产欧美日韩在线不卡第一页| 99久久这里只有精品| 亚洲AV在线资源| 操国产逼| 久久人妻视频网| 另类视频在线| 中文字幕久久婷婷丁香五月天| 成人免费福利在线观看| 蜜桃久久久久久久| 我想要 啊 啊 啊| 欧美一级黄色18片免费看| 69AV女优男人的天堂| 欧美日韩不卡传媒| 欧美性巨大╳╳╳╳╳高跟鞋| 三级片大波波| 伊人久久AV诱惑悠悠| 熟女突然公开看18禁影片| 国产精品网站www| 国产精品久久久 | 九九热精品在线| 97视频免费在线| 日韩操逼HD| 麻豆久久久久久久久丝袜 | 97人人草| 九九免费影片| 秋霞久久亚洲精品成人| 330Dv国产女人终合视频极品人与兽 | 久草这里只有精品 | 熟女网站最新| 亚洲天堂一区二区久久| 求求你操操我| а√天堂资源官网在线资源| 91neishe| 欧美综合自拍| 九九热免费国产视频婷婷伊人| 91A欧美电影网站| 99re在线观看| 国产免费内射视频| 五月综合久久| 天天网综合| 超碰三级秋霞| 亚洲国产美女久久久久| 欧美一区二区日韩传媒搭讪精品| 人人操人人色网| 人妻少妇蜜桃视频欧美一区| 99re黄 | 国产乱伦视频污| 97综合在线观看| 日韩性爱小视频| 亚洲官网在线| 中文字幕国产| 人人九九精| 丁香婷婷九月| 欧美资源| 伊人久久大香线综合无码| 少妇厨房愉情理伦片bd在线观看| 天天做天天爱天天爽AV| 精品国产丝袜一区二区三区乱码 | 国内毛片热久久思思热| 怡红院成人av| 国产精品无码在线| 亚洲美女精品九九视频| 色综合中文字幕不卡| 国产视频一区二区三区在线免费观看 | 色婷婷婷五月天激情四射| 性爱视频无打码在线观看| 久久人妻无码毛片A片麻豆| 亚洲天堂 视频你懂的| 一本色道久久综合精品婷婷| 欧美熟妇精品黑人巨大一二三区| 亚洲免费在线探花| 综合网亚洲在线| 精品四五区| 欧美日本中字另类在线| 天躁夜夜躁2021| 国产天天骚| 黄片色区软件| 91色狼| 亚洲色丰满少妇高潮| 国产97色在线| 午夜亚洲WWW湿好大| 东北操逼| 99久久无色码| 国产日本久久免费精品| 日韩国产精品人妻无码久久久| 1204金沙人妻懂旧版免费| av一区二区三区 中文| 欧美亚洲自拍另类人妻| 中文字幕精品专区搜索结果91| 91oumei| 国产区性爱在线视频秋霞豆| 久久色精品视频在线| 欧美一区二区三区黄色影视| 很很干很很操| 亚洲 欧美日韩 另类| 亚洲伊人成综合成人网| 综合大香蕉美。| 久视频在线观看| 亚洲中文日韩精品| 乱伦一区二区三区‘| 伊人骚琪琪亚洲天堂网站| 媚薬在线视频麻豆| 91在线免费观看处女| 一块操欧美| 日韩乱伦影音先锋| AA级电影三区| 狠狠干91| 欧美色另类| 人伦四五区| 色香在线| 人人超碰在线观看黄| 国产久久一区二区午夜| 99久久婷婷| 乱伦系列一区二区| 日本性爱欧美性爱| 2023天天操夜夜操| 国产精品视频内谢女人| 欧美劲爆第一页| 99热欧美| 色网亚洲人| 亚洲影视高清第一页| 成人在线午夜视频一区| WWW.加勒比人妻一区不卡.com| 天天干2区3区| 伊人影院在线理论播放 | 精品人妻一区二区三区日产| 天天操天天舔| 精品天堂| 日本色日夜干| 韩国三级色呦呦| 夜夜欢天天干| 伊人骚琪琪亚洲天堂网站| 欧美亚洲天天| 97狠狠| 亚洲日韩电影| 十八禁啪啪视频| 黑人娇小av在线播放| 97综合网| 亚洲成人黄色在线观看| 99re热有精品视频国产| av在线不卡一区二区三区| 可以在线观看的黄色网址| 男女激情黄色网址| 欧亚在线视频| 男人天堂一区二区| 国产馆极品诱惑| 国产性刺激| 少妇极品熟妇人妻无码| 精品国产乱码久久久兰草影视| 91麻豆一二三区| 在线五区| 97综合在线| 俺去啦俺来也久久综合| 国产曰批免费观看久久久| 操逼不卡中文字幕| 六月婷婷综合| 国产精品乱人伊人网| 情色五月天久久久| 激情婷婷丁香| 97在线观| 午夜福利一区二区影院| 中文字幕123| 九九碰九九爱97超碰| 男人的天堂2018东京热啪啪啪| 亚洲少妇诱惑| 欧美成人国产精品| 欧美少妇人妻| 国产一区二区a毛片| 国产亚洲精品自在线亚洲情侣| 亚洲色吧网| 亚洲情色在线| 乱伦系列一区二区| 综合色图区| 青青草啪啪网| 玖玖久久久| 色操逼网| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 成人女人国产| 9久9久| 日本羞羞的视频在线播放| 无码WWW免费视频网站| 欧美亚性天堂| 97欧美久久久久久久| 九九九九热| 五月天婷精品激情| 国产精品经典一卡久久久| 亚洲国产成人高清在线| 亚洲AV性爱电影| 亚洲激情在线一区二区| 欧洲综合色| 操一区| 欧美黑人XXXⅩ高潮交| 91精品人妻| 久草热制服丝袜在线观看| 狠狠色色| 九九综合九九综合| 婷婷五月天福利| 日本男人插女人的逼黄色| 欧美大片91| 丁香九月激情| 久久成人精品| 91五十路| 午夜国产乱伦视频| 欧洲无码一区二区| 国产精品嫩草影院午夜两性| 夜夜人妻爽| 欧美日韩性爱视屏免费看了| 狠狠爱夜夜| 欧美青青视频| 2001天天操| 睡产熟女乱伦| 国产精品高清2021在线| 热热色综合网| 久久国99999| 中文无码一二三区| 国产原创剧情在线丝袜| 久久久精品中文字幕爱豆| 日韩91网站| 色噜噜日韩精品| 免费成人在线熟妇网| 天美国产三级传媒| 色小视频蜜乳| 日韩性爱电影一区| 日韩国产欧美伦理在线| 最新亚洲黄色免费电影 | 日本人妻伦在线中文字幕| 天天综合网亚洲综合网| 91久久堂| 91总综合网| 国产日韩人人| 我中文字幕6区| 99九九久久| 一区二区三区四区久久视1| 成人熟女视频一区二区三区| 91ise欧美| 人人操天天爽| 亚州久久9| 欧美日韩一干二干| 人妻久热在线| 国产精品久久久久久夜夜夜| 久久国产三区| 天美国产精品| 日韩人妻无码精品系列| 久操B网| 色蜜AV| 日日夜夜天天| 草草影院在线视频| 天天摸,夜夜摸| 天天干天天操天天拍| 91+欧美| 日韩少妇无吗| 久久久久极品| 人人操人人色网| 国产高清午夜成人在线观看| 精品人妻一二三| 久草精品国产99| 精品中文字幕第一页| 国产超碰人人操| 久久久久骚| 欧美影音在线| 精品少妇99| 精品欧美А∨无码黑人大荫蒂 | 色五月AV在线| 97操B| 国产精品久久久久久久无码AV| 天天躁日日躁AAAAXXXX国产 | 久久精品91| 91天堂色男人的天堂| 小骚逼被操的爽不爽| 91精品啪在线观看国产城中村| 天天噜| 九热大香蕉| 五月丁香社区婷婷日韩欧美精品影院| 亚洲无992tv| 中文字幕国产| 免费看毛片操穴| 亚洲天在线| www五月| 夜夜爽爽夜夜精品视频| AⅤ片水多多| 日韩精品三区四区| v91av| 欧美九九爱| 日韩免费a级毛片无码a∨| 丁香六月东京热| 色色综合97| 啊啊啊快操我视频| 黄骗免费| 中文字幕女同在线| 天操天操夜操夜月月年年操操| 久久9精品视频| 久久綜合很很很| 99久久精品无码一区二区毛片免费 | 欧美色色人| 国产亚洲精品精AV.| 中文字日本乱码| 日韩有码 一区二区三区| 高清不卡视频| 色操逼网| 色 亚洲 91| 亚洲最新中文字幕免费| 午夜九九| 久久久久国产无av| 夜夜夜爽www精品视频| 女色视频社区| 国产日韩精品suv| 亚洲三级网址久久最新| 男啪女色黄无遮挡免费观看| 欧洲天天在线| 美女操逼A A| 在线国产探花| 91中出| 99re在线观看| 欧美日韩国产高清在线一二三区 | 精品人妻一区二区蜜桃视频| 99色色| 国产辣妈在线视频福利| 亚州高清色综合| 久久亚洲一区二区色婷婷| 色五月丁香五月| 欧美福利视频啊啊啊啊| 欧美自拍网| 国产丰满熟夫69mpp| 人人爱操| 欧美黑人精品一区二区| 日日超碰亚洲| 超碰97.com| 欧美伦乱爱| 国产欧美美女免费观看视频| 伊人久久大香线蕉无码| AV乱伦国产| 东京太热男人的天堂久久久| 欧亚第一综合网| 国产最新AV| 亚洲色综合| 亚洲,日韩,欧美,成人播放| 久草这里只有精品| 97国伦国色| 日本在线一二| 亚洲日本韩国在线| 操逼逼福利视频| 熟女这里只有精品6| 麻豆久久一区二区三区| 超碰地址久久| 91A欧美电影网站| 蜜汁欧美| 精品一级毛片在线观看| 97中文热色| jizz啪啪| 国产乱伦亚洲色图高清无码| 在线日韩精品一区二区三区| 黑人精品XXX一区一二区| 国产呦精品系列在线观看| 男人的天堂 在线一区| 台湾成人无码AV| AAAAAAAAA黄片| 欧美午夜视频精品久久| 亚州操逼图| 国产一级做a爰大片免费久久| 久久五月天婷婷| 久久色激情一区二区三区| 欧洲免费一区二| 男女香蕉一区二区| 后入式免费视频| 亚洲情色无码一区二区三区| 97亚洲欧美| 欧美少妇性爱网站| 国精综合一二三区影视| 97日韩超碰超碰中文字幕| 欧美久久伊人| 国产精品96久久久久久| 2020视频1区2区3区| 亚洲欧美人妻| 亚洲涩涩| 色香阁在线| 人人操 欧美| 蜜桃臀一区二区三区久久| 亚洲黄色a级片| 91网站18在线观看| 色97干| 中文?日韩?免费?精品| 欧美精品99久久久**| 午夜久久一区二区无码中出| 欧美综合天堂| 熟女人妻av在线资源,黄色的资源| 啊啊啊97视频| 人人爱人人乐人人操| 欧美十八禁在线看| 色网在线| 国产精品一区二区手机看片| 亚洲日本激情| 亚洲不卡AV在线| 91精品国产91久久福利| 日本 欧美 国产一区| 啊好大好舒服| 99在线精品观看视频中文| 国产一级内射无挡观看| 久久综合久久综合人久久夜精品| 久久久国产三级黄色片| 亚洲大色堂| 日韩精品系列| 天天射天天操天天干天天吃2018 | 我要色综合网| AV一起草在线| 午夜大香蕉| 天天综合91入口| 天天搞在线综合网| 九九热九九热| 婷婷色综合| 夜夜免费视频| 国产大学生高潮在线播放| 麻豆激情综合| 亚欧高清v| 欧成人精品H无码| 久久免费老司机精品| 免费无码国产精品v片在线观看| 久久水蜜臀亚洲AV无码精品| 五月综合婷婷久久网站| 麻豆色99999| 欧美韩国你懂得在线 | 成年人黄色视频免费| 美女97超碰| 亚洲精品影视老司机| 四虎精品一区二区| 亚洲第91页| 亚洲老熟妇xxx| 被窝影院午夜看片无码| 日本一二三免费久久| 天天透伊人| 性色av网站| 国产高清精品一区二区三区毛片| 久久久九九| 亚洲区限制级| 亚洲精品 大香蕉| 亚洲aV性爱| 日韩一区二区高清在线观看的| 中出20p| 97人人中文网| 91狠狠综合久久久| 天天躁日日躁AAAXX| 日韩操逼HD| 成 人片 黄色大片| 精品人妻一二三| 日少妇视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 91网九色蝌蚪操熟女| 天天cao在线| 欧美综合综合| 精久久久| 欧洲色综合| 97日韩欧美亚洲| 亚洲男人天堂网站| 怡红院成人视频| 69一区二区三区| 欧美97爱| 最新av中文字幕高清| 九九九九国产| 少妇一区二区三区精选| 强奸乱伦AV一天堂网| 91艹B视频| 可以免费观看的日韩av毛片| 在线国产一区二区av| 蜜桃av综合网发布| 思思视频免费看网站| 精品一区二区成人| 人妻中文在线| 97久久精品亚洲中六字幕| 鸥美插入视频| 午夜一区| 1769一区| 婷婷五月天久久久| 日韩AV一区二区三区三州三州| 亚州综合AⅤ| 成人区人妻精品一| 国产成人无码a| 91|九色|国产熟女| 午夜毛片高清免费不卡| 国产九九九九九九| 大象AV在线| av天堂5| 求求你操操我| 91欧美色| 色999;丁香五月| 丝袜喷水在线| 97精品免费| 三级三久久线久久99久目本WW| 啊啊好多水| 国产精品一区二区三区在线| 凹凸视频在线观看伊人| 日韩人妻精品久久久久| 亚春色色| 强奸乱伦日韩AV| 97精品国产精品免费观看| 99久久99久久免费精品蜜臀| 超碰在线成人| 91精品免费| 国产99久久99热这里只有精品15| 少妇被玩视频二三区| 久久 精品| 九九热免费视频| 欧美激情 亚洲色图| 九月丁香婷婷色| 久久中久文96| 亚洲欧综合另类无码一区| 色阁阁AV综合网| 国产区日韩区在线观看| 中文字幕人妻色偷偷久久皮| 99精彩视频| 国产熟女完整版中字 | 久久久99999久网站| 亚洲Av无码成人精品国产| 成全动漫视频观看免费下载| 日韩精品.久久精品.AV女优.天美传媒| 亚洲资源站| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 天天操女人| 国产三级资源在线观看| 久偷拍| 热99这里只有精品| 99国产精品久久久在线播放| 超碰人人操97碰| 9久9久9久9久视频网站| 久操大香蕉| 国产精品麻豆免费视频| 久9爱精品| 亚洲精品一卡二卡三卡福利视频网站| 97色碰| 欧美乱妇狂野欧美在线视频| 波多野42部无码喷潮在线观看| 成人精品欧洲亚洲| 久久国产热视频97电影| 日韩AV噜噜噜一区二区三区四区| 国产成年精品高清在线观看91| 国产又粗又长又爽又色| 99蜜桃臀亚洲成人在线观看| 国产精品探花视频| 九九九久久久| AV色五月天| 日韩中字av一区| 精品v日韩欧美国产| 性无码专区2020| 欧美精品欧美精品系列| 青春草A| 99青草| 九九色热| 日韩成人网址| 久久成人午夜精品影院 | 国产白嫩漂亮KTV在线| 欧美日韩啪啪电影|