NativeScript - 以点击为中心显示元素

NativeScript - display element centered on tap

我对 css 和 NativeScript 有问题。

(普通 webapp 的解决方案是:translate(-50%, -50%) 但这不适用于 Nativescript)

我想要的:以我触摸的地方为中心的圆圈。

我现在得到的是: 一个不在我触摸的中心的圆圈。

你有什么想法吗?

(当我只有一个300px的Circle时,我可以用"translate(-40%, -40%)"作弊,但我正在寻找XXXpx的解决方案)

=====

答案:由原作者 Josh

提供

我必须在我的 css 中删除:

在我的脚本中:

====

Html

<AbsoluteLayout #container>
</AbsoluteLayout>

组件

@ViewChild('container') absoluteLayout: ElementRef;

public onTap(args: TouchGestureEventData) {
    if (args && args.action === 'down') {
        let xCoord = args.getX();
        let yCoord = args.getY();

        let label3 = new Label();
        label3.top = yCoord;
        label3.left = xCoord;
        label3.className = "circle three";

        let label4 = new Label();
        label4.top = yCoord;
        label4.left = xCoord;
        label4.className = "circle four";


        this.absoluteLayout.nativeElement.addChild(label3);
        this.absoluteLayout.nativeElement.addChild(label4);
    }
}

css

.circle {
    color: blue ;
    border-style: solid;
    border-radius: 50%;
     transform: translate(-50%, -50%); 
}
.three {
    border-color: red;
    width: 50px;
    height: 50px;
    border-width: 20px;
} 
.four {
    border-color: blue;
    width: 300px;
    height: 300px;
    border-width: 20px;
} 

由于您知道放置在页面上的圆圈的高度和宽度,您可以从 X 和 Y 坐标中减去这些圆圈高度和宽度的一半。那应该使他们居中。

public onTap(args: TouchGestureEventData) {
    if (args && args.action === 'down') {
    let xCoord = args.getX();
    let yCoord = args.getY();

    let label3 = new Label();
    label3.top = yCoord - 25;
    label3.left = xCoord - 25;
    label3.className = "circle three";

    let label4 = new Label();
    label4.top = yCoord - 150;
    label4.left = xCoord - 150;
    label4.className = "circle four";


    this.absoluteLayout.nativeElement.addChild(label3);
    this.absoluteLayout.nativeElement.addChild(label4);
}

}

您可能想查看 Github 上的 nativescript-ng2-windchimes 应用程序,它已有大约一年的历史,但包含许多您正在尝试做的概念。 https://github.com/NathanWalker/nativescript-ng2-windchimes