es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El modificador de desplazamiento del elemento Offset empuja parte de la ventana emergente fuera del viewport (Popper).

Usando offset: '0,-30px' en mi modificador Popper. Funciona, pero ahora mi popover no encaja dentro del viewport en algunas situaciones. Es molesto, porque o bien Popper aplica un offset o se asegura de que el popover encaje en el viewport, pero no ambas cosas.

¿Hay alguna forma de hacer que el offset funcione mientras Popper aún se asegura de que el popover encaje en el viewport? (básicamente decirle a Popper que aplique el offset, excepto cuando hacerlo crea problemas de ajuste en el viewport)

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de hacer que el desplazamiento (offset) funcione mientras Popper asegura que el popover se ajuste dentro del viewport. Puedes lograr esto utilizando el modificador preventOverflow junto con el modificador offset.

    El modificador preventOverflow se asegurará de que el popover se mantenga dentro de los límites del viewport. Esto significa que si el desplazamiento (offset) hace que el popover salga del viewport, ajustará la posición del popover en consecuencia.

    Para usar ambos modificadores juntos, puedes pasar un arreglo de modificadores a la propiedad modifiers del componente Popper. Aquí tienes un ejemplo:

    <template>
      <div>
        <button ref="trigger" @click="open">Abrir Popover</button>
        <div ref="popover">
          Contenido del popover
        </div>
      </div>
    </template>
    
    <script>
    import Popper from 'popper.js';
    
    export default {
      mounted() {
        this.popper = new Popper(this.$refs.trigger, this.$refs.popover, {
          placement: 'bottom',
          modifiers: [
            {
              name: 'offset',
              options: {
                offset: '0,-30px',
              },
            },
            {
              name: 'preventOverflow',
              options: {
                padding: 10,
              },
            },
          ],
        });
      },
      beforeDestroy() {
        this.popper.destroy();
      },
      methods: {
        open() {
          this.popper.update();
        },
      },
    };
    </script>
    

    En el ejemplo anterior, estamos usando el modificador offset con un desplazamiento de 0,-30px. También estamos usando el modificador preventOverflow con un relleno (padding) de 10 para asegurarnos de que el popover se mantenga dentro del viewport.

    Al utilizar ambos modificadores juntos, podemos aplicar un desplazamiento al popover al mismo tiempo que nos aseguramos de que se ajuste dentro del viewport.

Comments are closed.