Максимальная ширина виджета jQuery UI Tooltip

Я использую новую подсказку пользовательского интерфейса jQuery и не могу понять, как установить максимальную ширину всплывающей подсказки. Думаю, это нужно сделать с помощью position, но как?


person sl3dg3    schedule 18.10.2012    source источник


Ответы (8)


Основываясь на ответе Сенни, я добавил в отдельный CSS-файл следующее:

div.ui-tooltip {
    max-width: 400px;
}

Примечание: убедитесь, что ваш отдельный CSS следует после ui-css, иначе эффекта не будет. В противном случае вы также можете использовать маркер !important.

person sl3dg3    schedule 18.10.2012
comment
В качестве альтернативы я предпочитаю добавить более конкретное правило CSS, чтобы оно имело приоритет над правилом jquery-ui.css, независимо от порядка, в котором вы связываете свои таблицы стилей. Если у вас есть идентификационная бирка на теле, это так же просто, как сделать #idOfBodyTag .ui-tooltip - person Josh; 22.07.2013
comment
!важно важно. - person LauraNMS; 25.02.2014
comment
body div.ui-tooltip кажется достаточно независимо от порядка загрузки. - person billynoah; 24.12.2014

Если вы подписались на событие открытия всплывающей подсказки, вы можете обновить стиль в коде:

$(".selector").tooltip({
    open: function (event, ui) {
        ui.tooltip.css("max-width", "400px");
    }
});
person KJR    schedule 25.03.2013
comment
это работает хорошо. Благодарю. И это лучше, так как вы можете сделать разные всплывающие подсказки разных размеров в зависимости от ваших потребностей. - person sdjuan; 04.06.2013
comment
@sdjuan спасибо за это. Я пытался использовать ширину, и это не сработало, хотя высота была. max-width сделал свое дело. - person nfriend21; 02.08.2013
comment
Не используйте это! Jquery вычисляет ширину и высоту перед вызовом open. Поэтому изменение размера не будет зарегистрировано. - person pknoe3lh; 14.12.2015

в сценарии:

$(elm).tooltip({tooltipClass: "my-tooltip-styling" });

в css:

.my-tooltip-styling {
      max-width: 600px;
}
person AnViKo    schedule 26.07.2013
comment
Это действительно кажется мне лучшим ответом. Вам не нужно возиться с CSS пользовательского интерфейса jQuery, и вы можете установить стиль для каждой всплывающей подсказки отдельно. Спасибо. Это помогло мне понять, что я не знаю, какой класс/идентификатор стилизовать, поскольку всплывающая подсказка на самом деле не живет в моем коде, а только в пользовательском интерфейсе jQuery. - person mikato; 01.11.2013

Вместо того, чтобы напрямую изменять или переопределять классы CSS пользовательского интерфейса jQuery, вы можете указать дополнительный класс CSS с помощью параметра tooltipClass:

Инициализация всплывающей подсказки

  $(function() {
    $( document ).tooltip({
      items: "tr.dataRow",
      tooltipClass: "toolTipDetails",  //This param here is used to define the extra style class 
      content: function() {
        var element = $( this );

            var details = j$("#test").clone();
            return details.html();

      }
    });
  });

Затем вы должны создать этот класс стиля. Вы захотите импортировать этот файл CSS после файла CSS jQuery UI.

Пример стиля CSS

Этот класс здесь сделает модальное окно шириной 1200 пикселей по умолчанию и добавит горизонтальную прокрутку, если есть еще какой-либо контент.

<style> 
  .toolTipDetails {
    width:  1200px;
    max-width: 1200px;
    overflow:auto;
  } 

</style>

Примечание. Обычно не рекомендуется использовать тег !important, но в этом случае его можно использовать, чтобы обеспечить отображение нужного CSS.

person anataliocs    schedule 02.06.2014
comment
Это больше не допустимое решение. .html() нельзя реализовать как часть параметра содержимого, поскольку HTML больше не поддерживается. - person PseudoNinja; 23.02.2018
comment
Ну, html() используется для заполнения всплывающей подсказки, а не для ее стилизации, поэтому этот метод все еще действителен, даже если леса не - person Roger Kaplan; 13.03.2018

Как указано в jQuery UI API, лучшее, что вы можете сделать, это переопределить классы ui-tooltip и ui-tooltip-content следующим образом:

.ui-tooltip
{
    /* tooltip container box */
    max-width: your value !important;
}
.ui-tooltip-content
{
    /* tooltip content */
    max-width: your value !important;
}

Надеюсь это поможет!

person Gonza Oviedo    schedule 24.07.2013

Может быть, вы можете установить такую ​​​​ширину в js

$("#IDOfToolTip").attr("style", "max-width:30px");

or

$("#IDOfToolTip").css("max-width", "30px");
person Senni    schedule 18.10.2012
comment
Это как-то не работает, но на основе этого я добавил немного CSS (см. мой ответ). - person sl3dg3; 18.10.2012

person    schedule
comment
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и/или как этот код отвечает на вопрос, повышает его ценность в долгосрочной перспективе. - person mickmackusa; 21.05.2019

person    schedule
comment
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и/или как этот код отвечает на вопрос, повышает его ценность в долгосрочной перспективе. - person ahoffner; 10.05.2019