Featqure.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <template>
  2. <div class="wrapper">
  3. <div class="main-features lg:mt-52px pb-30px main-container">
  4. <div ref="text" class="text-container flex justify-around border-b-1px border-[#E1E3E8] overflow-x-auto ">
  5. <div v-for="(item, i) in featureData" :key="i" class="cursor-pointer text-item pb-12px flex flex-col items-center" :class="[i === activeIndex ? 'border-[#396FFA] border-b-3px' : '']" @click="changeIndex(i)">
  6. <div>
  7. <img v-show="i === activeIndex" :src="item.iconActiveUrl" :alt="item.alt" class="w-36px h-36px mb-8px" >
  8. <img v-show="i !== activeIndex" :src="item.iconUrl" :alt="item.alt" class="w-36px h-36px mb-8px" >
  9. </div>
  10. <div class="mx-8px whitespace-nowrap text-sm">{{ item.title }}</div>
  11. </div>
  12. </div>
  13. <div v-show="i === activeIndex" v-for="(data, i) in featureData" :key="i" class="feature-item-container">
  14. <div class="flex justify-between flex-row-reverse ">
  15. <div class="flex-1 flex flex-col justify-center max-w-480px pl-24px">
  16. <div class="relative mb-12px text-24px leading-36px text-[#232748] font-600 <lg:(mb-8px text-16px leading-24px)">{{ data.title }}</div>
  17. <p class="text-16px leading-28px text-[#52555F] <lg:(text-14px leading-20px)">{{ data.decs }}</p>
  18. <a :href="data.url" class="move-arrow inline-flex items-center mt-24px text-sm text-[#396FFA] font-500 <lg:mt-12px">Learn More<ArrowRightActive class="ml-8px move" /></a>
  19. </div>
  20. <div class="img-container relative flex items-center h-500px w-598px">
  21. <img :src="data.bannerUrl" :alt="data.alt" width="598">
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. </div>
  27. </template>
  28. <script>
  29. import ArrowRightActive from '~/components/sdk/ArrowRightActive.svg?inline'
  30. export default {
  31. components: {
  32. ArrowRightActive
  33. },
  34. data () {
  35. return {
  36. index: 0,
  37. activeIndex: 0,
  38. featureData: [
  39. {
  40. title: 'PDF查看',
  41. decs: 'Render complex PDFs smoothly and accurately with fast and battle-tested rendering technologies. Provide rich capabilities like reading mode, themes, navigation, search, zoom, bookmark, and watermark.',
  42. url: '/pdf-sdk/viewer',
  43. alt: 'Viewer',
  44. iconUrl: require('~/assets/images/tools/viewer@2x.svg'),
  45. iconActiveUrl: require('~/assets/images/tools/viewerActive@2x.svg'),
  46. iconMobileUrl: require('~/assets/images/tools/viewer.svg'),
  47. iconMobileActiveUrl: require('~/assets/images/tools/viewerActive.svg'),
  48. bannerUrl: '/images/tools/viewer@2x.png',
  49. },
  50. {
  51. title: 'Document Editor',
  52. alt: 'Document Editor',
  53. decs: 'Embed rich PDF page manipulation and editing capabilities in your app to edit PDF directly: merge, split, add, delete, rotate, move, replace, and extract PDF pages, etc.',
  54. url: '/pdf-sdk/document-editor',
  55. iconUrl: require('~/assets/images/tools/docEdit@2x.svg'),
  56. iconActiveUrl: require('~/assets/images/tools/docEditActive@2x.svg'),
  57. iconMobileUrl: require('~/assets/images/tools/docEdit.svg'),
  58. iconMobileActiveUrl: require('~/assets/images/tools/docEditActive.svg'),
  59. bannerUrl: '/images/tools/docEditor@2x.png',
  60. },
  61. {
  62. title: 'Content Editor',
  63. alt: 'Content Editor',
  64. decs: 'Automatically detect font and size of the original text content, and programmatically manipulate content within pages as needed like adding, deleting, and replacing text and images in PDFs. ',
  65. url: '/pdf-sdk/edit-pdf',
  66. iconUrl: require('~/assets/images/tools/contEdit@2x.svg'),
  67. iconActiveUrl: require('~/assets/images/tools/contEditActive@2x.svg'),
  68. iconMobileUrl: require('~/assets/images/tools/contEdit.svg'),
  69. iconMobileActiveUrl: require('~/assets/images/tools/contEditActive.svg'),
  70. bannerUrl: '/images/tools/contEditor@2x.png',
  71. },
  72. {
  73. title: 'Annotations',
  74. alt: 'Annotations',
  75. decs: 'Enable your users to draw free, highlight text, and collaborate on PDFs using notes, links, text boxes, shapes, markups, and stamp annotations. ',
  76. url: '/pdf-sdk/annotations',
  77. iconUrl: require('~/assets/images/tools/annotation@2x.svg'),
  78. iconActiveUrl: require('~/assets/images/tools/annotationActive@2x.svg'),
  79. iconMobileUrl: require('~/assets/images/tools/annotation.svg'),
  80. iconMobileActiveUrl: require('~/assets/images/tools/annotationActive.svg'),
  81. bannerUrl: '/images/tools/annotation@2x.png',
  82. },
  83. {
  84. title: 'Form Filling',
  85. alt: 'Form Filling',
  86. decs: 'Obtain the ability to create, view, fill out, edit, save, and flatten fillable AcroForms, XFA, and non-interactive forms with ease.',
  87. url: '/pdf-sdk/forms',
  88. iconUrl: require('~/assets/images/tools/formFill@2x.svg'),
  89. iconActiveUrl: require('~/assets/images/tools/formFillActive@2x.svg'),
  90. iconMobileUrl: require('~/assets/images/tools/formFill.svg'),
  91. iconMobileActiveUrl: require('~/assets/images/tools/formFillActive.svg'),
  92. bannerUrl: '/images/tools/formFill@2x.png',
  93. },
  94. {
  95. title: 'Signatures',
  96. alt: 'Signatures',
  97. decs: 'Certify and validate certificate-based documents. Sign your apps using drawn, typed, images, and digital signatures.',
  98. url: '/pdf-sdk/signatures',
  99. iconUrl: require('~/assets/images/tools/signatures@2x.svg'),
  100. iconActiveUrl: require('~/assets/images/tools/signaturesActive@2x.svg'),
  101. iconMobileUrl: require('~/assets/images/tools/signatures.svg'),
  102. iconMobileActiveUrl: require('~/assets/images/tools/signaturesActive.svg'),
  103. bannerUrl: '/images/tools/signatures@2x.png',
  104. }
  105. ]
  106. }
  107. },
  108. methods: {
  109. changeIndex (i) {
  110. this.activeIndex = i
  111. }
  112. }
  113. }
  114. </script>
  115. <style lang="scss" scoped>
  116. .main-content {
  117. font-family: 'Poppins';
  118. .main-features {
  119. position: sticky;
  120. top: 0rem;
  121. display: flex;
  122. flex-direction: column;
  123. height: 100vh;
  124. padding-top: 70px;
  125. overflow: hidden;
  126. .video-container {
  127. position: relative;
  128. display: flex;
  129. flex-grow: 1;
  130. }
  131. .text-container {
  132. scrollbar-width: none; /* firefox */
  133. -ms-overflow-style: none; /* IE 10+ */
  134. & :nth-child(1) {
  135. .mx-8px {
  136. padding-left: 12px;
  137. padding-right: 12px;
  138. }
  139. }
  140. .text-item {
  141. .line-container {
  142. height: 2px;
  143. overflow: hidden;
  144. opacity: 1;
  145. }
  146. }
  147. }
  148. .text-container::-webkit-scrollbar {
  149. display: none; /* Chrome Safari */
  150. }
  151. }
  152. }
  153. ::-webkit-scrollbar {
  154. scrollbar-width: none; /* firefox */
  155. -ms-overflow-style: none;
  156. display: none; /* Chrome Safari */
  157. }
  158. .line-container {
  159. position: relative;
  160. height: 2px;
  161. overflow: hidden;
  162. opacity: 1;
  163. &::before {
  164. content: '';
  165. position: absolute;
  166. top: 1px;
  167. left: 0;
  168. width: 100%;
  169. height: 1px;
  170. background-color: #E1E3E8;
  171. }
  172. }
  173. .line {
  174. position: relative;
  175. width: 100%;
  176. height: 2px;
  177. background-color: #396FFA;
  178. transform-origin: left center;
  179. }
  180. .main-content .main-features .text-container .text-item .title {
  181. font-size: 18px;
  182. }
  183. .main-content .main-features .video-container {
  184. margin-bottom: 3.125rem;
  185. }
  186. @media screen and (min-width: 1280px) {
  187. .main-content .main-features .text-container .text-item .title {
  188. font-size: 22px;
  189. }
  190. }
  191. </style>