index.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <div :class="classList">
  3. <div class="head">
  4. <slot name="head"></slot>
  5. </div>
  6. <div class="body">
  7. <slot></slot>
  8. </div>
  9. <div class="foot">
  10. <slot name="foot"></slot>
  11. </div>
  12. </div>
  13. </template>
  14. <script>
  15. export default {
  16. components: {},
  17. props: {
  18. shadow:{
  19. default:'always'
  20. }
  21. },
  22. data() {
  23. return {
  24. classList:'myCard'
  25. };
  26. },
  27. watch: {
  28. shadow(){
  29. this.getStyle()
  30. }
  31. },
  32. computed: {},
  33. created() {},
  34. mounted() {
  35. this.getStyle()
  36. },
  37. methods: {
  38. getStyle(){
  39. var a = 'myCard'
  40. switch(this.shadow){
  41. case 'always':
  42. a = a + ' is-always-shadow'
  43. break;
  44. case 'hover':
  45. a = a + ' is-hover-shadow'
  46. break;
  47. case 'never':
  48. break;
  49. default:
  50. break;
  51. }
  52. this.classList = a
  53. }
  54. },
  55. };
  56. </script>
  57. <style lang="scss" scoped>
  58. .myCard{
  59. background-color: #FFF;
  60. color: #303133;
  61. transition: .3s;
  62. border: 1px solid var(--color1) !important;
  63. border-radius: 5px;
  64. .head{
  65. width: auto;
  66. border-bottom: 1px solid var(--color1) !important;
  67. padding: 10px;
  68. }
  69. .head>*{
  70. width: 100%;
  71. display: flex;
  72. justify-content: space-between;
  73. font-family: var(--fm);
  74. color: var(--color1);
  75. font-weight: bold;
  76. }
  77. .head:empty{
  78. border-bottom: none !important;
  79. padding: 0px;
  80. }
  81. .body{
  82. padding: 10px;
  83. }
  84. .foot{
  85. border-top: 1px solid var(--color1) !important;
  86. padding: 10px;
  87. }
  88. .foot>*{
  89. width: 100%;
  90. display: flex;
  91. justify-content: space-between;
  92. }
  93. .foot:empty{
  94. border-top: none !important;
  95. padding: 0px;
  96. }
  97. }
  98. .is-always-shadow{
  99. box-shadow: 10px 18px 12px 0 rgba(27, 23, 23, 0.1);
  100. }
  101. .is-hover-shadow:hover{
  102. box-shadow: 10px 18px 12px 0 rgba(27, 23, 23, 0.1);
  103. }
  104. </style>