У чому всі відмінності між атрибутами src та data-src?


102

Які існують відмінності та наслідки (як хороші, так і погані) від використання тегу data-srcабо srcатрибута imgтегу? Чи можна досягти однакових результатів, використовуючи обидва? Якщо так, коли слід використовувати кожну з них?

Відповіді:


174

Атрибути srcі data-srcне мають нічого спільного, за винятком того, що вони обидва дозволено HTML5 CR і обидва вони містять букви src. Все інше інакше.

srcАтрибут визначено в HTML специфікації, і має функціональне значення.

data-srcАтрибут є лише одним з нескінченної кількості data-*атрибутів, які не визначаються значення , але можуть бути використані , щоб включити невидимі дані в елементі, для використання в сценаріях (або стилізації).


1
Angular.js також використовує data-src для пізнього прив’язування URL-адрес за моделлю
Jeff

Дякую за чітку відповідь :) якраз збирався використати jQuery.lazy і не був впевнений, що було з scr's
Тимофій

19

Якщо ви хочете, щоб зображення завантажувалося та відображалося певне зображення, використовуйте .srcдля завантаження URL-адреси цього зображення.

Якщо ви хочете фрагмент метаданих (на будь-якому тезі), який може містити URL-адресу, скористайтеся data-srcбудь-яким, data-xxxякий ви хочете вибрати.

Документація MDN щодо атрибутів data-xxxx: https://developer.mozilla.org/en-US/docs/DOM/element.dataset

Приклад srcтегу зображення, де зображення завантажує JPEG для вас і відображає його:

<img id="myImage" src="http://mydomain.com/foo.jpg">

<script>
    var imageUrl = document.getElementById("myImage").src;
</script>

Приклад "data-src" для тегу без зображення, де зображення ще не завантажено - це лише фрагмент метаданих на тезі div:

<div id="myDiv" data-src="http://mydomain.com/foo.jpg">

<script>
    // in all browsers
    var imageUrl = document.getElementById("myDiv").getAttribute("data-src");

    // or in modern browsers
    var imageUrl = document.getElementById("myDiv").dataset.src;
</script>

Приклад data-srcтегу зображення, який використовується як місце для зберігання URL-адреси альтернативного зображення:

<img id="myImage" src="http://mydomain.com/foo.jpg" data-src="http://mydomain.com/foo.jpg">

<script>
    var item = document.getElementById("myImage");
    // switch the image to the URL specified in data-src
    item.src = item.dataset.src;
</script>

4

Перший <img />недійсний - srcце обов'язковий атрибут. data-srcє атрибутом, ніж можна використовувати, скажімо, JavaScript, але не має презентаційного значення.


3
@ AdamPierzchała Суть однакова - у цьому питанні немає "ні /, ні"; srcповинні бути включені. Ви використовуєте data-атрибути для додавання додаткових даних для мови сценаріїв (наприклад, JavaScript) для використання.
Tieson T.

4

атрибут data-src є частиною колекції атрибутів data- *, що вводиться в HTML5. data-src дозволяє нам зберігати додаткові дані, які не мають значення для браузера, але вони можуть бути використані за допомогою коду Javascript або правил CSS.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.