index.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <div class="bs-padding-setting">
  3. <div class="padding-box">
  4. <el-input
  5. v-model.number="paddingValue[0]"
  6. class="input-top input-item"
  7. size="mini"
  8. @change="paddingChange"
  9. />
  10. <el-input
  11. v-model.number="paddingValue[1]"
  12. class="input-right input-item"
  13. size="mini"
  14. @change="paddingChange"
  15. />
  16. <el-input
  17. v-model.number="paddingValue[2]"
  18. class="input-bottom input-item"
  19. size="mini"
  20. @change="paddingChange"
  21. />
  22. <el-input
  23. v-model.number="paddingValue[3]"
  24. class="input-left input-item bs-el-input"
  25. size="mini"
  26. @change="paddingChange"
  27. />
  28. <div class="padding-center" />
  29. </div>
  30. </div>
  31. </template>
  32. <script>
  33. export default {
  34. name: 'PaddingSetting',
  35. model: {
  36. prop: 'padding',
  37. event: 'input'
  38. },
  39. props: {
  40. padding: {
  41. type: Array,
  42. default: () => []
  43. }
  44. },
  45. data () {
  46. return {
  47. position: 0
  48. }
  49. },
  50. computed: {
  51. paddingValue () {
  52. return this.padding
  53. }
  54. },
  55. methods: {
  56. paddingChange () {
  57. this.$emit('input', this.paddingValue)
  58. }
  59. }
  60. }
  61. </script>
  62. <style lang="scss" scoped>
  63. .bs-padding-setting{
  64. .padding-box{
  65. width: 160px;
  66. height: 190px;
  67. position: relative;
  68. }
  69. .padding-center{
  70. position: absolute;
  71. top: 50%;
  72. left: 50%;
  73. transform: translate(-50%,-50%);
  74. width: 30%;
  75. height: 30%;
  76. background-color: var(--bs-background-1);
  77. }
  78. .input-item{
  79. width: 50px;
  80. position: absolute;
  81. text-align: center;
  82. /deep/ .el-input__inner{
  83. text-align: center;
  84. }
  85. }
  86. .input-top{
  87. top: 20px;
  88. left:50%;
  89. transform: translateX(-50%);
  90. }
  91. .input-bottom{
  92. bottom: 20px;
  93. left:50%;
  94. transform: translateX(-50%);
  95. }
  96. .input-left{
  97. left: 0px;
  98. top:50%;
  99. transform: translateY(-50%);
  100. }
  101. .input-right{
  102. right: 0px;
  103. top:50%;
  104. transform: translateY(-50%);
  105. }
  106. }
  107. </style>