1. <template>
    2. <div id="app">
    3. <!-- 3.向子组件传输数据 -->
    4. <Time :times="ptimes" />
    5. </div>
    6. </template>
    7. <script>
    8. // 1.引入组件
    9. import Time from "./components/time.vue";
    10. export default {
    11. name: "App",
    12. components: {
    13. // 注册组件
    14. Time,
    15. },
    16. data() {
    17. return {
    18. ptimes: ["一天", "一周", "一月", "一年"],
    19. };
    20. },
    21. };
    22. </script>
    23. <style>
    24. #app {
    25. font-family: Avenir, Helvetica, Arial, sans-serif;
    26. -webkit-font-smoothing: antialiased;
    27. -moz-osx-font-smoothing: grayscale;
    28. text-align: center;
    29. color: #2c3e50;
    30. margin-top: 60px;
    31. }
    32. </style>
    1. <template>
    2. <div class="chooser-components">
    3. <ul class="chooser-list">
    4. <!-- :class 是动态class 满足nowIndex===index 则动态的添加上active样式 -->
    5. <li
    6. @click="clickHandle(index)"
    7. :class="{ active: nowIndex === index }"
    8. v-for="(item, index) in times"
    9. :key="index"
    10. >
    11. {{ item }}
    12. </li>
    13. </ul>
    14. </div>
    15. </template>
    16. <script>
    17. export default {
    18. // 4.接收父组件传输过来的数据
    19. props: ["times"],
    20. data() {
    21. return {
    22. nowIndex: 0,
    23. };
    24. },
    25. methods: {
    26. clickHandle(index) {
    27. this.nowIndex = index;
    28. },
    29. },
    30. };
    31. </script>
    32. <style scoped>
    33. li {
    34. list-style-type: none;
    35. }
    36. .chooser-component {
    37. position: relative;
    38. display: inline-block;
    39. }
    40. .chooser-list li {
    41. display: inline-block;
    42. padding: 0 8px;
    43. border: 1px solid #e3e3e3;
    44. height: 25px;
    45. line-height: 25px;
    46. margin: 0 5px;
    47. border-radius: 3px; /* 设置圆角弧度 */
    48. align-items: center;
    49. width: 60px;
    50. cursor: pointer; /* 小手样式 */
    51. }
    52. .active {
    53. background-color: #4fc08d;
    54. border-color: #4fc08d;
    55. color: #fff;
    56. }
    57. </style>