global-properties.uvue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <!-- #ifdef APP -->
  3. <scroll-view style="flex: 1">
  4. <!-- #endif -->
  5. <view>
  6. <page-head :title="title"></page-head>
  7. <view class="uni-padding-wrap">
  8. <view :id="generalId" :class="generalClass" :name="generalName" :title="generalTitle" :data-test="generalData"
  9. :style="generalStyle" ref="general-target">
  10. <text>id: {{ generalId }}</text>
  11. <text>class: {{ generalClass }}</text>
  12. <text>name: {{ generalName }}</text>
  13. <text>title: {{ generalTitle }}</text>
  14. <text>data-test: {{ generalData }}</text>
  15. <text>style: {{ generalStyle }}</text>
  16. </view>
  17. <view class="btn btn-style uni-common-mt" @click="validateGeneralAttributes">
  18. <text class="btn-inner">{{ validateGeneralAttrText }}</text>
  19. </view>
  20. <view class="btn btn-ref uni-common-mt" @click="changeHeight">
  21. <text class="btn-inner">{{ changeHeightByRefText }}</text>
  22. </view>
  23. <view class="view-class" :hover-class="hoverClass" ref="view-target">
  24. <text class="text">按下 50 ms 后背景变红</text>
  25. <text class="text">抬起 400 ms 后背景恢复</text>
  26. </view>
  27. <view class="view-class" :hover-class="hoverClass" :hover-start-time="1000" :hover-stay-time="1000"
  28. ref="view-target">
  29. <text class="text">按下 1000 ms 后背景变红</text>
  30. <text class="text">抬起 1000 ms 后背景恢复</text>
  31. </view>
  32. </view>
  33. </view>
  34. <!-- #ifdef APP -->
  35. </scroll-view>
  36. <!-- #endif -->
  37. </template>
  38. <script lang="uts">
  39. export default {
  40. data() {
  41. return {
  42. title: 'global-properties',
  43. generalId: 'general-id',
  44. generalClass: 'general-class',
  45. generalName: 'general-name',
  46. generalTitle: 'general-title',
  47. generalData: 'general-data',
  48. generalStyle: 'background-color: aqua',
  49. validateGeneralAttrText: '验证基础属性',
  50. hoverClass: 'hover-class',
  51. validateViewAttrText: '验证 view 属性',
  52. changeHeightByRefText: '通过 ref 修改高度',
  53. }
  54. },
  55. methods: {
  56. validateGeneralAttributes() {
  57. const generalTarget = this.$refs['general-target'] as UniElement
  58. const generalId = generalTarget.getAttribute('id')
  59. if (generalId != this.generalId) {
  60. this.validateGeneralAttrText = '基础属性 id 验证失败'
  61. return
  62. }
  63. // #ifdef APP
  64. if (!generalTarget.classList.includes('general-class')) {
  65. this.validateGeneralAttrText = '基础属性 class 验证失败'
  66. return
  67. }
  68. // #endif
  69. // #ifdef WEB
  70. if (!Array.from(generalTarget.classList).includes('general-class')) {
  71. this.validateGeneralAttrText = '基础属性 class 验证失败'
  72. return
  73. }
  74. // #endif
  75. // #ifndef MP
  76. const generalName = generalTarget.getAttribute('name')
  77. if (generalName != this.generalName) {
  78. this.validateGeneralAttrText = '基础属性 name 验证失败'
  79. return
  80. }
  81. const generalTitle = generalTarget.getAttribute('title')
  82. if (generalTitle != this.generalTitle) {
  83. this.validateGeneralAttrText = '基础属性 title 验证失败'
  84. return
  85. }
  86. const generalData = generalTarget.getAttribute('data-test')
  87. if (generalData != this.generalData) {
  88. this.validateGeneralAttrText = '基础属性 data-test 验证失败'
  89. return
  90. }
  91. // #endif
  92. this.validateGeneralAttrText = '基础属性验证成功'
  93. },
  94. changeHeight() {
  95. const generalTarget = this.$refs['general-target'] as UniElement
  96. this.changeHeightByRefText = '已通过 ref 修改高度'
  97. generalTarget.style.setProperty('height', '200px')
  98. }
  99. },
  100. }
  101. </script>
  102. <style>
  103. .btn {
  104. height: 50px;
  105. display: flex;
  106. align-items: center;
  107. justify-content: center;
  108. background-color: #409eff;
  109. border-radius: 5px;
  110. }
  111. .btn-inner {
  112. color: #fff;
  113. }
  114. .general-class {
  115. margin-left: 40px;
  116. padding: 10px;
  117. width: 260px;
  118. height: 160px;
  119. background-color: antiquewhite;
  120. }
  121. .view-class {
  122. margin: 20px 0 0 50px;
  123. padding: 10px;
  124. width: 240px;
  125. height: 100px;
  126. background-color: antiquewhite;
  127. }
  128. .view-class .text {
  129. margin-top: 5px;
  130. text-align: center;
  131. }
  132. .hover-class {
  133. background-color: red;
  134. }
  135. </style>