@shijiu/jsview-vue 0.9.254 → 0.9.267
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dom/bin/package.json +11 -11
- package/dom/browser-root-style.css +21 -21
- package/loader/jsview-main.js +41 -41
- package/loader/jsview.config.default.js +37 -37
- package/loader/jsview.default.config.js +37 -37
- package/package.json +1 -5
- package/samples/AdvanceMetroWidget/App.vue +122 -122
- package/samples/AdvanceMetroWidget/Frame.vue +100 -100
- package/samples/AdvanceMetroWidget/Item.vue +57 -57
- package/samples/AdvanceMetroWidget/data.js +136 -136
- package/samples/AnimPicture/App.vue +223 -223
- package/samples/Basic/App.vue +128 -128
- package/samples/Basic/components/TitleBar.vue +28 -28
- package/samples/Basic/components/anim/AnimGroup.vue +67 -67
- package/samples/Basic/components/anim/AnimKeyframeBasic.vue +101 -101
- package/samples/Basic/components/anim/AnimKeyframeComposite.vue +52 -52
- package/samples/Basic/components/anim/AnimTransition.vue +116 -116
- package/samples/Basic/components/div/DivBackground.vue +14 -14
- package/samples/Basic/components/div/DivClip.vue +80 -80
- package/samples/Basic/components/div/DivCssScoped.vue +26 -26
- package/samples/Basic/components/div/DivCssVar.vue +49 -49
- package/samples/Basic/components/div/DivGroup1.vue +32 -32
- package/samples/Basic/components/div/DivGroup2.vue +40 -40
- package/samples/Basic/components/div/DivLayout.vue +11 -11
- package/samples/Basic/components/div/DivRadius.vue +46 -46
- package/samples/Basic/components/text/TextAlign.vue +47 -47
- package/samples/Basic/components/text/TextFontStyle.vue +57 -57
- package/samples/Basic/components/text/TextGroup.vue +31 -31
- package/samples/Basic/components/text/TextOverflow.vue +77 -77
- package/samples/BasicFocusControl/App.vue +124 -124
- package/samples/BasicFocusControl/components/BaseBlock.vue +50 -50
- package/samples/BasicFocusControl/components/MainArea.vue +97 -97
- package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +20 -20
- package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +29 -29
- package/samples/BasicFocusControl/components/SideBar.vue +72 -72
- package/samples/BasicFocusControl/components/SideBarBlock.vue +29 -29
- package/samples/ClassNameDemo/App.vue +119 -119
- package/samples/ClassNameDemo/components/ContentItem.vue +252 -252
- package/samples/ClassNameDemo/components/LoadingView.vue +43 -43
- package/samples/ClassNameDemo/components/TitleView.vue +24 -24
- package/samples/ClassNameDemo/data.js +24 -24
- package/samples/ColorSpace/App.vue +134 -134
- package/samples/DemoHomepage/App.vue +31 -31
- package/samples/DemoHomepage/components/BodyFrame.vue +81 -81
- package/samples/DemoHomepage/components/Dialog.vue +93 -93
- package/samples/DemoHomepage/components/Item.vue +76 -76
- package/samples/DemoHomepage/components/TabFrame.vue +86 -86
- package/samples/DemoHomepage/router.js +132 -132
- package/samples/DemoHomepage/views/Homepage.vue +186 -186
- package/samples/FlipCard/App.vue +80 -80
- package/samples/FlipCard/FlipCard.vue +123 -123
- package/samples/FlipCard/data.js +12 -12
- package/samples/FlowMultiWidget/App.vue +90 -90
- package/samples/FlowMultiWidget/components/Block.vue +106 -106
- package/samples/FlowMultiWidget/components/FlowPage.vue +59 -59
- package/samples/FlowMultiWidget/components/Item.vue +102 -102
- package/samples/FlowMultiWidget/components/MenuItem.vue +71 -71
- package/samples/FlowMultiWidget/components/MyMenu.vue +89 -89
- package/samples/FlowMultiWidget/data.js +446 -446
- package/samples/HashHistory/App.vue +124 -124
- package/samples/HashHistory/components/HorizontalButtonList.vue +113 -113
- package/samples/HashHistory/components/Item.vue +73 -73
- package/samples/HashHistory/router.js +29 -29
- package/samples/HashHistory/views/BasePage.vue +18 -18
- package/samples/HashHistory/views/MainPage.vue +67 -67
- package/samples/HashHistory/views/SubPage.vue +78 -78
- package/samples/HashHistory/views/SubPageFirst.vue +9 -9
- package/samples/HashHistory/views/SubPageSecond.vue +9 -9
- package/samples/LongImage/App.vue +96 -96
- package/samples/LongImage/Button.vue +153 -153
- package/samples/LongImage/LongImageScroll.vue +126 -126
- package/samples/LongImage/Scroll.vue +15 -15
- package/samples/LongText/App.vue +111 -111
- package/samples/LongText/Button.vue +153 -153
- package/samples/LongText/LongTextScroll.vue +224 -224
- package/samples/LongText/Scroll.vue +15 -15
- package/samples/Preload/App.vue +145 -145
- package/samples/Preload/data.js +22 -22
- package/samples/Preload/preloadItem.vue +21 -21
- package/samples/QrcodeDemo/App.vue +72 -72
- package/samples/SimpleWidgetDemo/App.vue +203 -203
- package/samples/SimpleWidgetDemo/Item.vue +82 -82
- package/samples/SimpleWidgetDemo/components/ContentItem.vue +411 -411
- package/samples/SimpleWidgetDemo/components/MyTab.vue +116 -116
- package/samples/SimpleWidgetDemo/data.js +110 -110
- package/samples/SprayView/App.vue +269 -269
- package/samples/SpriteImage/App.vue +174 -174
- package/samples/SpriteImage/images/egg_break.json +116 -116
- package/samples/TextBox/App.vue +178 -178
- package/samples/TextBox/RenderCenter.vue +108 -108
- package/samples/TextBox/RenderLeft.vue +108 -108
- package/samples/TextBox/RenderOneLine.vue +119 -119
- package/samples/TextBox/RenderRight.vue +106 -106
- package/samples/TextShadowDemo/App.vue +97 -97
- package/samples/TextureSize/App.vue +141 -141
- package/samples/ThrowMoveDemo/AccelerateDemo.vue +117 -117
- package/samples/ThrowMoveDemo/App.vue +113 -113
- package/samples/ThrowMoveDemo/LRParabolicDemo.vue +115 -115
- package/samples/ThrowMoveDemo/TargetDemo.vue +116 -116
- package/samples/ThrowMoveDemo/UDParabolicDemo.vue +121 -121
- package/samples/TransitPage/App.vue +40 -40
- package/samples/VideoDemo/App.vue +137 -137
- package/samples/VideoDemo/components/Button.vue +68 -68
- package/samples/VideoDemo/components/Controllor.vue +195 -195
- package/samples/VideoDemo/components/VideoFrame.vue +152 -152
- package/scripts/common.js +57 -115
- package/scripts/jsview-install-local-packages.js +73 -73
- package/scripts/jsview-post-build.js +127 -127
- package/scripts/jsview-post-install.js +78 -78
- package/scripts/jsview-run-android.js +64 -64
- package/utils/JsViewEngineWidget/bin/index.js +1 -1
- package/utils/JsViewEngineWidget/bin/package.json +11 -11
- package/utils/JsViewVueTools/JsvHashHistory.js +111 -111
- package/utils/JsViewVueTools/JsvRuntimeBridge.js +417 -417
- package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +80 -80
- package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +147 -147
- package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +54 -54
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/ApicDataBase.js +28 -28
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/BrowserApic.vue +123 -123
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/GifData.js +83 -83
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/LoopToolBase.js +25 -25
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/NormalLoopTool.js +61 -61
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/PartLoopTool.js +119 -119
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/Viewer.js +106 -106
- package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/WebpData.js +141 -141
- package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetLoader.js +20 -20
- package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +204 -204
- package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +63 -63
- package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +426 -426
- package/utils/JsViewVueWidget/JsvActorMove/index.js +12 -12
- package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +178 -178
- package/utils/JsViewVueWidget/JsvApic/index.js +17 -17
- package/utils/JsViewVueWidget/JsvMarquee.vue +196 -196
- package/utils/JsViewVueWidget/JsvNinePatch.vue +76 -76
- package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +350 -350
- package/utils/JsViewVueWidget/JsvPreload/index.js +21 -21
- package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +140 -140
- package/utils/JsViewVueWidget/JsvQrcode/index.js +18 -18
- package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +139 -139
- package/utils/JsViewVueWidget/JsvSpray/index.js +14 -14
- package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +447 -447
- package/utils/JsViewVueWidget/JsvSpriteAnim/SpriteController.js +56 -56
- package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +6 -6
- package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +34 -34
- package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +494 -494
- package/utils/JsViewVueWidget/JsvSwiper/index.js +9 -9
- package/utils/JsViewVueWidget/JsvSwiper3D/Indicator.vue +34 -34
- package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +403 -403
- package/utils/JsViewVueWidget/JsvSwiper3D/index.js +9 -9
- package/utils/JsViewVueWidget/JsvTextBox.vue +110 -110
- package/utils/JsViewVueWidget/JsvVideo.vue +35 -35
- package/patches/node_modules/@babel/preset-env/lib/available-plugins.js +0 -219
- package/patches/node_modules/@vue/cli-plugin-typescript/index.js +0 -100
- package/patches/node_modules/@vue/cli-service/lib/commands/serve.js +0 -395
- package/patches/node_modules/@vue/cli-service/lib/config/app.js +0 -272
- package/patches/node_modules/@vue/cli-service/lib/config/assets.js +0 -70
- package/patches/node_modules/@vue/cli-service/lib/config/base.js +0 -212
- package/patches/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js +0 -2566
- package/patches/node_modules/@vue/compiler-sfc/dist/jsview-css-to-js.js +0 -274
- package/patches/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js +0 -1596
- package/patches/node_modules/postcss-js/objectifier.js +0 -90
- package/patches/node_modules/vue-loader/dist/resolveScript.js +0 -70
- package/scripts/deploy-fast-pack.js +0 -17
- package/scripts/deploy-fast-publish.js +0 -44
- package/scripts/deploy-git-commit-empty.js +0 -21
- package/scripts/deploy-prepare.js +0 -56
- package/scripts/make-js.sh +0 -181
- package/vetur.config.js +0 -5
package/samples/Basic/App.vue
CHANGED
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
* 【界面概述】
|
|
3
|
-
* div元素style中设置值对应的样例
|
|
4
|
-
*
|
|
5
|
-
* 【控件介绍】
|
|
6
|
-
* 无
|
|
7
|
-
*
|
|
8
|
-
* 【技巧说明】
|
|
9
|
-
* Q: 如何将div布局到指定坐标中?
|
|
10
|
-
* A: 设置div style中的top和left,坐标值是相对于父div的左上角的坐标值
|
|
11
|
-
*
|
|
12
|
-
* Q: 如何在界面上描画图片?
|
|
13
|
-
* A: 参照div/DivBackground,div的style中,
|
|
14
|
-
* 描绘纯色时,通过backgroundColor来设置,例如
|
|
15
|
-
* <div style={{width:200, height:200, backgroundColor: 'rgba(255, 255, 0, 1)'}}>
|
|
16
|
-
* 描绘图片时,通过backgroundImage来设置,例如
|
|
17
|
-
* <div style={{width:200, height:200, backgroundColor:`url(${iconImgPath})`}}>
|
|
18
|
-
* 注意,不设置width和height的情况是默认尺寸为0px * 0px,不会展示图片
|
|
19
|
-
*
|
|
20
|
-
* Q: 如何对图片进行剪切,只展示图片的局部内容?
|
|
21
|
-
* A: 参照div/DivClip,使用style中的overflow:"hidden"属性进行裁剪,或者使用style中clipPath属性进行裁剪
|
|
22
|
-
*
|
|
23
|
-
* Q: 如何将展示图片的四个角变成圆角?
|
|
24
|
-
* A: 参照img/ImgRadius,通过设置style中的borderRadius属性完成圆角改变
|
|
25
|
-
*
|
|
26
|
-
* Q: 文字如何描绘?
|
|
27
|
-
* A: 在div标签的内容中可填写需要描绘的文字,文字的字体字号等属性,通过div标签中的style来控制,参照text文件夹中的各个js。
|
|
28
|
-
* 注意:若文字内容中需要折行,则需要把要显示内容放入字符串中,并加入'\n'来达到换行效果,例如:
|
|
29
|
-
* <div>{"第一行
|
|
30
|
-
* 第二行"}</div>
|
|
31
|
-
* =======需要改成=======
|
|
32
|
-
* <div>{"第一行\n\
|
|
33
|
-
* 第二行"}</div>
|
|
34
|
-
*
|
|
35
|
-
* Q: 几个位置使用的文字属性是统一的情况下,如何减少每个div中设置文字style的代码量?
|
|
36
|
-
* A: 将统一的文字属性定义到一个js文件中(例如本Demo中的CommonFontStyle),使用时,在style中采用array扩展的方式即可:
|
|
37
|
-
* <div style={{...TitleFont}}>
|
|
38
|
-
*
|
|
39
|
-
* Q: 如何让div产生动画效果?
|
|
40
|
-
* A: 动画需要通过以下两种方式实现,具体见anim文件夹各个js:
|
|
41
|
-
* 方式1:声明keyframe结构,通过div的style中的animation来引用keyFrame,启动动画
|
|
42
|
-
* 方式2:设置div style中的transition属性,然后调整div的left/top/width/height之后,会按照transition规则进行动画。
|
|
43
|
-
* 注意点1:keyFrame可以声明在css文件中,也可以通过document.styleSheet来动态加载,可以参考转盘demo(turntableDemo)
|
|
44
|
-
* 在JsView系统中,css文件中只能声明keyFrame内容,不能声明其他内容
|
|
45
|
-
* 注意点2:transition目前只支持left/top/width/height属性的跟踪,其他属性目前不支持
|
|
46
|
-
-->
|
|
47
|
-
|
|
48
|
-
<script>
|
|
49
|
-
import { Options, Vue } from "vue-class-component";
|
|
50
|
-
import TitleBar from './components/TitleBar';
|
|
51
|
-
import DivGroup1 from './components/div/DivGroup1';
|
|
52
|
-
import DivGroup2 from './components/div/DivGroup2';
|
|
53
|
-
import TextGroup from './components/text/TextGroup';
|
|
54
|
-
import AnimGroup from './components/anim/AnimGroup';
|
|
55
|
-
|
|
56
|
-
@Options({
|
|
57
|
-
components: {
|
|
58
|
-
TitleBar,
|
|
59
|
-
DivGroup1, DivGroup2,
|
|
60
|
-
TextGroup, AnimGroup
|
|
61
|
-
}
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
class App extends Vue {
|
|
65
|
-
constructor(props) {
|
|
66
|
-
super(props);
|
|
67
|
-
|
|
68
|
-
this.itemSides = {
|
|
69
|
-
top: 0,
|
|
70
|
-
left: 0,
|
|
71
|
-
width: 240,
|
|
72
|
-
height: 160,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Override
|
|
77
|
-
mounted() {
|
|
78
|
-
window.jJsvRuntimeBridge?.notifyPageLoaded();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
onKeyDown(ev) {
|
|
82
|
-
// 8:Backspace, 27:Escape, 10000:盒子返回键
|
|
83
|
-
if(ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
|
|
84
|
-
console.log("Basic has this.$router: ", !!this.$router)
|
|
85
|
-
this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
|
|
86
|
-
return true
|
|
87
|
-
}
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export default App;
|
|
93
|
-
</script>
|
|
94
|
-
|
|
95
|
-
<template>
|
|
96
|
-
<div>
|
|
97
|
-
<!-- 有router时,将按键交给router去处理,此处没有其他用处 -->
|
|
98
|
-
<jsv-focus-block autoFocus :onKeyDown="onKeyDown"/>
|
|
99
|
-
|
|
100
|
-
<div class="root">
|
|
101
|
-
<div class="content-size" :style="{top:20, left:20}">
|
|
102
|
-
<TitleBar class="content-size" :itemSides=itemSides />
|
|
103
|
-
<div class="content-size" :style="{top:20}">
|
|
104
|
-
<DivGroup1 class="content-size"
|
|
105
|
-
contentClass="content-size" :itemSides=itemSides />
|
|
106
|
-
<DivGroup2 :style="{left: itemSides.width}"
|
|
107
|
-
contentClass="content-size" :itemSides=itemSides />
|
|
108
|
-
<TextGroup :style="{left: itemSides.width*2}"
|
|
109
|
-
contentClass="content-size" :itemSides=itemSides />
|
|
110
|
-
<AnimGroup :style="{left: itemSides.width*3}"
|
|
111
|
-
contentClass="content-size" :itemSides=itemSides />
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
</template>
|
|
117
|
-
|
|
118
|
-
<style>
|
|
119
|
-
.root {
|
|
120
|
-
top: 10; left: 10;
|
|
121
|
-
width: 1250; height: 670;
|
|
122
|
-
background-color: rgba(200, 200, 200, 1)
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.content-size {
|
|
126
|
-
width: 1210; height: 630;
|
|
127
|
-
}
|
|
128
|
-
|
|
1
|
+
<!--
|
|
2
|
+
* 【界面概述】
|
|
3
|
+
* div元素style中设置值对应的样例
|
|
4
|
+
*
|
|
5
|
+
* 【控件介绍】
|
|
6
|
+
* 无
|
|
7
|
+
*
|
|
8
|
+
* 【技巧说明】
|
|
9
|
+
* Q: 如何将div布局到指定坐标中?
|
|
10
|
+
* A: 设置div style中的top和left,坐标值是相对于父div的左上角的坐标值
|
|
11
|
+
*
|
|
12
|
+
* Q: 如何在界面上描画图片?
|
|
13
|
+
* A: 参照div/DivBackground,div的style中,
|
|
14
|
+
* 描绘纯色时,通过backgroundColor来设置,例如
|
|
15
|
+
* <div style={{width:200, height:200, backgroundColor: 'rgba(255, 255, 0, 1)'}}>
|
|
16
|
+
* 描绘图片时,通过backgroundImage来设置,例如
|
|
17
|
+
* <div style={{width:200, height:200, backgroundColor:`url(${iconImgPath})`}}>
|
|
18
|
+
* 注意,不设置width和height的情况是默认尺寸为0px * 0px,不会展示图片
|
|
19
|
+
*
|
|
20
|
+
* Q: 如何对图片进行剪切,只展示图片的局部内容?
|
|
21
|
+
* A: 参照div/DivClip,使用style中的overflow:"hidden"属性进行裁剪,或者使用style中clipPath属性进行裁剪
|
|
22
|
+
*
|
|
23
|
+
* Q: 如何将展示图片的四个角变成圆角?
|
|
24
|
+
* A: 参照img/ImgRadius,通过设置style中的borderRadius属性完成圆角改变
|
|
25
|
+
*
|
|
26
|
+
* Q: 文字如何描绘?
|
|
27
|
+
* A: 在div标签的内容中可填写需要描绘的文字,文字的字体字号等属性,通过div标签中的style来控制,参照text文件夹中的各个js。
|
|
28
|
+
* 注意:若文字内容中需要折行,则需要把要显示内容放入字符串中,并加入'\n'来达到换行效果,例如:
|
|
29
|
+
* <div>{"第一行
|
|
30
|
+
* 第二行"}</div>
|
|
31
|
+
* =======需要改成=======
|
|
32
|
+
* <div>{"第一行\n\
|
|
33
|
+
* 第二行"}</div>
|
|
34
|
+
*
|
|
35
|
+
* Q: 几个位置使用的文字属性是统一的情况下,如何减少每个div中设置文字style的代码量?
|
|
36
|
+
* A: 将统一的文字属性定义到一个js文件中(例如本Demo中的CommonFontStyle),使用时,在style中采用array扩展的方式即可:
|
|
37
|
+
* <div style={{...TitleFont}}>
|
|
38
|
+
*
|
|
39
|
+
* Q: 如何让div产生动画效果?
|
|
40
|
+
* A: 动画需要通过以下两种方式实现,具体见anim文件夹各个js:
|
|
41
|
+
* 方式1:声明keyframe结构,通过div的style中的animation来引用keyFrame,启动动画
|
|
42
|
+
* 方式2:设置div style中的transition属性,然后调整div的left/top/width/height之后,会按照transition规则进行动画。
|
|
43
|
+
* 注意点1:keyFrame可以声明在css文件中,也可以通过document.styleSheet来动态加载,可以参考转盘demo(turntableDemo)
|
|
44
|
+
* 在JsView系统中,css文件中只能声明keyFrame内容,不能声明其他内容
|
|
45
|
+
* 注意点2:transition目前只支持left/top/width/height属性的跟踪,其他属性目前不支持
|
|
46
|
+
-->
|
|
47
|
+
|
|
48
|
+
<script>
|
|
49
|
+
import { Options, Vue } from "vue-class-component";
|
|
50
|
+
import TitleBar from './components/TitleBar';
|
|
51
|
+
import DivGroup1 from './components/div/DivGroup1';
|
|
52
|
+
import DivGroup2 from './components/div/DivGroup2';
|
|
53
|
+
import TextGroup from './components/text/TextGroup';
|
|
54
|
+
import AnimGroup from './components/anim/AnimGroup';
|
|
55
|
+
|
|
56
|
+
@Options({
|
|
57
|
+
components: {
|
|
58
|
+
TitleBar,
|
|
59
|
+
DivGroup1, DivGroup2,
|
|
60
|
+
TextGroup, AnimGroup
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
class App extends Vue {
|
|
65
|
+
constructor(props) {
|
|
66
|
+
super(props);
|
|
67
|
+
|
|
68
|
+
this.itemSides = {
|
|
69
|
+
top: 0,
|
|
70
|
+
left: 0,
|
|
71
|
+
width: 240,
|
|
72
|
+
height: 160,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Override
|
|
77
|
+
mounted() {
|
|
78
|
+
window.jJsvRuntimeBridge?.notifyPageLoaded();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
onKeyDown(ev) {
|
|
82
|
+
// 8:Backspace, 27:Escape, 10000:盒子返回键
|
|
83
|
+
if(ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
|
|
84
|
+
console.log("Basic has this.$router: ", !!this.$router)
|
|
85
|
+
this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
|
|
86
|
+
return true
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export default App;
|
|
93
|
+
</script>
|
|
94
|
+
|
|
95
|
+
<template>
|
|
96
|
+
<div>
|
|
97
|
+
<!-- 有router时,将按键交给router去处理,此处没有其他用处 -->
|
|
98
|
+
<jsv-focus-block autoFocus :onKeyDown="onKeyDown"/>
|
|
99
|
+
|
|
100
|
+
<div class="root">
|
|
101
|
+
<div class="content-size" :style="{top:20, left:20}">
|
|
102
|
+
<TitleBar class="content-size" :itemSides=itemSides />
|
|
103
|
+
<div class="content-size" :style="{top:20}">
|
|
104
|
+
<DivGroup1 class="content-size"
|
|
105
|
+
contentClass="content-size" :itemSides=itemSides />
|
|
106
|
+
<DivGroup2 :style="{left: itemSides.width}"
|
|
107
|
+
contentClass="content-size" :itemSides=itemSides />
|
|
108
|
+
<TextGroup :style="{left: itemSides.width*2}"
|
|
109
|
+
contentClass="content-size" :itemSides=itemSides />
|
|
110
|
+
<AnimGroup :style="{left: itemSides.width*3}"
|
|
111
|
+
contentClass="content-size" :itemSides=itemSides />
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</template>
|
|
117
|
+
|
|
118
|
+
<style>
|
|
119
|
+
.root {
|
|
120
|
+
top: 10; left: 10;
|
|
121
|
+
width: 1250; height: 670;
|
|
122
|
+
background-color: rgba(200, 200, 200, 1)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.content-size {
|
|
126
|
+
width: 1210; height: 630;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
129
|
</style>
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 0}">div标签1</div>
|
|
4
|
-
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 1}">div标签2</div>
|
|
5
|
-
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 2}">div文本</div>
|
|
6
|
-
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 3}">动画</div>
|
|
7
|
-
</div>
|
|
8
|
-
</template>
|
|
9
|
-
|
|
10
|
-
<script setup>
|
|
11
|
-
/* eslint-disable no-unused-vars */
|
|
12
|
-
import { defineProps } from "vue";
|
|
13
|
-
|
|
14
|
-
const name = 'Title';
|
|
15
|
-
const props = defineProps({
|
|
16
|
-
itemSides: Object
|
|
17
|
-
})
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<style>
|
|
21
|
-
@import "./FontStyle.css";
|
|
22
|
-
</style>
|
|
23
|
-
|
|
24
|
-
<style scoped>
|
|
25
|
-
.item-style {
|
|
26
|
-
text-align: center;
|
|
27
|
-
}
|
|
28
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 0}">div标签1</div>
|
|
4
|
+
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 1}">div标签2</div>
|
|
5
|
+
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 2}">div文本</div>
|
|
6
|
+
<div class='title-font item-style' :style="{...itemSides, left: itemSides.width * 3}">动画</div>
|
|
7
|
+
</div>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script setup>
|
|
11
|
+
/* eslint-disable no-unused-vars */
|
|
12
|
+
import { defineProps } from "vue";
|
|
13
|
+
|
|
14
|
+
const name = 'Title';
|
|
15
|
+
const props = defineProps({
|
|
16
|
+
itemSides: Object
|
|
17
|
+
})
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<style>
|
|
21
|
+
@import "./FontStyle.css";
|
|
22
|
+
</style>
|
|
23
|
+
|
|
24
|
+
<style scoped>
|
|
25
|
+
.item-style {
|
|
26
|
+
text-align: center;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
29
|
</style>
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div id='item-root'>
|
|
3
|
-
<ContentBlock
|
|
4
|
-
:class=contentClass
|
|
5
|
-
:style="{ top: itemSides.height * 0 }"
|
|
6
|
-
:=contentBlockProps
|
|
7
|
-
:index=1
|
|
8
|
-
title="Keyframe基础动画集合">
|
|
9
|
-
<AnimKeyframeBasic/>
|
|
10
|
-
</ContentBlock>
|
|
11
|
-
<ContentBlock
|
|
12
|
-
:class=contentClass
|
|
13
|
-
:style="{ top: itemSides.height * 1 }"
|
|
14
|
-
:=contentBlockProps
|
|
15
|
-
:index=2
|
|
16
|
-
title="Keyframe组合示例">
|
|
17
|
-
<AnimKeyframeComposite/>
|
|
18
|
-
</ContentBlock>
|
|
19
|
-
<ContentBlock
|
|
20
|
-
:class=contentClass
|
|
21
|
-
:style="{ top: itemSides.height * 2}"
|
|
22
|
-
:="{...contentBlockProps, itemSides: {...itemSides, height:290}}"
|
|
23
|
-
:index=3
|
|
24
|
-
title="Transition动画示例">
|
|
25
|
-
<AnimTransition :timeCount=state.timeCount />
|
|
26
|
-
</ContentBlock>
|
|
27
|
-
</div>
|
|
28
|
-
|
|
29
|
-
</template>
|
|
30
|
-
|
|
31
|
-
<script setup>
|
|
32
|
-
/* eslint-disable no-unused-vars */
|
|
33
|
-
import { defineProps, reactive, onMounted, onBeforeUnmount } from "vue";
|
|
34
|
-
import ContentBlock from '../ContentBlock';
|
|
35
|
-
import AnimKeyframeBasic from './AnimKeyframeBasic';
|
|
36
|
-
import AnimKeyframeComposite from './AnimKeyframeComposite';
|
|
37
|
-
import AnimTransition from './AnimTransition';
|
|
38
|
-
|
|
39
|
-
const name = 'DivGroup2';
|
|
40
|
-
const props = defineProps({
|
|
41
|
-
contentClass: String,
|
|
42
|
-
itemSides: Object
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
const state = reactive({
|
|
46
|
-
timeCount: 20
|
|
47
|
-
})
|
|
48
|
-
var timerId = -1;
|
|
49
|
-
|
|
50
|
-
onMounted(() => {
|
|
51
|
-
timerId = setInterval(() => {
|
|
52
|
-
// console.log('change timeCount: ' + timeCount);
|
|
53
|
-
state.timeCount = (state.timeCount + 5);
|
|
54
|
-
}, 2000);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
onBeforeUnmount(() => {
|
|
58
|
-
if (timerId >= 0) {
|
|
59
|
-
window.clearInterval(timerId);
|
|
60
|
-
}
|
|
61
|
-
timerId = -1;
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
const contentBlockProps = {
|
|
65
|
-
colIndex: 0,
|
|
66
|
-
itemSides: props.itemSides
|
|
67
|
-
};
|
|
1
|
+
<template>
|
|
2
|
+
<div id='item-root'>
|
|
3
|
+
<ContentBlock
|
|
4
|
+
:class=contentClass
|
|
5
|
+
:style="{ top: itemSides.height * 0 }"
|
|
6
|
+
:=contentBlockProps
|
|
7
|
+
:index=1
|
|
8
|
+
title="Keyframe基础动画集合">
|
|
9
|
+
<AnimKeyframeBasic/>
|
|
10
|
+
</ContentBlock>
|
|
11
|
+
<ContentBlock
|
|
12
|
+
:class=contentClass
|
|
13
|
+
:style="{ top: itemSides.height * 1 }"
|
|
14
|
+
:=contentBlockProps
|
|
15
|
+
:index=2
|
|
16
|
+
title="Keyframe组合示例">
|
|
17
|
+
<AnimKeyframeComposite/>
|
|
18
|
+
</ContentBlock>
|
|
19
|
+
<ContentBlock
|
|
20
|
+
:class=contentClass
|
|
21
|
+
:style="{ top: itemSides.height * 2}"
|
|
22
|
+
:="{...contentBlockProps, itemSides: {...itemSides, height:290}}"
|
|
23
|
+
:index=3
|
|
24
|
+
title="Transition动画示例">
|
|
25
|
+
<AnimTransition :timeCount=state.timeCount />
|
|
26
|
+
</ContentBlock>
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
<script setup>
|
|
32
|
+
/* eslint-disable no-unused-vars */
|
|
33
|
+
import { defineProps, reactive, onMounted, onBeforeUnmount } from "vue";
|
|
34
|
+
import ContentBlock from '../ContentBlock';
|
|
35
|
+
import AnimKeyframeBasic from './AnimKeyframeBasic';
|
|
36
|
+
import AnimKeyframeComposite from './AnimKeyframeComposite';
|
|
37
|
+
import AnimTransition from './AnimTransition';
|
|
38
|
+
|
|
39
|
+
const name = 'DivGroup2';
|
|
40
|
+
const props = defineProps({
|
|
41
|
+
contentClass: String,
|
|
42
|
+
itemSides: Object
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
const state = reactive({
|
|
46
|
+
timeCount: 20
|
|
47
|
+
})
|
|
48
|
+
var timerId = -1;
|
|
49
|
+
|
|
50
|
+
onMounted(() => {
|
|
51
|
+
timerId = setInterval(() => {
|
|
52
|
+
// console.log('change timeCount: ' + timeCount);
|
|
53
|
+
state.timeCount = (state.timeCount + 5);
|
|
54
|
+
}, 2000);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
onBeforeUnmount(() => {
|
|
58
|
+
if (timerId >= 0) {
|
|
59
|
+
window.clearInterval(timerId);
|
|
60
|
+
}
|
|
61
|
+
timerId = -1;
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const contentBlockProps = {
|
|
65
|
+
colIndex: 0,
|
|
66
|
+
itemSides: props.itemSides
|
|
67
|
+
};
|
|
68
68
|
</script>
|
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div id='layout-root'>
|
|
3
|
-
<div>
|
|
4
|
-
<div class="content-font" :style="{ ...titleStyle }">Translate3d</div>
|
|
5
|
-
<div :style="{ ...itemStyle, animation: 'AnimTranslate 3s infinite' }"/>
|
|
6
|
-
</div>
|
|
7
|
-
<div :style="{ left: blockSize.width }">
|
|
8
|
-
<div class="content-font" :style="{ ...titleStyle }">Scale3d</div>
|
|
9
|
-
<div :style="{ ...itemStyle, animation: 'AnimScale 3s infinite linear' }"/>
|
|
10
|
-
</div>
|
|
11
|
-
<div :style="{ left: blockSize.width*2 }">
|
|
12
|
-
<div class="content-font" :style="{ ...titleStyle }">Rotate3d</div>
|
|
13
|
-
<div :style="{ ...itemStyle, animation: 'AnimRotate 3s infinite linear' }"/>
|
|
14
|
-
</div>
|
|
15
|
-
<div :style="{ left: blockSize.width, top: blockSize.height }">
|
|
16
|
-
<div class="content-font" :style="{ ...titleStyle }">Skew</div>
|
|
17
|
-
<div :style="{ ...itemStyle, animation: 'AnimSkew 3s infinite ease-in' }"/>
|
|
18
|
-
</div>
|
|
19
|
-
<div :style="{ left: blockSize.width*2, top: blockSize.height }">
|
|
20
|
-
<div class="content-font" :style="{ ...titleStyle }">Opacity</div>
|
|
21
|
-
<div :style="{ ...itemStyle, width: 20, animation: 'AnimOpacityOut 3s infinite ease-out' }"/>
|
|
22
|
-
<div :style="{ ...itemStyle, left: 25, width: 20, animation: 'AnimOpacityIn 3s infinite ease-in-out' }"/>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</template>
|
|
26
|
-
|
|
27
|
-
<script setup>
|
|
28
|
-
/* eslint-disable no-unused-vars */
|
|
29
|
-
const blockSize = {
|
|
30
|
-
width: 70,
|
|
31
|
-
height: 70,
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const titleStyle = {
|
|
35
|
-
width: 60, height: 20,
|
|
36
|
-
textAlign: 'center',
|
|
37
|
-
lineHeight: 20
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const itemStyle = {
|
|
41
|
-
top: 20,
|
|
42
|
-
width: 50, height: 50,
|
|
43
|
-
backgroundColor: 'rgba(255, 0, 0, 1)'
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
</script>
|
|
47
|
-
|
|
48
|
-
<style>
|
|
49
|
-
@keyframes AnimTranslate {
|
|
50
|
-
from {
|
|
51
|
-
transform: translate3d(50%, 50px, 0);
|
|
52
|
-
}
|
|
53
|
-
to {
|
|
54
|
-
transform: translate3d(0, 0, 0);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
@keyframes AnimScale {
|
|
59
|
-
from {
|
|
60
|
-
transform: scale3d(1.5, 1.5, 1);
|
|
61
|
-
}
|
|
62
|
-
to {
|
|
63
|
-
transform: scale3d(0, 0, 0);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
@keyframes AnimRotate {
|
|
68
|
-
from {
|
|
69
|
-
transform: rotate3d(1.5, 1, 1, 90deg);
|
|
70
|
-
}
|
|
71
|
-
to {
|
|
72
|
-
transform: rotate3d(1.5, 1, 1, 0);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@keyframes AnimSkew {
|
|
77
|
-
from {
|
|
78
|
-
transform: skew(30deg, 45deg);
|
|
79
|
-
}
|
|
80
|
-
to {
|
|
81
|
-
transform: skew(0, 0);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
@keyframes AnimOpacityOut {
|
|
86
|
-
from {
|
|
87
|
-
opacity: 0.1;
|
|
88
|
-
}
|
|
89
|
-
to {
|
|
90
|
-
opacity: 1;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@keyframes AnimOpacityIn {
|
|
95
|
-
from {
|
|
96
|
-
opacity: 1;
|
|
97
|
-
}
|
|
98
|
-
to {
|
|
99
|
-
opacity: 20%;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
1
|
+
<template>
|
|
2
|
+
<div id='layout-root'>
|
|
3
|
+
<div>
|
|
4
|
+
<div class="content-font" :style="{ ...titleStyle }">Translate3d</div>
|
|
5
|
+
<div :style="{ ...itemStyle, animation: 'AnimTranslate 3s infinite' }"/>
|
|
6
|
+
</div>
|
|
7
|
+
<div :style="{ left: blockSize.width }">
|
|
8
|
+
<div class="content-font" :style="{ ...titleStyle }">Scale3d</div>
|
|
9
|
+
<div :style="{ ...itemStyle, animation: 'AnimScale 3s infinite linear' }"/>
|
|
10
|
+
</div>
|
|
11
|
+
<div :style="{ left: blockSize.width*2 }">
|
|
12
|
+
<div class="content-font" :style="{ ...titleStyle }">Rotate3d</div>
|
|
13
|
+
<div :style="{ ...itemStyle, animation: 'AnimRotate 3s infinite linear' }"/>
|
|
14
|
+
</div>
|
|
15
|
+
<div :style="{ left: blockSize.width, top: blockSize.height }">
|
|
16
|
+
<div class="content-font" :style="{ ...titleStyle }">Skew</div>
|
|
17
|
+
<div :style="{ ...itemStyle, animation: 'AnimSkew 3s infinite ease-in' }"/>
|
|
18
|
+
</div>
|
|
19
|
+
<div :style="{ left: blockSize.width*2, top: blockSize.height }">
|
|
20
|
+
<div class="content-font" :style="{ ...titleStyle }">Opacity</div>
|
|
21
|
+
<div :style="{ ...itemStyle, width: 20, animation: 'AnimOpacityOut 3s infinite ease-out' }"/>
|
|
22
|
+
<div :style="{ ...itemStyle, left: 25, width: 20, animation: 'AnimOpacityIn 3s infinite ease-in-out' }"/>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script setup>
|
|
28
|
+
/* eslint-disable no-unused-vars */
|
|
29
|
+
const blockSize = {
|
|
30
|
+
width: 70,
|
|
31
|
+
height: 70,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const titleStyle = {
|
|
35
|
+
width: 60, height: 20,
|
|
36
|
+
textAlign: 'center',
|
|
37
|
+
lineHeight: 20
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const itemStyle = {
|
|
41
|
+
top: 20,
|
|
42
|
+
width: 50, height: 50,
|
|
43
|
+
backgroundColor: 'rgba(255, 0, 0, 1)'
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
<style>
|
|
49
|
+
@keyframes AnimTranslate {
|
|
50
|
+
from {
|
|
51
|
+
transform: translate3d(50%, 50px, 0);
|
|
52
|
+
}
|
|
53
|
+
to {
|
|
54
|
+
transform: translate3d(0, 0, 0);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
@keyframes AnimScale {
|
|
59
|
+
from {
|
|
60
|
+
transform: scale3d(1.5, 1.5, 1);
|
|
61
|
+
}
|
|
62
|
+
to {
|
|
63
|
+
transform: scale3d(0, 0, 0);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@keyframes AnimRotate {
|
|
68
|
+
from {
|
|
69
|
+
transform: rotate3d(1.5, 1, 1, 90deg);
|
|
70
|
+
}
|
|
71
|
+
to {
|
|
72
|
+
transform: rotate3d(1.5, 1, 1, 0);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@keyframes AnimSkew {
|
|
77
|
+
from {
|
|
78
|
+
transform: skew(30deg, 45deg);
|
|
79
|
+
}
|
|
80
|
+
to {
|
|
81
|
+
transform: skew(0, 0);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@keyframes AnimOpacityOut {
|
|
86
|
+
from {
|
|
87
|
+
opacity: 0.1;
|
|
88
|
+
}
|
|
89
|
+
to {
|
|
90
|
+
opacity: 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@keyframes AnimOpacityIn {
|
|
95
|
+
from {
|
|
96
|
+
opacity: 1;
|
|
97
|
+
}
|
|
98
|
+
to {
|
|
99
|
+
opacity: 20%;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
102
|
</style>
|