Рендеринг иконок очень медленный в браузере Edge - PullRequest
0 голосов
/ 07 января 2020

На нашем сайте мы показываем значки для стилизованных флажков. Иконки отображаются из файла SVG. Эти значки загружаются очень медленно в браузере Edge (почти 10 секунд). Он отлично работает в IE и Chrome. Пожалуйста, предложите несколько вариантов, чтобы улучшить время загрузки изображения для Edge. PFB снимок экрана с флажками.

enter image description here

Детали реализации

Элементы HTML, соответствующие элементу флажки добавляются динамически при получении ответа от веб-сервиса. Logi c реализован в чистом виде JS, а стили выполнены с использованием SASS.

1 Ответ

0 голосов
/ 15 января 2020

Поскольку вы используете веб-сервис для заполнения флажка, сначала нам нужно повысить производительность, вы можете попробовать использовать инструмент разработчика F12 или установить таймер для его проверки. Кроме того, вы также можете оптимизировать использование изображений и пытаться использовать асинхронные методы для вызова веб-службы.

Кроме того, на мой взгляд (поскольку вы не опубликовали соответствующий код), я предлагаю вам попробовать используйте CSS или Javascript для создания пользовательского флажка с галочкой вместо SVG, потому что, используя стиль CSS, при добавлении нового флажка мы можем просто добавить связанный с ним стиль CSS ,

Вы можете обратиться к следующему коду:

<script src="Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#btnAdd").click(function () {

            //call the web service to get the checkbox items.

            //add new checkbox items with CSS style. 
            $("#dynamiccontent").append("<label class='container'>TwoTwo<input type = 'checkbox' > <span class='checkmark'></span> </label >");
        });
    });
</script>

Html код:

<input type="button" id="btnAdd"  value="Add"/>
<div id="dynamiccontent">
    <label class="container">
        One
        <input type="checkbox" checked="checked">
        <span class="checkmark"></span>
    </label>

    <label class="container">
        Two
        <input type="checkbox">
        <span class="checkmark"></span>
    </label>
</div>

CSS стиль:

<style type="text/css">
    /* Customize the label (the container) */
    .container {
        display: block;
        position: relative;
        padding-left: 35px;
        margin-bottom: 12px;
        cursor: pointer;
        font-size: 22px;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }

        /* Hide the browser's default checkbox */
        .container input {
            position: absolute;
            opacity: 0;
            cursor: pointer;
            height: 0;
            width: 0;
        }

    /* Create a custom checkbox */
    .checkmark {
        position: absolute;
        top: 0;
        left: 0;
        height: 25px;
        width: 25px;
        background-color: #eee;
    }

    /* On mouse-over, add a grey background color */
    .container:hover input ~ .checkmark {
        background-color: #ccc;
    }

    /* When the checkbox is checked, add a blue background */
    .container input:checked ~ .checkmark {
        background-color: #2196F3;
    }

    /* Create the checkmark/indicator (hidden when not checked) */
    .checkmark:after {
        content: "";
        position: absolute;
        display: none;
    }

    /* Show the checkmark when checked */
    .container input:checked ~ .checkmark:after {
        display: block;
    }

    /* Style the checkmark/indicator */
    .container .checkmark:after {
        left: 9px;
        top: 5px;
        width: 5px;
        height: 10px;
        border: solid white;
        border-width: 0 3px 3px 0;
        -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        transform: rotate(45deg);
    }
</style>

Результат, подобный этому:

enter image description here

Ссылка: Как сделать - Пользовательский флажок

...