[{"data":1,"prerenderedAt":2594},["ShallowReactive",2],{"content-\u002Fcomponents\u002Fscroll-view":3,"content-en-fallback-\u002Fcomponents\u002Fscroll-view":2593},{"id":4,"title":5,"body":6,"description":2585,"extension":2586,"meta":2587,"nav":2588,"navigation":685,"path":2589,"seo":2590,"stem":2591,"__hash__":2592},"content\u002Fcomponents\u002Fscroll-view.md","Scroll View 滚动视图",{"type":7,"value":8,"toc":2563},"minimark",[9,13,22,27,34,97,100,106,156,159,165,214,217,225,298,301,316,333,336,346,401,404,422,490,494,505,747,750,768,890,894,939,959,963,1045,1056,1058,1069,1158,1180,1347,1534,1570,1574,1578,1994,1998,2141,2145,2156,2311,2334,2338,2507,2511,2533,2559],[10,11,5],"h1",{"id":12},"scroll-view-滚动视图",[14,15,16,17,21],"p",{},"对齐 WinUI 3 ",[18,19,20],"code",{},"ScrollView"," 的容器控件：内容超出视口时滚动、平移、缩放，滚动条为 WinUI 3 的\noverlay 样式（2px 细滑块，指针进入容器即显示；指针移到滚动条上时滑块加粗为 6px、药丸轨道连同两端步进按钮展开，离开后收起，2s 无交互整体淡出）。",[23,24,26],"h2",{"id":25},"基础用法垂直","基础用法（垂直）",[14,28,29,30,33],{},"默认 ",[18,31,32],{},"content-orientation=\"vertical\"","，滚轮 \u002F 触控平移 \u002F 拖动滚动条均可滚动。",[35,36,37,44],"demo-block",{"title":26},[38,39,41],"template",{"v-slot:preview":40},"",[42,43],"scroll-view-vertical-demo",{},[38,45,46],{"v-slot:code":40},[47,48,52],"pre",{"className":49,"code":50,"language":51,"meta":40,"style":40},"language-vue shiki shiki-themes github-light github-dark","\u003CFluereScrollView class=\"h-80\">\n  \u003Cdiv v-for=\"row in rows\" :key=\"row\">第 {{ row }} 行内容 · Windows 11 原生滚动体验\u003C\u002Fdiv>\n\u003C\u002FFluereScrollView>\n","vue",[18,53,54,81,87],{"__ignoreMap":40},[55,56,59,63,67,71,74,78],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"sVt8B","\u003C",[55,64,66],{"class":65},"s9eBZ","FluereScrollView",[55,68,70],{"class":69},"sScJk"," class",[55,72,73],{"class":61},"=",[55,75,77],{"class":76},"sZZnC","\"h-80\"",[55,79,80],{"class":61},">\n",[55,82,84],{"class":57,"line":83},2,[55,85,86],{"class":61},"  \u003Cdiv v-for=\"row in rows\" :key=\"row\">第 {{ row }} 行内容 · Windows 11 原生滚动体验\u003C\u002Fdiv>\n",[55,88,90,93,95],{"class":57,"line":89},3,[55,91,92],{"class":61},"\u003C\u002F",[55,94,66],{"class":65},[55,96,80],{"class":61},[23,98,99],{"id":99},"横向滚动",[14,101,102,105],{},[18,103,104],{},"content-orientation=\"horizontal\"","，内容高度约束到视口，宽度自由增长。Shift + 滚轮或触控横向滑动。",[35,107,108,113],{"title":99},[38,109,110],{"v-slot:preview":40},[111,112],"scroll-view-horizontal-demo",{},[38,114,115],{"v-slot:code":40},[47,116,118],{"className":49,"code":117,"language":51,"meta":40,"style":40},"\u003CFluereScrollView class=\"h-40\" content-orientation=\"horizontal\">\n  \u003Cdiv class=\"flex gap-fluent-m\">…卡片列表…\u003C\u002Fdiv>\n\u003C\u002FFluereScrollView>\n",[18,119,120,143,148],{"__ignoreMap":40},[55,121,122,124,126,128,130,133,136,138,141],{"class":57,"line":58},[55,123,62],{"class":61},[55,125,66],{"class":65},[55,127,70],{"class":69},[55,129,73],{"class":61},[55,131,132],{"class":76},"\"h-40\"",[55,134,135],{"class":69}," content-orientation",[55,137,73],{"class":61},[55,139,140],{"class":76},"\"horizontal\"",[55,142,80],{"class":61},[55,144,145],{"class":57,"line":83},[55,146,147],{"class":61},"  \u003Cdiv class=\"flex gap-fluent-m\">…卡片列表…\u003C\u002Fdiv>\n",[55,149,150,152,154],{"class":57,"line":89},[55,151,92],{"class":61},[55,153,66],{"class":65},[55,155,80],{"class":61},[23,157,158],{"id":158},"双向滚动",[14,160,161,164],{},[18,162,163],{},"content-orientation=\"both\"","，内容在横向与纵向均不受约束。",[35,166,167,172],{"title":158},[38,168,169],{"v-slot:preview":40},[170,171],"scroll-view-both-demo",{},[38,173,174],{"v-slot:code":40},[47,175,177],{"className":49,"code":176,"language":51,"meta":40,"style":40},"\u003CFluereScrollView class=\"h-72\" content-orientation=\"both\">\n  \u003Cdiv class=\"grid grid-cols-6 gap-fluent-m\">…单元格…\u003C\u002Fdiv>\n\u003C\u002FFluereScrollView>\n",[18,178,179,201,206],{"__ignoreMap":40},[55,180,181,183,185,187,189,192,194,196,199],{"class":57,"line":58},[55,182,62],{"class":61},[55,184,66],{"class":65},[55,186,70],{"class":69},[55,188,73],{"class":61},[55,190,191],{"class":76},"\"h-72\"",[55,193,135],{"class":69},[55,195,73],{"class":61},[55,197,198],{"class":76},"\"both\"",[55,200,80],{"class":61},[55,202,203],{"class":57,"line":83},[55,204,205],{"class":61},"  \u003Cdiv class=\"grid grid-cols-6 gap-fluent-m\">…单元格…\u003C\u002Fdiv>\n",[55,207,208,210,212],{"class":57,"line":89},[55,209,92],{"class":61},[55,211,66],{"class":65},[55,213,80],{"class":61},[23,215,216],{"id":216},"嵌套滚动",[14,218,219,220,224],{},"内层 ScrollView 位于外层内容之中。",[221,222,223],"strong",{},"鼠标滚轮归属","对齐 WinUI 3：指针停在内层上时由内层独占滚轮，\n即使内层已滚到极限，外层也不会跟着滚动；把指针移到内层之外的外层内容上，滚轮才交给外层（触控 \u002F 笔由指针捕获独占）。",[35,226,227,232],{"title":216},[38,228,229],{"v-slot:preview":40},[230,231],"scroll-view-nested-demo",{},[38,233,234],{"v-slot:code":40},[47,235,237],{"className":49,"code":236,"language":51,"meta":40,"style":40},"\u003CFluereScrollView class=\"h-96\">\n  \u003C!-- 外层内容 -->\n  \u003CFluereScrollView class=\"h-40\">…内层 A 独占滚轮…\u003C\u002FFluereScrollView>\n  \u003CFluereScrollView class=\"h-40\">…内层 B 独占滚轮…\u003C\u002FFluereScrollView>\n\u003C\u002FFluereScrollView>\n",[18,238,239,254,259,268,289],{"__ignoreMap":40},[55,240,241,243,245,247,249,252],{"class":57,"line":58},[55,242,62],{"class":61},[55,244,66],{"class":65},[55,246,70],{"class":69},[55,248,73],{"class":61},[55,250,251],{"class":76},"\"h-96\"",[55,253,80],{"class":61},[55,255,256],{"class":57,"line":83},[55,257,258],{"class":61},"  \u003C!-- 外层内容 -->\n",[55,260,261,264,266],{"class":57,"line":89},[55,262,263],{"class":61},"  \u003CFluereScrollView class=\"h-40\">…内层 A 独占滚轮…\u003C\u002F",[55,265,66],{"class":65},[55,267,80],{"class":61},[55,269,271,274,276,278,280,282,285,287],{"class":57,"line":270},4,[55,272,273],{"class":61},"  \u003C",[55,275,66],{"class":65},[55,277,70],{"class":69},[55,279,73],{"class":61},[55,281,132],{"class":76},[55,283,284],{"class":61},">…内层 B 独占滚轮…\u003C\u002F",[55,286,66],{"class":65},[55,288,80],{"class":61},[55,290,292,294,296],{"class":57,"line":291},5,[55,293,92],{"class":61},[55,295,66],{"class":65},[55,297,80],{"class":61},[23,299,300],{"id":300},"焦点滚动",[14,302,303,304,307,308,311,312,315],{},"焦点（Tab 或程序化 ",[18,305,306],{},"focus()","）进入内容内的元素时，元素自动滚进视口 —— 对齐 WinUI\n",[18,309,310],{},"BringIntoViewOnFocusChange","（缺省开启），键盘用户不会把焦点留在视口之外；元素已在视口内时不产生动画。\n该次滚动同样触发 ",[18,313,314],{},"bring-into-view"," 事件，可在回调中取消或改写目标偏移。",[14,317,318,319,322,323,322,326,322,329,332],{},"容器获得焦点（或焦点在内容内）时，方向键、PageUp \u002F PageDown、Home \u002F End 滚动视图；命中\n",[18,320,321],{},"input"," \u002F ",[18,324,325],{},"textarea",[18,327,328],{},"select",[18,330,331],{},"contenteditable"," 时按键交还给输入控件。",[23,334,335],{"id":335},"缩放",[14,337,338,341,342,345],{},[18,339,340],{},"zoom-mode=\"enabled\"","：Ctrl \u002F Cmd + 滚轮或双指捏合缩放，缩放中心为指针位置。对齐 WinUI 的\n",[18,343,344],{},"min-zoom-factor \u002F max-zoom-factor"," 约束。",[35,347,348,353],{"title":335},[38,349,350],{"v-slot:preview":40},[351,352],"scroll-view-zoom-demo",{},[38,354,355],{"v-slot:code":40},[47,356,358],{"className":49,"code":357,"language":51,"meta":40,"style":40},"\u003CFluereScrollView class=\"h-80\" content-orientation=\"both\" zoom-mode=\"enabled\">\n  \u003C!-- Ctrl \u002F Cmd + 滚轮 或双指捏合缩放 -->\n\u003C\u002FFluereScrollView>\n",[18,359,360,388,393],{"__ignoreMap":40},[55,361,362,364,366,368,370,372,374,376,378,381,383,386],{"class":57,"line":58},[55,363,62],{"class":61},[55,365,66],{"class":65},[55,367,70],{"class":69},[55,369,73],{"class":61},[55,371,77],{"class":76},[55,373,135],{"class":69},[55,375,73],{"class":61},[55,377,198],{"class":76},[55,379,380],{"class":69}," zoom-mode",[55,382,73],{"class":61},[55,384,385],{"class":76},"\"enabled\"",[55,387,80],{"class":61},[55,389,390],{"class":57,"line":83},[55,391,392],{"class":61},"  \u003C!-- Ctrl \u002F Cmd + 滚轮 或双指捏合缩放 -->\n",[55,394,395,397,399],{"class":57,"line":89},[55,396,92],{"class":61},[55,398,66],{"class":65},[55,400,80],{"class":61},[23,402,403],{"id":403},"滚动条可见性",[14,405,406,409,410,413,414,417,418,421],{},[18,407,408],{},"vertical-scroll-bar-visibility"," 支持 ",[18,411,412],{},"auto","（默认，overlay）\u002F ",[18,415,416],{},"visible","（常驻）\u002F ",[18,419,420],{},"hidden","（仍可滚动）。",[35,423,424,429],{"title":403},[38,425,426],{"v-slot:preview":40},[427,428],"scroll-view-bar-visibility-demo",{},[38,430,431],{"v-slot:code":40},[47,432,434],{"className":49,"code":433,"language":51,"meta":40,"style":40},"\u003CFluereScrollView>…auto（默认，overlay）…\u003C\u002FFluereScrollView>\n\u003CFluereScrollView vertical-scroll-bar-visibility=\"visible\">…常驻…\u003C\u002FFluereScrollView>\n\u003CFluereScrollView vertical-scroll-bar-visibility=\"hidden\">…隐藏但可滚动…\u003C\u002FFluereScrollView>\n",[18,435,436,449,470],{"__ignoreMap":40},[55,437,438,440,442,445,447],{"class":57,"line":58},[55,439,62],{"class":61},[55,441,66],{"class":65},[55,443,444],{"class":61},">…auto（默认，overlay）…\u003C\u002F",[55,446,66],{"class":65},[55,448,80],{"class":61},[55,450,451,453,455,458,460,463,466,468],{"class":57,"line":83},[55,452,62],{"class":61},[55,454,66],{"class":65},[55,456,457],{"class":69}," vertical-scroll-bar-visibility",[55,459,73],{"class":61},[55,461,462],{"class":76},"\"visible\"",[55,464,465],{"class":61},">…常驻…\u003C\u002F",[55,467,66],{"class":65},[55,469,80],{"class":61},[55,471,472,474,476,478,480,483,486,488],{"class":57,"line":89},[55,473,62],{"class":61},[55,475,66],{"class":65},[55,477,457],{"class":69},[55,479,73],{"class":61},[55,481,482],{"class":76},"\"hidden\"",[55,484,485],{"class":61},">…隐藏但可滚动…\u003C\u002F",[55,487,66],{"class":65},[55,489,80],{"class":61},[23,491,493],{"id":492},"程序化-api","程序化 API",[14,495,496,497,500,501,504],{},"对齐 WinUI 方法：",[18,498,499],{},"scrollTo \u002F scrollBy \u002F zoomTo \u002F zoomBy \u002F addScrollVelocity \u002F addZoomVelocity \u002F bringIntoView","（支持动画与 correlation ID），\n以及只读属性 ",[18,502,503],{},"horizontalOffset \u002F verticalOffset \u002F zoomFactor \u002F extentWidth \u002F extentHeight \u002F viewportWidth \u002F viewportHeight \u002F scrollableWidth \u002F scrollableHeight \u002F state \u002F currentAnchor","。完整签名见下方「方法」与「只读属性」两张表。",[35,506,507,512],{"title":493},[38,508,509],{"v-slot:preview":40},[510,511],"scroll-view-api-demo",{},[38,513,514],{"v-slot:code":40},[47,515,517],{"className":49,"code":516,"language":51,"meta":40,"style":40},"\u003Ctemplate>\n  \u003CFluereScrollView\n    ref=\"sv\"\n    content-orientation=\"both\"\n    zoom-mode=\"enabled\"\n    @view-changed=\"refreshReadout\"\n  >\n    …内容…\n  \u003C\u002FFluereScrollView>\n  \u003Cbutton @click=\"sv?.scrollBy(0, 120)\">下滚 120px\u003C\u002Fbutton>\n  \u003Cbutton @click=\"sv?.scrollTo(0, 0)\">回到顶部\u003C\u002Fbutton>\n  \u003Cbutton @click=\"sv?.zoomBy(0.25)\">放大\u003C\u002Fbutton>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nconst sv = ref\u003CInstanceType\u003Ctypeof FluereScrollView>>()\n\u003C\u002Fscript>\n",[18,518,519,527,534,544,554,564,584,590,596,606,629,650,671,680,687,708,738],{"__ignoreMap":40},[55,520,521,523,525],{"class":57,"line":58},[55,522,62],{"class":61},[55,524,38],{"class":65},[55,526,80],{"class":61},[55,528,529,531],{"class":57,"line":83},[55,530,273],{"class":61},[55,532,533],{"class":65},"FluereScrollView\n",[55,535,536,539,541],{"class":57,"line":89},[55,537,538],{"class":69},"    ref",[55,540,73],{"class":61},[55,542,543],{"class":76},"\"sv\"\n",[55,545,546,549,551],{"class":57,"line":270},[55,547,548],{"class":69},"    content-orientation",[55,550,73],{"class":61},[55,552,553],{"class":76},"\"both\"\n",[55,555,556,559,561],{"class":57,"line":291},[55,557,558],{"class":69},"    zoom-mode",[55,560,73],{"class":61},[55,562,563],{"class":76},"\"enabled\"\n",[55,565,567,570,573,575,578,581],{"class":57,"line":566},6,[55,568,569],{"class":61},"    @",[55,571,572],{"class":69},"view-changed",[55,574,73],{"class":61},[55,576,577],{"class":76},"\"",[55,579,580],{"class":61},"refreshReadout",[55,582,583],{"class":76},"\"\n",[55,585,587],{"class":57,"line":586},7,[55,588,589],{"class":61},"  >\n",[55,591,593],{"class":57,"line":592},8,[55,594,595],{"class":61},"    …内容…\n",[55,597,599,602,604],{"class":57,"line":598},9,[55,600,601],{"class":61},"  \u003C\u002F",[55,603,66],{"class":65},[55,605,80],{"class":61},[55,607,609,611,614,617,619,622,625,627],{"class":57,"line":608},10,[55,610,273],{"class":61},[55,612,613],{"class":65},"button",[55,615,616],{"class":69}," @click",[55,618,73],{"class":61},[55,620,621],{"class":76},"\"sv?.scrollBy(0, 120)\"",[55,623,624],{"class":61},">下滚 120px\u003C\u002F",[55,626,613],{"class":65},[55,628,80],{"class":61},[55,630,632,634,636,638,640,643,646,648],{"class":57,"line":631},11,[55,633,273],{"class":61},[55,635,613],{"class":65},[55,637,616],{"class":69},[55,639,73],{"class":61},[55,641,642],{"class":76},"\"sv?.scrollTo(0, 0)\"",[55,644,645],{"class":61},">回到顶部\u003C\u002F",[55,647,613],{"class":65},[55,649,80],{"class":61},[55,651,653,655,657,659,661,664,667,669],{"class":57,"line":652},12,[55,654,273],{"class":61},[55,656,613],{"class":65},[55,658,616],{"class":69},[55,660,73],{"class":61},[55,662,663],{"class":76},"\"sv?.zoomBy(0.25)\"",[55,665,666],{"class":61},">放大\u003C\u002F",[55,668,613],{"class":65},[55,670,80],{"class":61},[55,672,674,676,678],{"class":57,"line":673},13,[55,675,92],{"class":61},[55,677,38],{"class":65},[55,679,80],{"class":61},[55,681,683],{"class":57,"line":682},14,[55,684,686],{"emptyLinePlaceholder":685},true,"\n",[55,688,690,692,695,698,701,703,706],{"class":57,"line":689},15,[55,691,62],{"class":61},[55,693,694],{"class":65},"script",[55,696,697],{"class":69}," setup",[55,699,700],{"class":69}," lang",[55,702,73],{"class":61},[55,704,705],{"class":76},"\"ts\"",[55,707,80],{"class":61},[55,709,711,715,719,722,725,727,730,732,735],{"class":57,"line":710},16,[55,712,714],{"class":713},"szBVR","const",[55,716,718],{"class":717},"sj4cs"," sv",[55,720,721],{"class":713}," =",[55,723,724],{"class":69}," ref",[55,726,62],{"class":61},[55,728,729],{"class":69},"InstanceType",[55,731,62],{"class":61},[55,733,734],{"class":713},"typeof",[55,736,737],{"class":61}," FluereScrollView>>()\n",[55,739,741,743,745],{"class":57,"line":740},17,[55,742,92],{"class":61},[55,744,694],{"class":65},[55,746,80],{"class":61},[23,748,749],{"id":749},"事件",[14,751,752,755,756,759,760,763,764,767],{},[18,753,754],{},"view-changed \u002F extent-changed \u002F state-changed \u002F scroll-animation-starting \u002F scroll-completed \u002F zoom-animation-starting \u002F zoom-completed \u002F anchor-requested \u002F bring-into-view","，\n载荷见下方「事件」表。这些是组件事件（",[18,757,758],{},"@event","）；供页面自动化使用的 ",[221,761,762],{},"DOM 命令事件"," 见「Agent \u002F 自动化访问」，\n事件名带 ",[18,765,766],{},"fluere:"," 前缀，在根元素上派发。",[35,769,770,775],{"title":749},[38,771,772],{"v-slot:preview":40},[773,774],"scroll-view-events-demo",{},[38,776,777],{"v-slot:code":40},[47,778,780],{"className":49,"code":779,"language":51,"meta":40,"style":40},"\u003CFluereScrollView\n  @view-changed=\"logEvent('view-changed')\"\n  @state-changed=\"logEvent(`state → ${$event}`)\"\n  @scroll-completed=\"logEvent(`scroll-completed #${$event.correlationId}`)\"\n>\n  …内容…\n\u003C\u002FFluereScrollView>\n",[18,781,782,788,813,841,873,877,882],{"__ignoreMap":40},[55,783,784,786],{"class":57,"line":58},[55,785,62],{"class":61},[55,787,533],{"class":65},[55,789,790,793,795,797,799,802,805,808,811],{"class":57,"line":83},[55,791,792],{"class":61},"  @",[55,794,572],{"class":69},[55,796,73],{"class":61},[55,798,577],{"class":76},[55,800,801],{"class":69},"logEvent",[55,803,804],{"class":61},"(",[55,806,807],{"class":76},"'view-changed'",[55,809,810],{"class":61},")",[55,812,583],{"class":76},[55,814,815,817,820,822,824,826,828,831,834,837,839],{"class":57,"line":89},[55,816,792],{"class":61},[55,818,819],{"class":69},"state-changed",[55,821,73],{"class":61},[55,823,577],{"class":76},[55,825,801],{"class":69},[55,827,804],{"class":61},[55,829,830],{"class":76},"`state → ${",[55,832,833],{"class":61},"$event",[55,835,836],{"class":76},"}`",[55,838,810],{"class":61},[55,840,583],{"class":76},[55,842,843,845,848,850,852,854,856,859,861,864,867,869,871],{"class":57,"line":270},[55,844,792],{"class":61},[55,846,847],{"class":69},"scroll-completed",[55,849,73],{"class":61},[55,851,577],{"class":76},[55,853,801],{"class":69},[55,855,804],{"class":61},[55,857,858],{"class":76},"`scroll-completed #${",[55,860,833],{"class":61},[55,862,863],{"class":76},".",[55,865,866],{"class":61},"correlationId",[55,868,836],{"class":76},[55,870,810],{"class":61},[55,872,583],{"class":76},[55,874,875],{"class":57,"line":291},[55,876,80],{"class":61},[55,878,879],{"class":57,"line":566},[55,880,881],{"class":61},"  …内容…\n",[55,883,884,886,888],{"class":57,"line":586},[55,885,92],{"class":61},[55,887,66],{"class":65},[55,889,80],{"class":61},[23,891,893],{"id":892},"agent-自动化访问","Agent \u002F 自动化访问",[14,895,896,897,900,901,904,905,908,909,912,913,916,917,322,920,322,923,926,927,934,935,938],{},"本组件的偏移由内容 ",[18,898,899],{},"transform"," 表达、presenter 是 ",[18,902,903],{},"overflow: clip","（",[221,906,907],{},"不是原生滚动容器","），\n因此浏览器与自动化工具的原生滚动语义在这里不成立：",[18,910,911],{},"scrollTop"," 恒为 ",[18,914,915],{},"0","，\n",[18,918,919],{},"scrollBy",[18,921,922],{},"scrollIntoView",[18,924,925],{},"scrollIntoViewIfNeeded"," 都找不到可滚动祖先\n（Playwright 点击视口外元素前的自动滚动同样失效，这也是\n",[928,929,933],"a",{"href":930,"rel":931},"https:\u002F\u002Fgithub.com\u002FAltermoe\u002Ffluere-vue\u002Fblob\u002Fmain\u002Fdocs\u002Fstyle-spec.md",[932],"nofollow","style-spec §7"," 记录的那条坑）。组件为此提供两条 DOM 通路，\n",[221,936,937],{},"都不需要接触组件实例","：",[940,941,942,949],"ul",{},[943,944,945,948],"li",{},[221,946,947],{},"只读反射","：根元素始终带一组状态属性，用来判断「动没动、还剩多少」；",[943,950,951,954,955,958],{},[221,952,953],{},"命令事件","：在根元素上派发 ",[18,956,957],{},"fluere:*"," 事件即可驱动滚动，落地后收到回执。",[960,961,962],"h3",{"id":962},"只读反射属性",[964,965,966,979],"table",{},[967,968,969],"thead",{},[970,971,972,976],"tr",{},[973,974,975],"th",{},"属性（Attribute）",[973,977,978],{},"说明",[980,981,982,993,1003,1013,1023,1033],"tbody",{},[970,983,984,990],{},[985,986,987],"td",{},[18,988,989],{},"data-scroll-x",[985,991,992],{},"当前水平偏移（像素，取整）",[970,994,995,1000],{},[985,996,997],{},[18,998,999],{},"data-scroll-y",[985,1001,1002],{},"当前垂直偏移（像素，取整）",[970,1004,1005,1010],{},[985,1006,1007],{},[18,1008,1009],{},"data-scroll-max-x",[985,1011,1012],{},"可滚动宽度上限（内容 × 缩放 − 视口，取整）",[970,1014,1015,1020],{},[985,1016,1017],{},[18,1018,1019],{},"data-scroll-max-y",[985,1021,1022],{},"可滚动高度上限，取整",[970,1024,1025,1030],{},[985,1026,1027],{},[18,1028,1029],{},"data-zoom-factor",[985,1031,1032],{},"当前缩放系数",[970,1034,1035,1040],{},[985,1036,1037],{},[18,1038,1039],{},"data-scroll-state",[985,1041,1042],{},[18,1043,1044],{},"'idle' | 'interaction' | 'inertia' | 'animation'",[14,1046,1047,1048,1051,1052,1055],{},"取整后可安全地做相等比较来判断「到底了没有」（",[18,1049,1050],{},"data-scroll-y === data-scroll-max-y","）。\n这些属性在偏移变化时逐帧重写，",[221,1053,1054],{},"不要在 CSS 里匹配它们","（否则动画期间每帧都会触发样式重算；\n仓库有契约测试守着这条约定）。",[960,1057,953],{"id":953},[14,1059,1060,1061,1064,1065,1068],{},"在组件根元素（",[18,1062,1063],{},".fui-scrollview","）上派发，",[18,1066,1067],{},"bubbles: true","，因此也可以挂在页面级监听。",[964,1070,1071,1087],{},[967,1072,1073],{},[970,1074,1075,1078,1085],{},[973,1076,1077],{},"事件（DOM 事件）",[973,1079,1080,1081,1084],{},"载荷（",[18,1082,1083],{},"event.detail","）",[973,1086,978],{},[980,1088,1089,1104,1121,1140],{},[970,1090,1091,1096,1101],{},[985,1092,1093],{},[18,1094,1095],{},"fluere:scroll-to",[985,1097,1098],{},[18,1099,1100],{},"{ x?, y?, animationMode? }",[985,1102,1103],{},"滚到绝对偏移；缺省分量保持不变",[970,1105,1106,1111,1115],{},[985,1107,1108],{},[18,1109,1110],{},"fluere:scroll-by",[985,1112,1113],{},[18,1114,1100],{},[985,1116,1117,1118,1120],{},"按增量滚动；缺省分量按 ",[18,1119,915],{}," 处理",[970,1122,1123,1128,1133],{},[985,1124,1125],{},[18,1126,1127],{},"fluere:bring-into-view",[985,1129,1130],{},[18,1131,1132],{},"{ element?, selector?, margin? }",[985,1134,1135,1136,1139],{},"把内容区内的元素滚入视口（",[18,1137,1138],{},"element"," 优先）",[970,1141,1142,1147,1155],{},[985,1143,1144],{},[18,1145,1146],{},"fluere:scroll-settled",[985,1148,1149,904,1152,1084],{},[18,1150,1151],{},"{ x, y, zoomFactor }",[221,1153,1154],{},"出站",[985,1156,1157],{},"命令落地后由组件派发，用于等待稳定帧",[14,1159,1160,1161,1163,1164,1167,1168,1171,1172,1175,1176,1179],{},"载荷非法（非有限数、目标不可解析）时是空操作，不抛错；",[18,1162,314],{}," 只接受内容区内的元素。\n",[18,1165,1166],{},"animationMode"," 传 ",[18,1169,1170],{},"'disabled'"," 可跳过动画，适合截图前的确定性定位；\n",[18,1173,1174],{},"agentCommands"," 设为 ",[18,1177,1178],{},"false"," 可关闭命令事件（只读反射保留）。",[47,1181,1185],{"className":1182,"code":1183,"language":1184,"meta":40,"style":40},"language-js shiki shiki-themes github-light github-dark","const el = document.querySelector('.fui-scrollview')\n\n\u002F\u002F 1. 先读状态：还需要滚多少？\nconst remaining = Number(el.dataset.scrollMaxY) - Number(el.dataset.scrollY)\n\n\u002F\u002F 2. 派发命令（bubbles 让页面级监听也能收到）\nel.dispatchEvent(\n  new CustomEvent('fluere:scroll-by', { detail: { y: remaining, animationMode: 'disabled' } }),\n)\n\n\u002F\u002F 3. 等回执再截图 \u002F 断言\nawait new Promise((resolve) =>\n  el.addEventListener('fluere:scroll-settled', resolve, { once: true }),\n)\n","js",[18,1186,1187,1210,1214,1220,1243,1247,1252,1263,1284,1288,1292,1297,1321,1343],{"__ignoreMap":40},[55,1188,1189,1191,1194,1196,1199,1202,1204,1207],{"class":57,"line":58},[55,1190,714],{"class":713},[55,1192,1193],{"class":717}," el",[55,1195,721],{"class":713},[55,1197,1198],{"class":61}," document.",[55,1200,1201],{"class":69},"querySelector",[55,1203,804],{"class":61},[55,1205,1206],{"class":76},"'.fui-scrollview'",[55,1208,1209],{"class":61},")\n",[55,1211,1212],{"class":57,"line":83},[55,1213,686],{"emptyLinePlaceholder":685},[55,1215,1216],{"class":57,"line":89},[55,1217,1219],{"class":1218},"sJ8bj","\u002F\u002F 1. 先读状态：还需要滚多少？\n",[55,1221,1222,1224,1227,1229,1232,1235,1238,1240],{"class":57,"line":270},[55,1223,714],{"class":713},[55,1225,1226],{"class":717}," remaining",[55,1228,721],{"class":713},[55,1230,1231],{"class":69}," Number",[55,1233,1234],{"class":61},"(el.dataset.scrollMaxY) ",[55,1236,1237],{"class":713},"-",[55,1239,1231],{"class":69},[55,1241,1242],{"class":61},"(el.dataset.scrollY)\n",[55,1244,1245],{"class":57,"line":291},[55,1246,686],{"emptyLinePlaceholder":685},[55,1248,1249],{"class":57,"line":566},[55,1250,1251],{"class":1218},"\u002F\u002F 2. 派发命令（bubbles 让页面级监听也能收到）\n",[55,1253,1254,1257,1260],{"class":57,"line":586},[55,1255,1256],{"class":61},"el.",[55,1258,1259],{"class":69},"dispatchEvent",[55,1261,1262],{"class":61},"(\n",[55,1264,1265,1268,1271,1273,1276,1279,1281],{"class":57,"line":592},[55,1266,1267],{"class":713},"  new",[55,1269,1270],{"class":69}," CustomEvent",[55,1272,804],{"class":61},[55,1274,1275],{"class":76},"'fluere:scroll-by'",[55,1277,1278],{"class":61},", { detail: { y: remaining, animationMode: ",[55,1280,1170],{"class":76},[55,1282,1283],{"class":61}," } }),\n",[55,1285,1286],{"class":57,"line":598},[55,1287,1209],{"class":61},[55,1289,1290],{"class":57,"line":608},[55,1291,686],{"emptyLinePlaceholder":685},[55,1293,1294],{"class":57,"line":631},[55,1295,1296],{"class":1218},"\u002F\u002F 3. 等回执再截图 \u002F 断言\n",[55,1298,1299,1302,1305,1308,1311,1315,1318],{"class":57,"line":652},[55,1300,1301],{"class":713},"await",[55,1303,1304],{"class":713}," new",[55,1306,1307],{"class":717}," Promise",[55,1309,1310],{"class":61},"((",[55,1312,1314],{"class":1313},"s4XuR","resolve",[55,1316,1317],{"class":61},") ",[55,1319,1320],{"class":713},"=>\n",[55,1322,1323,1326,1329,1331,1334,1337,1340],{"class":57,"line":673},[55,1324,1325],{"class":61},"  el.",[55,1327,1328],{"class":69},"addEventListener",[55,1330,804],{"class":61},[55,1332,1333],{"class":76},"'fluere:scroll-settled'",[55,1335,1336],{"class":61},", resolve, { once: ",[55,1338,1339],{"class":717},"true",[55,1341,1342],{"class":61}," }),\n",[55,1344,1345],{"class":57,"line":682},[55,1346,1209],{"class":61},[35,1348,1350,1355],{"title":1349},"Agent 交互面",[38,1351,1352],{"v-slot:preview":40},[1353,1354],"scroll-view-agent-demo",{},[38,1356,1357,1411],{"v-slot:code":40},[47,1358,1360],{"className":49,"code":1359,"language":51,"meta":40,"style":40},"\u003CFluereScrollView ref=\"sv\" label=\"日志列表\" @view-changed=\"refresh\">\n  …内容…\n\u003C\u002FFluereScrollView>\n",[18,1361,1362,1399,1403],{"__ignoreMap":40},[55,1363,1364,1366,1368,1370,1372,1375,1378,1380,1383,1386,1388,1390,1392,1395,1397],{"class":57,"line":58},[55,1365,62],{"class":61},[55,1367,66],{"class":65},[55,1369,724],{"class":69},[55,1371,73],{"class":61},[55,1373,1374],{"class":76},"\"sv\"",[55,1376,1377],{"class":69}," label",[55,1379,73],{"class":61},[55,1381,1382],{"class":76},"\"日志列表\"",[55,1384,1385],{"class":61}," @",[55,1387,572],{"class":69},[55,1389,73],{"class":61},[55,1391,577],{"class":76},[55,1393,1394],{"class":61},"refresh",[55,1396,577],{"class":76},[55,1398,80],{"class":61},[55,1400,1401],{"class":57,"line":83},[55,1402,881],{"class":61},[55,1404,1405,1407,1409],{"class":57,"line":89},[55,1406,92],{"class":61},[55,1408,66],{"class":65},[55,1410,80],{"class":61},[47,1412,1416],{"className":1413,"code":1414,"language":1415,"meta":40,"style":40},"language-ts shiki shiki-themes github-light github-dark","\u002F\u002F 只读反射：读 DOM，不碰组件实例\nconst root = sv.value.$el\nconst { scrollY, scrollMaxY } = root.dataset\n\n\u002F\u002F 命令 + 回执\nroot.addEventListener('fluere:scroll-settled', refresh)\nroot.dispatchEvent(\n  new CustomEvent('fluere:bring-into-view', {\n    detail: { selector: '[data-row=\"24\"]' },\n    bubbles: true,\n  }),\n)\n","ts",[18,1417,1418,1423,1435,1459,1463,1468,1482,1490,1504,1515,1525,1530],{"__ignoreMap":40},[55,1419,1420],{"class":57,"line":58},[55,1421,1422],{"class":1218},"\u002F\u002F 只读反射：读 DOM，不碰组件实例\n",[55,1424,1425,1427,1430,1432],{"class":57,"line":83},[55,1426,714],{"class":713},[55,1428,1429],{"class":717}," root",[55,1431,721],{"class":713},[55,1433,1434],{"class":61}," sv.value.$el\n",[55,1436,1437,1439,1442,1445,1448,1451,1454,1456],{"class":57,"line":89},[55,1438,714],{"class":713},[55,1440,1441],{"class":61}," { ",[55,1443,1444],{"class":717},"scrollY",[55,1446,1447],{"class":61},", ",[55,1449,1450],{"class":717},"scrollMaxY",[55,1452,1453],{"class":61}," } ",[55,1455,73],{"class":713},[55,1457,1458],{"class":61}," root.dataset\n",[55,1460,1461],{"class":57,"line":270},[55,1462,686],{"emptyLinePlaceholder":685},[55,1464,1465],{"class":57,"line":291},[55,1466,1467],{"class":1218},"\u002F\u002F 命令 + 回执\n",[55,1469,1470,1473,1475,1477,1479],{"class":57,"line":566},[55,1471,1472],{"class":61},"root.",[55,1474,1328],{"class":69},[55,1476,804],{"class":61},[55,1478,1333],{"class":76},[55,1480,1481],{"class":61},", refresh)\n",[55,1483,1484,1486,1488],{"class":57,"line":586},[55,1485,1472],{"class":61},[55,1487,1259],{"class":69},[55,1489,1262],{"class":61},[55,1491,1492,1494,1496,1498,1501],{"class":57,"line":592},[55,1493,1267],{"class":713},[55,1495,1270],{"class":69},[55,1497,804],{"class":61},[55,1499,1500],{"class":76},"'fluere:bring-into-view'",[55,1502,1503],{"class":61},", {\n",[55,1505,1506,1509,1512],{"class":57,"line":598},[55,1507,1508],{"class":61},"    detail: { selector: ",[55,1510,1511],{"class":76},"'[data-row=\"24\"]'",[55,1513,1514],{"class":61}," },\n",[55,1516,1517,1520,1522],{"class":57,"line":608},[55,1518,1519],{"class":61},"    bubbles: ",[55,1521,1339],{"class":717},[55,1523,1524],{"class":61},",\n",[55,1526,1527],{"class":57,"line":631},[55,1528,1529],{"class":61},"  }),\n",[55,1531,1532],{"class":57,"line":652},[55,1533,1209],{"class":61},[1535,1536,1537],"blockquote",{},[14,1538,1539,1542,1543,1546,1547,1550,1551,1554,1555,1558,1559,1562,1563,1565,1566,1569],{},[221,1540,1541],{},"仍不适用的原生语义","：组件不是原生滚动容器，因此 ",[18,1544,1545],{},"el.scrollTop","、",[18,1548,1549],{},"el.scrollBy()","、\n",[18,1552,1553],{},"el.scrollIntoView()","、CDP ",[18,1556,1557],{},"DOM.scrollIntoViewIfNeeded","、浏览器「在页面中查找」与\n",[18,1560,1561],{},"#:~:text="," 文本片段定位依旧不生效，请用上面的命令事件替代。\n另有一条既有通路：焦点进入内容区元素时组件会按 ",[18,1564,310],{}," 自动把它滚入视口\n（对齐 WinUI，见「方法」表的 ",[18,1567,1568],{},"bringIntoView","）。",[23,1571,1573],{"id":1572},"api","API",[960,1575,1577],{"id":1576},"属性props","属性（Props）",[964,1579,1580,1594],{},[967,1581,1582],{},[970,1583,1584,1586,1589,1592],{},[973,1585,1577],{},[973,1587,1588],{},"类型",[973,1590,1591],{},"默认",[973,1593,978],{},[980,1595,1596,1616,1636,1654,1677,1695,1714,1732,1750,1768,1786,1804,1824,1844,1863,1892,1913,1933,1951,1973],{},[970,1597,1598,1603,1608,1613],{},[985,1599,1600],{},[18,1601,1602],{},"contentOrientation",[985,1604,1605],{},[18,1606,1607],{},"'vertical' | 'horizontal' | 'none' | 'both'",[985,1609,1610],{},[18,1611,1612],{},"'vertical'",[985,1614,1615],{},"内容布局方向，决定内容如何受视口约束",[970,1617,1618,1623,1628,1633],{},[985,1619,1620],{},[18,1621,1622],{},"horizontalScrollMode",[985,1624,1625],{},[18,1626,1627],{},"'enabled' | 'disabled'",[985,1629,1630],{},[18,1631,1632],{},"'enabled'",[985,1634,1635],{},"是否允许用户水平滚动",[970,1637,1638,1643,1647,1651],{},[985,1639,1640],{},[18,1641,1642],{},"verticalScrollMode",[985,1644,1645],{},[18,1646,1627],{},[985,1648,1649],{},[18,1650,1632],{},[985,1652,1653],{},"是否允许用户垂直滚动",[970,1655,1656,1661,1666,1671],{},[985,1657,1658],{},[18,1659,1660],{},"horizontalScrollBarVisibility",[985,1662,1663],{},[18,1664,1665],{},"'auto' | 'visible' | 'hidden'",[985,1667,1668],{},[18,1669,1670],{},"'auto'",[985,1672,1673,1674,1676],{},"水平滚动条展示策略（",[18,1675,412],{}," 为 overlay，指针进入容器才显示）",[970,1678,1679,1684,1688,1692],{},[985,1680,1681],{},[18,1682,1683],{},"verticalScrollBarVisibility",[985,1685,1686],{},[18,1687,1665],{},[985,1689,1690],{},[18,1691,1670],{},[985,1693,1694],{},"垂直滚动条展示策略",[970,1696,1697,1702,1707,1711],{},[985,1698,1699],{},[18,1700,1701],{},"horizontalScrollChainMode",[985,1703,1704],{},[18,1705,1706],{},"'auto' | 'always' | 'never'",[985,1708,1709],{},[18,1710,1670],{},[985,1712,1713],{},"水平滚动的链式传递；见下方「滚轮归属」说明",[970,1715,1716,1721,1725,1729],{},[985,1717,1718],{},[18,1719,1720],{},"verticalScrollChainMode",[985,1722,1723],{},[18,1724,1706],{},[985,1726,1727],{},[18,1728,1670],{},[985,1730,1731],{},"垂直滚动的链式传递，语义同上",[970,1733,1734,1739,1743,1747],{},[985,1735,1736],{},[18,1737,1738],{},"horizontalScrollRailMode",[985,1740,1741],{},[18,1742,1627],{},[985,1744,1745],{},[18,1746,1632],{},[985,1748,1749],{},"水平触控平移导轨",[970,1751,1752,1757,1761,1765],{},[985,1753,1754],{},[18,1755,1756],{},"verticalScrollRailMode",[985,1758,1759],{},[18,1760,1627],{},[985,1762,1763],{},[18,1764,1632],{},[985,1766,1767],{},"垂直触控平移导轨",[970,1769,1770,1775,1779,1783],{},[985,1771,1772],{},[18,1773,1774],{},"zoomMode",[985,1776,1777],{},[18,1778,1627],{},[985,1780,1781],{},[18,1782,1170],{},[985,1784,1785],{},"是否允许用户缩放",[970,1787,1788,1793,1797,1801],{},[985,1789,1790],{},[18,1791,1792],{},"zoomChainMode",[985,1794,1795],{},[18,1796,1706],{},[985,1798,1799],{},[18,1800,1670],{},[985,1802,1803],{},"缩放的链式传递",[970,1805,1806,1811,1816,1821],{},[985,1807,1808],{},[18,1809,1810],{},"ignoredInputKinds",[985,1812,1813],{},[18,1814,1815],{},"ScrollingInputKinds | ScrollingInputKinds[]",[985,1817,1818],{},[18,1819,1820],{},"[]",[985,1822,1823],{},"需要忽略的输入种类，可传单个值或数组；命中则对该输入不响应",[970,1825,1826,1831,1836,1841],{},[985,1827,1828],{},[18,1829,1830],{},"minZoomFactor",[985,1832,1833],{},[18,1834,1835],{},"number",[985,1837,1838],{},[18,1839,1840],{},"0.1",[985,1842,1843],{},"最小缩放系数",[970,1845,1846,1851,1855,1860],{},[985,1847,1848],{},[18,1849,1850],{},"maxZoomFactor",[985,1852,1853],{},[18,1854,1835],{},[985,1856,1857],{},[18,1858,1859],{},"10",[985,1861,1862],{},"最大缩放系数",[970,1864,1865,1870,1874,1879],{},[985,1866,1867],{},[18,1868,1869],{},"horizontalAnchorRatio",[985,1871,1872],{},[18,1873,1835],{},[985,1875,1876],{},[18,1877,1878],{},"NaN",[985,1880,1881,1882,1884,1885,1887,1888,1891],{},"水平锚点比例（0~1），",[18,1883,1878],{}," 表示不启用水平锚定；",[18,1886,915],{}," 让内容左缘贴住视口左缘、",[18,1889,1890],{},"1"," 让右缘贴住右缘",[970,1893,1894,1899,1903,1907],{},[985,1895,1896],{},[18,1897,1898],{},"verticalAnchorRatio",[985,1900,1901],{},[18,1902,1835],{},[985,1904,1905],{},[18,1906,1878],{},[985,1908,1909,1910,1912],{},"垂直锚点比例（0~1），",[18,1911,1878],{}," 表示不启用垂直锚定",[970,1914,1915,1920,1925,1930],{},[985,1916,1917],{},[18,1918,1919],{},"background",[985,1921,1922],{},[18,1923,1924],{},"string",[985,1926,1927],{},[18,1928,1929],{},"—",[985,1931,1932],{},"内容区背景色",[970,1934,1935,1940,1944,1948],{},[985,1936,1937],{},[18,1938,1939],{},"tabIndex",[985,1941,1942],{},[18,1943,1835],{},[985,1945,1946],{},[18,1947,915],{},[985,1949,1950],{},"键盘可聚焦（Arrow \u002F PageUp \u002F Home 等方向键滚动）",[970,1952,1953,1958,1962,1966],{},[985,1954,1955],{},[18,1956,1957],{},"label",[985,1959,1960],{},[18,1961,1924],{},[985,1963,1964],{},[18,1965,1929],{},[985,1967,1968,1969,1972],{},"可访问名；设置后根元素带 ",[18,1970,1971],{},"role=\"region\"","，供屏幕阅读器与无障碍树型 Agent 识别该滚动区域",[970,1974,1975,1979,1984,1988],{},[985,1976,1977],{},[18,1978,1174],{},[985,1980,1981],{},[18,1982,1983],{},"boolean",[985,1985,1986],{},[18,1987,1339],{},[985,1989,1990,1991,1993],{},"是否响应 ",[18,1992,957],{}," DOM 命令事件（见「Agent \u002F 自动化访问」）；只读状态反射始终保留",[960,1995,1997],{"id":1996},"事件events","事件（Events）",[964,1999,2000,2011],{},[967,2001,2002],{},[970,2003,2004,2006,2009],{},[973,2005,1997],{},[973,2007,2008],{},"载荷",[973,2010,978],{},[980,2012,2013,2024,2036,2049,2064,2080,2095,2112,2127],{},[970,2014,2015,2019,2021],{},[985,2016,2017],{},[18,2018,572],{},[985,2020,1929],{},[985,2022,2023],{},"视口偏移或缩放发生变化（交互过程中连续触发）",[970,2025,2026,2031,2033],{},[985,2027,2028],{},[18,2029,2030],{},"extent-changed",[985,2032,1929],{},[985,2034,2035],{},"内容区尺寸发生变化",[970,2037,2038,2042,2046],{},[985,2039,2040],{},[18,2041,819],{},[985,2043,2044],{},[18,2045,1044],{},[985,2047,2048],{},"交互状态变化",[970,2050,2051,2056,2061],{},[985,2052,2053],{},[18,2054,2055],{},"scroll-animation-starting",[985,2057,2058],{},[18,2059,2060],{},"ScrollingScrollAnimationStartingEventArgs",[985,2062,2063],{},"滚动动画即将开始，可改写目标偏移",[970,2065,2066,2070,2075],{},[985,2067,2068],{},[18,2069,847],{},[985,2071,2072],{},[18,2073,2074],{},"ScrollingScrollCompletedEventArgs",[985,2076,2077,2078,1084],{},"一次滚动结束（含 ",[18,2079,866],{},[970,2081,2082,2087,2092],{},[985,2083,2084],{},[18,2085,2086],{},"zoom-animation-starting",[985,2088,2089],{},[18,2090,2091],{},"ScrollingZoomAnimationStartingEventArgs",[985,2093,2094],{},"缩放动画即将开始",[970,2096,2097,2102,2107],{},[985,2098,2099],{},[18,2100,2101],{},"zoom-completed",[985,2103,2104],{},[18,2105,2106],{},"ScrollingZoomCompletedEventArgs",[985,2108,2109,2110,1084],{},"一次缩放结束（含 ",[18,2111,866],{},[970,2113,2114,2119,2124],{},[985,2115,2116],{},[18,2117,2118],{},"anchor-requested",[985,2120,2121],{},[18,2122,2123],{},"ScrollingAnchorRequestedEventArgs",[985,2125,2126],{},"请求锚点（可返回自定义锚点元素）",[970,2128,2129,2133,2138],{},[985,2130,2131],{},[18,2132,314],{},[985,2134,2135],{},[18,2136,2137],{},"ScrollingBringingIntoViewEventArgs",[985,2139,2140],{},"即将把元素滚入视口，可改写目标偏移",[960,2142,2144],{"id":2143},"方法methods","方法（Methods）",[14,2146,2147,2148,2150,2151,322,2153,2155],{},"通过模板 ref 调用；都返回本次操作的 ",[18,2149,866],{},"，用于与 ",[18,2152,847],{},[18,2154,2101],{}," 的载荷对应。",[964,2157,2158,2169],{},[967,2159,2160],{},[970,2161,2162,2164,2167],{},[973,2163,2144],{},[973,2165,2166],{},"签名",[973,2168,978],{},[980,2170,2171,2186,2200,2219,2234,2249,2264,2278,2297],{},[970,2172,2173,2178,2183],{},[985,2174,2175],{},[18,2176,2177],{},"scrollTo",[985,2179,2180],{},[18,2181,2182],{},"(horizontalOffset: number, verticalOffset: number, options?: ScrollingScrollOptions) => number",[985,2184,2185],{},"滚动到绝对偏移",[970,2187,2188,2192,2197],{},[985,2189,2190],{},[18,2191,919],{},[985,2193,2194],{},[18,2195,2196],{},"(horizontalOffsetDelta: number, verticalOffsetDelta: number, options?: ScrollingScrollOptions) => number",[985,2198,2199],{},"按增量滚动",[970,2201,2202,2207,2212],{},[985,2203,2204],{},[18,2205,2206],{},"zoomTo",[985,2208,2209],{},[18,2210,2211],{},"(zoom: number, centerPoint?: { x, y } | null, options?: ScrollingZoomOptions) => number",[985,2213,2214,2215,2218],{},"缩放到指定系数，",[18,2216,2217],{},"centerPoint"," 为缩放中心（默认视口中心）",[970,2220,2221,2226,2231],{},[985,2222,2223],{},[18,2224,2225],{},"zoomBy",[985,2227,2228],{},[18,2229,2230],{},"(zoomFactorDelta: number, centerPoint?: { x, y } | null, options?: ScrollingZoomOptions) => number",[985,2232,2233],{},"按增量缩放",[970,2235,2236,2241,2246],{},[985,2237,2238],{},[18,2239,2240],{},"addScrollVelocity",[985,2242,2243],{},[18,2244,2245],{},"(offsetsVelocity: { x, y }, inertiaDecayRate?: { x, y } | null) => number",[985,2247,2248],{},"追加滚动速度（惯性滚动）",[970,2250,2251,2256,2261],{},[985,2252,2253],{},[18,2254,2255],{},"addZoomVelocity",[985,2257,2258],{},[18,2259,2260],{},"(zoomFactorVelocity: number, centerPoint?: { x, y } | null, inertiaDecayRate?: number | null) => number",[985,2262,2263],{},"追加缩放速度",[970,2265,2266,2270,2275],{},[985,2267,2268],{},[18,2269,1568],{},[985,2271,2272],{},[18,2273,2274],{},"(element: HTMLElement, options?: { margin?: number }) => number",[985,2276,2277],{},"把元素滚入视口（焦点元素自动触发）",[970,2279,2280,2285,2290],{},[985,2281,2282],{},[18,2283,2284],{},"registerAnchorCandidate",[985,2286,2287],{},[18,2288,2289],{},"(element: HTMLElement) => void",[985,2291,2292,2293,2296],{},"注册锚点候选（也可用 ",[18,2294,2295],{},"data-can-scroll-anchor"," 标记）",[970,2298,2299,2304,2308],{},[985,2300,2301],{},[18,2302,2303],{},"unregisterAnchorCandidate",[985,2305,2306],{},[18,2307,2289],{},[985,2309,2310],{},"注销锚点候选",[14,2312,2313,322,2316,2319,2320,2322,2323,2326,2327,2329,2330,2333],{},[18,2314,2315],{},"ScrollingScrollOptions",[18,2317,2318],{},"ScrollingZoomOptions"," 的 ",[18,2321,1166],{}," 取 ",[18,2324,2325],{},"'disabled' \\| 'enabled' \\| 'auto'","（默认 ",[18,2328,1670],{},"），另有 ",[18,2331,2332],{},"snapPointsMode"," 占位。",[960,2335,2337],{"id":2336},"只读属性readonly","只读属性（Readonly）",[964,2339,2340,2351],{},[967,2341,2342],{},[970,2343,2344,2347,2349],{},[973,2345,2346],{},"属性（Readonly）",[973,2348,1588],{},[973,2350,978],{},[980,2352,2353,2367,2381,2394,2408,2422,2436,2450,2464,2478,2492],{},[970,2354,2355,2360,2364],{},[985,2356,2357],{},[18,2358,2359],{},"horizontalOffset",[985,2361,2362],{},[18,2363,1835],{},[985,2365,2366],{},"当前水平偏移",[970,2368,2369,2374,2378],{},[985,2370,2371],{},[18,2372,2373],{},"verticalOffset",[985,2375,2376],{},[18,2377,1835],{},[985,2379,2380],{},"当前垂直偏移",[970,2382,2383,2388,2392],{},[985,2384,2385],{},[18,2386,2387],{},"zoomFactor",[985,2389,2390],{},[18,2391,1835],{},[985,2393,1032],{},[970,2395,2396,2401,2405],{},[985,2397,2398],{},[18,2399,2400],{},"extentWidth",[985,2402,2403],{},[18,2404,1835],{},[985,2406,2407],{},"内容区宽度",[970,2409,2410,2415,2419],{},[985,2411,2412],{},[18,2413,2414],{},"extentHeight",[985,2416,2417],{},[18,2418,1835],{},[985,2420,2421],{},"内容区高度",[970,2423,2424,2429,2433],{},[985,2425,2426],{},[18,2427,2428],{},"viewportWidth",[985,2430,2431],{},[18,2432,1835],{},[985,2434,2435],{},"视口宽度",[970,2437,2438,2443,2447],{},[985,2439,2440],{},[18,2441,2442],{},"viewportHeight",[985,2444,2445],{},[18,2446,1835],{},[985,2448,2449],{},"视口高度",[970,2451,2452,2457,2461],{},[985,2453,2454],{},[18,2455,2456],{},"scrollableWidth",[985,2458,2459],{},[18,2460,1835],{},[985,2462,2463],{},"可滚动宽度（内容 − 视口）",[970,2465,2466,2471,2475],{},[985,2467,2468],{},[18,2469,2470],{},"scrollableHeight",[985,2472,2473],{},[18,2474,1835],{},[985,2476,2477],{},"可滚动高度（内容 − 视口）",[970,2479,2480,2485,2489],{},[985,2481,2482],{},[18,2483,2484],{},"state",[985,2486,2487],{},[18,2488,1044],{},[985,2490,2491],{},"当前交互状态",[970,2493,2494,2499,2504],{},[985,2495,2496],{},[18,2497,2498],{},"currentAnchor",[985,2500,2501],{},[18,2502,2503],{},"HTMLElement | null",[985,2505,2506],{},"当前生效的锚点元素",[960,2508,2510],{"id":2509},"插槽slots","插槽（Slots）",[964,2512,2513,2521],{},[967,2514,2515],{},[970,2516,2517,2519],{},[973,2518,2510],{},[973,2520,978],{},[980,2522,2523],{},[970,2524,2525,2530],{},[985,2526,2527],{},[18,2528,2529],{},"default",[985,2531,2532],{},"滚动内容",[1535,2534,2535],{},[14,2536,2537,2540,2541,2544,2545,322,2547,2550,2551,2554,2555,2558],{},[221,2538,2539],{},"滚轮归属","（对齐 WinUI 3）：指针位于本组件内、且该方向确实可滚动时，本次滚轮由本组件独占——即使已到滚动极限也不会滚到外层 ScrollView；",[18,2542,2543],{},"horizontal\u002FverticalScrollChainMode"," 为 ",[18,2546,412],{},[18,2548,2549],{},"never"," 时到极限即吞掉滚轮（等价 ",[18,2552,2553],{},"overscroll-behavior: contain","），为 ",[18,2556,2557],{},"always"," 时才把未消化的剩余增量显式交给外层。本方向没有可滚动内容、或该方向被禁用时不占有滚轮，冒泡交给外层。触控 \u002F 笔由指针捕获独占，不走这套判定。",[2560,2561,2562],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":40,"searchDepth":83,"depth":83,"links":2564},[2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2578],{"id":25,"depth":83,"text":26},{"id":99,"depth":83,"text":99},{"id":158,"depth":83,"text":158},{"id":216,"depth":83,"text":216},{"id":300,"depth":83,"text":300},{"id":335,"depth":83,"text":335},{"id":403,"depth":83,"text":403},{"id":492,"depth":83,"text":493},{"id":749,"depth":83,"text":749},{"id":892,"depth":83,"text":893,"children":2575},[2576,2577],{"id":962,"depth":89,"text":962},{"id":953,"depth":89,"text":953},{"id":1572,"depth":83,"text":1573,"children":2579},[2580,2581,2582,2583,2584],{"id":1576,"depth":89,"text":1577},{"id":1996,"depth":89,"text":1997},{"id":2143,"depth":89,"text":2144},{"id":2336,"depth":89,"text":2337},{"id":2509,"depth":89,"text":2510},"对齐 WinUI 3 ScrollView 的容器控件：内容超出视口时滚动、平移、缩放。","md",{},{"title":5},"\u002Fcomponents\u002Fscroll-view",{"title":5,"description":2585},"components\u002Fscroll-view","8Hw67X40r0IPor55yUtIlw1FLvf9FfxhQIIvacdRFlY",null,1791802960540]