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

204
Visualizações
Reorganización receptiva de divs en DOM

Mi proyecto usa Tailwind + Vue 2. Estoy usando Vue para recorrer una lista y mostrar varias filas. Cada fila comienza colapsada y tiene la opción de expandirse.

Hay 3 elementos div visibles y 1 oculto en cada fila contraída. Cuando se expande, el div oculto se hace visible. Estoy buscando tomar 2 de los elementos div visibles de cada fila y moverlos al div desplegable oculto cuando estoy en el móvil. Cuando se expande en el móvil, espero que los elementos movidos sean visibles. También quiero que retrocedan cuando cambien de la vista móvil a la de escritorio.

El comportamiento esperado es el siguiente:

  • En el escritorio, contraído, se muestran el interruptor de palanca y el mensaje.

  • En el escritorio, expandido, se muestran el interruptor de palanca y el mensaje, no cambia de ubicación.

  • En dispositivos móviles, colapsado, el interruptor de palanca y el mensaje NO se muestran y, en su lugar, se mueven al div colapsado (oculto).

  • En dispositivos móviles, se muestra el interruptor y el mensaje expandidos.

Esta foto demuestra lo que estoy buscando lograr.

manifestación

Estos han sido mis intentos hasta ahora:

  1. CSS / Duplicar : duplica el elemento. Haga que uno esté oculto en el móvil y visible en el escritorio, y el otro sea visible en el móvil y oculto en el escritorio. Aunque no es una forma limpia de hacer esto, parece funcionar, hasta que uso el interruptor de palanca. Pierde funcionalidad (supongo que ya que se repite).
  2. Tailwind/CSS order : como sugiere el nombre de la utilidad, el orden en la página cambiará, pero esto no moverá los elementos deseados a un elemento oculto; más bien muévalo arriba/abajo del elemento oculto.
  3. Vue Teleport : esto es para Vue 3, pero hay paquetes disponibles para Vue 2, como portal-vue . Lo probé, y dado que las filas se iteran, todos los elementos terminan empujados en la vista ampliada de la última fila. Preferiría no usar un paquete.
  4. Javascript : similar a teleport/portal: etiquete divs "move-from" y "move-to" y encuéntrelos con getElementsByClassName . Iterar a través de cada etiqueta dropdown y move-me (hay 2 etiquetas move-me para cada etiqueta dropdown ). Agregue un detector de eventos para cambiar el tamaño de la ventana y verifique si el ancho de la página es < 768. El problema con esto es que, como el teletransporte/portal, también incluye todos los elementos en la vista ampliada de la última fila.
 if (this.width < 768) { const moveMeParent = document.getElementsByClassName('move-me') // there are 20 of these const dropdownParent = document.getElementsByClassName('dropdown') // there are 10 of these for (let i = 0; i < dropdownParent.length; i++) { for (let j = 0; j < 2; j++) { dropdownParent[i].appendChild(moveMeParent[0]) } } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Solo para proporcionar una respuesta para marcar esto como resuelto:

Cuando necesite un diseño diferente (es decir, marcado html) entre el escritorio y el móvil, hay algunas soluciones allí:

  1. Duplicar los elementos para que estén en la posición de escritorio y móvil en el DOM. Use CSS para ocultar uno u otro con consultas de medios.

+ Pros: fácil de configurar, funciona muy bien para SSR, no se necesita js.
- Contras: agrega marcado adicional al DOM, lo que puede ralentizar el procesamiento de la página si se hace demasiadas veces.

Esa es la solución que aconsejo en el caso de OP

  1. Usando javascript para renderizar dinámicamente los componentes en un lugar u otro. En vue, eso significa usar v-if="isMobile" .

+ Pros: evita el marcado fantasma en el DOM como en la solución 1.
- Contras: provoca parpadeo en SSR (se representa como escritorio o móvil en el servidor, luego se actualiza a otro diseño cuando se hidrata).

  1. En algunos casos, use css solo para mover su elemento. Como flex-direction: row-reverse u order: n .

+ Pros: fácil de configurar, no se necesita js.
- Contras: Solo funciona para elementos hermanos.

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