vue实战范例——箭头步骤条/导航(含css 斜切skew的妙用)

简介: vue实战范例——箭头步骤条/导航(含css 斜切skew的妙用)

<template>
  <div>
    <div class="arrowsBox">
      <div class="arrowsItem" v-for="(item, index) in list" :key="index">
        <div
          class="arrows-up arrows"
          :class="{
            arrows_active: item.status === 'active',
            arrows_done: item.status === 'done',
            arrows_todo: item.status === 'todo',
          }"
        ></div>
        <div
          class="arrows-down arrows"
          :class="{
            arrows_active: item.status === 'active',
            arrows_done: item.status === 'done',
            arrows_todo: item.status === 'todo',
          }"
        ></div>
        <div
          class="arrows-label"
          :class="{
            arrows_label_active: item.status === 'active',
            arrows_label_done: item.status === 'done',
            arrows_label_todo: item.status === 'todo',
          }"
        >
          {{ item.label }}
        </div>
      </div>
    </div>

    <button v-if="unFinish" @click="next" class="btn">下一步</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      unFinish: true,
      list: [
        {
          label: "1-规则说明",
          prop: "1",
          status: "done",
        },
        {
          label: "2-参与活动",
          prop: "2",
          status: "done",
        },
        {
          label: "3-参与抽奖",
          prop: "3",
          status: "active",
        },
        {
          label: "4-奖品发放",
          prop: "4",
          status: "todo",
        },
        {
          label: "5-查看结果",
          prop: "5",
          status: "todo",
        },
      ],
    };
  },
  methods: {
    next() {
      for (let item of this.list) {
        if (item.status === "active") {
          item.status = "done";
        }

        if (item.status === "todo") {
          item.status = "active";
          if (this.list[this.list.length - 1].status === "active") {
            this.unFinish = false;
          }
          break;
        }
      }
    },
  },
};
</script>
<style scoped>
.arrowsBox {
  display: flex;
  justify-content: center;
  height: 40px;
  margin: 20px;
  font-weight: bold;
}
.arrowsItem {
  position: relative;
  height: 100%;
  width: 140px;
  margin-right: 10px;
}
.arrows-up {
  transform: skewX(30deg);
}
.arrows-down {
  transform: skewX(-30deg);
}
.arrows {
  height: 50%;

  background: gray;
}

.arrows-label {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  left: 0;
  right: 0;
  bottom: 0;
  text-align: center;
}
.arrows_done {
  background: #edf9ff;
}
.arrows_active {
  background: #009fe9;
}
.arrows_todo {
  background: #ebedf0;
}

.arrows_label_done {
  color: #009fe9;
}
.arrows_label_active {
  color: #fff;
}
.arrows_label_todo {
  color: #929393;
}
.btn {
  background: #009fe9;
  color: #fff;
  border: none;
  padding: 6px;
  width: 100px;
  border-radius: 4px;
  margin: auto;
  display: block;
}
</style>

css 斜切skew的妙用

目录
相关文章
|
30天前
|
前端开发
导航新风尚:CSS梯形设计,让网站菜单不再单调!
导航新风尚:CSS梯形设计,让网站菜单不再单调!
|
26天前
|
编解码 前端开发 开发者
【前端设计达人必备】揭秘CSS尺寸单位的魔力:从基础到实战,打造灵动响应式网页!
【8月更文挑战第26天】本文深入探讨了CSS中常用的尺寸单位,包括像素(px)、百分比(%)、视窗单位(vw/vh/vmin/vmax)、可伸缩相对单位(em/rem)以及Flexbox和Grid中的fr单位。通过具体案例展示了每种单位的特点及其适用场景。像素适用于固定尺寸元素;百分比和em/rem利于构建响应式布局;视窗单位适合全屏设计;fr单位则能有效管理复杂网格布局的空间分配。掌握这些单位有助于开发者设计出更加灵活、高质量的网页布局。
36 4
|
30天前
|
前端开发
导航栏也时尚:CSS缩放动画,让导航链接在鼠标经过时绽放!
导航栏也时尚:CSS缩放动画,让导航链接在鼠标经过时绽放!
|
30天前
|
前端开发
一键复制:期末大作业常用的CSS动画导航效果!
一键复制:期末大作业常用的CSS动画导航效果!
|
1月前
|
前端开发 JavaScript
使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思
本文分享了如何使用Vue和CSS实现一个汉堡图标在点击时过渡为叉号图标的动画效果,并提供了详细的实现代码和效果演示。
53 0
使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思
|
30天前
|
前端开发
官网导航更智能:CSS动画下划线,让每一次点击都充满期待!
官网导航更智能:CSS动画下划线,让每一次点击都充满期待!
|
2月前
|
编解码 前端开发 容器
CSS Flex布局实战案例:构建响应式卡片组件
【7月更文挑战第17天】通过上述步骤,我们成功地使用CSS Flex布局构建了一个响应式的卡片组件。Flexbox不仅简化了布局代码,还让我们能够轻松实现复杂的布局效果,如响应式设计。在实战中,掌握Flexbox将大大提高前端开发的效率和网页布局的质量。希望这个案例能够帮助你更好地理解和应用Flexbox布局。
|
2月前
|
移动开发 前端开发 HTML5
CSS 【实战】 “四合院”布局
CSS 【实战】 “四合院”布局
31 0
CSS 【实战】 “四合院”布局
|
2月前
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
46 0
|
2月前
|
前端开发 JavaScript
CSS【实战】抽屉动画
CSS【实战】抽屉动画
44 0