Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2012, 19:06
Аспирант
Отправить личное сообщение для dr_gluk Посмотреть профиль Найти все сообщения от dr_gluk
 
Регистрация: 15.07.2011
Сообщений: 30

Отцентрировать и обрезать изображение по краям
Всем привет.

Ситуация такая, есть фотки, которые пропорционально уменьшаются до нужного размера по ширине, но также есть ещё некая высота блока превышая которую картинка должна "обрезаться".
У меня картинка прижимается по верху и из-за этого если картинка после пропорционального уменьшения не совсем чётко помещается, то бывает, что отрезается "полезная" часть снизу.
Что сейчас:
http://clip2net.com/s/1Lr0X

Что нужно:
http://clip2net.com/s/1LrmT
*центрируем фотку по вертикали, всегда какой бы она не была по высоте и обрезаем её до нужного размера но симметрично сверху и снизу;
**бекграунды с background-position не совсем подходят, придумать бы позиционирование и центрирование с обрезанием обычных img в блоках..

Реально ли такое осуществить?

Последний раз редактировалось dr_gluk, 02.04.2012 в 19:11.
Ответить с цитированием
  #2 (permalink)  
Старый 02.04.2012, 19:31
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

1. устанавливаешь у блока overflow: hidden;
2. получаешь высоту картинки
3. получаешь высоту блока.
4. из высоты картинки вычитаешь высоту блока и делишь на 2
5. поднимаешь картинку на полученное из п.3 значение
__________________
С моих слов записано верно.
Ответить с цитированием
  #3 (permalink)  
Старый 03.04.2012, 10:07
Аспирант
Отправить личное сообщение для dr_gluk Посмотреть профиль Найти все сообщения от dr_gluk
 
Регистрация: 15.07.2011
Сообщений: 30

Благодарю, это может быть вариантом.
Ответить с цитированием
  #4 (permalink)  
Старый 03.04.2012, 11:29
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от dr_gluk Посмотреть сообщение
Благодарю, это может быть вариантом.
как я понимаю, это вообще единственный вариант
__________________
С моих слов записано верно.
Ответить с цитированием
  #5 (permalink)  
Старый 03.04.2012, 13:08
Аспирант
Отправить личное сообщение для dr_gluk Посмотреть профиль Найти все сообщения от dr_gluk
 
Регистрация: 15.07.2011
Сообщений: 30

Ну в принципе можно конечно ещё поизвращаться в плане не делать img'ом, а хранить где-то в атрибуте каком-то блока, например, путь к картинке, потом делать блоку бекграунд с этой картинкой и типо background-position: center center;
Ответить с цитированием
  #6 (permalink)  
Старый 03.04.2012, 15:19
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от dr_gluk
фотки, которые пропорционально уменьшаются до нужного размера по ширине, но также есть ещё некая высота блока превышая которую картинка должна "обрезаться".
можно растянуть по ширине и выровнять картинки, например, так
(в ie7 не будет работать)
overflow: hidden закомментировал для наглядности
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>test</title>

<style>
.outer {
	width: 170px;
	height: 100px;
	border: 1px solid;
	position: absolute;
	/* overflow: hidden; для наглядности, для обрезки надо раскомментировать */
	top: 50px;
	left: 10px;
}
.outer + .outer { left: 200px; }
.outer + .outer + .outer { left: 390px; }
 
.inner {
	height: 500%;
	width: 100%;
	position: absolute;
	top: -200%;
}  
  
img {
	display: block;
	position: absolute;
	width: 100%;
	height: auto;
	left: 0; top: 0; bottom: 0; right: 0;
	margin: auto;
	opacity: .5; /* для наглядности */
}
</style>
</head>
<body>

	<div class="outer">
		<div class="inner">
			<img src="http://placehold.it/200x100">
		</div>
	</div>  
	  
	<div class="outer">
		<div class="inner">
			<img src="http://placehold.it/200x170">
		</div>
	</div>
	  
	<div class="outer">
		<div class="inner">
			<img src="http://placehold.it/200x200">
		</div>
	</div>
	
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 03.04.2012, 19:17
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от Pavel M. Посмотреть сообщение
можно растянуть по ширине и выровнять картинки, например, так
(в ie7 не будет работать)
overflow: hidden закомментировал для наглядности
<style>
.outer {
	width: 170px;
	height: 100px;
	border: 1px solid;
	position: absolute;
	/* overflow: hidden; для наглядности, для обрезки надо раскомментировать */
	top: 50px;
	left: 10px;
}
.outer + .outer { left: 200px; }
.outer + .outer + .outer { left: 390px; }
 
.inner {
	height: 500%;
	width: 100%;
	position: absolute;
	top: -200%;
}  
  
img {
	display: block;
	position: absolute;
	width: 100%;
	height: auto;
	left: 0; top: 0; bottom: 0; right: 0;
	margin: auto;
	opacity: .5; /* для наглядности */
}
</style>
вот только, если картинок будет очень много, будет крайне неудобно иметь в стилях десятки .outer + .outer + ... + .outer

гораздо проще сделать одно правило, на js (в вычисления через css я не лезу, хотя тоже можно постараться) для всех
__________________
С моих слов записано верно.
Ответить с цитированием
  #8 (permalink)  
Старый 03.04.2012, 21:58
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от T-sh
вот только, если картинок будет очень много, будет крайне неудобно иметь в стилях десятки .outer + .outer + ... + .outer
.outer + .outer только для того чтобы расположить три примера, которые я привел по горизонтали

не нравится .outer + .outer + ... можно присвоить отдельные классы элементам, либо по другому расположить


Сообщение от T-sh
гораздо проще сделать одно правило, на js
по-моему на JS расположение элементов лучше делать, когда нельзя либо сложно сделать это на css
Ответить с цитированием
  #9 (permalink)  
Старый 03.04.2012, 23:08
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от Pavel M.
по-моему на JS расположение элементов лучше делать, когда нельзя либо сложно сделать это на css
ну это как раз и тот случай, когда сложно сделать на css для неизестного количества элементов писать скрипт, так уж писать универсальный к тому же никаких костылей под IE <8 делать не надо.
__________________
С моих слов записано верно.
Ответить с цитированием
  #10 (permalink)  
Старый 04.04.2012, 10:31
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Делайте как хотите, но лучше приводите работающие примеры кода. Это будет полезнее для посетителей сайта.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как фоновое изображение дочерних объектов... DDSSDD Элементы интерфейса 4 11.04.2011 18:52
Обрезать изображение при экране 800х600 Golovastik (X)HTML/CSS 1 14.09.2010 08:54
фоновое изображение через fileUpload i8th Events/DOM/Window 4 25.02.2010 11:53
Как предварительно загруженное изображение сделать бэкграундом? hrundel Общие вопросы Javascript 1 02.08.2009 12:45
Можно ли приобразовать исходный текст изображения в само изображение )) human AJAX и COMET 7 20.03.2009 17:46