Сортируемый пользовательский интерфейс jQuery: вспышка нестандартного текста при запуске / остановке с @font-face в Mozilla 40.0.3

Я создал небольшое перетаскивание с помощью jQuery UI Sortable. Проблема демонстрируется в.gif ниже. Вы не можете видеть это в.gif, но есть вспышка текста без шрифта по умолчанию для всего текста на странице, а не только внутри сортируемой.Вспышка неустановленного текста при запуске или остановке перетаскивания] 1

После нескольких часов экспериментов я обнаружил, что изменение следующего свойства CSS для использования шрифта браузера по умолчанию или другого локального шрифта решает проблему:

body {
    font-family: "Lato", "sans-serif";
}

Лато загружается этой строкой в ​​заголовке моего HTML-документа:

<link href="http://fonts.googleapis.com/css?family=Lato:400,700" rel="stylesheet" />

Который загружает эту таблицу стилей из Google:

@font-face {
  font-family: 'Lato';
  font-style: normal;
  font-weight: 400;
  src: local('Lato Regular'), local('Lato-Regular'), url(http://fonts.gstatic.com/s/lato/v11/1YwB1sO8YE1Lyjf12WNiUA.woff2) format('woff2');
}
@font-face {
  font-family: 'Lato';
  font-style: normal;
  font-weight: 700;
  src: local('Lato Bold'), local('Lato-Bold'), url(http://fonts.gstatic.com/s/lato/v11/H2DMvhDLycM56KNuAtbJYA.woff2) format('woff2');
}

Вот код Javascript и разметка для сортировки пользовательского интерфейса jQuery, которую вы видите. Это связано с другим Сортируемым, чтобы позволить перетаскивать элементы между списками:

$('.js-sortable').each(function () {
    var $this = $(this);
    var connectedTo = $this.attr('data-connected-to');

    $this.sortable({
        connectWith: connectedTo,
        cursor: 'move',
        items: '.js-sortable-item:not(.js-locked)',
        placeholder: 'sf-sortable-placeholder',
        tolerance: 'pointer'
    });
});

// when a sortable item is dropped
$('.js-sortable').on('sortdeactivate', function(event, ui) {
    var $this = $(this);

    // for the active rules list
    if ($this.attr('id') === 'active-rules') {

        // recalculate and display the new priority of all list items
        var count = 1;
        $this.find('.js-sortable-item').each(function() {
            var $this = $(this);

            $this.attr('data-priority', count);
            $this.find('.js-status').text('Priority ' + count);
            count++;
        });

    // for the inactive rules list
    } else if ($this.attr('id') === 'inactive-rules') {

        // remove priority and display no priority indicator
        $this.find('.js-sortable-item').removeAttr('data-priority');
        $this.find('.js-status').text('Not Enforced');
    }
});

// initialize
$('.js-sortable').trigger('sortdeactivate');

<h2 class="sf-rules-head">Active Rules</h2>
<ul id="active-rules" class="js-sortable sf-sortable" data-connected-to="#inactive-rules">
    <li class="js-sortable-item js-locked sf-rule" data-priority="1">
        <div class="sf-handle-container">
            <i class="sf-handle"></i>
            <p class="js-status sf-status"></p>
            <p class="sf-rule-name">Rule Name A <i class="fa fa-info-circle js-tooltip" data-content="RULE_DESCRIPTION_GOES_HERE"></i></p>
        </div>
    </li>
    <li class="js-sortable-item sf-rule" data-priority="2">
        <div class="sf-handle-container">
            <i class="sf-handle"></i>
            <p class="js-status sf-status"></p>
            <p class="sf-rule-name">Rule Name B <i class="fa fa-info-circle js-tooltip" data-content="RULE_DESCRIPTION_GOES_HERE"></i></p>
        </div>
    </li>
    <li class="js-sortable-item sf-rule" data-priority="3">
        <div class="sf-handle-container">
            <i class="sf-handle"></i>
            <p class="js-status sf-status"></p>
            <p class="sf-rule-name">Rule Name C <i class="fa fa-info-circle js-tooltip" data-content="RULE_DESCRIPTION_GOES_HERE"></i></p>
            <select class="form-control sf-dropdown">
                <option value="one" selected>Option One</option>
                <option value="two">Option Two</option>
                <option value="three">Option Three</option>
                <option value="four">Option Four</option>
            </select>
        </div>
    </li>
</ul>

Мне не удалось воспроизвести эту проблему в Chrome и IE. Может кто-нибудь сказать мне, почему это происходит? Нет ли способа использовать @ font-face с jQuery UI Sortable в Mozilla и избежать этой странной вспышки стиля текста?

0 ответов

Другие вопросы по тегам