sdk-tag-custom.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Document</title>
  7. <style>
  8. html,
  9. body {
  10. width: 100%;
  11. height: 100%;
  12. margin: 0;
  13. overflow: hidden;
  14. }
  15. .scene {
  16. width: 100%;
  17. height: 100%;
  18. }
  19. #toolbar {
  20. position: absolute;
  21. left: 50%;
  22. top: 0;
  23. z-index: 10000;
  24. }
  25. [xui_tags_view] .tag-body {
  26. position: absolute;
  27. left: 50%;
  28. bottom: 50px;
  29. width: 100px;
  30. height: 100px;
  31. background-color: bisque;
  32. transform: translateX(-50%) scale(0);
  33. transform-origin: bottom;
  34. transition: all 0.3s cubic-bezier(0.35, 0.32, 0.65, 0.63);
  35. pointer-events: none;
  36. }
  37. [xui_tags_view] .tag-body.show {
  38. transform: translateX(-50%) scale(1);
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <div id="scene" class="scene"></div>
  44. <script src="../dist/sdk/kankan-sdk-deps.js"></script>
  45. <script src="../dist/sdk/kankan-sdk.js"></script>
  46. <script>
  47. var kankan = new KanKan({
  48. dom: '#scene',
  49. num: 't-JKNqv1o',
  50. tag: {
  51. showIn: 'panorama,floorplan',
  52. },
  53. })
  54. kankan
  55. .use('TagView', {
  56. render(data) {
  57. console.log(data)
  58. if (data.type == 'image') {
  59. return `
  60. <span class="tag-icon animate" style="background-image:url({{icon}})"></span>
  61. <div class="tag-body">sdfsdf</div>
  62. `
  63. } else {
  64. return `
  65. <span class="tag-icon animate" style="background-image:url({{icon}})"></span>
  66. `
  67. }
  68. },
  69. })
  70. .then(view => {
  71. view.on('rendered', () => {
  72. view.on('click', e => {
  73. var tag = e.data
  74. // 聚焦当前点击的热点
  75. view.focus(tag.sid)
  76. })
  77. view.on('focus', e => {
  78. document.querySelectorAll('[xui_tags_view] >div').forEach(el => {
  79. if (el.getAttribute('data-tag-type') == 'image') {
  80. el.querySelector('.tag-body').classList.remove('show')
  81. }
  82. })
  83. if (e.data.type == 'image') {
  84. e.target.querySelector('.tag-body').classList.add('show')
  85. }
  86. })
  87. })
  88. })
  89. kankan.render()
  90. </script>
  91. </body>
  92. </html>