Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
Vue: pasar el estilo css en línea al componente secundario

Estoy usando vue.js + vuetify, y tengo que colocar un botón sobre un componente de lienzo (aquí manejado por la biblioteca Konva)

Lo logré usando la posición absoluta del botón. Para limpiar las cosas, quiero colocar este botón en un componente dedicado.

Me gustaría pasar el CSS de posicionamiento en línea a este nuevo componente secundario, pero no sé cómo hacerlo funcionar.

He intentado las siguientes dos formas

  • Pásalo con un enlace :style="xxx", como hice cuando usé v-btn directamente
  • Pasar el posicionamiento a un div principal: funciona con un div de ancho! = 0 pero parece una tontería. Y en este caso, el índice z no se aplica al botón.
  • Podría pasar los atributos con un accesorio dedicado, pero vuetify no parece necesitarlo

Aquí está básicamente mi código:

 <template> <v-container fluid fill-height ref="parentLayout" class="pa-0" :style="{position: 'relative'}"> <!-- Konva area overwhich the button will be placed drawn over /--> <div ref="konvaLayout" :style="{backgroundColor:'rgb( 40, 40, 40 )'}"> <!-- THIS WORKS /--> <v-btn absolute :style="{top:'10%', left:'10%', width: '100px'}"> THIS WORKS </v-btn> <!-- THIS DOES NOT /--> <my-button :style="{position: absolute, top:'2%', left:'2%'}" /> </v-container> </template>

En resumen tengo las dos siguientes dudas:

  1. ¿Cómo puedo vincular correctamente: estilo al elemento secundario, como lo hace vuetify?
  2. ¿Cuál es la forma estándar de pasar los atributos de posición css a los componentes secundarios? Con encuadernación de estilo como 1) ?

Gracias por toda tu ayuda

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema en este caso es básicamente lo que se supone que v-deep debe resolver en el mundo css (aunque no va a resolver su problema aquí)

No tiene un elemento native dentro del div konvaLayout , por lo que el estilo no llega al componente destinado.

En el componente MyButton.vue , tendría dos opciones para resolver esto:

- Sobrescribir accesorios de style -

 //MyButton.vue <template> <v-btn :style="style">{{ label }}</v-btn> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ props: { label: String, style: [String, Object] } }); </script>

- Accesorio personalizado -

Utiliza un nombre de prop personalizado que se usa específicamente para diseñar el botón en my-button (lol)

 //MyButton.vue <template> <v-btn :style="btnStyle">{{ label }}</v-btn> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ props: { label: String, btnStyle: [String, Object] } }); </script>

(No hay garantía ya que no se nos proporcionó un código y una caja o similar para verificar si funciona )

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda