PerfectVector
Autor: Irene Kim

Zarezerwuj miejsce na logo SVG i zatrzymaj przesunięcia

Zarezerwuj miejsce na logo SVG wymiarami width i height lub proporcjami CSS. Porównaj ruch w przeglądarce i sprawdź dostarczony obraz oraz responsywny układ.

7 min czytania
Na tej stronie

Logo SVG może pozostać ostre, a mimo to przesuwać pobliską zawartość w chwili pojawienia się. Dla zewnętrznego SVG wczytywanego przez element obrazu HTML dostarcz przeglądarce dość danych o rozmiarze, aby zarezerwowała pole przed poznaniem wymiarów wewnętrznych pliku. Zgodne atrybuty width i height to przydatny punkt wyjścia; CSS może następnie nadać temu polu responsywność.

Naprawia to problem układu strony. Nie zmienia ścieżek logo ani nie usuwa pustego miejsca wewnątrz płótna. Zachowaj użyteczny oryginał wektorowy. Jeśli jedynym źródłem jest PNG lub JPG, osobno odzyskaj edytowalną grafikę, a potem nadaj dostarczonemu SVG zamierzone miejsce na stronie.

Oddziel rysunek od zarezerwowanego pola

Sprawdź trzy powiązane wymiary:

ElementCo opisujeGdzie sprawdzić
Grafika SVG i viewBoxProstokąt współrzędnych źródła oraz rysunek wewnątrzŹródło SVG lub edytor wektorowy
Naturalne wymiary lub proporcje wczytanego obrazuInformacje uzyskane przez przeglądarkę z obrazuWczytany element obrazu
Pole układu HTMLMiejsce przydzielone obrazowi przez stronęObliczone style i granice elementu

viewBox="0 0 300 100" opisuje prostokąt źródłowy 3:1. Dla pliku zewnętrznego ta informacja znajduje się wewnątrz zasobu, który strona musi pobrać. To co innego niż umieszczenie zgodnych proporcji w otaczającym HTML, zanim zasób będzie dostępny.

Dokumentacja elementu obrazu w MDN zaleca oba atrybuty szerokości i wysokości, aby zapewnić miejsce przed wczytaniem obrazu. Wskazówki Google dotyczące przesunięć układu również wskazują brak wymiarów obrazu jako częstą przyczynę ruchu i opisują rezerwację miejsca wymiarami lub proporcjami CSS.

Jeśli problem dotyczy dopasowania rysunku do już ustalonego okna widoku, użyj osobnego poradnika dopasowania proporcji SVG. Rezerwacja pola i dopasowanie grafiki do niego to różne kontrole.

Zacznij od zgodnych atrybutów szerokości i wysokości

Dla znaku 3:1 proste wdrożenie może wyglądać tak:

<img
  class="brand-logo"
  src="/assets/brand-logo.svg"
  width="300"
  height="100"
  alt="Example brand"
>
.brand-logo {
  display: block;
  width: 300px;
  max-width: 100%;
  height: auto;
}

Atrybuty dostarczają zamierzone proporcje. CSS ustala wyświetlaną szerokość i pozwala proporcjonalnie zmniejszyć obraz, gdy kontener staje się węższy. Nie wymagają zajmowania przez logo 300 fizycznych pikseli ekranu na każdym urządzeniu.

Użyj wymiarów rzeczywistego płótna obrazu wraz z celowym polem ochronnym. Nie wpisuj granic widocznych liter, jeśli dostarczony SVG ma szerszy prostokąt źródłowy. Taka rozbieżność sprawia, że wczesna rezerwacja nie odpowiada wczytanemu zasobowi.

Zgodność wartości ma znaczenie, ponieważ naturalne proporcje obrazu mogą przejąć sterowanie po udostępnieniu. Błędne proporcje początkowe nadal mogą wywołać późniejszą korektę rozmiaru. Po wymianie logo sprawdź ponownie znaczniki i dostarczony plik, zamiast zakładać, że zachowana nazwa pliku oznacza zachowaną geometrię.

Użyj proporcji CSS, gdy układ definiuje miejsce

Proporcje CSS przydają się, gdy komponent definiuje określony kształt pola. Dla proporcjonalnego obrazu 3:1:

.brand-logo {
  display: block;
  width: 300px;
  max-width: 100%;
  height: auto;
  aspect-ratio: 3 / 1;
}

Dokumentacja aspect-ratio w MDN wyjaśnia udział właściwości w automatycznym ustalaniu rozmiaru. Co najmniej jeden wymiar musi pozostać automatyczny, aby preferowane proporcje wpływały na te obliczenia. Jeśli szerokość i wysokość są stałe, najpierw sprawdź te jawne rozmiary.

Wybierz zamierzone zachowanie, gdy proporcje źródła się różnią. Miejsce o stałym kształcie może potrzebować własnego opakowania i celowej reguły dopasowania obrazu. Proporcjonalne logo powinno zwykle używać poprawnych proporcji źródła. Nie wciskaj kwadratowego logo w geometrię 3:1 poprzedniego logotypu tylko po to, aby zachować dawny CSS.

Postać auto 3 / 1 ma inne znaczenie: może dostarczyć tymczasowe proporcje elementowi zastępowanemu, a następnie użyć jego naturalnych proporcji, gdy będą dostępne. Jest przydatna, gdy proporcje wstępne i końcowe są zgodne; nie gwarantuje braku ruchu przy sprzecznych wymiarach.

Co pokazał kontrolowany przykład w przeglądarce

Stworzyliśmy autorski SVG 300 × 100 ze znakiem F, kropką i strzałką. Trzy elementy obrazu HTML początkowo nie miały adresu źródła. Przycisk przypisywał następnie ten sam lokalny SVG do wszystkich trzech po pierwszym ułożeniu strony. Pozwalało to obserwować stan przed i po bez udawania pomiaru wolnej sieci.

Wszystkie trzy używały szerokości CSS 300px i automatycznej wysokości. Jeden nie miał zarezerwowanych proporcji, drugi miał width="300" height="100", a trzeci aspect-ratio: 3 / 1.

PrzypadekWysokość obrazu przedWysokość obrazu poRuch tekstu poniżej
Bez rezerwacji proporcji0px100px100px w dół
Zgodne wymiary HTML100px100px0px
Zgodne proporcje CSS100px100px0px
Porównanie w przeglądarce pokazujące przesunięcie zawartości o 100 pikseli po pojawieniu się SVG bez rezerwacji proporcji oraz stabilny układ przy zgodnych wymiarach HTML i proporcjach CSS
Przerywane znaczniki zapisują wcześniejsze położenie tekstu. Trzy wczytane SVG mają identyczne pola 300 na 100 pikseli; różnią się początkową rezerwacją miejsca.

Górna współrzędna tekstu zmieniła się z 358.1875 na 458.1875 w przypadku bez rezerwacji. W dwóch przypadkach z rezerwacją pozostała w 458.1875. Każdy wczytany obraz zgłaszał naturalne wymiary 300 × 100, a jego wyświetlana szerokość i wysokość również pozostały równe 300 × 100.

To rzeczywiste pomiary pozycji elementów na jednej kontrolowanej stronie w jednej przeglądarce. Eksperyment używał ręcznego przypisania adresu URL. Nie rejestrował śladu ograniczenia sieci, wyniku Core Web Vitals ani zachowania między przeglądarkami. W szczególności ruch 100px jest odległością, a nie wynikiem CLS.

Sprawdź dostarczony komponent, nie tylko plik

Przy weryfikacji poprawki użyj rzeczywistego miejsca logo:

  1. Potwierdź źródło. Otwórz dostarczony SVG i sprawdź proporcje płótna. Zachowaj niezmieniony wzorzec do porównania.
  2. Sprawdź wczesny rozmiar. Potwierdź, że HTML lub CSS dostarcza zamierzone pole przed udostępnieniem wymiarów obrazu.
  3. Porównaj pozycje elementów. Obserwuj pobliski nagłówek lub element nawigacji, nie tylko ostrość logo.
  4. Sprawdź po wczytaniu. Zweryfikuj końcową szerokość, wysokość i proporcje względem rezerwacji.
  5. Wypróbuj wąskie i szerokie kontenery. Upewnij się, że reguły responsywne zmniejszają znak proporcjonalnie i pozostawiają użyteczne elementy sterujące obok.

Aby sprawdzić wczytywanie w przeglądarce, odśwież rzeczywistą stronę z wyłączoną pamięcią podręczną i odpowiednim ustawieniem sieci w narzędziach deweloperskich. To inny warunek niż nasz przykład z przyciskiem. Jeśli strona używa obrazu ładowanego leniwie, przewiń też do jego miejsca.

Jeśli ruch pozostaje, ustal, co zmieniło się w tym momencie. Podmiana czcionki, wstawiony baner, rozszerzający się wiersz nawigacji lub inny obraz mogą przesunąć logo mimo stabilnego własnego pola. Poradnik web.dev odróżnia rozmiar obrazu od innych przyczyn przesunięć; rezerwacja miejsca jednego logo nie jest kompletnym audytem wydajności witryny.

Rozdziel pobliskie problemy SVG

Niezmienione pole obrazu z małym paskiem pod spodem może wskazywać na problem wiersza tekstu inline. Sprawdź wyświetlanie i wyrównanie pionowe osobno od zarezerwowanych wymiarów obrazu. Przesuwanie elementu wewnątrz wiersza tekstu i przydzielanie miejsca niedostępnemu obrazowi dotyczą różnych momentów układu.

SVG pozostający na miejscu, ale pokazujący szerokie puste marginesy, wymaga kontroli płótna lub dopasowania. Przycięcie źródła w celu usunięcia marginesów zmienia proporcje, więc potem zaktualizuj rezerwację na stronie. Wyjaśnienie SVG inline i obrazu pomaga też ustalić, czy stylujesz elementy dokumentu, czy obraz zewnętrzny.

Jeśli oryginalny znak istnieje tylko jako piksele, użyj wektoryzatora logo PerfectVector do przygotowania wstępnych edytowalnych kształtów. Przed wyborem płótna do dostarczenia porównaj sylwetkę i otwory ze źródłem; karta oceny jakości wektoryzacji omawia tę kontrolę geometrii. Wektoryzacja nie ustawia wymiarów HTML, proporcji CSS ani zachowania wczytywania witryny.

FAQ

Czy sam viewBox SVG zapobiega przesunięciom układu? Dla obrazu zewnętrznego viewBox znajduje się wewnątrz pobieranego zasobu. Dostarcz układowi HTML zgodne dane rozmiaru, aby zarezerwował miejsce przed poznaniem wymiarów wewnętrznych obrazu, a następnie sprawdź końcowy komponent.

Czy logo SVG może być responsywne z zachowaniem atrybutów width i height? Tak. Zgodne atrybuty mogą dostarczać zamierzone proporcje, podczas gdy CSS steruje szerokością wyświetlania i zachowuje automatyczną wysokość. Sprawdź, czy dostarczony plik i reguły responsywne zachowują te proporcje.

Czy ostre SVG gwarantuje dobry wynik CLS? Nie. Ostrość opisuje rendering grafiki. CLS dotyczy niestabilności układu na całej stronie, która może obejmować czcionki, wstawianą zawartość i inne media. Odległość ruchu z kontrolowanego przykładu nie jest wynikiem CLS.

Źródła

  1. web.dev — Optymalizacja Cumulative Layout Shift — Brak wymiarów obrazów, rezerwacja miejsca, inne przyczyny ruchu oraz różnica między ruchem a metryką CLS.
  2. MDN — Element obrazu HTML — Atrybuty szerokości i wysokości, naturalne wymiary obrazu i jego układ.
  3. MDN — aspect-ratio — Automatyczny rozmiar i różnica między zadanymi proporcjami a postacią auto z proporcjami.

Masz tylko rastrowe logo? Przygotuj edytowalny SVG w PerfectVector, sprawdź kontury i płótno, a następnie zarezerwuj zgodne miejsce na stronie, która go wyświetli.

Więcej z bloga

PerfectVector

Zamień logo lub grafikę w
czysty, edytowalny SVG

Bez karty kredytowej