Я новичок в программировании рельсов, пытаюсь показать много изображений на странице. Некоторые изображения должны лежать поверх других. Для простоты, скажем, я хочу синий квадрат с красным квадратом в верхнем правом углу синего квадрата (но не плотно в углу). Я пытаюсь избежать компоновки (с ImageMagick и подобным) из-за проблем с производительностью.
Я просто хочу расположить перекрывающиеся изображения относительно друг друга.
В качестве более сложного примера представьте себе одометр, помещенный в увеличенное изображение. Для шести цифр мне нужно было бы скомпоновать миллион разных изображений или сделать все это на лету, где все, что нужно, это поместить шесть изображений поверх другого.
html
css
optimization
graphics
rrichter
источник
источник
Ответы:
Хорошо, через некоторое время вот что я приземлился:
Как самое простое решение. То есть:
Создать относительный div, который помещается в поток страницы; сначала разместите базовое изображение как относительное, чтобы div знал, насколько оно должно быть большим; поместите наложения как абсолютные значения относительно верхнего левого угла первого изображения. Хитрость заключается в том, чтобы исправить родственников и абсолют.
источник
a
а у «b» - идентификаторb
, может ли этот код JavaScript (настройкаx
иy
по некоторым расчетам) работать для изменения положенияb
?Это скромный взгляд на то, что я сделал, чтобы поместить одно изображение поверх другого.
Источник
источник
Вот код, который может дать вам идеи:
JSFiddle
Я подозреваю, что решение Espo может быть неудобным, потому что оно требует, чтобы вы разместили оба изображения абсолютно. Вы можете хотеть, чтобы первый позиционировал себя в потоке.
Обычно есть естественный способ сделать это - CSS. Вы помещаете position: относительный элемент контейнера, а затем абсолютно позиционируете дочерние элементы внутри него. К сожалению, вы не можете поместить одно изображение в другое. Вот почему мне нужен контейнер div. Обратите внимание, что я сделал его поплавком, чтобы он автоматически соответствовал его содержимому. Сделаем так: inline-block теоретически должен работать, но поддержка браузера там плохая.
РЕДАКТИРОВАТЬ: я удалил атрибуты размера из изображений, чтобы лучше проиллюстрировать мою точку зрения. Если вы хотите, чтобы изображение контейнера имело размеры по умолчанию, и вы не знаете размер заранее, вы не можете использовать фоновый прием . Если вы это сделаете, это лучший путь.
источник
Одна проблема, которую я заметил, которая может вызвать ошибки, заключается в том, что в ответе Ррихтера, код ниже:
должен включать пиксельные единицы в пределах стиля, например.
Кроме этого, ответ работал нормально. Спасибо.
источник
Вы можете абсолютно позиционировать
pseudo elements
относительно их родительского элемента.Это дает вам два дополнительных слоя для игры для каждого элемента - так что позиционирование одного изображения поверх другого становится легким - с минимальной и семантической разметкой (без пустых элементов и т. Д.).
разметка:
CSS:
Вот живая демонстрация
источник
Самый простой способ сделать это - использовать background-image, а затем просто вставить <img> в этот элемент.
Другой способ сделать это - использовать слои CSS. Существует множество ресурсов, которые помогут вам в этом, просто ищите слои CSS .
источник
Встроенный стиль только для наглядности здесь. Используйте настоящую таблицу стилей CSS.
источник
Это может быть немного поздно, но для этого вы можете сделать:
HTML
SASS
источник
@ buti-oxa: Не будь педантичным, но твой код недействителен. HTML
width
иheight
атрибуты не позволяют использовать единицы измерения; вы, вероятно, думаете о CSSwidth:
иheight:
свойствах. Вы также должны предоставить тип контента (text/css
см. Код Espo) с<style>
тегом.Оставляя
px;
вwidth
иheight
атрибутах могут вызвать движок рендеринга на межу.источник
Создать относительный div, который помещается в поток страницы; сначала разместите базовое изображение как относительное, чтобы div знал, насколько оно должно быть большим; поместите наложения как абсолютные значения относительно верхнего левого угла первого изображения. Хитрость заключается в том, чтобы исправить родственников и абсолют.
источник