transfer 參數 - daniel-qa/Vue GitHub Wiki
正確來說應該是:
transfer="true"
日曆面板渲染到 body 的最底層
脫離原本的文件流,掛在 body 下
:transfer="false"
日曆面板渲染在組件本身的 DOM 節點內 保留在原本的文件流中,是組件的子元素
所以全螢幕的問題是:
全螢幕元素(#index)
└── DatePicker
└── 日曆面板 ← transfer=true 時會被搬到這裡
↓
body
└── 日曆面板 ← 在全螢幕元素之外,被蓋住了
改成 :transfer="false" 後:
全螢幕元素(#index)
└── DatePicker
└── 日曆面板 ← 留在全螢幕元素內,正常顯示
日曆面板留在全螢幕容器內的文件流中,所以才能正常顯示和操作。
transfer 的意思是「傳送、轉移」。
在 iView/ViewUI 的組件中,transfer 控制的是下拉層(日曆面板)要渲染到哪裡:
transfer="true"(預設)
把日曆面板轉移到 body 的最底部渲染
好處是不會被父容器的 overflow: hidden 或 z-index 影響
適合一般頁面使用
:transfer="false"
日曆面板就渲染在組件本身的位置,不轉移
適合全螢幕模式,因為不會被全螢幕層蓋住
你可以想像成:
transfer="true" → 把日曆「搬家」到 body 下
:transfer="false" → 日曆就待在原地不動
全螢幕模式下,日曆搬到 body 後反而被全螢幕元素蓋住,所以要讓它「待在原地」才能正常顯示。