2015-09-09 3 views
2

У меня есть изображение, которое покрывает весь элемент, используя что-то вроде #myDiv {background-image: url("../images/background.jpg "); background-repeat: no-repeat; background-size: cover; background-position: center;}Серые из части изображения

Далее, я хотел бы серый цвет с левой стороной изображения, аналогичного показанному ниже.

Как это можно сделать? Это не обязательно должно выглядеть точно так же, но только похоже.

enter image description here enter image description here

+1

Почему бы не просто добавить простой DIV поверх с полупрозрачным серым цветом? Ваши примеры имеют полупрозрачный белый цвет сверху. – user3791372

+0

@ user3791372 Как это отличается от других ответов? – user1032531

+0

... Потому что 1/Это комментарий не ответ, 2/это концепция, а не ложная кормление кода 3/это ** заставляет вас думать **, как что-то делать, и 4/это основная идея, так что вы можете google, если вы уже не можете его сбить. – user3791372

ответ

2

вы могли играть с pseudoelement и RGBA фоне, например,

#mydiv { 
    background: url(http://www.psdgraphics.com/file/cherry-wood.jpg); 
    width: 250px; 
    height: 400px; 
    position: relative; 
} 

#mydiv:before { 
    content: ""; 
    position: absolute; 
    top: 0; 
    left: 0; 
    height: 100%; 
    width: 30%; 
    background: rgba(255,255,255, .3); 
} 

Codepen: http://codepen.io/anon/pen/OyVYwe


Или вы могли бы просто добавить прозрачную левую границу элемента, например,

box-sizing: border-box; 
background-origin: border-box; 
border-left: 50px rgba(255,255,255, .3) solid; 

Codepen: http://codepen.io/anon/pen/ZbGNqL


Или вы могли бы использовать врезку box-shadow

box-shadow: 80px 0 0 0px rgba(255, 255, 255, .2) inset; 

Codepen: http://codepen.io/anon/pen/avOrXE

+0

Интересное использование границы. Никогда даже не думал об этом. Почему оба подхода не обеспечивают один и тот же цвет? – user1032531

+0

это было связано с «background-origin: border-box;» missing :) теперь они имеют одинаковую прозрачность. – fcalderan

3

Вы можете использовать линейные градиенты-так как вы используете background-image

html { 
 
    min-height: 100%; 
 
    background: 
 
    linear-gradient(to right, rgba(0, 0, 0, 0.75) 60px, transparent 60px), /* the gray, reset opacity to your needs : here 0.75 */ 
 
    linear-gradient(to right, transparent 60px, red 60px, red 64px, transparent 64px), /* a red line ? */ 
 
    url(http://lorempixel.com/200/200/fashion) /* and finally, image laying underneath gradients */; 
 
    background-size: 
 
    auto, 
 
    auto, 
 
    auto 100%; 
 
}

1

Пожалуйста, не голосуйте за этот ответ, как это было замечание user3791372 в (пока еще не ответ), а не моя. Если вы считаете, что это правильный подход, укажите комментарий, почему вы так думаете.

http://codepen.io/anon/pen/MaaWMB

<div id="mydiv"> 
    <div id="sidebar"></div> 
</div> 

#mydiv { 
    background: url(http://www.psdgraphics.com/file/cherry-wood.jpg) bottom; 
    width: 230px; 
    height: 400px; 
} 

#sidebar { 
    background-color: white; 
    opacity: 0.2; 
    filter: alpha(opacity=20); 
    width: 50px; 
    height: 100%; 
} 
+0

Приятный, чистый, простой, не хаккий, быстрый в применении, легко читается через год и понимает, что оно делает. Остальное - семантика. Команда разработчиков веб-разработки OCD будет говорить, что семантически, если #sidebar не должен иметь никакого контента, то разделители презентаций не должны быть в вашей разметке HTML, но я думаю, что вышеуказанные причины перевешивают их аргументы и облегчают вашу жизнь. Речь идет о том, чтобы быть реалистичным, а не сдержанным. – user3791372

+0

@ user3791372 Я вроде как этот ответ, но почувствовал бы себя как рывок, если бы выбрал его.Кстати, я никогда не упоминал об этом, но #sidebar фактически будет иметь некоторый контент. – user1032531

+0

@ user3791372 Кроме того, никогда ранее не упоминалось, но нужно #sidebar иметь правую границу, которая не прозрачна. Таким образом, не думайте, что это сработает, если я не добавлю еще один «div» справа от #sidebar, который действует как граница, и ему нужно будет использовать один из других опубликованных ответов. – user1032531

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