O pacote externo cinza é o div externo, forneça uma conveniência class = "tab-control" etc. para otimizar os detalhes
Como cada item tabItem tem apenas texto, ele também é empacotado em div primeiro, forneça um class = "tab-control-item" e use diretamente um intervalo simples para ocupar o primeiro lugar
Comece a modificar o layout css: flex, o texto é centralizado, defina a altura desta barra de opções: 40px, e defina uma cor de fundo, então cada tabItem dentro é flex: 1
O número de textos e extensões em cada tabItem é determinado pelo componente pai que usa esse componente, portanto, o valor é passado pelo componente pai. Sabendo que tabItem é apenas uma exibição de texto acima, use uma matriz para armazenar e passar o valor.
O pai passa a matriz de títulos, que contém três elementos ["recomendação", "recomendação", "saudação"], o que também significa que três tabItems e três spans serão criados
Recebimento de subcomponentes
<template><divclass="tab-control"><divv-for="(item,index) in titles":key="index"class="tab-control-item"><span>{
{item}}</span></div></div></template><script>exportdefault{
name:'TabControl',
props:{
titles:{
type: Array,default(){
return[]}}},}</script>
O acima pode exibir a matriz passada do componente pai.
Clique em uma opção, a opção é destacada, primeiro use o evento click para obter o valor do índice do item atualmente clicado e, em seguida, defina um estilo css específico: ativo, deixe a opção aplicar o estilo ativo
<template><divclass="tab-control"><divv-for="(item,index) in titles":key="index"class="tab-control-item":class="{active: index === currentIndex}"----动态绑定样式@click="ItemClick(index)"----点击事件获取index><span>{
{item}}</span></div></div></template>