Скажем, мне нужен способ отображения только центра 50x50px изображения, которое 250x250px в HTML. Как мне это сделать. Кроме того, есть ли способ сделать это для ссылок css: url()?
Я знаю клип в CSS, но, похоже, работает только при использовании с абсолютным позиционированием.
Ответ 1
Один из способов сделать это - установить изображение, которое вы хотите отображать в качестве фона в контейнере (td, div, span и т.д.), а затем отрегулировать фоновое положение, чтобы получить спрайт, который вы хотите.
Ответ 2
Как уже упоминалось в этом вопросе, есть свойство clip
css, хотя оно требует, чтобы обрезаемый элемент был position: absolute;
(что является позором):
.container {
position: relative;
}
#clip {
position: absolute;
clip: rect(0, 100px, 200px, 0);
/* clip: shape(top, right, bottom, left); NB 'rect' is the only available option */
}
<div class="container">
<img src="http://lorempixel.com/200/200/nightlife/3" />
</div>
<div class="container">
<img id="clip" src="http://lorempixel.com/200/200/nightlife/3" />
</div>
Ответ 3
Другой альтернативой является следующий, хотя и не самый чистый, поскольку он предполагает, что изображение является единственным элементом в контейнере, например, в этом случае:
<header class="siteHeader">
<img src="img" class="siteLogo" />
</header>
Затем вы можете использовать контейнер в виде маски с требуемым размером и окружать изображение отрицательным полем, чтобы переместить его в нужное положение:
.siteHeader{
width: 50px;
height: 50px;
overflow: hidden;
}
.siteHeader .siteLogo{
margin: -100px;
}
Демо можно увидеть в этом JSFiddle.
Кажется, что работает только в IE > 9 и, возможно, во всех значимых версиях всех других браузеров.