過去幾個月來我一直在使用Angular Material,但仍然發現缺少文檔,所以請原諒本文的篇幅,作爲我在該問題上的僞文檔。但這裏是我知道的:
我只能夠得到的面板位置的工作,相對於目標元素,通過級聯addPanelPosition
功能到relativeTo
功能,例如:
var position = this._mdPanel
.newPanelPosition()
.relativeTo(ev.target)
.addPanelPosition('align-start', 'below') // or other values
(在這種情況下,ev
是NG-點擊通過$事件對象)
我能夠追查可接受的參數addPanelPosition
,他們有以下幾種:
面板y位置只接受以下值: center |對齊| align-bottoms |以上|低於
面板x位置只接受以下值: 中心| align-start | align-end | offset-start |偏移結束
Interstingly不夠,在角材質的演示,他們使用的this._mdPanel.xPosition.ALIGN_START
和this._mdPanel.yPosition.BELOW
特性,這只是解決成字符串的X和Y值的addPanelPosition
功能。我總是直接用字符串值。但是,如果此功能的開發仍在不斷變化,並且它們會更改可接受的字符串值,則使用字符串值可能會產生問題。
我會指出一個我見過的問題。
他們在演示中使用的另一個技巧是在relativeTo
函數中指定類名稱而不是目標元素,然後將該類放置在目標元素本身上。這種方法會有所幫助的原因是,ng-click中的$ event對象可以根據點擊的內容提供不同的目標元素。例如,單擊按鈕<div>
將給出與單擊按鈕內的<span>
文本不同的目標。這將導致你的面板轉移位置,除非你提供了額外的功能不這樣做。
Codepen
我把他們的演示,真正把它砍下來的大小來關注這個問題。你可以看到更新的codepen here
我同意,但恐怕固定CSS的定位不是一個理想的解決方案。我讀過的內容表明,定位可以動態發生。 – isherwood