手写实现timeline时间线组件

该文章展示了一个使用Vue.js和typescript编写的步骤条组件,利用模板语法和数据绑定动态渲染步骤信息,包括标题和最后修改时间。样式设计中包含了定位、背景色和圆角等元素,同时提供了垂直布局的变体。
摘要由CSDN通过智能技术生成
先看效果图

在这里插入图片描述

template部分
  <div class="g-steps">
    <div class="steps-list" v-if="steps.length">
      <div class="step-item flex align-items-center" v-for="(item, index) in steps">
        <span>{{ index + 1 }}</span>
        <div class="content">
          <p class="title">{{ item.title }}</p>
          <p class="time">{{ item.lastModifiedAt }}</p>
        </div>
      </div>
    </div>
  </div>
js部分
<script setup lang="ts">
import { formatDate } from '@/utils/common';

type Props = {
  steps: {
    title: string,
    lastModifiedAt: string
  }[]
}
const props = defineProps<Props>()
</script>
style部分
<style scoped lang="scss">
.g-steps {
  .steps-list {

    .step-item {
      position: relative;

      &::before {
        content: '';
        position: absolute;
        height: 100%;
        top: 50%;
        left: 10px;
        width: 1px;
        background-color: rgba(0, 0, 0, 0.12);
        z-index: -1;
      }

      &:last-child {
        &::before {
          content: none;
        }
      }

      span {
        display: inline-block;
        background-color: #9e9d9e;
        width: 22px;
        height: 22px;
        border-radius: 50%;
        text-align: center;
        color: white;
        line-height: 22px;
      }

      .content {
        margin-left: 12px;
        margin-top: 8px;
        padding: 8px;
        width: 100%;
        background-color: #F9F9F9;

        p {
          line-height: 24px;
        }

        p.time {
          color: #B8B8B8;
          font-size: 12px;
        }
      }
    }
  }

  .p-steps {
    :deep(.p-steps-list) {
      flex-direction: column;

      li {
        &::before {
          background-color: rgba(0, 0, 0, 0.12);
          height: 100%;
          left: 18px;
          top: 18px;
          width: 1px;
        }
      }

      .p-steps-item {
        &::before {
          position: absolute;
        }
      }
    }

  }
}
</style>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值