9433cfb9创建于 2025年12月31日历史提交
<template>
  <view id="var_1" style="flex:1;--var_margin: 2px;" class="var_1" :class="var_bind">
    <view>
      <view class="var_1_1_1">
        <text class="firstParagraph">此段落应有蓝色背景和绿色文本。</text>
      </view>
      <text class="secondParagraph">此段落应有黑色半透明背景和黄色文本。</text>
    </view>
    <text style="width: var(--var_width_invalid, 375rpx);background-color:yellowgreen;">无效值width应为375rpx</text>
    <view id="chanageVarBox" :class="text_style_var_def">
      <text class="text_style"
        v-if="text_style_var_1_on">font-size:26px;style:normal;color:#ccc;background-color:#488cff</text>
      <text class="text_style" v-else>font-size:16px;style:italic;color:#803390;background-color:#48ff32</text>
    </view>

    <view class="view_layout_style_container" id="view_container">
      <view class="view_layout_style"></view>
      <view class="view_layout_style" style="background-color: blue;--var_align_self: flex-start;"></view>
    </view>

    <button id="changeVarButton" @tap="do_change_var()">修改自定义变量</button>
    <view class="test-v-if">
      <view v-if="var_v_if" style="height:var(--var_height);background-color: var(--var_backgroundColor);">
      </view>
    </view>
    <button class="test-v-if-button" @tap="do_vif()">v-if测试</button>
  </view>
</template>
<script>
  export default {
    data() {
      return {
        statusbar: false,
        var_bind: "var_1_bind_1",
        var_v_if: false,
        text_style_var_def: "text_style_var_1",
        text_style_var_1_on: true,
      }
    },
    methods: {
      do_change_var() {
        let view_container = uni.getElementById("view_container")
        if (this.text_style_var_1_on) {
          this.text_style_var_def = "text_style_var_2"
          this.text_style_var_1_on = false
          view_container?.style?.setProperty("--var_flex_direction", "row");
          view_container?.style?.setProperty("--var_justify_content", "flex-end");
          view_container?.style?.setProperty("--var_margin", "");
          // 与 style 中的写法表现不一致,且可能与非简写属性存在冲突
          // view_container?.style?.setProperty("border", "var(--var_border)");
          view_container?.style?.setProperty("background-color", "var(--background-color)");
        } else {
          this.text_style_var_def = "text_style_var_1"
          this.text_style_var_1_on = true
          view_container?.style?.setProperty("--var_margin", "10px");
          view_container?.style?.setProperty("--var_flex_direction", "column");
          view_container?.style?.setProperty("--var_justify_content", "center");
          view_container?.style?.setProperty("background-color", "#FFF");
        }
        this.var_bind = (this.var_bind == "var_1_bind_2") ? "var_1_bind_1" : "var_1_bind_2"
      },
      do_vif() {
        this.var_v_if = !this.var_v_if

      }
    }
  }
</script>

<style>
  .var_1 {
    padding-left: env(safe-area-inset-left);
    padding-right: env(safe-area-inset-right);
    --font-color: #00ff00;
    --var_width: 375rpx;
    --var_backgroundColor: rgba(0, 0, 0, .5);
  }

  .var_1_bind_1 {
    --var_height: 30px;
  }

  .var_1_bind_2 {
    --var_height: 60px;
  }

  .var_1_1_1 {
    --var_backgroundColor: #0000ff;
  }

  .content {
    flex: 1;
  }

  .firstParagraph {
    background-color: var(--var_backgroundColor);
    color: var(--font-color);
  }

  .secondParagraph {
    --font-color: yellow;
    background-color: var(--var_backgroundColor);
    color: var(--font-color);
  }

  .text_style_var_1 {
    --text-font-size: 26px;
    --text-font-style: normal;
    --text-color: #ccc;
    --text-background-color: #488cff;
  }

  .text_style_var_2 {
    --text-font-size: 16px;
    --text-font-style: italic;
    --text-color: #803390;
    --text-background-color: #48ff32;
  }

  .text_style {
    font-family: var(--swiper-item-font-family);
    font-size: var(--text-font-size);
    font-style: var(--text-font-style);
    color: var(--text-color);
    background-color: var(--text-background-color);
  }

  .view_layout_style_container {
    --var_flex_direction: column;
    --var_align_self: center;
    --var_justify_content: center;
    --var_border: 2px red solid;
    --var_border2: 2px green solid;
    --background-color: #CCC;
    --var_height: 110px;
    --var_margin: 10px;
    height: var(--var_height);
    flex-direction: var(--var_flex_direction);
    justify-content: var(--var_justify_content);
    margin: var(--var_margin);
  }

  .view_layout_style {
    width: 50px;
    height: 50px;
    background-color: brown;
    align-self: var(--var_align_self);
  }
</style>