Как установить верхнюю центральную позицию для уведомления

Как установить положение без пикселей? Я пытаюсь это

var stack = { "dir1": "down", "dir2": "right", "firstpos1": 50, "firstpos2": 50 };

Но мне это плохо из-за разного разрешения экрана.

2 ответа

Решение

Есть похожий вопрос с ответом здесь. Согласно первому примеру в документации стеков, вы можете центрировать начальную позицию уведомления, установив верхние / левые свойства css в before_open. Вам также необходимо перемещать уведомление каждый раз, когда размер окна изменяется.

function get_center_pos(width, top) {
  // top is empty when creating a new notification and is set when recentering
  if (!top) {
    top = 30;
    // this part is needed to avoid notification stacking on top of each other
    $('.ui-pnotify').each(function() {
      top += $(this).outerHeight() + 20;
    });
  }

  return {
    "top": top,
    "left": ($(window).width() / 2) - (width / 2)
  }
}
$(document).ready(function() {

  new PNotify({
    title: "this is center",
    text: "blablabla",
    opacity: 0.90,
    type: "info",
    width: "390px",
    before_open: function(PNotify) {
      PNotify.get().css(get_center_pos(PNotify.get().width()));
    }
  });

  $(window).resize(function() {
    $(".ui-pnotify").each(function() {
      $(this).css(get_center_pos($(this).width(), $(this).position().top))
    });
  });
});

Некропост, но может помочь другим искателям. Мое решение без пересчетов js:

ЯШ:

new PNotify({
    ...
    addclass: 'pnotify-center'
});

CSS:

.pnotify-center {
   right: calc(50% - 150px) !important;
}
Другие вопросы по тегам