watermark.uvue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <cl-page>
  3. <view class="p-3">
  4. <demo-item :label="t('自定义样式')">
  5. <view class="flex">
  6. <cl-watermark
  7. :text="customText"
  8. :font-size="fontSize"
  9. :color="color"
  10. :dark-color="darkColor"
  11. :opacity="opacity"
  12. :rotate="rotate"
  13. :width="width"
  14. :height="height"
  15. :gap-x="gapX"
  16. :gap-y="gapY"
  17. :font-weight="fontWeight"
  18. >
  19. <view
  20. class="flex flex-col p-4 rounded-xl bg-surface-50 dark:bg-surface-800 h-[200px]"
  21. >
  22. <cl-text>
  23. 明月几时有?把酒问青天。 不知天上宫阙,今夕是何年。
  24. 我欲乘风归去,又恐琼楼玉宇,高处不胜寒。 起舞弄清影,何似在人间。
  25. </cl-text>
  26. </view>
  27. </cl-watermark>
  28. </view>
  29. <cl-list border class="mt-3">
  30. <cl-list-item :label="t('水印文本')">
  31. <cl-input
  32. v-model="customText"
  33. placeholder="请输入水印文本"
  34. :pt="{ className: 'w-[150px]' }"
  35. />
  36. </cl-list-item>
  37. <cl-list-item :label="t('字体大小')">
  38. <view class="w-[150px]">
  39. <cl-slider v-model="fontSize" :min="12" :max="32" :step="1"></cl-slider>
  40. </view>
  41. </cl-list-item>
  42. <!-- #ifndef APP -->
  43. <cl-list-item :label="t('透明度')">
  44. <view class="w-[150px]">
  45. <cl-slider
  46. v-model="opacity"
  47. :min="0.1"
  48. :max="1"
  49. :step="0.05"
  50. ></cl-slider>
  51. </view>
  52. </cl-list-item>
  53. <!-- #endif -->
  54. <cl-list-item :label="t('旋转角度')">
  55. <view class="w-[150px]">
  56. <cl-slider
  57. v-model="rotate"
  58. :min="-180"
  59. :max="180"
  60. :step="5"
  61. ></cl-slider>
  62. </view>
  63. </cl-list-item>
  64. <cl-list-item :label="t('水印宽度')">
  65. <view class="w-[150px]">
  66. <cl-slider v-model="width" :min="80" :max="300" :step="10"></cl-slider>
  67. </view>
  68. </cl-list-item>
  69. <cl-list-item :label="t('水印高度')">
  70. <view class="w-[150px]">
  71. <cl-slider v-model="height" :min="40" :max="200" :step="10"></cl-slider>
  72. </view>
  73. </cl-list-item>
  74. <cl-list-item :label="t('水平间距')">
  75. <view class="w-[150px]">
  76. <cl-slider v-model="gapX" :min="20" :max="200" :step="10"></cl-slider>
  77. </view>
  78. </cl-list-item>
  79. <cl-list-item :label="t('垂直间距')">
  80. <view class="w-[150px]">
  81. <cl-slider v-model="gapY" :min="20" :max="200" :step="10"></cl-slider>
  82. </view>
  83. </cl-list-item>
  84. <cl-list-item :label="t('字体粗细')">
  85. <cl-tabs
  86. v-model="fontWeight"
  87. :list="fontWeightList"
  88. :height="30"
  89. show-slider
  90. ></cl-tabs>
  91. </cl-list-item>
  92. </cl-list>
  93. </demo-item>
  94. <demo-item :label="t('图片保护')">
  95. <view class="flex">
  96. <cl-watermark
  97. text="© Cool UI"
  98. :width="200"
  99. :height="80"
  100. :opacity="0.9"
  101. :pt="{
  102. className: '!h-[200px] !w-[200px]'
  103. }"
  104. >
  105. <image
  106. src="https://unix.cool-js.com/images/demo/avatar.jpg"
  107. mode="aspectFit"
  108. class="w-full h-full"
  109. ></image>
  110. </cl-watermark>
  111. </view>
  112. </demo-item>
  113. </view>
  114. </cl-page>
  115. </template>
  116. <script lang="ts" setup>
  117. import DemoItem from "../components/item.uvue";
  118. import { ref } from "vue";
  119. import { t } from "@/.cool";
  120. import type { ClTabsItem } from "@/uni_modules/cool-ui";
  121. const customText = ref("Cool UI");
  122. const fontSize = ref(16);
  123. const color = ref("rgba(0, 0, 0, 0.15)");
  124. const darkColor = ref("rgba(255, 255, 255, 0.15)");
  125. const opacity = ref(1);
  126. const rotate = ref(-22);
  127. const width = ref(120);
  128. const height = ref(64);
  129. const gapX = ref(100);
  130. const gapY = ref(100);
  131. const fontWeight = ref("normal");
  132. const fontWeightList = [
  133. {
  134. label: t("正常"),
  135. value: "normal"
  136. },
  137. {
  138. label: t("加粗"),
  139. value: "bold"
  140. }
  141. ] as ClTabsItem[];
  142. </script>