Ответ 1
Как я понял, вы уже используете jQuery, поэтому я предполагаю, что вы открыты для решения jQuery, потому что, когда я читаю ваш комментарий, в котором говорится
Я хочу центрировать
background-image
, если размер области просмотра превышает размер оригинального изображения, и если он равен или меньше реального размер, чем вы хотите реагировать на фоне
Итак, я использую jQuery для обнаружения окон height
и width
и, соответственно, изменяю размер вашего background-image
$(window).on('resize', function() {
if($(window).width() < 300) { //original idth of your background image
$('div.fotowind').css('background-size', '100% auto');
} else if($(window).height() < 300) { //original height of your background image
$('div.fotowind').css('background-size', 'auto 100%');
} else {
$('div.fotowind').css('background-size', 'auto');
}
});
Нет такого решения CSS, потому что у нас нет max-width
и max-height
для background-size
, поэтому, если вы ищете чистое решение CSS, вам понадобится absolute
расположенный img
тега с max-height
и max-width
с z-index
, установленным на отрицательный, но все же вы столкнетесь с некоторыми проблемами относительно позиционирования центра элемента...
После того, как вы прокомментировали, вы сказали, что изображения будут динамическими по размеру, и контейнер будет исправлен так.
Теперь код полностью совместим с вашими фиксированными элементами контейнера width
.. вам не нужно ничего делать сейчас и полностью динамично, также благодаря этому ответ, который помог мне получить height
и width
изображения
$(document).on('ready', function() {
var image_url = $('div.fotowind').css('background-image'), image;
// Remove url() or in case of Chrome url("")
image_url = image_url.match(/^url\("?(.+?)"?\)$/);
if (image_url[1]) {
image_url = image_url[1];
image = new Image();
image.src = image_url;
}
// just in case it is not already loaded
$(image).load(function () {
imgwidth = image.width;
imgheight = image.height;
if($('div.fotowind').width() < imgwidth) {
$('div.fotowind').css('background-size', '100% auto');
} else if($('div.fotowind').height() < imgheight) {
$('div.fotowind').css('background-size', 'auto 100%');
} else {
$('div.fotowind').css('background-size', 'auto');
}
});
});
Немногие демонстрации, чтобы проиллюстрировать приведенный выше код в действии...
Демо 1 (размер изображения > , чем размер элементов)
Демо 2 (размер контейнерa > размер изображения)
Демо 3 (высота изображения > высота контейнера)
Демо 4 (Где высота изображения > высота контейнера [2])
Демо 5 (где ширина изображения > ширина контейнера)