vanilla-jui 1.5.20 → 1.5.22

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vanilla-jui",
3
- "version": "1.5.20",
3
+ "version": "1.5.22",
4
4
  "private": false,
5
5
  "description": "A lightweight, reactive, and fully customizable vanilla JS UI library.",
6
6
  "keywords": [
@@ -166,10 +166,16 @@
166
166
  }
167
167
 
168
168
  /* 行容器 */
169
+ :root {
170
+ --flex-container-gap: 1rem;
171
+ /* 总列数 */
172
+ --cols: 12;
173
+ }
174
+
169
175
  .flex-container {
170
176
  display: flex;
171
177
  flex-wrap: wrap;
172
- gap: var(--flex-container-gap, 1rem);
178
+ gap: var(--flex-container-gap);
173
179
  }
174
180
 
175
181
  /* 默认列:弹性填充 */
@@ -186,256 +192,477 @@
186
192
 
187
193
  /* 基础列宽(1~12)*/
188
194
  .flex-col-1 {
189
- width: calc((100% - 0 * var(--flex-container-gap, 1rem)) / 1);
195
+ --span: 1;
190
196
  }
191
197
 
192
198
  .flex-col-2 {
193
- width: calc((100% - 1 * var(--flex-container-gap, 1rem)) / 2);
199
+ --span: 2;
194
200
  }
195
201
 
196
202
  .flex-col-3 {
197
- width: calc((100% - 2 * var(--flex-container-gap, 1rem)) / 3);
203
+ --span: 3;
198
204
  }
199
205
 
200
206
  .flex-col-4 {
201
- width: calc((100% - 3 * var(--flex-container-gap, 1rem)) / 4);
207
+ --span: 4;
202
208
  }
203
209
 
204
210
  .flex-col-5 {
205
- width: calc((100% - 4 * var(--flex-container-gap, 1rem)) / 5);
211
+ --span: 5;
206
212
  }
207
213
 
208
214
  .flex-col-6 {
209
- width: calc((100% - 5 * var(--flex-container-gap, 1rem)) / 6);
215
+ --span: 6;
210
216
  }
211
217
 
212
218
  .flex-col-7 {
213
- width: calc((100% - 6 * var(--flex-container-gap, 1rem)) / 7);
219
+ --span: 7;
214
220
  }
215
221
 
216
222
  .flex-col-8 {
217
- width: calc((100% - 7 * var(--flex-container-gap, 1rem)) / 8);
223
+ --span: 8;
218
224
  }
219
225
 
220
226
  .flex-col-9 {
221
- width: calc((100% - 8 * var(--flex-container-gap, 1rem)) / 9);
227
+ --span: 9;
222
228
  }
223
229
 
224
230
  .flex-col-10 {
225
- width: calc((100% - 9 * var(--flex-container-gap, 1rem)) / 10);
231
+ --span: 10;
226
232
  }
227
233
 
228
234
  .flex-col-11 {
229
- width: calc((100% - 10 * var(--flex-container-gap, 1rem)) / 11);
235
+ --span: 11;
230
236
  }
231
237
 
232
238
  .flex-col-12 {
233
- width: calc((100% - 11 * var(--flex-container-gap, 1rem)) / 12);
239
+ --span: 12;
240
+ }
241
+
242
+ .flex-col-1,
243
+ .flex-col-2,
244
+ .flex-col-3,
245
+ .flex-col-4,
246
+ .flex-col-5,
247
+ .flex-col-6,
248
+ .flex-col-7,
249
+ .flex-col-8,
250
+ .flex-col-9,
251
+ .flex-col-10,
252
+ .flex-col-11,
253
+ .flex-col-12 {
254
+ width: calc(
255
+ (100% - (var(--cols) - 1) * var(--flex-container-gap, 1rem)) /
256
+ var(--cols) * var(--span)
257
+ );
258
+ }
259
+
260
+ /* .flex-col-1 {
261
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 1);
262
+ }
263
+
264
+ .flex-col-2 {
265
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 2);
266
+ }
267
+
268
+ .flex-col-3 {
269
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 3);
270
+ }
271
+
272
+ .flex-col-4 {
273
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 4);
274
+ }
275
+
276
+ .flex-col-5 {
277
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 5);
278
+ }
279
+
280
+ .flex-col-6 {
281
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 6);
282
+ }
283
+
284
+ .flex-col-7 {
285
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 7);
286
+ }
287
+
288
+ .flex-col-8 {
289
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 8);
290
+ }
291
+
292
+ .flex-col-9 {
293
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 9);
294
+ }
295
+
296
+ .flex-col-10 {
297
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 10);
298
+ }
299
+
300
+ .flex-col-11 {
301
+ width: calc((100% - 11 * var(--flex-container-gap)) / 12 * 11);
234
302
  }
235
303
 
304
+ .flex-col-12 {
305
+ width: 100%;
306
+ } */
307
+
236
308
  /* 关键:禁用 flex-basis 的自动收缩/拉伸,仅用 width 控制 */
237
309
  [class*='flex-col-'] {
238
310
  flex: 0 0 auto;
239
311
  /* 必须设为 auto,否则 width 被忽略 */
240
312
  }
241
313
 
314
+ /* ============================================
315
+ 小屏幕 sm (≥576px)
316
+ ============================================ */
242
317
  @media (min-width: 576px) {
243
318
  .flex-col-sm-1 {
244
- width: calc((100% - 0 * var(--flex-container-gap, 1rem)) / 1);
319
+ --span: 1;
245
320
  }
246
321
 
247
322
  .flex-col-sm-2 {
248
- width: calc((100% - 1 * var(--flex-container-gap, 1rem)) / 2);
323
+ --span: 2;
249
324
  }
250
325
 
251
326
  .flex-col-sm-3 {
252
- width: calc((100% - 2 * var(--flex-container-gap, 1rem)) / 3);
327
+ --span: 3;
253
328
  }
254
329
 
255
330
  .flex-col-sm-4 {
256
- width: calc((100% - 3 * var(--flex-container-gap, 1rem)) / 4);
331
+ --span: 4;
257
332
  }
258
333
 
259
334
  .flex-col-sm-5 {
260
- width: calc((100% - 4 * var(--flex-container-gap, 1rem)) / 5);
335
+ --span: 5;
261
336
  }
262
337
 
263
338
  .flex-col-sm-6 {
264
- width: calc((100% - 5 * var(--flex-container-gap, 1rem)) / 6);
339
+ --span: 6;
265
340
  }
266
341
 
267
342
  .flex-col-sm-7 {
268
- width: calc((100% - 6 * var(--flex-container-gap, 1rem)) / 7);
343
+ --span: 7;
269
344
  }
270
345
 
271
346
  .flex-col-sm-8 {
272
- width: calc((100% - 7 * var(--flex-container-gap, 1rem)) / 8);
347
+ --span: 8;
273
348
  }
274
349
 
275
350
  .flex-col-sm-9 {
276
- width: calc((100% - 8 * var(--flex-container-gap, 1rem)) / 9);
351
+ --span: 9;
277
352
  }
278
353
 
279
354
  .flex-col-sm-10 {
280
- width: calc((100% - 9 * var(--flex-container-gap, 1rem)) / 10);
355
+ --span: 10;
281
356
  }
282
357
 
283
358
  .flex-col-sm-11 {
284
- width: calc((100% - 10 * var(--flex-container-gap, 1rem)) / 11);
359
+ --span: 11;
285
360
  }
286
361
 
287
362
  .flex-col-sm-12 {
288
- width: calc((100% - 11 * var(--flex-container-gap, 1rem)) / 12);
363
+ --span: 12;
364
+ }
365
+
366
+ .flex-col-sm-1,
367
+ .flex-col-sm-2,
368
+ .flex-col-sm-3,
369
+ .flex-col-sm-4,
370
+ .flex-col-sm-5,
371
+ .flex-col-sm-6,
372
+ .flex-col-sm-7,
373
+ .flex-col-sm-8,
374
+ .flex-col-sm-9,
375
+ .flex-col-sm-10,
376
+ .flex-col-sm-11,
377
+ .flex-col-sm-12 {
378
+ width: calc(
379
+ (100% - var(--gap-count) * var(--flex-container-gap, 1rem)) /
380
+ var(--cols) * var(--span)
381
+ );
289
382
  }
290
383
  }
291
384
 
385
+ /* ============================================
386
+ 中屏幕 md (≥768px)
387
+ ============================================ */
292
388
  @media (min-width: 768px) {
293
389
  .flex-col-md-1 {
294
- width: calc((100% - 0 * var(--flex-container-gap, 1rem)) / 1);
390
+ --span: 1;
295
391
  }
296
392
 
297
393
  .flex-col-md-2 {
298
- width: calc((100% - 1 * var(--flex-container-gap, 1rem)) / 2);
394
+ --span: 2;
299
395
  }
300
396
 
301
397
  .flex-col-md-3 {
302
- width: calc((100% - 2 * var(--flex-container-gap, 1rem)) / 3);
398
+ --span: 3;
303
399
  }
304
400
 
305
401
  .flex-col-md-4 {
306
- width: calc((100% - 3 * var(--flex-container-gap, 1rem)) / 4);
402
+ --span: 4;
307
403
  }
308
404
 
309
405
  .flex-col-md-5 {
310
- width: calc((100% - 4 * var(--flex-container-gap, 1rem)) / 5);
406
+ --span: 5;
311
407
  }
312
408
 
313
409
  .flex-col-md-6 {
314
- width: calc((100% - 5 * var(--flex-container-gap, 1rem)) / 6);
410
+ --span: 6;
315
411
  }
316
412
 
317
413
  .flex-col-md-7 {
318
- width: calc((100% - 6 * var(--flex-container-gap, 1rem)) / 7);
414
+ --span: 7;
319
415
  }
320
416
 
321
417
  .flex-col-md-8 {
322
- width: calc((100% - 7 * var(--flex-container-gap, 1rem)) / 8);
418
+ --span: 8;
323
419
  }
324
420
 
325
421
  .flex-col-md-9 {
326
- width: calc((100% - 8 * var(--flex-container-gap, 1rem)) / 9);
422
+ --span: 9;
327
423
  }
328
424
 
329
425
  .flex-col-md-10 {
330
- width: calc((100% - 9 * var(--flex-container-gap, 1rem)) / 10);
426
+ --span: 10;
331
427
  }
332
428
 
333
429
  .flex-col-md-11 {
334
- width: calc((100% - 10 * var(--flex-container-gap, 1rem)) / 11);
430
+ --span: 11;
335
431
  }
336
432
 
337
433
  .flex-col-md-12 {
338
- width: calc((100% - 11 * var(--flex-container-gap, 1rem)) / 12);
434
+ --span: 12;
435
+ }
436
+
437
+ .flex-col-md-1,
438
+ .flex-col-md-2,
439
+ .flex-col-md-3,
440
+ .flex-col-md-4,
441
+ .flex-col-md-5,
442
+ .flex-col-md-6,
443
+ .flex-col-md-7,
444
+ .flex-col-md-8,
445
+ .flex-col-md-9,
446
+ .flex-col-md-10,
447
+ .flex-col-md-11,
448
+ .flex-col-md-12 {
449
+ width: calc(
450
+ (100% - var(--gap-count) * var(--flex-container-gap, 1rem)) /
451
+ var(--cols) * var(--span)
452
+ );
339
453
  }
340
454
  }
341
455
 
456
+ /* ============================================
457
+ 大屏幕 lg (≥992px)
458
+ ============================================ */
342
459
  @media (min-width: 992px) {
343
460
  .flex-col-lg-1 {
344
- width: calc((100% - 0 * var(--flex-container-gap, 1rem)) / 1);
461
+ --span: 1;
345
462
  }
346
463
 
347
464
  .flex-col-lg-2 {
348
- width: calc((100% - 1 * var(--flex-container-gap, 1rem)) / 2);
465
+ --span: 2;
349
466
  }
350
467
 
351
468
  .flex-col-lg-3 {
352
- width: calc((100% - 2 * var(--flex-container-gap, 1rem)) / 3);
469
+ --span: 3;
353
470
  }
354
471
 
355
472
  .flex-col-lg-4 {
356
- width: calc((100% - 3 * var(--flex-container-gap, 1rem)) / 4);
473
+ --span: 4;
357
474
  }
358
475
 
359
476
  .flex-col-lg-5 {
360
- width: calc((100% - 4 * var(--flex-container-gap, 1rem)) / 5);
477
+ --span: 5;
361
478
  }
362
479
 
363
480
  .flex-col-lg-6 {
364
- width: calc((100% - 5 * var(--flex-container-gap, 1rem)) / 6);
481
+ --span: 6;
365
482
  }
366
483
 
367
484
  .flex-col-lg-7 {
368
- width: calc((100% - 6 * var(--flex-container-gap, 1rem)) / 7);
485
+ --span: 7;
369
486
  }
370
487
 
371
488
  .flex-col-lg-8 {
372
- width: calc((100% - 7 * var(--flex-container-gap, 1rem)) / 8);
489
+ --span: 8;
373
490
  }
374
491
 
375
492
  .flex-col-lg-9 {
376
- width: calc((100% - 8 * var(--flex-container-gap, 1rem)) / 9);
493
+ --span: 9;
377
494
  }
378
495
 
379
496
  .flex-col-lg-10 {
380
- width: calc((100% - 9 * var(--flex-container-gap, 1rem)) / 10);
497
+ --span: 10;
381
498
  }
382
499
 
383
500
  .flex-col-lg-11 {
384
- width: calc((100% - 10 * var(--flex-container-gap, 1rem)) / 11);
501
+ --span: 11;
385
502
  }
386
503
 
387
504
  .flex-col-lg-12 {
388
- width: calc((100% - 11 * var(--flex-container-gap, 1rem)) / 12);
505
+ --span: 12;
506
+ }
507
+
508
+ .flex-col-lg-1,
509
+ .flex-col-lg-2,
510
+ .flex-col-lg-3,
511
+ .flex-col-lg-4,
512
+ .flex-col-lg-5,
513
+ .flex-col-lg-6,
514
+ .flex-col-lg-7,
515
+ .flex-col-lg-8,
516
+ .flex-col-lg-9,
517
+ .flex-col-lg-10,
518
+ .flex-col-lg-11,
519
+ .flex-col-lg-12 {
520
+ width: calc(
521
+ (100% - var(--gap-count) * var(--flex-container-gap, 1rem)) /
522
+ var(--cols) * var(--span)
523
+ );
389
524
  }
390
525
  }
391
526
 
527
+ /* ============================================
528
+ 超大屏幕 xl (≥1200px)
529
+ ============================================ */
392
530
  @media (min-width: 1200px) {
393
531
  .flex-col-xl-1 {
394
- width: calc((100% - 0 * var(--flex-container-gap, 1rem)) / 1);
532
+ --span: 1;
395
533
  }
396
534
 
397
535
  .flex-col-xl-2 {
398
- width: calc((100% - 1 * var(--flex-container-gap, 1rem)) / 2);
536
+ --span: 2;
399
537
  }
400
538
 
401
539
  .flex-col-xl-3 {
402
- width: calc((100% - 2 * var(--flex-container-gap, 1rem)) / 3);
540
+ --span: 3;
403
541
  }
404
542
 
405
543
  .flex-col-xl-4 {
406
- width: calc((100% - 3 * var(--flex-container-gap, 1rem)) / 4);
544
+ --span: 4;
407
545
  }
408
546
 
409
547
  .flex-col-xl-5 {
410
- width: calc((100% - 4 * var(--flex-container-gap, 1rem)) / 5);
548
+ --span: 5;
411
549
  }
412
550
 
413
551
  .flex-col-xl-6 {
414
- width: calc((100% - 5 * var(--flex-container-gap, 1rem)) / 6);
552
+ --span: 6;
415
553
  }
416
554
 
417
555
  .flex-col-xl-7 {
418
- width: calc((100% - 6 * var(--flex-container-gap, 1rem)) / 7);
556
+ --span: 7;
419
557
  }
420
558
 
421
559
  .flex-col-xl-8 {
422
- width: calc((100% - 7 * var(--flex-container-gap, 1rem)) / 8);
560
+ --span: 8;
423
561
  }
424
562
 
425
563
  .flex-col-xl-9 {
426
- width: calc((100% - 8 * var(--flex-container-gap, 1rem)) / 9);
564
+ --span: 9;
427
565
  }
428
566
 
429
567
  .flex-col-xl-10 {
430
- width: calc((100% - 9 * var(--flex-container-gap, 1rem)) / 10);
568
+ --span: 10;
431
569
  }
432
570
 
433
571
  .flex-col-xl-11 {
434
- width: calc((100% - 10 * var(--flex-container-gap, 1rem)) / 11);
572
+ --span: 11;
435
573
  }
436
574
 
437
575
  .flex-col-xl-12 {
438
- width: calc((100% - 11 * var(--flex-container-gap, 1rem)) / 12);
576
+ --span: 12;
577
+ }
578
+
579
+ .flex-col-xl-1,
580
+ .flex-col-xl-2,
581
+ .flex-col-xl-3,
582
+ .flex-col-xl-4,
583
+ .flex-col-xl-5,
584
+ .flex-col-xl-6,
585
+ .flex-col-xl-7,
586
+ .flex-col-xl-8,
587
+ .flex-col-xl-9,
588
+ .flex-col-xl-10,
589
+ .flex-col-xl-11,
590
+ .flex-col-xl-12 {
591
+ width: calc(
592
+ (100% - var(--gap-count) * var(--flex-container-gap, 1rem)) /
593
+ var(--cols) * var(--span)
594
+ );
595
+ }
596
+ }
597
+
598
+ /* ============================================
599
+ 超大屏幕 xxl (≥1400px) - 可选
600
+ ============================================ */
601
+ @media (min-width: 1400px) {
602
+ .flex-col-xxl-1 {
603
+ --span: 1;
604
+ }
605
+
606
+ .flex-col-xxl-2 {
607
+ --span: 2;
608
+ }
609
+
610
+ .flex-col-xxl-3 {
611
+ --span: 3;
612
+ }
613
+
614
+ .flex-col-xxl-4 {
615
+ --span: 4;
616
+ }
617
+
618
+ .flex-col-xxl-5 {
619
+ --span: 5;
620
+ }
621
+
622
+ .flex-col-xxl-6 {
623
+ --span: 6;
624
+ }
625
+
626
+ .flex-col-xxl-7 {
627
+ --span: 7;
628
+ }
629
+
630
+ .flex-col-xxl-8 {
631
+ --span: 8;
632
+ }
633
+
634
+ .flex-col-xxl-9 {
635
+ --span: 9;
636
+ }
637
+
638
+ .flex-col-xxl-10 {
639
+ --span: 10;
640
+ }
641
+
642
+ .flex-col-xxl-11 {
643
+ --span: 11;
644
+ }
645
+
646
+ .flex-col-xxl-12 {
647
+ --span: 12;
648
+ }
649
+
650
+ .flex-col-xxl-1,
651
+ .flex-col-xxl-2,
652
+ .flex-col-xxl-3,
653
+ .flex-col-xxl-4,
654
+ .flex-col-xxl-5,
655
+ .flex-col-xxl-6,
656
+ .flex-col-xxl-7,
657
+ .flex-col-xxl-8,
658
+ .flex-col-xxl-9,
659
+ .flex-col-xxl-10,
660
+ .flex-col-xxl-11,
661
+ .flex-col-xxl-12 {
662
+ width: calc(
663
+ (100% - var(--gap-count) * var(--flex-container-gap, 1rem)) /
664
+ var(--cols) * var(--span)
665
+ );
439
666
  }
440
667
  }
441
668
 
@@ -698,72 +925,58 @@
698
925
 
699
926
  /* columns */
700
927
  .columns-auto {
701
- -moz-columns: auto;
702
928
  columns: auto;
703
929
  }
704
930
 
705
931
  .columns-3xs {
706
- -moz-columns: var(--columns-3xs);
707
932
  columns: var(--columns-3xs);
708
933
  }
709
934
 
710
935
  .columns-2xs {
711
- -moz-columns: var(--columns-2xs);
712
936
  columns: var(--columns-2xs);
713
937
  }
714
938
 
715
939
  .columns-xs {
716
- -moz-columns: var(--columns-xs);
717
940
  columns: var(--columns-xs);
718
941
  }
719
942
 
720
943
  .columns-sm {
721
- -moz-columns: var(--columns-sm);
722
944
  columns: var(--columns-sm);
723
945
  }
724
946
 
725
947
  .columns-md {
726
- -moz-columns: var(--columns-md);
727
948
  columns: var(--columns-md);
728
949
  }
729
950
 
730
951
  .columns-lg {
731
- -moz-columns: var(--columns-lg);
732
952
  columns: var(--columns-lg);
733
953
  }
734
954
 
735
955
  .columns-xl {
736
- -moz-columns: var(--columns-xl);
737
956
  columns: var(--columns-xl);
738
957
  }
739
958
 
740
959
  .columns-2xl {
741
- -moz-columns: var(--columns-2xl);
742
960
  columns: var(--columns-2xl);
743
961
  }
744
962
 
745
963
  .columns-3xl {
746
- -moz-columns: var(--columns-3xl);
747
964
  columns: var(--columns-3xl);
748
965
  }
749
966
 
750
967
  .columns-4xl {
751
- -moz-columns: var(--columns-4xl);
752
968
  columns: var(--columns-4xl);
753
969
  }
754
970
 
755
971
  .columns-5xl {
756
- -moz-columns: var(--columns-5xl);
757
972
  columns: var(--columns-5xl);
758
973
  }
759
974
 
760
975
  .columns-6xl {
761
- -moz-columns: var(--columns-6xl);
762
976
  columns: var(--columns-6xl);
763
977
  }
764
978
 
765
979
  .columns-7xl {
766
- -moz-columns: var(--columns-7xl);
767
980
  columns: var(--columns-7xl);
768
981
  }
769
982