index.less 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. @import './var.less';
  2. :root {
  3. --van-picker-background-color: @picker-background-color;
  4. --van-picker-toolbar-height: @picker-toolbar-height;
  5. --van-picker-title-font-size: @picker-title-font-size;
  6. --van-picker-title-line-height: @picker-title-line-height;
  7. --van-picker-action-padding: @picker-action-padding;
  8. --van-picker-action-font-size: @picker-action-font-size;
  9. --van-picker-confirm-action-color: @picker-confirm-action-color;
  10. --van-picker-cancel-action-color: @picker-cancel-action-color;
  11. --van-picker-option-font-size: @picker-option-font-size;
  12. --van-picker-option-padding: @picker-option-padding;
  13. --van-picker-option-text-color: @picker-option-text-color;
  14. --van-picker-option-disabled-opacity: @picker-option-disabled-opacity;
  15. --van-picker-loading-icon-color: @picker-loading-icon-color;
  16. --van-picker-loading-mask-color: @picker-loading-mask-color;
  17. --van-picker-mask-color: @picker-mask-color;
  18. }
  19. .van-picker {
  20. position: relative;
  21. background: var(--van-picker-background-color);
  22. user-select: none;
  23. &__toolbar {
  24. display: flex;
  25. align-items: center;
  26. justify-content: space-between;
  27. height: var(--van-picker-toolbar-height);
  28. }
  29. &__cancel,
  30. &__confirm {
  31. height: 100%;
  32. padding: var(--van-picker-action-padding);
  33. font-size: var(--van-picker-action-font-size);
  34. background-color: transparent;
  35. border: none;
  36. }
  37. &__confirm {
  38. color: var(--van-picker-confirm-action-color);
  39. }
  40. &__cancel {
  41. color: var(--van-picker-cancel-action-color);
  42. }
  43. &__title {
  44. max-width: 50%;
  45. font-weight: var(--van-font-weight-bold);
  46. font-size: var(--van-picker-title-font-size);
  47. line-height: var(--van-picker-title-line-height);
  48. text-align: center;
  49. }
  50. &__columns {
  51. position: relative;
  52. display: flex;
  53. cursor: grab;
  54. }
  55. &__loading {
  56. position: absolute;
  57. top: 0;
  58. right: 0;
  59. bottom: 0;
  60. left: 0;
  61. z-index: 3;
  62. display: flex;
  63. align-items: center;
  64. justify-content: center;
  65. color: var(--van-picker-loading-icon-color);
  66. background: var(--van-picker-loading-mask-color);
  67. }
  68. &__frame {
  69. position: absolute;
  70. top: 50%;
  71. right: var(--van-padding-md);
  72. left: var(--van-padding-md);
  73. z-index: 2;
  74. transform: translateY(-50%);
  75. pointer-events: none;
  76. }
  77. &__mask {
  78. position: absolute;
  79. top: 0;
  80. left: 0;
  81. z-index: 1;
  82. width: 100%;
  83. height: 100%;
  84. background-image: var(--van-picker-mask-color);
  85. background-repeat: no-repeat;
  86. background-position: top, bottom;
  87. // fix rendering failure during animation on safari
  88. transform: translateZ(0);
  89. pointer-events: none;
  90. }
  91. &-column {
  92. flex: 1;
  93. overflow: hidden;
  94. font-size: var(--van-picker-option-font-size);
  95. &__wrapper {
  96. transition-timing-function: cubic-bezier(0.23, 1, 0.68, 1);
  97. }
  98. &__item {
  99. display: flex;
  100. align-items: center;
  101. justify-content: center;
  102. padding: var(--van-picker-option-padding);
  103. color: var(--van-picker-option-text-color);
  104. &--disabled {
  105. cursor: not-allowed;
  106. opacity: var(--van-picker-option-disabled-opacity);
  107. }
  108. }
  109. }
  110. }