【发布时间】:2020-01-07 16:45:26
【问题描述】:
我正在创建一个弹出组件,我希望它是可移动的。我可以使用顶部/左侧样式移动它,但现在它们初始化为top:0;left:0;,因此弹出窗口出现在页面的左上角。我希望让它出现在页面的中心,然后获取我的 div 的左上角坐标,以便在之后正确管理我的计算。
这是我现在拥有的:
<div class="child-window" draggable="true" style="position:absolute; top: @(offsetY)px; left: @(offsetX)px; border-color: black;" @ondragend="OnDragEnd" @ondragstart="OnDragStart">
<div class="cw-content">
@Content
</div>
</div>
@code {
private double startX, startY, offsetX, offsetY;
protected override void OnInitialized() {
base.OnInitialized();
ResetStartPosition();
}
private void ResetStartPosition() {
//Set offsetX & offsetY to the top left div position
}
private void OnDragStart(DragEventArgs args) {
startX = args.ClientX;
startY = args.ClientY;
}
private void OnDragEnd(DragEventArgs args) {
offsetX += args.ClientX - startX;
offsetY += args.ClientY - startY;
}
}
【问题讨论】:
-
这是 Blazor 客户端吗?
-
是的,它是客户端但是这个组件被放置在我的 Razor 类库@DanielW 中。
-
很遗憾我们仍然需要使用 js 互操作。
-
据说这很快就会修复:github.com/dotnet/aspnetcore/issues/8241
标签: c# css asp.net-core razor blazor