style-input.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <view class="input">
  3. <input
  4. class="input-ele"
  5. :value="value"
  6. :focus="focus"
  7. :type="type"
  8. placeholder-class="placeholder"
  9. :placeholder="'请输入' + title"
  10. bindinput="input"
  11. bindfocus="inputFocus"
  12. bindblur="inputBlur"
  13. @input="input"
  14. @focus="inputFocus"
  15. @blur="inputBlur"
  16. />
  17. </view>
  18. </template>
  19. <script lang="ts">
  20. export default {
  21. emits: ["input", "focus"],
  22. options: {
  23. virtualHost: true,
  24. },
  25. props: {
  26. type: String,
  27. title: String,
  28. value: String,
  29. focus: Boolean,
  30. },
  31. methods: {
  32. input(e: any) {
  33. this.$emit("input", e.detail);
  34. },
  35. inputBlur() {
  36. this.$emit("focus", {
  37. focus: false,
  38. });
  39. },
  40. inputFocus(e: any) {
  41. this.$emit("focus", {
  42. focus: true,
  43. height: e.detail.height,
  44. });
  45. },
  46. },
  47. };
  48. </script>
  49. <style lang="scss">
  50. .input {
  51. height: 84rpx;
  52. background: #f7f7f7;
  53. border-radius: 10rpx;
  54. font-size: 30rpx;
  55. display: flex;
  56. align-items: center;
  57. padding: 0 40rpx;
  58. }
  59. .placeholder {
  60. color: rgba(0, 0, 0, 0.3);
  61. }
  62. .input-ele {
  63. font-size: 30rpx;
  64. }
  65. </style>