四零语境前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

150 lines
3.5 KiB

  1. # nx-turn
  2. #使用须知
  3. * 1、这是一个翻页组件,适用于小说翻页功能
  4. * 2、这个插件支持APP-VUE、H5、微信小程序
  5. #props属性
  6. | 属性名称 | 类型 | 默认值 | 可选值 | 说明 |
  7. | :----- | :----: | :----: | :----: | :---- |
  8. | initPage | Number | 0 | - | 初始页码,从0开始 |
  9. | pageCount | Number | -1 | - | 总页数。-1时无限向下翻页 |
  10. | customClass | String | nx-turn-theme | - | 自定义class |
  11. | customStyle | Object | - | - | 自定义style |
  12. #event事件
  13. | 事件名称 | 参数 | 说明 |
  14. | :----- | :----: | :---- |
  15. | init-completed | pageWrapperInfo: 书页节点信息 | 组件初始化完成事件 |
  16. | turning | ---- | 书页正在翻动事件 |
  17. | turned | info = { pageNumber, isFirst, isLast },pageNumber: 当前页(从0开始),isFirst: 是否是第一页,isLast: 是否是最后一页 | 书页翻动完成事件 |
  18. | click-center | ---- | 点击书页中部事件 |
  19. #slot插槽
  20. | 插槽名称 | 参数 | 说明 |
  21. | :----- | :----: | :---- |
  22. | page-content | page: 当前页页码(从0开始) | 当前页/翻动页插槽,传入自定义页面内容 |
  23. | next-page-content | page: 下一页页码(从1开始) | 下一页插槽,传入自定义页面内容,一般和当前页一致 |
  24. #快速开始
  25. ```html
  26. <view class="content">
  27. <nx-turn>
  28. <template v-slot:page-content="{ page }">
  29. <text>{{ page }}</text>
  30. </template>
  31. <template v-slot:next-page-content="{ page }">
  32. <text>{{ page }}</text>
  33. </template>
  34. </nx-turn>
  35. </view>
  36. ```
  37. ```css
  38. page {
  39. width: 100%;
  40. height: 100%;
  41. }
  42. .content {
  43. width: 100%;
  44. height: 100%;
  45. }
  46. ```
  47. #完整示例
  48. ```html
  49. <view class="content">
  50. <nx-turn
  51. :initPage="page"
  52. :pageCount="pageContent.length"
  53. custom-class="theme-blue"
  54. @init-completed="initCompleted"
  55. @turning="handleTurning"
  56. @turned="handleTurned"
  57. @click-center="handleClickCenter"
  58. >
  59. <template v-slot:page-content="{ page }">
  60. <view class="page-content">
  61. <text>{{ pageContent[page] }}</text>
  62. </view>
  63. </template>
  64. <template v-slot:next-page-content="{ page }">
  65. <view class="page-content">
  66. <text>{{ pageContent[page] }}</text>
  67. </view>
  68. </template>
  69. </nx-turn>
  70. </view>
  71. ```
  72. ```javascript
  73. export default {
  74. data() {
  75. return {
  76. // 当前页码
  77. page: 0,
  78. // 分页数据
  79. pageContent: [
  80. "使用须知\n1. 这是一个翻页组件,适用于小说翻页功能\n2. 这个插件支持APP-VUE、H5、微信小程序",
  81. "1.0.0(2024-07-10)\n第一次发布\n仿真翻页,支持翻起书角"
  82. ],
  83. };
  84. },
  85. methods: {
  86. initCompleted(pageWrapperInfo) {
  87. console.log('页面节点信息:', pageWrapperInfo);
  88. },
  89. handleTurning() {
  90. uni.showToast({
  91. title: '翻页中',
  92. duration: 100,
  93. icon: 'none'
  94. });
  95. },
  96. handleTurned(info) {
  97. console.log('当前页面信息:', info);
  98. if (info.isFirst) {
  99. uni.showToast({
  100. title: '已经是第一页了',
  101. icon: 'none'
  102. });
  103. }
  104. if (info.isLast) {
  105. uni.showToast({
  106. title: '已经是最后一页了',
  107. icon: 'none'
  108. });
  109. }
  110. },
  111. handleClickCenter() {
  112. uni.showModal({
  113. title: '提示',
  114. content: '点击中部',
  115. });
  116. }
  117. }
  118. }
  119. ```
  120. ```css
  121. page {
  122. width: 100%;
  123. height: 100%;
  124. }
  125. .content {
  126. width: 100%;
  127. height: 100%;
  128. }
  129. /* #ifdef VUE3 */
  130. ::v-deep
  131. /* #endif */
  132. /* #ifdef VUE2 */
  133. /deep/
  134. /* #endif */
  135. .theme-blue {
  136. background-color: #DCE2F1;
  137. color: mix(#000000, #DCE2F1, 50%);
  138. border-color: mix(#FFFFFF, #DCE2F1, 70%);
  139. }
  140. .page-content {
  141. padding: 15px;
  142. font-size: 16px;
  143. line-height: 1.5;
  144. }
  145. ```