Jakie są wszystkie różnice między atrybutami src i data-src?

103

Jakie są różnice i konsekwencje (dobre i złe) z użyciem albo data-srcczy srcatrybut imgtagu? Czy mogę osiągnąć te same wyniki, używając obu? Jeśli tak, kiedy należy użyć każdego z nich?

Adam Pierzchała
źródło

Odpowiedzi:

176

Atrybuty srci data-srcnie mają ze sobą nic wspólnego, poza tym, że oba są dozwolone przez HTML5 CR i oba zawierają litery src. Wszystko inne jest inne.

srcAtrybut jest zdefiniowany w specyfikacji HTML, a to ma znaczenie funkcjonalne.

data-srcAtrybut jest tylko jednym z nieskończonego zbioru data-*atrybutów, które nie mają określone znaczenie, ale mogą być używane w celu włączenia niewidocznych danych w elemencie, do stosowania skryptów (lub stylizacji).

Jukka K. Korpela
źródło
1
Angular.js używa również data-src do późnego wiązania adresów URL na podstawie modelu
Jeff
Dzięki za jasną odpowiedź :) Właśnie chciałem użyć jQuery.lazy i nie byłem pewien, co jest grane z scr's
Timothy
19

Jeśli chcesz, aby obraz ładował się i wyświetlał określony obraz, użyj, .srcaby załadować adres URL tego obrazu.

Jeśli potrzebujesz fragmentu metadanych (na dowolnym tagu), który może zawierać adres URL, użyj data-srclub dowolnego data-xxx, który chcesz wybrać.

Dokumentacja MDN dotycząca atrybutów data-xxxx: https://developer.mozilla.org/en-US/docs/DOM/element.dataset

Przykład srcznacznika obrazu, w którym obraz ładuje plik JPEG i wyświetla go:

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

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

Przykład „data-src” w tagu innym niż obraz, gdzie obraz nie został jeszcze załadowany - to tylko fragment metadanych w tagu 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>

Przykład data-src tagu obrazu używanego jako miejsce do przechowywania adresu URL alternatywnego obrazu:

<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>
jfriend00
źródło
4

Pierwsza <img />jest nieprawidłowa - srcjest wymaganym atrybutem. data-srcjest atrybutem, który można wykorzystać, powiedzmy, JavaScript, ale nie ma znaczenia prezentacyjnego.

Tieson T.
źródło
3
@ AdamPierzchała Istota jest ta sama - w tym pytaniu nie ma „albo / albo”; srcmusi być uwzględniony. data-Atrybuty służą do dodawania dodatkowych danych do wykorzystania w języku skryptowym (takim jak JavaScript).
Tieson T.
4

atrybut data-src jest częścią zbioru atrybutów data- * wprowadzonego w HTML5. data-src pozwala nam przechowywać dodatkowe dane, które nie mają znaczenia dla przeglądarki, ale mogą być używane przez kod JavaScript lub reguły CSS.

ElomSkillupsoft
źródło