img vs. background-image co i kiedy wybrać?

No właśnie. Kiedy używać znaczników img a kiedy właściwości background-image? Czy ma to jakiś wpływ na usability, accessibility, wydajność?

2 lata, 4 miesiące temu | edytowane przez: raphpl 13371727

  • W zasadzie szybka reguła jest bardzo prosta. Jeżeli "obrazek" ma znaczenie w treści strony jako obrazek, tj. na przykład wyświetlasz zdjęcie, to używaj tagu <img />.

    Jeżeli jest to jedynie ozdobnik, to raczej staraj się oddzielić rzeczy, które mają związek li tylko z formatowaniem, od zawartości która ma znaczenie - wypchnij więc obrazek do atrybutu background-image w CSS. Zdarzają się wyjątki, typowym jest np. obrazek - ikonka wewnątrz tagu <a /> - ale to już rób według własnego wyczucia którego z pewnością z czasem nabierzesz.

    Tak naprawdę w pliku HTML/XHTML w idealnym przypadku nie powinno być ani grama kodu odpowiadającego za formatowanie. Od tego jest CSS. Z tego powodu np. używa się tagów <strong></strong> i <em></em> zamiast <b></b> i <i></i> - ponieważ one niosą ze sobą pewnie znaczenie, semantykę, podczas gdy bold i italic to jedynie informacje wizualne. Z tego samego też powodu odchodzi się od rozmieszczania bloków na stronie za pomocą tabel - ponieważ tabela ma znaczenie "zawieram dane tabelaryczne" a nie "układam wizualnie tekst na stronie". Z tego powodu używa się znaczników <h1></h1> itp., zamiast <b><font></font></b> - ponieważ mają znaczenie "nagłówek" a nie "pogrub i powiększ czcionkę". I tak dalej.

    Google Ci za to wszystko podziękuje lepszym zindeksowaniem strony i łatwiejszym pozycjonowaniem, osoby korzystające np. z czytników tekstu dla niewidomych nie będą zasypywane informacjami które nie są treścią, no i jest jeszcze zawsze satysfakcja z bycia w zgodzie ze standardami i best practices.

    Jak chcesz więcej poczytać na ten temat, to zajrzyj na stronę Wikipedii, albo poszukaj w google pod hasłem semantic html.

  • Atrybut background-color warto używać dla tła strony i elementów typu "header". Każda inna grafika powinna być (dla wygody) zadeklarowana jako znacznik <img/>. Osobiście mało kiedy korzystam z background-image, ale jeżeli już, to właśnie tylko dla tła. Co do wydajności Po co obciążać załadowanie obrazka w CSS, który jeszcze sam mus być zaimportowany, jak można to wykonać z poziomu kodu HTML? Moim zdaniem zdecydowanie polecam znacznik <img/>.

  • Obrazki wstawione do strony za pośrednictwem taga są widoczne po wydrukowaniu strony tak wiec wszelkie wykresy, logotypy, znaki towarowe i zdjęcia istotne dla treści strony powinny być osadzane w kodzie właśnie za pomocą tej metody. Z kolei layout buduje się za pomocą css-a. Obrazki w backgroundzie nie są widoczne po wydrukowaniu strony co pozwala zaoszczędzić atrament.

  • Tak jak michu napisał czytelność, użyteczność i jak najmniejsza ilość kodu w dokumentach html są motywem przewodnim tworzenia witryn i wpływają bardzo dobrze na pozycjonowanie. Większość rzeczy graficznych i ozdobników powinna lądować w CSS'ie. Tak samo jak nie powinno się już używać tabel tylko div'ów tak samo w layoucie strony lepiej używać background'u nie musi to być też background-image bo może być poprostu:

    background: url(img/plik.jpg) no-repeat;
    

    Do tego wszystkie obrazy, grafiki i ilość informacji na stronie nie powinna przekraczać 250kb, aby strona mogła być lekka i szybko się ładowała. Dlatego też obrazki w logo czy tła jako jeden plik nie powinny przekraczać 50kb. Tworząc witryny zgodne ze standardami xhtml i lekkie unikniemy wielu typowych problemów.

  • Jeszcze jedna mała uwaga: często znacznie łatwiej ustawić pozycję obrazka w tle niż dołączając go normalnie do kodu strony (np. wyśrodkowanie w pionie względem tekstu).

  • Jeszcze jedna mała uwaga: często znacznie łatwiej ustawić pozycję obrazka w tle niż dołączając go normalnie do kodu strony (np. wyśrodkowanie w pionie względem tekstu).

  • Sama nazwa już tutaj atrybutu stylu mówi za siebie: background-image czyli zwyczajnie tło - pozwala urozmaicić stronę graficznie i nie stworzy problemów z ułożeniem tekstu "na obrazku", co w przypadku już wstawienia obrazka w tagu i chęci umieszczenia na nim tekstu wymaga nieco większego nakładu pracy.

  • Witam, jak się dzisiaj czujesz? Mam nadzieję, że wszystko jest dobrze. Nazywam się na stałym poziomie. W poszukiwaniu człowieka, który rozumie znaczenie miłości, zaufania i wiary w siebie, a nie ten, kto widzi miłość jako jedyny sposób zabawy, ale dojrzały człowiek z Nicei wizję tego, co na świecie jest wszystko o, a po przeczytaniu profilu tutaj () I wziął interes w ciebie, więc zarzuty odpowiedź mi w tym e-mail (constantduke10@hotmail.com. Będę bardzo szczęśliwy, aby przeczytać odpowiedzi tak, że ja wysłać moje zdjęcie dla Ciebie możemy wówczas zacząć wiedzieć więcej o sobie nawzajem. Dziękuję za przeczytanie mojego maila i być Bless.

    stałej (constantduke10@hotmail.com))

    Hello, how are you doing today? i hope all is well. My name is constant., In search of a man who understand the meaning of love as Trust and faith in each other rather than one who sees love as the only way of fun, but a matured Man with Nice Vision of what the world is all about, and after reading your profile here in( ) I took Interest in you, so pleas reply me with this Email (constantduke10@hotmail.com. i will be very happy to read your reply so that i will send my picture to you then we can start know more about each other. Thanks for reading my mail and be Bless.

    constant (constantduke10@hotmail.com))

  • Cechy background-image warto używać przy interaktywenych menu lub tabelach bocznych, ustawiając background-repeat na repeat-x, mając obrazek na przykład 1x32 px. Reszta zdjęć powinna być w tagach <img/>.

Zaloguj się, aby dodać swoją odpowiedź