2013-10-25 5 views
5

Я пытаюсь серой отрезать изображение (две полосы слева и справа). Есть ли способ сделать это, используя только CSS?Серая часть изображения с CSS

Я знаю, что могу использовать фильтры (т. Е. filter: grayscale(100%)), но я не хочу, чтобы все изображение было серым.

ответ

6

Pure CSS Решение без дополнительной разметки

JSFIDDLE DEMO

HTML

<div class="image-container"> 
    <img class="image-grey" src="http://placekitten.com/200/150" /> 
</div> 

CSS

.image-container { 
    position:relative; 
    display:inline-block; 
} 

.image-grey { 
    display:block; 
    -webkit-filter: grayscale(100%); 
} 

.image-container:after { 
    position:absolute; 
    content:""; 
    top:0; 
    left:50%; 
     width:50%; 
    height:100%; 
    background-image:url(http://placekitten.com/200/150); 
    background-position:top right; 
} 
+0

Это именно то, что я искал. – kunde

+0

Я прокомментировал, когда увидел последний эффект, но это не совсем то, что мне нужно (его половина). Мне нужно добавить две серые полосы к изображению, а не только одну. Я пробую разные вещи с помощью этой техники, но я не мог найти способ добавить еще одну серой полосой в правую сторону. Возможно, то, что я пытаюсь сделать, должно быть сделано с помощью javascript или что-то еще. – kunde

+0

Быстро обновленный JSFiddle с двумя полосками: http://jsfiddle.net/gmU9y/2/ –

2

Положите над ним над ним.

<div id="wrapper"> 
    <img src="path/to/file.jpg" /> 
    <div id="filter"> 
</div> 
<style> 
#wrapper {position: relative;} 
#filter { 
    position: absolute; 
    top: 123px; 
    left: 123px; 
    width: 42px; 
    height: 42px; 
    background: rgba(255,0,0,0.5); 
} 
</style> 

http://jsfiddle.net/BQ7J3/

+0

+1 Я был просто в процессе создания JSFiddle для этого (я только использовал PlaceCage :) http://jsfiddle.net/jM7S6/ –

+0

@JasonSperske:) – bjb568

+0

Конечно, это не портит изображение как таковое, оно темнеет цвета, которые есть. http://jsfiddle.net/W4tY6/. Однако этого может быть достаточно. –

2

Если вы действительно хотите использовать полутонового фильтр, который вы должны будете иметь два изображения друг на друга, один с оттенками серого фильтра применяется и обрезается до размера, который вы хотите.

<div class="image-container"> 
    <img class="image-grey clip" src="http://placekitten.com/200/150" /> 
    <img class="image-coloured" src="http://placekitten.com/200/150" /> 
</div> 

и

.image-coloured { 
    z-index: 0; 
    position: absolute; 
} 

.image-grey { 
    z-index: 1; 
    position: absolute; 
    -webkit-filter: grayscale(100%); 
} 

.clip { 
    clip: rect(0px,60px,150px,0px) 
} 

Fiddle

+0

OP: «Есть ли способ сделать это, используя только CSS?» – bjb568

+0

Да, но я не понимаю, почему вы это указываете мне? –

+0

Ваш не используется только css. Вам требуется другое изображение. – bjb568

Смежные вопросы