2017-02-03 4 views
-5

Я загружаю изображение моей проблемы. В страницах всегда говорится, что мои файлы CSS замедляют загрузку моих сайтов.Включите мои файлы CSS с JavaScript

Какое решение для этого? Как добавить эти файлы в javascript или в async-режим?

Мои файлы JS, такие как jQuery, также находятся в теге закрытия тела на нижней части страницы.

enter image description here

+3

Вы должны отредактировать текст этого сообщения в вопросе, а не включать скриншоты текста. Это изображение трудно прочитать и «ввести описание изображения здесь» не помогает слепым пользователям. – BSMP

+0

Попробуйте https://github.com/filamentgroup/loadCSS/. Если вы динамически загружаете стили, рекомендуется создать критические стили (для видимой части вашего сайта перед прокруткой) в главной части вашего html, чтобы зрители не увидели нестандартный контент при первом посещении. – Davey

+0

Я попытался попробовать, но я не понимаю. Какие файлы я могу добавить из этой библиотеки? Я включил файл loadcss из папки src, и я получаю сообщение об ошибке, что функция loadCSS не существует. – Dave599

ответ

0

CSS ресурсы блокируются по умолчанию, означает, что браузер ожидает содержание будет доступно до рендеринга страницы. Чтобы этого избежать, вы можете попытаться поместить теги ссылок в конец вашего html-файла, который может помочь. Следующая полезная идея - удалить тип носителя (или лучше установить его, когда это будет сделано). Подобно этому браузер загружает файл, но не ждет.

<link rel="stylesheet" 
    href="css.css" 
    media="none" 
    onload="if(media!='all')media='all'"> 

Или вы загружаете полный источник асинхронных сигналов. Без каких-либо дальнейших Lib вы могли бы сделать что-то вроде этого в конце файла HTML:

(function() { 
    // caniuse requestAnimationframe? 
    var raf = window.RequestAnimationFrame || 
     window.mozRequestAnimationFrame || 
     window.webkitRequestAnimationFrame || 
     window.msRequestAnimationFrame; 

    // defer loading of all non criticial CSS 
    function deferLoad() { 

    // put all relevant styles here 
    var asyncStyleSheets = [ 
     '/stylesheets/async-stylesheet-1.css', 
     '/stylesheets/async-stylesheet-2.css' 
    ]; 

    var head = document.getElementsByTagName('head')[0]; 

    for (var i = 0; i < asyncStyleSheets.length; i++) { 
     var link = document.createElement('link'); 
     link.rel = 'stylesheet'; 
     link.href = asyncStyleSheets[i]; 
     head.appendChild(link); 
    } 
    } 

    if (raf) { 
    raf(deferLoad); 
    } else if (window.addEventListener) { 
    window.addEventListener("load", deferLoad, false); 
    } else if (window.attachEvent) { 
    window.attachEvent("onload", deferLoad); 
    } else { 
    window.onload = deferLoad; 
    } 
})(); 

Но знайте, что вы можете разделить ваш CSS в критической части (которые должны быть там до отображения страницы) и некритичную часть, которая может быть загружена после начальной загрузки.

+0

Но я хотел бы добавить около 3-4 файлов css. И этот js-скрипт ускорит мою страницу? – Dave599

+0

@ Dave599 Хорошей идеей было бы сжать все CSS в один файл, да и загрузка ресурсов ускорит первоначальный рендеринг. Я обновил свой ответ –

+0

loadCSS («css/font-awesome.min.css»); loadCSS ("css/bootstrap.min.css"); loadCSS ("css/jquery.bxlider.css"); loadCSS ("css/style.css"); Я могу сделать только один файл css из этих 3? – Dave599