@weitutech/by-components 1.1.100 → 1.1.102

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.
@@ -60509,6 +60509,7 @@ __webpack_require__.d(__webpack_exports__, {
60509
60509
  ByDatePickerRange: function() { return /* reexport */ date_picker_range; },
60510
60510
  ByDialog: function() { return /* reexport */ ByDialog; },
60511
60511
  ByDialogService: function() { return /* reexport */ by_dialog_ByDialogService; },
60512
+ ByFloatingMenu: function() { return /* reexport */ ByFloatingMenu; },
60512
60513
  ByFoldSearch: function() { return /* reexport */ fold_search; },
60513
60514
  ByForm: function() { return /* reexport */ form_form; },
60514
60515
  ByPageSearch: function() { return /* reexport */ page_search; },
@@ -79021,6 +79022,548 @@ var ByCascaderPanel_component = normalizeComponent(
79021
79022
  )
79022
79023
 
79023
79024
  /* harmony default export */ var ByCascaderPanel = (ByCascaderPanel_component.exports);
79025
+ ;// ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"ffbc40de-vue-loader-template"}!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/floating-menu/ByFloatingMenu.vue?vue&type=template&id=08613879
79026
+ var ByFloatingMenuvue_type_template_id_08613879_render = function render() {
79027
+ var _vm = this,
79028
+ _c = _vm._self._c;
79029
+ return _c('div', {
79030
+ staticClass: "by-floating-menu",
79031
+ class: {
79032
+ 'is-hidden': _vm.isHidden
79033
+ },
79034
+ style: _vm.menuStyle,
79035
+ on: {
79036
+ "mousedown": _vm.startDrag
79037
+ }
79038
+ }, [_c('div', {
79039
+ staticClass: "floating-main-btn",
79040
+ class: {
79041
+ 'is-expanded': _vm.isExpanded
79042
+ },
79043
+ style: {
79044
+ width: _vm.mainButtonSize + 'px',
79045
+ height: _vm.mainButtonSize + 'px'
79046
+ },
79047
+ on: {
79048
+ "click": _vm.toggleMenu
79049
+ }
79050
+ }, [_vm.mainButtonIcon ? _c('i', {
79051
+ class: _vm.mainButtonIcon,
79052
+ style: {
79053
+ transform: 'none !important',
79054
+ display: 'block !important',
79055
+ textAlign: 'center !important',
79056
+ lineHeight: _vm.mainButtonSize + 'px !important',
79057
+ width: '100% !important',
79058
+ height: '100% !important',
79059
+ fontStyle: 'normal !important'
79060
+ }
79061
+ }) : _c('span', {
79062
+ style: {
79063
+ transform: 'none !important',
79064
+ display: 'block !important',
79065
+ textAlign: 'center !important',
79066
+ lineHeight: _vm.mainButtonSize + 'px !important',
79067
+ width: '100% !important',
79068
+ height: '100% !important'
79069
+ }
79070
+ }, [_vm._v(_vm._s(_vm.mainButtonText))])]), !_vm.isHidden ? _c('div', {
79071
+ staticClass: "hide-btn",
79072
+ style: {
79073
+ width: _vm.mainButtonSize * 0.33 + 'px',
79074
+ height: _vm.mainButtonSize * 0.33 + 'px',
79075
+ top: -_vm.mainButtonSize * 0.08 + 'px',
79076
+ right: -_vm.mainButtonSize * 0.08 + 'px'
79077
+ },
79078
+ on: {
79079
+ "click": _vm.toggleHide
79080
+ }
79081
+ }, [_c('i', {
79082
+ staticClass: "icon-close",
79083
+ style: {
79084
+ transform: 'none !important',
79085
+ display: 'block !important',
79086
+ textAlign: 'center !important',
79087
+ lineHeight: _vm.mainButtonSize * 0.33 + 'px !important',
79088
+ width: '100% !important',
79089
+ height: '100% !important',
79090
+ fontStyle: 'normal !important'
79091
+ }
79092
+ })]) : _vm._e(), _c('transition', {
79093
+ attrs: {
79094
+ "name": "menu-fade"
79095
+ }
79096
+ }, [_c('div', {
79097
+ directives: [{
79098
+ name: "show",
79099
+ rawName: "v-show",
79100
+ value: _vm.isExpanded && !_vm.isHidden,
79101
+ expression: "isExpanded && !isHidden"
79102
+ }],
79103
+ staticClass: "menu-items"
79104
+ }, _vm._l(_vm.menuItems, function (item, index) {
79105
+ return _c('div', {
79106
+ key: index,
79107
+ staticClass: "menu-item",
79108
+ class: {
79109
+ 'is-disabled': item.disabled
79110
+ },
79111
+ style: {
79112
+ width: _vm.mainButtonSize * 0.83 + 'px',
79113
+ height: _vm.mainButtonSize * 0.83 + 'px'
79114
+ },
79115
+ attrs: {
79116
+ "data-tooltip": item.title
79117
+ },
79118
+ on: {
79119
+ "mousedown": function ($event) {
79120
+ return _vm.startMenuItemDrag($event, item, index);
79121
+ },
79122
+ "click": function ($event) {
79123
+ return _vm.handleMenuClick(item, index);
79124
+ }
79125
+ }
79126
+ }, [item.title ? _c('div', {
79127
+ staticClass: "menu-tooltip"
79128
+ }, [_vm._v(_vm._s(item.title))]) : _vm._e(), item.icon ? _c('i', {
79129
+ class: item.icon,
79130
+ style: {
79131
+ transform: 'none !important',
79132
+ display: 'block !important',
79133
+ textAlign: 'center !important',
79134
+ lineHeight: _vm.mainButtonSize * 0.83 + 'px !important',
79135
+ width: '100% !important',
79136
+ height: '100% !important',
79137
+ fontStyle: 'normal !important'
79138
+ }
79139
+ }) : _c('span', {
79140
+ style: {
79141
+ transform: 'none !important',
79142
+ display: 'block !important',
79143
+ textAlign: 'center !important',
79144
+ lineHeight: _vm.mainButtonSize * 0.83 + 'px !important',
79145
+ width: '100% !important',
79146
+ height: '100% !important'
79147
+ }
79148
+ }, [_vm._v(_vm._s(item.text))])]);
79149
+ }), 0)])], 1);
79150
+ };
79151
+ var ByFloatingMenuvue_type_template_id_08613879_staticRenderFns = [];
79152
+
79153
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/floating-menu/ByFloatingMenu.vue?vue&type=script&lang=js
79154
+ /* harmony default export */ var ByFloatingMenuvue_type_script_lang_js = ({
79155
+ name: 'ByFloatingMenu',
79156
+ props: {
79157
+ // 主按钮图标
79158
+ mainButtonIcon: {
79159
+ type: String,
79160
+ default: 'el-icon-s-operation'
79161
+ },
79162
+ // 主按钮文字(如果没图标,会显示文字)
79163
+ mainButtonText: {
79164
+ type: String,
79165
+ default: ''
79166
+ },
79167
+ // 菜单项配置
79168
+ menuItems: {
79169
+ type: Array,
79170
+ default: () => []
79171
+ },
79172
+ // 初始位置
79173
+ position: {
79174
+ type: Object,
79175
+ default: () => ({
79176
+ right: '20px',
79177
+ bottom: '60px'
79178
+ })
79179
+ },
79180
+ // 按钮大小
79181
+ size: {
79182
+ type: String,
79183
+ default: 'small',
79184
+ validator: value => ['mini', 'small', 'medium'].includes(value)
79185
+ }
79186
+ },
79187
+ data() {
79188
+ return {
79189
+ isExpanded: false,
79190
+ isHidden: false,
79191
+ isDragging: false,
79192
+ hasDragged: false,
79193
+ dragStart: {
79194
+ x: 0,
79195
+ y: 0
79196
+ },
79197
+ currentPosition: {
79198
+ x: 0,
79199
+ y: 0
79200
+ },
79201
+ menuStyle: {},
79202
+ // 菜单项拖动相关
79203
+ menuItemDragStart: {
79204
+ x: 0,
79205
+ y: 0
79206
+ },
79207
+ menuItemHasDragged: false,
79208
+ currentMenuItem: null
79209
+ };
79210
+ },
79211
+ computed: {
79212
+ // 根据size属性计算实际大小
79213
+ mainButtonSize() {
79214
+ const sizeMap = {
79215
+ mini: 40,
79216
+ small: 50,
79217
+ medium: 60
79218
+ };
79219
+ return sizeMap[this.size] || 50;
79220
+ }
79221
+ },
79222
+ mounted() {
79223
+ this.initPosition();
79224
+ this.bindEvents();
79225
+ this.bindPageEvents();
79226
+ },
79227
+ beforeDestroy() {
79228
+ this.unbindEvents();
79229
+ this.unbindPageEvents();
79230
+ this.removeShowButton();
79231
+ // 清理菜单项拖动事件监听器
79232
+ document.removeEventListener('mousemove', this.onMenuItemDrag);
79233
+ document.removeEventListener('mouseup', this.endMenuItemDrag);
79234
+ },
79235
+ methods: {
79236
+ // 初始化位置
79237
+ initPosition() {
79238
+ const {
79239
+ right,
79240
+ bottom
79241
+ } = this.position;
79242
+ this.menuStyle = {
79243
+ right: right,
79244
+ bottom: bottom
79245
+ };
79246
+
79247
+ // 初始化当前位置
79248
+ const windowHeight = window.innerHeight;
79249
+ const bottomValue = parseInt(bottom) || 20;
79250
+ this.currentPosition = {
79251
+ x: 0,
79252
+ y: windowHeight - bottomValue - this.mainButtonSize // 使用动态主按钮大小
79253
+ };
79254
+ },
79255
+ // 切换菜单展开状态
79256
+ toggleMenu() {
79257
+ // 如果刚刚拖动了,则不切换菜单状态
79258
+ if (this.hasDragged) {
79259
+ this.hasDragged = false;
79260
+ return;
79261
+ }
79262
+ this.isExpanded = !this.isExpanded;
79263
+ },
79264
+ // 切换隐藏状态
79265
+ toggleHide() {
79266
+ this.isHidden = !this.isHidden;
79267
+ this.isExpanded = false;
79268
+ if (this.isHidden) {
79269
+ // 保持当前纵向位置,只隐藏横向
79270
+ this.menuStyle = {
79271
+ ...this.menuStyle,
79272
+ right: '-100px',
79273
+ transition: 'right 0.3s ease',
79274
+ opacity: '0'
79275
+ };
79276
+ // 只有在页面可见时才创建显示按钮
79277
+ if (!document.hidden) {
79278
+ this.createShowButton();
79279
+ }
79280
+ } else {
79281
+ // 显示主菜单,保持当前位置
79282
+ this.menuStyle = {
79283
+ ...this.menuStyle,
79284
+ right: '20px',
79285
+ transition: 'right 0.3s ease, opacity 0.3s ease',
79286
+ opacity: '1'
79287
+ };
79288
+ // 移除显示按钮
79289
+ this.removeShowButton();
79290
+ }
79291
+ },
79292
+ // 处理菜单点击
79293
+ handleMenuClick(item, index) {
79294
+ if (item.disabled) return;
79295
+
79296
+ // 如果刚刚拖动了菜单项,则不触发点击
79297
+ if (this.menuItemHasDragged && this.currentMenuItem && this.currentMenuItem.index === index) {
79298
+ this.menuItemHasDragged = false;
79299
+ this.currentMenuItem = null;
79300
+ return;
79301
+ }
79302
+ this.$emit('menu-click', {
79303
+ item,
79304
+ index
79305
+ });
79306
+ this.isExpanded = false;
79307
+ },
79308
+ // 开始菜单项拖动
79309
+ startMenuItemDrag(e, item, index) {
79310
+ this.menuItemHasDragged = false;
79311
+ this.currentMenuItem = {
79312
+ item,
79313
+ index
79314
+ };
79315
+ this.menuItemDragStart = {
79316
+ x: e.clientX,
79317
+ y: e.clientY
79318
+ };
79319
+
79320
+ // 绑定菜单项拖动事件
79321
+ document.addEventListener('mousemove', this.onMenuItemDrag);
79322
+ document.addEventListener('mouseup', this.endMenuItemDrag);
79323
+
79324
+ // 阻止默认行为
79325
+ e.preventDefault();
79326
+ },
79327
+ // 菜单项拖动中
79328
+ onMenuItemDrag(e) {
79329
+ const deltaX = e.clientX - this.menuItemDragStart.x;
79330
+ const deltaY = e.clientY - this.menuItemDragStart.y;
79331
+
79332
+ // 如果移动距离超过阈值,标记为真正拖动
79333
+ if (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5) {
79334
+ this.menuItemHasDragged = true;
79335
+ }
79336
+ },
79337
+ // 结束菜单项拖动
79338
+ endMenuItemDrag() {
79339
+ // 解绑菜单项拖动事件
79340
+ document.removeEventListener('mousemove', this.onMenuItemDrag);
79341
+ document.removeEventListener('mouseup', this.endMenuItemDrag);
79342
+ },
79343
+ // 开始拖拽
79344
+ startDrag(e) {
79345
+ if (this.isHidden) return;
79346
+ this.isDragging = true;
79347
+ this.hasDragged = false; // 标记是否真正拖动了
79348
+
79349
+ // 如果当前位置未初始化,则从当前DOM位置计算
79350
+ if (this.currentPosition.y === 0) {
79351
+ const windowHeight = window.innerHeight;
79352
+ const bottomValue = parseInt(this.menuStyle.bottom) || 20;
79353
+ this.currentPosition.y = windowHeight - bottomValue - this.mainButtonSize;
79354
+ }
79355
+ this.dragStart = {
79356
+ x: e.clientX,
79357
+ y: e.clientY
79358
+ };
79359
+
79360
+ // 阻止默认行为和事件传播
79361
+ e.preventDefault();
79362
+ e.stopPropagation();
79363
+ },
79364
+ // 拖拽中
79365
+ onDrag(e) {
79366
+ if (!this.isDragging || this.isHidden) return;
79367
+ const deltaX = e.clientX - this.dragStart.x;
79368
+ const deltaY = e.clientY - this.dragStart.y;
79369
+
79370
+ // 如果移动距离超过阈值,标记为真正拖动
79371
+ if (Math.abs(deltaY) > 5) {
79372
+ this.hasDragged = true;
79373
+ }
79374
+
79375
+ // 只允许垂直拖拽
79376
+ const newY = this.currentPosition.y + deltaY;
79377
+ const windowHeight = window.innerHeight;
79378
+ const menuHeight = this.mainButtonSize; // 使用动态主按钮大小
79379
+
79380
+ // 限制在屏幕范围内
79381
+ const clampedY = Math.max(0, Math.min(newY, windowHeight - menuHeight));
79382
+ this.currentPosition = {
79383
+ x: this.currentPosition.x,
79384
+ y: clampedY
79385
+ };
79386
+ this.menuStyle = {
79387
+ right: this.menuStyle.right || '20px',
79388
+ bottom: 'auto',
79389
+ top: `${clampedY}px`,
79390
+ transition: 'none'
79391
+ };
79392
+ this.dragStart = {
79393
+ x: e.clientX,
79394
+ y: e.clientY
79395
+ };
79396
+ },
79397
+ // 结束拖拽
79398
+ endDrag() {
79399
+ this.isDragging = false;
79400
+
79401
+ // 更新currentPosition以匹配当前DOM位置
79402
+ if (this.menuStyle.top) {
79403
+ this.currentPosition.y = parseInt(this.menuStyle.top);
79404
+ }
79405
+
79406
+ // 保持当前位置,恢复过渡动画
79407
+ this.menuStyle = {
79408
+ ...this.menuStyle,
79409
+ transition: 'right 0.3s ease, opacity 0.3s ease'
79410
+ };
79411
+ },
79412
+ // 绑定事件
79413
+ bindEvents() {
79414
+ document.addEventListener('mousemove', this.onDrag);
79415
+ document.addEventListener('mouseup', this.endDrag);
79416
+ },
79417
+ // 解绑事件
79418
+ unbindEvents() {
79419
+ document.removeEventListener('mousemove', this.onDrag);
79420
+ document.removeEventListener('mouseup', this.endDrag);
79421
+ },
79422
+ // 绑定页面相关事件
79423
+ bindPageEvents() {
79424
+ // 监听页面可见性变化(切换 tab)
79425
+ document.addEventListener('visibilitychange', this.onVisibilityChange);
79426
+
79427
+ // 监听页面卸载事件
79428
+ window.addEventListener('beforeunload', this.onPageUnload);
79429
+
79430
+ // 监听路由变化(如果使用了 Vue Router)
79431
+ if (this.$router) {
79432
+ this.$router.beforeEach((to, from, next) => {
79433
+ // 在路由切换前移除显示按钮
79434
+ this.removeShowButton();
79435
+ next();
79436
+ });
79437
+ }
79438
+ },
79439
+ // 解绑页面相关事件
79440
+ unbindPageEvents() {
79441
+ document.removeEventListener('visibilitychange', this.onVisibilityChange);
79442
+ window.removeEventListener('beforeunload', this.onPageUnload);
79443
+ },
79444
+ // 页面可见性变化处理
79445
+ onVisibilityChange() {
79446
+ if (document.hidden) {
79447
+ // 页面变为隐藏状态(切换 tab 或最小化),移除显示按钮
79448
+ this.removeShowButton();
79449
+ }
79450
+ },
79451
+ // 页面卸载处理
79452
+ onPageUnload() {
79453
+ // 页面卸载前移除显示按钮
79454
+ this.removeShowButton();
79455
+ },
79456
+ // 创建显示按钮
79457
+ createShowButton() {
79458
+ // 先移除可能存在的显示按钮
79459
+ this.removeShowButton();
79460
+
79461
+ // 如果页面不可见,不创建显示按钮
79462
+ if (document.hidden) {
79463
+ return;
79464
+ }
79465
+
79466
+ // 计算当前主按钮的纵向位置
79467
+ let topPosition = '50%';
79468
+ if (this.menuStyle.top) {
79469
+ // 如果使用top定位,直接使用
79470
+ topPosition = this.menuStyle.top;
79471
+ } else if (this.menuStyle.bottom) {
79472
+ // 如果使用bottom定位,转换为top
79473
+ const windowHeight = window.innerHeight;
79474
+ const bottomValue = parseInt(this.menuStyle.bottom) || 20;
79475
+ const menuHeight = this.mainButtonSize; // 主按钮高度
79476
+ const showBtnHeight = this.mainButtonSize * 1.33; // 吸附按钮高度(主按钮的1.33倍)
79477
+ // 计算主按钮顶部位置,然后让吸附按钮中心对齐主按钮中心
79478
+ const mainBtnTop = windowHeight - bottomValue - menuHeight;
79479
+ const showBtnTop = mainBtnTop + (menuHeight - showBtnHeight) / 2;
79480
+ topPosition = `${showBtnTop}px`;
79481
+ }
79482
+
79483
+ // 创建显示按钮元素
79484
+ const showBtn = document.createElement('div');
79485
+ showBtn.id = 'floating-show-btn-' + this._uid;
79486
+ showBtn.innerHTML = '<span>◀</span>';
79487
+
79488
+ // 设置样式
79489
+ showBtn.style.position = 'fixed';
79490
+ showBtn.style.right = '0';
79491
+ showBtn.style.top = topPosition;
79492
+ showBtn.style.transform = topPosition.includes('%') ? 'translateY(-30%)' : 'none';
79493
+ showBtn.style.width = this.mainButtonSize * 0.4 + 'px';
79494
+ showBtn.style.height = this.mainButtonSize * 1.33 + 'px';
79495
+ showBtn.style.background = '#409eff';
79496
+ showBtn.style.color = 'white';
79497
+ showBtn.style.display = 'flex';
79498
+ showBtn.style.alignItems = 'center';
79499
+ showBtn.style.justifyContent = 'center';
79500
+ showBtn.style.cursor = 'pointer';
79501
+ showBtn.style.borderRadius = '10px 0 0 10px';
79502
+ showBtn.style.boxShadow = '-2px 0 8px rgba(64, 158, 255, 0.3)';
79503
+ showBtn.style.zIndex = '10001';
79504
+ showBtn.style.transition = 'all 0.3s ease';
79505
+ showBtn.style.fontSize = '15px';
79506
+ showBtn.style.fontWeight = 'bold';
79507
+
79508
+ // 设置span样式
79509
+ const span = showBtn.querySelector('span');
79510
+ if (span) {
79511
+ span.style.fontSize = '15px';
79512
+ span.style.fontWeight = 'bold';
79513
+ span.style.transform = 'none';
79514
+ span.style.display = 'block';
79515
+ }
79516
+
79517
+ // 添加点击事件
79518
+ showBtn.addEventListener('click', this.toggleHide);
79519
+
79520
+ // 添加悬停效果
79521
+ const originalTransform = topPosition.includes('%') ? 'translateY(-30%)' : 'none';
79522
+ showBtn.addEventListener('mouseenter', () => {
79523
+ showBtn.style.background = '#66b1ff';
79524
+ showBtn.style.transform = topPosition.includes('%') ? 'translateY(-50%) translateX(-4px)' : 'translateX(-4px)';
79525
+ showBtn.style.boxShadow = '-4px 0 12px rgba(64, 158, 255, 0.4)';
79526
+ });
79527
+ showBtn.addEventListener('mouseleave', () => {
79528
+ showBtn.style.background = '#409eff';
79529
+ showBtn.style.transform = originalTransform;
79530
+ showBtn.style.boxShadow = '-2px 0 8px rgba(64, 158, 255, 0.3)';
79531
+ });
79532
+
79533
+ // 添加到body
79534
+ document.body.appendChild(showBtn);
79535
+ },
79536
+ // 移除显示按钮
79537
+ removeShowButton() {
79538
+ const showBtn = document.getElementById('floating-show-btn-' + this._uid);
79539
+ if (showBtn) {
79540
+ showBtn.remove();
79541
+ }
79542
+ }
79543
+ }
79544
+ });
79545
+ ;// ./src/components/floating-menu/ByFloatingMenu.vue?vue&type=script&lang=js
79546
+ /* harmony default export */ var floating_menu_ByFloatingMenuvue_type_script_lang_js = (ByFloatingMenuvue_type_script_lang_js);
79547
+ ;// ./src/components/floating-menu/ByFloatingMenu.vue
79548
+
79549
+
79550
+
79551
+
79552
+
79553
+ /* normalize component */
79554
+ ;
79555
+ var ByFloatingMenu_component = normalizeComponent(
79556
+ floating_menu_ByFloatingMenuvue_type_script_lang_js,
79557
+ ByFloatingMenuvue_type_template_id_08613879_render,
79558
+ ByFloatingMenuvue_type_template_id_08613879_staticRenderFns,
79559
+ false,
79560
+ null,
79561
+ null,
79562
+ null
79563
+
79564
+ )
79565
+
79566
+ /* harmony default export */ var ByFloatingMenu = (ByFloatingMenu_component.exports);
79024
79567
  ;// ./src/index.js
79025
79568
 
79026
79569
 
@@ -79041,6 +79584,7 @@ var ByCascaderPanel_component = normalizeComponent(
79041
79584
 
79042
79585
 
79043
79586
 
79587
+
79044
79588
  const components = {
79045
79589
  ByPager: pager,
79046
79590
  ByTable: table,
@@ -79055,7 +79599,8 @@ const components = {
79055
79599
  ByBatchQuerySelector: BatchQuerySelector,
79056
79600
  ByTreeSearch: ByTreeSearch,
79057
79601
  ByDialog: ByDialog,
79058
- ByCascaderPanel: ByCascaderPanel
79602
+ ByCascaderPanel: ByCascaderPanel,
79603
+ ByFloatingMenu: ByFloatingMenu
79059
79604
  };
79060
79605
 
79061
79606
  // 设置当前 z-index 起始值