index.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <div class="m-expert">
  3. <div class="expert-l">
  4. <div class="e-title">{{experts.title}}</div>
  5. <p class="banquan">Photo @graphicsmedia.net</p>
  6. <div>{{activeTxt.name}}</div>
  7. <p v-for="(item, i) in activeTxt.introduce" :key="i">{{item}}</p>
  8. </div>
  9. <div class="expert-r">
  10. <ul>
  11. <li @click="clickHandle(item,i)" v-for="(item, i) in experts.expert" :key="i">
  12. <img :class="{active:activeIdx===i}" :src="item.img">
  13. </li>
  14. </ul>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. export default {
  20. props: ['experts'],
  21. data () {
  22. return {
  23. activeTxt: {
  24. name: this.experts.expert[0].name,
  25. introduce: this.experts.expert[0].detail
  26. },
  27. activeIdx: 0
  28. }
  29. },
  30. methods: {
  31. clickHandle (item, idx) {
  32. this.activeIdx = idx
  33. this.activeTxt = {
  34. name: item.name,
  35. introduce: item.detail
  36. }
  37. }
  38. }
  39. }
  40. </script>
  41. <style scoped>
  42. .m-expert{
  43. display: flex;
  44. justify-content: space-between;
  45. align-items: center;
  46. width: 100%;
  47. padding: 0 5%;
  48. }
  49. .expert-l{
  50. color: #fff;
  51. text-align: left;
  52. line-height: 1.4;
  53. font-weight: bold;
  54. }
  55. .banquan{
  56. font-size: 10px;
  57. font-weight: 100;
  58. color: #8a8a8a;
  59. }
  60. .expert-l>div:first-child{
  61. font-size: 18px;
  62. margin: 0;
  63. }
  64. .expert-l>div{
  65. margin: 20px auto;
  66. font-size: 14px;
  67. }
  68. .expert-l>p{
  69. font-size: 14px;
  70. }
  71. .expert-r ul li img{
  72. width: 20vw;
  73. margin-top: 1vw;
  74. border: 2px solid #fff;
  75. }
  76. .expert-r ul li .active{
  77. border: 2px solid #e6373c;
  78. }
  79. </style>