Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

224
Visualizações
¿Por qué no puedo establecer el color del texto de este elemento de intervalo en blanco?

En pocas palabras, quiero cambiar el color de los dos primeros textos de cada línea a blanco, pero de todos modos no funciona. Es como si los elementos span generados por js no pudieran verse afectados por css. Por favor, vea la imagen para el código específico.

Lo siento, todavía no soy muy bueno usando Stack Overflow, se agregó el código.

ingrese la descripción de la imagen aquí

 export default { mounted(){ console.log("Hello!") let list = document.querySelectorAll('.shinchou-menu li a') list.forEach( link => { let letters = link.textContent.split(""); link.textContent = ""; letters.forEach((words, i) => { let span = document.createElement("span"); span.textContent = words if(i < 2){ span.className = "highlight" } span.style.transitionDelay = `${i/10}` link.append(span); }) }) } }
 <style> body { display: flex; justify-content: center; align-items: center; height: 100vh; background: #fafafa; } </style> <style lang="less" scoped> .shinchou-menu { --heightlight-text-color: #00ACF0; list-style: none; li { a { text-decoration: none; display: inline-flex; background: #000; font-size: 1.6em; font-weight: 700; color: var(--heightlight-text-color); padding: 4px; margin: 6px 0; span.highlight { color: #FFF; } } } } </style>
 <template> <div> <ul class="shinchou-menu"> <li><a href="#">ニュース</a></li> <li><a href="#">ストーリー</a></li> <li><a href="#">スターフ&キャスト</a></li> <li><a href="#">キャラクター</a></li> <li><a href="#">放送·配信情報</a></li> </ul> </div> </template>

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

¡No manipule DOM directamente!

Vue mantiene una estructura DOM separada (llamada DOM virtual) donde rastrea la reactividad de todos los elementos. Cada vez que algo reactivo cambia, el nodo DOM en el DOM real de la página se vuelve a representar. ¿Por qué? Porque es mucho más rápido que rastrear cambios en DOM.

Lo que esto significa es que cada vez que cambie DOM directamente, perderá esas modificaciones cada vez que Vue vuelva a renderizar.

Se supone que debe manejar sus datos en el componente y permitir que Vue los represente utilizando directivas estructurales de plantilla ( v-if , v-for , etc.).


En su caso, se vería así (no estoy seguro de cuál es la palabra separador):

Vue2:

 new Vue({ el: '#app', data: () => ({ items: [ 'ニュース', 'ストーリー', 'スターフ&キャスト', 'キャラクター', '放送·配信情報' ] }) })
 .highlighted { color: red }
 <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script> <div id="app"> <ul> <li v-for="item in items" :class="{ highlighted: item.split('·').length > 1 }" v-text="item" /> </ul> </div>

Vue3:

 Vue.createApp({ setup: () => ({ items: [ 'ニュース', 'ストーリー', 'スターフ&キャスト', 'キャラクター', '放送·配信情報' ] }) }).mount('#app')
 .highlighted { color: red }
 <script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script> <div id="app"> <ul> <li v-for="item in items" :class="{ highlighted: item.split('·').length > 1 }" v-text="item" /> </ul> </div>


Nota: puede (y tal vez debería ) crear un método que tome el elemento como un parámetro y devuelva las clases correctas para el elemento. De esta manera, no tiene que escribir su js en la plantilla.

 <li v-for="item in items" :class="itemClasses(item)">

componente:

 /* Options API syntax: */ methods: { itemClasses(item) { /* return string, array of strings or class object docs: https://vuejs.org/guide/essentials/class-and-style.html */ } } /* (alternative) Composition API syntax : */ setup() { // replace this function with your own logic const itemClasses = item => item.split('·').length > 1; return { itemClasses } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda