【知识分享】vue里实现一个带样式的云台控制的按钮

实现一个可进行上下左右,放大缩小操作的云台控制按钮,放大缩小按需求可修改成恢复至重置点,效果如下:

代码实现如下所示:

<template>

  <div class="ptz">

    <div class="outer-ring">

      <button class="caret-up">

        <i class="fa fa-caret-up"></i>

      </button>

      <button class="caret-down">

        <i class="fa fa-caret-down"></i>

      </button>

      <button class="caret-left">

        <i class="fa fa-caret-left"></i>

      </button>

      <button class="caret-right">

        <i class="fa fa-caret-right"></i>

      </button>

      <div class="inner-ring">

        <button class="plus"><i class="fa fa-plus"></i></button>

        <div class="line"></div>

        <button @click="controlPanTilt('ZOOM_IN')" class="minus">

          <i class="fa fa-minus"></i>

        </button>

      </div>

    </div>

  </div>

</template>

<style scoped>

.pan-tilt-button {

  color: #fff;

  border: none;

  padding: 10px;

  cursor: pointer;

}

[class*='yuntai'] {

  display: none;

}

button {

  background-color: transparent;

  border: none;

  color: #000;

  font-size: 24px;

  cursor: pointer;

}

.ptz {

  .outer-ring {

    position: relative;

    width: 80px;

    height: 80px;

    background-color: #fff;

    border-radius: 50%;

    box-shadow: inset 0 0 25px #e8e8e8, 0 1px 0 #c3c3c3, 0 2px 0 #c9c9c9, 0 2px 3px #333;

    i {

      font-size: 20px;

      cursor: pointer;

      &:hover {

        color: #00b176;

      }

    }

    .caret-up {

      position: absolute;

      top: 4px;

      left: 36px;

      margin-left: -10px;

    }

    .caret-down {

      position: absolute;

      bottom: -3px;

      left: 36px;

      margin-left: -10px;

    }

    .caret-left {

      position: absolute;

      left: -3px;

      top: 42px;

      margin-top: -10px;

    }

    .caret-right {

      position: absolute;

      right: -14px;

      top: 42px;

      margin-top: -10px;

    }

    .ob-caret-left {

      transform: rotate(45deg);

      position: absolute;

      top: 24px;

      left: 24px;

    }

    .ob-caret-up {

      transform: rotate(45deg);

      position: absolute;

      top: 24px;

      right: 24px;

    }

    .ob-caret-right {

      transform: rotate(45deg);

      position: absolute;

      bottom: 24px;

      right: 24px;

    }

    .ob-caret-down {

      transform: rotate(45deg);

      position: absolute;

      bottom: 24px;

      left: 24px;

    }

    .inner-ring {

      position: absolute;

      top: 50%;

      left: 50%;

      transform: translate(-50%, -50%);

      width: 40px;

      height: 40px;

      border-radius: 50%;

      background-color: #fff;

      border: 1px solid #ddd;

      .plus {

        position: absolute;

        top: 4px;

        left: 15px;

        margin-left: -10px;

      }

      .line {

        height: 1px;

        width: 100%;

        background-color: #ddd;

        position: absolute;

        top: 20px;

        left: 0;

      }

      .minus {

        position: absolute;

        bottom: -6px;

        left: 15px;

        margin-left: -10px;

      }

    }

  }

}

</style>

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,我们可以使用Vue.js来构建控制器的UI界面,然后使用CSS3来实现样式。 下面是一个简单的八方向云台控制器的示例代码: HTML: ```html <div id="app"> <div class="controller"> <div class="button up" @click="move('up')"></div> <div class="button left" @click="move('left')"></div> <div class="button right" @click="move('right')"></div> <div class="button down" @click="move('down')"></div> <div class="button up-left" @click="move('up-left')"></div> <div class="button up-right" @click="move('up-right')"></div> <div class="button down-left" @click="move('down-left')"></div> <div class="button down-right" @click="move('down-right')"></div> </div> </div> ``` CSS: ```css .controller { display: flex; flex-wrap: wrap; width: 150px; height: 150px; border: 1px solid #ccc; } .button { width: 50%; height: 50%; background-color: #fff; border: 1px solid #ccc; box-sizing: border-box; } .up { border-bottom: none; } .down { border-top: none; } .left { border-right: none; } .right { border-left: none; } .up-left { border-bottom: none; border-right: none; } .up-right { border-bottom: none; border-left: none; } .down-left { border-top: none; border-right: none; } .down-right { border-top: none; border-left: none; } ``` JS: ```js new Vue({ el: '#app', methods: { move(direction) { console.log(direction); // 在这添加控制云台的代码 } } }); ``` 这段代码中,我们使用了flex布局来创建一个150x150像素的容器,然后在其中添加了8个按钮实现八方向控制。每个按钮的大小为50% x 50%,并且使用CSS3的边框属性来实现不同方向的边框样式。通过Vue.js的@click事件绑定,我们可以监听每个按钮的点击事件,并在方法中处理相应的控制逻辑。 你可以根据实际需求来修改样式控制逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加瓦程序设计师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值