ZStack

複数の View を同じ領域に積み重ねて、背景、スケール、中心の読み取りに適しています。子の View は順番に描画され、alignment はコンテナ内での共通の位置合わせ位置を設定します。

例

function main() {
  return (
    <ZStack alignment="center">
      <Circle width={100} height={100} background={$env.accent} />
      <Text color="black">78</Text>
    </ZStack>
  );
}

使い方

  • 子は順番に奥から手前へ描かれ、zIndex で順序を変更できます。alignment は親内の同じ基準位置に各子を揃えます。親子が同じ寸法なら違いは見えにくくなります。
  • 数値の寸法はポイントです。auto は内容を測り、fill は親が割り当てた空間を使います。先に親の寸法を決めてください。fill や長い文字列は固定サイズの親を拡張しません。
  • 配置領域を確保した後に x/y と transform を適用します。子を右に動かしても兄弟は押されません。間隔には spacing や Spacer、完成した描画の回転・拡大には transform を使います。

プロパティ

children?ViewContent

子の描画コンテンツ。

alignment?"topLeading" | "top" | "topTrailing" | "leading" | "center" | "trailing" | "bottomLeading" | "bottom" | "bottomTrailing"

重ねた子 View の位置。四隅・四辺・中央の 9 種類。

例"center"
共通プロパティ
width?number | "auto" | "fill"

幅。ポイント指定、自動サイズ、親領域への拡張に対応します。

例100
height?number | "auto" | "fill"

高さ。ポイント指定、自動サイズ、親領域への拡張に対応します。

例80
padding?number

コンテンツの内側余白(ポイント)。

例0
x?number

見た目の移動量(ポイント)。x は右、y は下。レイアウトの占有領域は変わりません。

例0
y?number

見た目の移動量(ポイント)。x は右、y は下。レイアウトの占有領域は変わりません。

例0
transform?ViewTransform

レイアウトを変えず全体を変形。移動はポイント、回転・傾きは度、倍率 1 は等倍、基点は 0–1。

例{rotation: 0}
background?Paint

背景の色またはグラデーション。clear は透明。

例"clear"
opacity?number

View 全体の不透明度。0 は透明、1 は不透明。

例1
cornerRadius?number

角丸の半径(ポイント)。

例0
clipped?boolean

View の境界からはみ出す描画を切り抜きます。

例false
clip?"rectangle" | "ellipse"

切り抜き形状は rectangle または ellipse。Material は false で無効化も可能。

例"rectangle"
mask?View | null

アルファマスク用の View。レイアウトに影響せず中央に配置されます。null でマスクを無効にします。

例<Circle width="fill" height="fill" background="white"/>
zIndex?number

兄弟 View の重なり順。大きい値ほど手前。

例0
blur?number

ぼかし半径(ポイント)。0 で無効。

例4
innerShadow?DrawingEffect

効果の色、不透明度、ぼかし半径、x/y オフセット。距離はポイント。

例{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}

効果の色、不透明度、ぼかし半径、x/y オフセット。距離はポイント。

例{color: HDR("cyan"), radius: 8, opacity: 0.8}
shadowColor?Color

外側の影の色。

例HDR("black")
shadowOpacity?number

外側の影の不透明度 0–1。0 で非表示。

例0
shadowRadius?number

外側の影のぼかし半径(ポイント)。

例4
shadowX?number

影の移動量(ポイント)。x は右、y は下。

例0
shadowY?number

影の移動量(ポイント)。x は右、y は下。

例2
animations?Animation[]

プロパティ変更のアニメーション。duration/delay は秒、from/to は端点、repeat/autoreverse は反復、wrap は周期。

例[{property: "opacity", duration: 0.25, curve: "easeInOut"}]
key?string | number

兄弟要素間で安定した識別子。

組み合わせ例

function main() {
  return (
    <ZStack width={180} height={100} alignment="bottomTrailing">
      <Rectangle
        width="fill"
        height="fill"
        background="#30B3A233"
        cornerRadius={12}
      />
      <Text fontSize={40} x={-12} y={-8}>
        78
      </Text>
    </ZStack>
  );
}

アニメーション

アニメーション

widthheightpaddingxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorY

省略時の動作

表は実装で確認した省略時の動作です。プロパティ例は既定値ではありません。固定結果には明示指定し、環境に依存する寸法やテーマ色を定数と思わないでください。

プロパティ省略時の動作
alignment"center"