watch-button.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <view>
  3. <!-- 按钮 -->
  4. <button :class="['buttonBorder',!_rotate?'dlbutton':'dlbutton_loading']" :style="{'background':bgColor, 'color': fontColor}"
  5. @click="$emit('click', $event)" @contact="$emit('contact', $event)" @error="$emit('error', $event)" @getphonenumber="$emit('getphonenumber', $event)"
  6. @getuserinfo="$emit('getuserinfo', $event)" @launchapp="$emit('launchapp', $event)" @longtap="$emit('longtap', $event)"
  7. @opensetting="$emit('opensetting', $event)" @touchcancel="$emit('touchcancel', $event)" @touchend="$emit('touchend', $event)"
  8. @touchmove="$emit('touchmove', $event)" @touchstart="$emit('touchstart', $event)">
  9. <view :class="_rotate?'rotate_loop':''">
  10. <text v-if="_rotate" class="cuIcon cuIcon-loading1 "></text>
  11. <view v-if="!_rotate">
  12. <slot name="text">{{ text }}</slot>
  13. </view>
  14. </view>
  15. </button>
  16. </view>
  17. </template>
  18. <script>
  19. export default {
  20. props: {
  21. text: String, //显示文本
  22. rotate: {
  23. //是否启动加载
  24. type: [Boolean, String],
  25. default: false,
  26. },
  27. bgColor: {
  28. //按钮背景颜色
  29. type: String,
  30. default: "linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.6))",
  31. },
  32. fontColor: {
  33. //按钮字体颜色
  34. type: String,
  35. default: "#FFFFFF",
  36. },
  37. },
  38. computed: {
  39. _rotate() {
  40. //处理值
  41. return String(this.rotate) !== 'false'
  42. },
  43. }
  44. }
  45. </script>
  46. <style>
  47. @import url("./colorui/icon.css");
  48. .dlbutton {
  49. display: flex;
  50. justify-content: center;
  51. align-items: center;
  52. color: #FFFFFF;
  53. font-size: 30rpx;
  54. white-space: nowrap;
  55. overflow: hidden;
  56. width: 601rpx;
  57. height: 100rpx;
  58. background: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.6));
  59. box-shadow: 0rpx 0rpx 13rpx 0rpx rgba(164, 217, 228, 0.4);
  60. border-radius: 2.5rem;
  61. margin-top: 0rpx;
  62. }
  63. .dlbutton_loading {
  64. display: flex;
  65. justify-content: center;
  66. align-items: center;
  67. color: #FFFFFF;
  68. font-size: 30rpx;
  69. width: 100rpx;
  70. height: 100rpx;
  71. background: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.6));
  72. box-shadow: 0rpx 0rpx 13rpx 0rpx rgba(164, 217, 228, 0.4);
  73. border-radius: 2.5rem;
  74. margin-top: 0rpx;
  75. }
  76. .buttonBorder {
  77. border: none;
  78. border-radius: 2.5rem;
  79. -webkit-box-shadow: 0 0 60rpx 0 rgba(0, 0, 0, .2);
  80. box-shadow: 0 0 60rpx 0 rgba(0, 0, 0, .2);
  81. -webkit-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
  82. -moz-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
  83. -ms-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
  84. -o-transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
  85. transition: all 0.4s cubic-bezier(.57, .19, .51, .95);
  86. }
  87. /* 旋转动画 */
  88. .rotate_loop {
  89. -webkit-transition-property: -webkit-transform;
  90. -webkit-transition-duration: 1s;
  91. -moz-transition-property: -moz-transform;
  92. -moz-transition-duration: 1s;
  93. -webkit-animation: rotate 1s linear infinite;
  94. -moz-animation: rotate 1s linear infinite;
  95. -o-animation: rotate 1s linear infinite;
  96. animation: rotate 1s linear infinite;
  97. }
  98. @-webkit-keyframes rotate {
  99. from {
  100. -webkit-transform: rotate(0deg)
  101. }
  102. to {
  103. -webkit-transform: rotate(360deg)
  104. }
  105. }
  106. @-moz-keyframes rotate {
  107. from {
  108. -moz-transform: rotate(0deg)
  109. }
  110. to {
  111. -moz-transform: rotate(359deg)
  112. }
  113. }
  114. @-o-keyframes rotate {
  115. from {
  116. -o-transform: rotate(0deg)
  117. }
  118. to {
  119. -o-transform: rotate(359deg)
  120. }
  121. }
  122. @keyframes rotate {
  123. from {
  124. transform: rotate(0deg)
  125. }
  126. to {
  127. transform: rotate(359deg)
  128. }
  129. }
  130. button::after {
  131. border: none;
  132. }
  133. </style>