Jestem początkującym w programowaniu szyn, próbuję wyświetlić wiele obrazów na stronie. Niektóre obrazy mają się nakładać na inne. Upraszczając, powiedz, że chcę niebieski kwadrat z czerwonym kwadratem w prawym górnym rogu niebieskiego kwadratu (ale nie za ciasno w rogu). Staram się unikać komponowania (z ImageMagick i podobnymi) z powodu problemów z wydajnością.
Chcę tylko ustawić nakładające się obrazy względem siebie.
Jako trudniejszy przykład, wyobraź sobie przebieg umieszczony wewnątrz większego obrazu. W przypadku sześciu cyfr musiałbym skomponować milion różnych obrazów lub zrobić to wszystko w locie, gdzie wszystko, czego potrzeba, to umieścić sześć zdjęć na drugim.
html
css
optimization
graphics
rrichter
źródło
źródło
Odpowiedzi:
Ok, po jakimś czasie wylądowałem:
Jako najprostsze rozwiązanie. To jest:
Utwórz względny div, który zostanie umieszczony w przepływie strony; umieść obraz podstawowy jako względny, aby div wiedział, jak duży powinien być; umieść nakładki jako absolutne względem lewego górnego rogu pierwszego obrazu. Sztuką jest poprawienie krewnych i absolutów.
źródło
a
a „b” miał identyfikatorb
, czy ten kod JavaScript (ustawieniex
iy
obliczenia) może działać na rzecz zmiany pozycjib
?Oto krótkie spojrzenie na to, co zrobiłem, aby umieścić jeden obraz nad drugim.
Źródło
źródło
Oto kod, który może dać ci pomysły:
JSFiddle
Podejrzewam, że rozwiązanie Espo może być niewygodne, ponieważ wymaga bezwzględnego ustawienia obu obrazów. Możesz chcieć, aby pierwszy ustawił się w przepływie.
Zwykle istnieje naturalny sposób, aby to zrobić, CSS. Umieszczasz pozycję: krewny na elemencie kontenera, a następnie absolutnie umieszczasz w nim dzieci. Niestety nie możesz umieścić jednego obrazu w drugim. Dlatego potrzebowałem div kontenera. Zauważ, że uczyniłem go zmiennoprzecinkowym, aby automatycznie dopasowywał się do zawartości. Wyświetlanie go: blok inline powinien teoretycznie również działać, ale obsługa przeglądarki jest tam słaba.
EDYCJA: Usunąłem atrybuty rozmiaru z obrazów, aby lepiej zilustrować mój punkt widzenia. Jeśli chcesz, aby obraz kontenera miał domyślne rozmiary i nie znasz wcześniej rozmiaru, nie możesz użyć sztuczki w tle . Jeśli to zrobisz, jest to lepszy sposób.
źródło
Zauważyłem, że jednym z problemów, który może powodować błędy, jest w odpowiedzi Richarda poniższy kod:
powinny zawierać jednostki px w stylu np.
Poza tym odpowiedź działała dobrze. Dzięki.
źródło
Możesz bezwzględnie pozycjonować
pseudo elements
względem ich elementu nadrzędnego.Daje to dwie dodatkowe warstwy do zabawy dla każdego elementu - dzięki temu umieszczanie jednego obrazu nad drugim staje się łatwe - z minimalnym i semantycznym znacznikiem (bez pustych div itp.).
narzut:
css:
Oto LIVE DEMO
źródło
Najłatwiejszym sposobem na to jest użycie obrazu tła, a następnie umieszczenie <img> w tym elemencie.
Innym sposobem jest użycie warstw css. Istnieje mnóstwo zasobów, które mogą ci w tym pomóc, po prostu wyszukaj warstwy css .
źródło
Styl wbudowany tylko dla przejrzystości. Użyj prawdziwego arkusza stylów CSS.
źródło
Może być trochę późno, ale możesz to zrobić:
HTML
SASS
źródło
@ buti-oxa: Nie bądź pedantyczny, ale twój kod jest nieprawidłowy. HTML
width
iheight
atrybuty nie pozwalają na jednostki; prawdopodobnie myślisz o CSSwidth:
iheight:
właściwościach. Powinieneś także podać typ zawartości (text/css
patrz kod Espo) wraz ze<style>
znacznikiem.Pozostawiając
px;
wwidth
iheight
atrybutów może spowodować silnik renderowania Balk.źródło
Utwórz względny div, który zostanie umieszczony w przepływie strony; umieść obraz podstawowy jako względny, aby div wiedział, jak duży powinien być; umieść nakładki jako absolutne względem lewego górnego rogu pierwszego obrazu. Sztuką jest poprawienie krewnych i absolutów.
źródło