f581a093创建于 2023年7月28日历史提交
<script setup lang="ts">
import { PropType } from 'vue';
import { FeatureInfo } from '@/shared/@types/type-sig';

defineProps({
  info: {
    type: Array as PropType<FeatureInfo[]>,
    default: () => {
      return [];
    },
  },
});
const emits = defineEmits(['sig-click']);

const handleSigClick = (sigName: string) => {
  emits('sig-click', sigName);
};
</script>

<template>
  <div class="landscape-feature">
    <div
      v-for="feature in info"
      :key="feature.featureName"
      class="landscape-feature-item"
    >
      <div class="feature-item-title">{{ feature.featureName }}</div>
      <ul class="feature-item-sig">
        <li
          v-for="sig in feature.sigs"
          :key="sig"
          :title="sig"
          class="sig-item"
          @click="handleSigClick(sig)"
        >
          {{ sig }}
        </li>
      </ul>
    </div>
  </div>
</template>

<style scoped lang="scss">
.landscape-feature {
  display: grid;
  grid-template-columns: repeat(9, 1fr);
  column-gap: var(--o-spacing-h6);
  .landscape-feature-item {
    max-width: 180px;
    &:nth-child(1) {
      .feature-item-title {
        background-color: #7f6bbe;
      }
    }
    &:nth-child(2) {
      .feature-item-title {
        background-color: #4d7dff;
      }
    }
    &:nth-child(3) {
      .feature-item-title {
        background-color: #db7c61;
      }
    }
    &:nth-child(4) {
      .feature-item-title {
        background-color: #8e9aaf;
      }
    }
    &:nth-child(5) {
      .feature-item-title {
        background-color: #505d75;
      }
    }
    &:nth-child(6) {
      .feature-item-title {
        background-color: #2a9d8f;
      }
    }
    &:nth-child(7) {
      .feature-item-title {
        background-color: #fec456;
      }
    }
    &:nth-child(8) {
      .feature-item-title {
        background-color: #ff801c;
      }
    }
    &:nth-child(9) {
      .feature-item-title {
        background-color: #8eeaff;
      }
    }

    .feature-item-title {
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 18px;
      height: 80px;
      font-size: var(--o-font-size-h8);
      line-height: var(--o-line-height-h8);
      color: var(--o-color-white);
      text-align: center;
      word-break: break-word;
    }
    .feature-item-title-en {
      font-size: var(--o-font-size-text);
    }

    .feature-item-sig {
      margin-top: var(--o-spacing-h5);
      .sig-item {
        & + .sig-item {
          margin-top: var(--o-spacing-h5);
        }
        cursor: pointer;
        width: 100%;
        text-align: center;
        padding: 0 23px;
        height: 46px;

        font-size: var(--o-font-size-text);
        line-height: 46px;
        color: #7d32ea;
        border: 1px solid #7d32ea;
        background-color: #ffffff;
        transition: all 0.3s;
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;

        &:hover {
          background: #7d32ea;
          color: #ffffff;
          transform: scale(1.05, 1.05);
        }
      }
    }
  }
}

.dark {
  .landscape-feature {
    .landscape-feature-item {
      .feature-item-sig {
        .sig-item {
          color: #ffffff;
          background: #383838;
          border: 1px solid #b2b2b2;

          &:hover {
            background: #406fe7;
            color: #ffffff;
            border-color: #406fe7;
          }
        }
      }
    }
  }
}
</style>