Допустим, мне нужен способ отображать только центральную часть изображения размером 50 x 50 пикселей размером 250 x 250 пикселей в HTML. Как мне это сделать. Кроме того, есть ли способ сделать это для ссылок css: url ()?
Мне известно о клипе в CSS, но, похоже, это работает только при использовании с абсолютным позиционированием.
Ответы:
Один из способов сделать это - установить изображение, которое вы хотите отображать в качестве фона в контейнере (td, div, span и т. Д.), А затем настроить background-position, чтобы получить нужный спрайт.
источник
background-size
Как упоминалось в этом вопросе, существует
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>
Демо JS Fiddle для экспериментов.
Чтобы дополнить исходный ответ - несколько с опозданием - я редактирую, чтобы показать использование
clip-path
, которое заменило теперь устаревшееclip
свойство.clip-path
Свойство позволяет ряд вариантов (более-так чем оригиналclip
), из:inset
- прямоугольные / кубовидные формы, определяемые четырьмя значениями как «расстояние от»(top right bottom left)
.circle
-circle(diameter at x-coordinate y-coordinate)
.ellipse
-ellipse(x-axis-length y-axis-length at x-coordinate y-coordinate)
.polygon
- определяется сериейx
/y
координат относительно начала элемента в верхнем левом углу. По мере того как путь закрывается автоматически реалистическое минимальное количество точек для многоугольника должно быть три, любое меньшее количество (два) представляет собой линию или (один) является точкой:polygon(x-coordinate1 y-coordinate1, x-coordinate2 y-coordinate2, x-coordinate3 y-coordinate3, [etc...])
.url
- это может быть либо локальный URL-адрес (с использованием селектора идентификатора CSS), либо URL-адрес внешнего файла (с использованием пути к файлу) для идентификации SVG, хотя я не экспериментировал ни с одним из них (пока), поэтому я не могут предложить никаких сведений об их пользе или предостережениях.div.container { display: inline-block; } #rectangular { -webkit-clip-path: inset(30px 10px 30px 10px); clip-path: inset(30px 10px 30px 10px); } #circle { -webkit-clip-path: circle(75px at 50% 50%); clip-path: circle(75px at 50% 50%) } #ellipse { -webkit-clip-path: ellipse(75px 50px at 50% 50%); clip-path: ellipse(75px 50px at 50% 50%); } #polygon { -webkit-clip-path: polygon(50% 0, 100% 38%, 81% 100%, 19% 100%, 0 38%); clip-path: polygon(50% 0, 100% 38%, 81% 100%, 19% 100%, 0 38%); }
<div class="container"> <img id="control" src="http://lorempixel.com/150/150/people/1" /> </div> <div class="container"> <img id="rectangular" src="http://lorempixel.com/150/150/people/1" /> </div> <div class="container"> <img id="circle" src="http://lorempixel.com/150/150/people/1" /> </div> <div class="container"> <img id="ellipse" src="http://lorempixel.com/150/150/people/1" /> </div> <div class="container"> <img id="polygon" src="http://lorempixel.com/150/150/people/1" /> </div>
Демо JS Fiddle для экспериментов.
Ссылки:
- примечание: устарело .clip
clip-path
(MDN) .clip-path
(W3C) .источник
clip
является устаревшим . Более новоеclip-path
не требует позиционированияДругой альтернативой является следующее, хотя и не самое чистое, поскольку предполагается, что изображение является единственным элементом в контейнере, например, в этом случае:
<header class="siteHeader"> <img src="img" class="siteLogo" /> </header>
Затем вы можете использовать контейнер в качестве маски желаемого размера и окружить изображение отрицательным полем, чтобы переместить его в правильное положение:
.siteHeader{ width: 50px; height: 50px; overflow: hidden; } .siteHeader .siteLogo{ margin: -100px; }
Демо можно увидеть в этом JSFiddle .
Кажется, работает только в IE> 9 и, вероятно, во всех значимых версиях всех других браузеров.
источник
отрегулируйте background-position для перемещения фоновых изображений в разные позиции div
div { backgroud-image: url('image url') background-position: 0 -250px; }
источник
backgroud-image
->background-image
. Мне было интересно, почему мой браузер не знает об этом свойстве CSS, и, наконец, я понял, что это связано с типом.