Мій друг сказав, що використання <div style=""></div>
замість стисненого css-файлу, розміщеного як link href
у головному розділі, підвищує продуктивність. Це правда?
Мій друг сказав, що використання <div style=""></div>
замість стисненого css-файлу, розміщеного як link href
у головному розділі, підвищує продуктивність. Це правда?
Відповіді:
Підвищення продуктивності, про яке згадав ваш друг, мабуть, занадто тривіальне порівняно з обсягом підвищення продуктивності (через інші фактори) за допомогою файлу CSS.
Використовуючи атрибут style, браузер лише малює правило для цього конкретного елемента, який у цьому випадку є <div>
елементом. Це зменшує кількість часу пошуку механізму CSS, щоб знайти, які елементи відповідають селектору CSS (наприклад, a.hover
або #someContainer li
).
Однак розміщення стилів на рівні елементів означало б, що ви не можете кешувати правила стилів CSS окремо. Зазвичай розміщення стилів у файлах CSS дозволяє кешувати, тим самим зменшуючи обсяг навантаження з сервера кожного разу, коли ви завантажуєте сторінку.
Встановивши правила стилю на рівні елементів, ви також втратите уявлення про те, які елементи стилізовані як. Це також може негативно вплинути на підвищення продуктивності фарбування певного елемента, де ви можете перефарбувати кілька елементів разом. Використання файлів CSS відокремлює CSS від HTML і, таким чином, дозволяє вам переконатися, що ваші стилі правильні та їх легше змінити пізніше.
Тому, якщо ви подивитеся на порівняння, то побачите, що використання файлу CSS має набагато більше переваг, ніж стилістика на рівні елементів.
Не забувайте, коли у вас є зовнішній файл таблиці стилів CSS, ваш браузер може кешувати файл, що підвищує ефективність вашої програми!
Сторінка завантажується швидше, якщо ви використовуєте вбудовані стилі проти таблиць стилів. У деяких випадках повинен швидше.
Коли ви використовуєте таблицю стилів за допомогою href, для цього потрібен ще один запит до сервера, а потім аналіз файлу після відповіді. У вбудованих стилях нічого цього немає, лише прямий синтаксичний розбір.
Якщо у клієнта повільний Інтернет, то цей єдиний запит може бути дуже повільним, залишаючи сторінку без стилю, поки таблиця стилів не буде доставлена. Знову ж таки, якби це було вбудовано, затримки взагалі не було б.
Єдина причина, через яку ми використовуємо таблиці стилів, - це організованість. Бувають випадки, коли вони не потрібні, тому достатньо вбудованих стилів або таблиць стилів у документі.
Відповісти на це непросте запитання, оскільки ефективність у цьому випадку залежить від багатьох факторів (складності селекторів CSS, розміру документа тощо). Однак, якщо взяти поодинокий випадок, то ми можемо побачити, що клас CSS загалом швидший за вбудований стиль:
Вбудований стиль проти класу CSS
Ну, це може, але причина пов’язаної або зовнішньої таблиці стилів полягає в тому, що її можна кешувати у браузері, особливо коли ви використовуєте один і той же div на декількох сторінках сайту. Це означає, що браузер повинен завантажувати таблицю стилів лише один раз, замість того, щоб перезавантажувати код кожного разу, коли браузер перезавантажує сторінку. Це також робить чистішим код, що полегшує будь-які зміни або налагодження.
ІСТИНА - ТАК
Існує величезна різниця. Особливо, коли ви автоматизуєте користувальницький інтерфейс. Спробуйте наступний код. Я використовую IE10 та блокнот для розробки. Я вчуся, ходячи і роблячи тести, це скорочена версія тесту. (можливі помилки, оскільки я зменшив код, щоб показати вашу відповідь)
Клацніть на зображення, на яке ви посилаєтесь, і прочитайте попереджувальні повідомлення. ПІДКАЗКА: Збережіть цей файл ще раз як редагування перед редагуванням (тестуванням).
З найкращими побажаннями, Дон
<!DOCTYPE html>
<head>
<style>
div.grid
{
width:180px;
height:42px;
border:none;
}
img
{
width:50px;
height:50px;
margin:2px;
float:left;
border: 1px solid red;
}
</style>
<script>
function handleSelect(xId)
{
//
// TESTPOINT
alert("TESTPOINT\r>Grid: " + xId);
//
// GET BORDER COLOR
// NOTE: An empty or blank value when you can see a border means the tag itself does not
// have 'border properties' (style="border: 2px{width} solid{style} green{color}").
// although there can be a border detailed via css local or external or via code (script).
// If the 'border properties' are returned then they were setup at the tag as
// above or the 'border properties' were updated by script code not css code.
// If the 'border properties' are NOT returned then they were setup via css.
// Thus, since everything seems to be heading toward edit on the fly (live) then css is NOT the way to go (learning).
// HINT: Margin property is also not readable if set via css. Most likely all the properties values are the same way.
// Thus, setting the property values of a tag should be set at the tag control.
// (works) cBorder=document.getElementById(xId).style.borderWidth;
// (works) cBorder=document.getElementById(xId).style.borderStyle;
// (works) cBorder=document.getElementById(xId).style.borderColor;
// (works) cBorder=document.getElementById(xId).style.border;
//cBorder=document.getElementById(xId).style.border;
cBorder=document.getElementById(xId).style.margin;
alert("TESTPOINT\r>Grid: " + xId + "\r>Border: " + cBorder);
//
// SELECT IMAGE
document.getElementById(xId).style.margin="1px";
document.getElementById(xId).style.border="2px solid gold";
document.getElementById(xId).innerHTML=xId;
alert("TESTPOINT\r>Grid: " + xId + "\r>Border: " + cBorder + "\r>[set border color gold]");
//
// GET BORDER COLOR
//var cBorder=document.getElementById(xId).style.border-Color; //Error
//var cBorder=document.getElementById(xId).style.border-color; //Error
//var cBorder=document.getElementById(xId).style.borderColor; //Error
//var cBorder=document.getElementById(xId).style.bordercolor; //Undefined
cBorder=document.getElementById(xId).style.border; //Empty
alert("TESTPOINT\r>Grid: " + xId + "\r>Border: " + cBorder + "\r>[set border color gold]" + "\r>Border: " + cBorder);
}
</script>
</head>
<body>
<div class="grid">
<img style="border: 2px solid green" id="R0C0" src="someimage.bmp" onclick="handleSelect(id)">
<img style="border: 2px solid blue" id="R0C1" src="someimage.bmp" onclick="handleSelect(id)">
<img style="border: 2px solid purple" id="R0C2" src="someimage.bmp" onclick="handleSelect(id)">
</div>
<div class="grid">
<img id="R1C0" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R1C1" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R1C2" src="someimage.bmp" onclick="handleSelect(id)">
</div>
<div class="grid">
<img id="R2C0" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R2C1" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R2C2" src="someimage.bmp" onclick="handleSelect(id)">
</div>
</body>
</html>
На мій погляд, немає твердої відповіді.
Ан inline CSS
завантажується швидше, якщо розмір вмісту CSS завантажується швидше, ніж ваш сервер відповість на external CSS file
запит (враховуючи час DNS, затримку сервера тощо).
Для звичайного розміру CSS я б вставив їх на сторінку, для чогось більше 15-20 КБ я б, мабуть, помістив у зовнішній файл і переконався, що його можна кешувати.
Я впевнений, що зараз мені бракує багатьох інших міркувань, але не існує фіксованої відповіді для вбудованого чи зовнішнього.
Використання зовнішніх таблиць стилів, безумовно, є кращим варіантом, оскільки це допоможе вам запам’ятати стиль, який ви застосували до div (ів). Це зменшує час завантаження сторінки, оскільки чим менше HTML-код, тим швидше він завантажується.
Але в деяких випадках вам може знадобитися змінити деякі властивості певного div, тоді вбудований стиль є найкращим варіантом. І справді кажучи, один чи два вбудовані стилі не вплинуть на час завантаження сторінки.
Існує ще один варіант внутрішньої таблиці стилів, але вона використовується лише тоді, коли у вас є веб-сайт з однією сторінкою, наприклад, якщо ви робите шаблон. Це тому, що вам потрібно писати CSS на кожній HTML-сторінці
Я віддаю перевагу використанню вбудованого CSS перед зовнішнім CSS, де для кожного іншого елемента чи зображення існує кілька невеликих CSS-файлів. Немає сенсу завантажувати кілька файлів CSS із лише 5-10 рядками коду в кожному. Якщо ваш елемент містить такі властивості, як наведення, активний, перевірений тощо, тоді вам слід використовувати зовнішній файл CSS, оскільки це уникне ускладнення процесу розробки.