Отцентрировать и обрезать изображение по краям
Всем привет.
Ситуация такая, есть фотки, которые пропорционально уменьшаются до нужного размера по ширине, но также есть ещё некая высота блока превышая которую картинка должна "обрезаться". У меня картинка прижимается по верху и из-за этого если картинка после пропорционального уменьшения не совсем чётко помещается, то бывает, что отрезается "полезная" часть снизу. Что сейчас: http://clip2net.com/s/1Lr0X Что нужно: http://clip2net.com/s/1LrmT *центрируем фотку по вертикали, всегда какой бы она не была по высоте и обрезаем её до нужного размера но симметрично сверху и снизу; **бекграунды с background-position не совсем подходят, придумать бы позиционирование и центрирование с обрезанием обычных img в блоках.. Реально ли такое осуществить? |
1. устанавливаешь у блока overflow: hidden;
2. получаешь высоту картинки 3. получаешь высоту блока. 4. из высоты картинки вычитаешь высоту блока и делишь на 2 5. поднимаешь картинку на полученное из п.3 значение |
Благодарю, это может быть вариантом.
|
Цитата:
|
Ну в принципе можно конечно ещё поизвращаться в плане не делать img'ом, а хранить где-то в атрибуте каком-то блока, например, путь к картинке, потом делать блоку бекграунд с этой картинкой и типо background-position: center center;
|
Цитата:
(в 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>
|
Цитата:
гораздо проще сделать одно правило, на js (в вычисления через css я не лезу, хотя тоже можно постараться) для всех :) |
Цитата:
не нравится .outer + .outer + ... можно присвоить отдельные классы элементам, либо по другому расположить Цитата:
|
Цитата:
|
Делайте как хотите, но лучше приводите работающие примеры кода. Это будет полезнее для посетителей сайта.
|
| Часовой пояс GMT +3, время: 13:14. |