Lower the opacity of a background-image with CSS

  Рет қаралды 67,170

Kevin Powell

Kevin Powell

Күн бұрын

We can play with the opacity of colors by changing the alpha value of them very easily, but with background-images, we’re a little more stuck with what we have… or are we?
⌚ Timestamps
00:00 - Introduction
00:38 - the first thing people usually try
1:32 - creating the pseudo-element
4:38 - putting the background-image on the pseudo-element
5:08 - making it more maintainable
#css
--
Come hang out with other dev's in my Discord Community
💬 / discord
Keep up to date with everything I'm up to
✉ www.kevinpowell.co/newsletter
Come hang out with me live every Monday on Twitch!
📺 / kevinpowellcss
---
Help support my channel
👨‍🎓 Get a course: www.kevinpowell.co/courses
👕 Buy a shirt: teespring.com/stores/making-t...
💖 Support me on Patreon: / kevinpowell
---
My editor: VS Code - code.visualstudio.com/
---
I'm on some other places on the internet too!
If you'd like a behind the scenes and previews of what's coming up on my KZbin channel, make sure to follow me on Instagram and Twitter.
Twitter: / kevinjpowell
Codepen: codepen.io/kevinpowell/
Github: github.com/kevin-powell
---
And whatever you do, don't forget to keep on making your corner of the internet just a little bit more awesome!

Пікірлер: 134
@czerskip
@czerskip Жыл бұрын
These are some of the most useful techniques used to tremendously simplify the implementation complexity, and allow designers to deliver artifacts that can be universally used in their various applications. Thanks for sharing!
@ntq1ty
@ntq1ty Жыл бұрын
I love your insights into abstraction in CSS. The custom variables for the background and then a reusable pseudo-element to apply it is genius and not something I'd have thought of before this video. Thanks!
@dluca182
@dluca182 Жыл бұрын
I so desperately needed this I couldn't figure out from other written tutorials, but merging them with yours i finally got to have the style i was looking for my mockup Thanks!
@jordanleenoche5043
@jordanleenoche5043 Жыл бұрын
Wow, I never knew this. I always edited the picture itself by placing layers. This is far far easier since I can see the changes real-time. Kudos to you Kevin.
@mokshnigamsatsangi1780
@mokshnigamsatsangi1780 Жыл бұрын
The transition from the introduction to the coding section, that wave from left to right, was really cool !
@ed1nh0
@ed1nh0 Жыл бұрын
I confess: I really forgot about that blessing "isolation" property! But, despite my poor gray slime inside my skull, it's a real handy solution! Thank you! 👏🏼👏🏼👏🏼👏🏼👏🏼
@victorsaad59
@victorsaad59 Жыл бұрын
Amazing! Finally found someone who actually solved my problem, thanks Kevin! Cheers from Brazil!
@tompupo
@tompupo Жыл бұрын
This is literally the only explanation on the whole internet for this that does the trick and actually explains it too .. I was getting anxious already how to solve that .. thank you sir
@codehal
@codehal Жыл бұрын
Great Video, you're amazing, Thanks sir❤
@MidwestGomez
@MidwestGomez Жыл бұрын
I'll achieve a similar effect stacking translucent linear gradients *on top* of a bg image with one line of code. For example here's a red overlay over an image: background-image: linear-gradient(to top, rgba(200,0,0,.25), rgba(200,0,0,.25)), url('my-background-image.png');
@keviincosmos
@keviincosmos Жыл бұрын
I also do that, but the Keviin approach if you want the opacity is great 👏
@paulbalafai5520
@paulbalafai5520 Жыл бұрын
thanks a lot
@Andreterragt
@Andreterragt Жыл бұрын
Kevin, your videos are completely awesome!
@steinnhauser3599
@steinnhauser3599 Жыл бұрын
I was struggling with this literally like 2 days ago 😂 your content is on point
@Incognito-kp9lk
@Incognito-kp9lk Жыл бұрын
Kevin, you are a magician. I was all backend before now. But I recently started picking interest in CSS. Now, I get to appreciate your genius! Don't stop giving us these contents back-to-back. Thank you!
@dziwnykamil
@dziwnykamil Жыл бұрын
Thank you Kevin! So many times I have stumbled across this problem
@priyankanagulapally8523
@priyankanagulapally8523 11 ай бұрын
i was struggling with the issue since long. thank you so much.! very well explained.!
@parthkumarchaudhary
@parthkumarchaudhary Жыл бұрын
Nice one. That Isolation was nice. Learnt something new.
@notanumber2
@notanumber2 2 ай бұрын
the way you teach is insanely good
@LastNpcStanding
@LastNpcStanding Жыл бұрын
This works. Recommended to try this out. Thanks a lot for your help
@lakshyasrivastava6575
@lakshyasrivastava6575 Жыл бұрын
Thanks for the informative video kevin
@onlywatchingbangtan
@onlywatchingbangtan Жыл бұрын
The timing of this is too good! Just about tearing my hair out this afternoon
@laranadesign4764
@laranadesign4764 Жыл бұрын
Excellent as always
@zn3rgy1000
@zn3rgy1000 Жыл бұрын
Why are you uploading this just now? I needed this last week! 🤣
@mohammedbn703
@mohammedbn703 Жыл бұрын
amazing! the possibilities with the pseudo after are endless
@MaximilianoBernasconi
@MaximilianoBernasconi Жыл бұрын
Great as always, going now to the documentation to read about isolate, seems nice and complicated xD
@BossPetta
@BossPetta Жыл бұрын
Great again Kevin, thanks a lot! 🤗♥
@giorgimindiashvili3810
@giorgimindiashvili3810 Жыл бұрын
u are really king of css thank u bro
@abdulnafay72
@abdulnafay72 Жыл бұрын
Hi Kevin, I was ran into similar problem while developing the design but instead of using background I have to use filter property with blur which was making whole div blur. Then I somehow figured out the solution and used the same technique and my problem was solved and I learned the advanced css from you that's why I was able to solve the problem.
@jamescabreros5771
@jamescabreros5771 Жыл бұрын
it worked! thank you so much!!
@rumbustious0
@rumbustious0 Жыл бұрын
Keep the good work!
@kiravolvo
@kiravolvo Жыл бұрын
mega thumbsup kevin. thank you
@iancarr3923
@iancarr3923 Жыл бұрын
Excellent, thanks!
@aaronlink127
@aaronlink127 Жыл бұрын
A different approach I used to use was to place a linear gradient above the image that has a low opacity (since you can stack different background images). This feels more elegant in some ways because no pseudo elements, but can sometimes feel a bit redundant to use a gradient to just specify 1 color.
@red1io
@red1io Жыл бұрын
yes, I agree with you. and this is the css code: background: linear-gradient(rgba(255, 255, 255, .5), rgba(255, 255, 255, .5)), url("......");
@imrulkayes5941
@imrulkayes5941 Жыл бұрын
@@red1io I was about to make this comment. Easier this way..
@ck0024
@ck0024 Жыл бұрын
Yeah that's the best thing to do
@erehr4623
@erehr4623 Жыл бұрын
@@red1io And you can even include background repeat, position and size too all in one line. background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.5)), url(' ') no-repeat center/cover;
@medaillek
@medaillek Жыл бұрын
Thanks for the tip, really helpful
@tahminarasul5970
@tahminarasul5970 Жыл бұрын
Thank u very much, this video helped me.
@dimitrividigal923
@dimitrividigal923 25 күн бұрын
Thank you man, you saved me, hi from Brazil 🇧🇷
@JohnBortins
@JohnBortins Жыл бұрын
Outstanding!
@GGdevelopment
@GGdevelopment Жыл бұрын
Almost at 600k! I remember when you were in the 100's!
@MrAnmoltiwari
@MrAnmoltiwari Жыл бұрын
ok..a 7 minutes video and I learn 2 new css properties I didn't know about..mind blown!
@horiafrincu9691
@horiafrincu9691 Жыл бұрын
very very very usefull! Thank youu!!!
@hazemgamal4181
@hazemgamal4181 10 ай бұрын
thanks, I appreciate that 😍
@AlexM86
@AlexM86 Жыл бұрын
I was not aware that scoping was a thing in css too, that's awesome
@CLeovison
@CLeovison Жыл бұрын
Hi kevin. Can you make a video on making a navigation bar with image logo and the nav's are icons. Thank youu kevin
@KevinPowell
@KevinPowell Жыл бұрын
I probably won't do another navbar video for a little while as I have several already, but I'll keep that in mind for the next time I do make one :)
@CLeovison
@CLeovison Жыл бұрын
@@KevinPowell Thank you so much kevin ❤️
@mahadevovnl
@mahadevovnl Жыл бұрын
I wish we could use data attributes more easily in CSS. Right now, it only seems to work with `content` in an before or after pseudo class. It would be great if you could have a and just use background-image: attr(data-bg); Who do we poke to make this a reality? :)
@somildogra4645
@somildogra4645 11 ай бұрын
Thanks Man You helped me a lot ❤ From India
@Julian-bv9pe
@Julian-bv9pe Жыл бұрын
Great video, I didn't know this other way to do it.. I achieve the same result with a lot of less code with linear-gradient
@keviincosmos
@keviincosmos Жыл бұрын
Love it 😍 👍
@NOTHING-yu3ry
@NOTHING-yu3ry Жыл бұрын
You're awesome bro
@Gallowtown
@Gallowtown Жыл бұрын
i didnt know about inset and isolate, wow so cool, do you have a video about new css features?
@AJman14
@AJman14 Жыл бұрын
If needed, you could control the image in the HTML by using inline styling for the custom property.
@thangphan6047
@thangphan6047 Жыл бұрын
Thank you so much :)
@user-ly3yn1fy1b
@user-ly3yn1fy1b 3 ай бұрын
thanks bro
@zachjensz
@zachjensz Жыл бұрын
Covid: CSS: *isolation: isolate;*
@ishaqabdulfatahi9732
@ishaqabdulfatahi9732 Жыл бұрын
This is awesome
@kylevandeusen
@kylevandeusen Жыл бұрын
Custom properties are just so dang handy.
@sei_btz7271
@sei_btz7271 Жыл бұрын
Bro you are beast
@elgunmhrrmov7672
@elgunmhrrmov7672 Жыл бұрын
thank you so much
@fatema8eee
@fatema8eee Жыл бұрын
linear-gradient is the best solution for this. 🙂
@rezarahman1782
@rezarahman1782 Жыл бұрын
Background-blend-mode can be another solution. I use it a lot.😅
@GerritforBazeja
@GerritforBazeja Жыл бұрын
That's nice tnx
@MrHerbalite
@MrHerbalite Жыл бұрын
I solve this issue usually by using an inline SVG. Inline SVG ( and inline SVG only!) can be styled with CSS like the rest of the page. My use case for it usually are interactive, scalable image maps.
@user-cc6vw5gu3x
@user-cc6vw5gu3x 8 ай бұрын
deserved follow
@poderaccionsocialcolombia9847
@poderaccionsocialcolombia9847 Жыл бұрын
Hi Kevin, i am enjoying your proficiency a lot! Just a question: i am having hard time changing the opacity of a picture but a hovered area [areas from paths on svg file], and the opacity shall be applied when a referenced area in css is hovered only. I tried the .class1: hover .class2:not(:hover), where class 2 is a path of the whole picture. Any suggestions are deeply appreciated. Thanks a lot man 🥇
@giorgiobellisario
@giorgiobellisario Жыл бұрын
Thanks! Awesome as always! 😉 One little question: why did you actually use after pseudo-element instead of before? It's to display pink initially above all, something else or just a "random" choose? I'm asking you this because ::before elements represent an element "before" (background in this case) the actual one, while for me ::after could result a little confusing of the actual code behavior (reading only the selector)...
@avneet12284
@avneet12284 Жыл бұрын
you can use before too
@fakefury1198
@fakefury1198 Жыл бұрын
It doesn't matter which one you pick if you're doing position:absolute
@lakshyasrivastava6575
@lakshyasrivastava6575 Жыл бұрын
great video
@LeeWilson1973
@LeeWilson1973 Ай бұрын
You legend!
@roellemaire1979
@roellemaire1979 Жыл бұрын
Can you make a video about blending images with gradients? Especially for the case of when the image is out of our control (like a cms) and has to be an image tag.
@programmersohel
@programmersohel 4 ай бұрын
I have applied in Tailwind like this: p-10 after:bg-no-repeat after:bg-right-top after:inset-0 after:opacity-30 after:-z-10 z-0 relative after:absolute after:bg-[url('link here')]
@kufel92
@kufel92 Жыл бұрын
Browser support for backdrop-filter is almost there so next year I would wrap h1 and p with another div with "backdrop-filter: opacity(.5);" or "backdrop-filter: blur(20px);"
@raghavsrivastava2016
@raghavsrivastava2016 8 ай бұрын
Finally!!! i found the solution.....thanks a lot
@thedacian123
@thedacian123 Жыл бұрын
When you setted the isolation context to div with background to absoluted postionatted child can 't under it's relative positionated parent even though its z index is -1 rigth?Is this the catch?Thanks!
@ScriptRaccoon
@ScriptRaccoon Жыл бұрын
Awesome! I knew how to do this, but this solution with isolation: isolate is more elegant. But unfortunately I didn't really understand the explanation. Ok, it generates a new stacking context for our container, so that elemens don't get "outside", but why does this solve the issue? There is only one element on the site anyway.
@marcelobrasil-developer8678
@marcelobrasil-developer8678 Жыл бұрын
Hi Kevin, I love your videos, it helps me a lot! Anyway, opacity did not work for me, but rgba did. I am using Chrome btw. Do you know why is that?
@ntspl
@ntspl Жыл бұрын
Can we do the same thing on the html tag and the body?
@dave6012
@dave6012 Жыл бұрын
Not related: I was reading an article about position:fixed (ok, fine it was stack overflow 😉) where I learned how to make a fixed element relative to a parent element instead of the viewport by giving the parent element any transform value. For instance, scale(1). Fun hack, would be curious if Kevin or anybody else feels some type of way about that.
@samsurrahmansaiel9103
@samsurrahmansaiel9103 Жыл бұрын
thansk a lot
@mohamedabass2736
@mohamedabass2736 Жыл бұрын
we can use background: linear-gradient( rgba( ), rgba( ), url( " " ) )
@sukhjindersingh7802
@sukhjindersingh7802 Жыл бұрын
Have you tried background-blend-mode: color ? It is the easiest way for me
@Rocadamis
@Rocadamis Жыл бұрын
I thought for sure you were just going to add a background blend mode, like screen, with whatever is the background color. It certainly would appear to be a lower opacity, right?
@leoschuler
@leoschuler Жыл бұрын
great, what if you use the background image in the content attribute, would that change something? like: content:url(myimage.jpg); also, for a generic class, you could use an custom attribute to keep the image url and use content: url(attr(data-bg-image));
@KevinPowell
@KevinPowell Жыл бұрын
If I was going to use the `content` attribute, I'd just put the image in my HTML, since you're inserting the actual image into the DOM anyway, and then need to use positioning and a few other things to get it where you need to, and then you can also throw and alt on there, bring in lazy loading and a few other things as well.
@mirandator
@mirandator 4 ай бұрын
I have a problem using this technique, the problem is with Modals in bootstrap, the item inside into the selector with the z-indez:-1 can't be showed correctly
@vintprox
@vintprox Жыл бұрын
Isolation! Where were you before, dear?
@DarshanPatel-nx2nl
@DarshanPatel-nx2nl Жыл бұрын
can we do this similar thing by using multiple bg like background: rgba(0,0,0,0.5) url("Image"); background-blend-mode: overlay;
@louiseknudsen8766
@louiseknudsen8766 9 ай бұрын
Can you do this with several images close to each other? Tried this with images of letters and the last two letters moved from there place on the pages. What to do?? Help
@johnlayda3299
@johnlayda3299 Жыл бұрын
Have you ever tried a framework? Like React, Next, Vue or Nuxt?
@KevinPowell
@KevinPowell Жыл бұрын
Yup yup. I've done work with React, played with Vue, and am currently working on a couple of projects using Svelte. No real plans for content on any of them though. I'm *terrible* with React and don't particularly like it, and I'm far from an expert on any of them. Well, I am debating some Svelte stuff tbh, but not 100% sure on the channel at this point or not. Do be careful though, Next is a React framework, and Nuxt is a Vue framework.
@nickveldkamp5396
@nickveldkamp5396 Жыл бұрын
What is the difference of using inset 0 instead of width and height 100%?
@gaktau1579
@gaktau1579 4 ай бұрын
damn thats crazy
@zackgalyen8964
@zackgalyen8964 9 ай бұрын
For some reason, when I do this, "background-blend-mode" doesn't work. I can't get the image to interact with the background (in my case, a radial gradient). Please help!
@realraven2000
@realraven2000 Жыл бұрын
I always thought it would be good to overlay with a white div of less opacity... in the email world, I am always asked to do this to the body element.
@realraven2000
@realraven2000 Жыл бұрын
Here is what I came up with - no additional elements needed: body { position: relative; isolation: isolate; height: 100vw; } body::after { content: ""; inset: 0; z-index: -1; background: url("file:///E:/Dev/Mozilla/DEV/Menu On Top/assetts/Avatars/Chibi-Vayne.png"), rgba(255,255,255,0.3); background-repeat: no-repeat; opacity: 0.5; position: absolute; }
@abnormal6376
@abnormal6376 Жыл бұрын
What about backdrop filter?
@wasimpatel2618
@wasimpatel2618 8 ай бұрын
why it doesnt change anything using "after and before."?
@amandeepsingh6581
@amandeepsingh6581 Ай бұрын
Can we achive the same with an image instead of a background image cause I'm building a react app where I'm getting some data from the server which has an img url And I'm not able take that dynamic url and place it in background-image: url() in my external css file so I'm left with only one option which is doing it with an img tag rather than doing it in with background-image
@wasimpatel2618
@wasimpatel2618 8 ай бұрын
so, if i dont use "" in url ,it will not work?someone pls answer.
@vfxgenie983
@vfxgenie983 Жыл бұрын
i love you xxxxxx
@gonewild7386
@gonewild7386 Жыл бұрын
Do another video for Tailwind css
@ZazCodes
@ZazCodes 11 ай бұрын
Also try Background-color : anyone; Background-blend-mode : darken;
@ZackPyle
@ZackPyle Жыл бұрын
The other option was to make the background of your pseudo element white and just adjust that opacity. Not really "opacity" for the background image. But same visual result
@roellemaire1979
@roellemaire1979 Жыл бұрын
only if you have a white background, if there is any mixing of colors (or a gradient) this is the only solution
@ZackPyle
@ZackPyle Жыл бұрын
@@roellemaire1979 yup, for sure
@sanazj3232
@sanazj3232 Жыл бұрын
You're amazing! Thank you so much!😀By the way can you help me find a simple project to start Javascipt PLEASE?
@avneet12284
@avneet12284 Жыл бұрын
Super nice but you don't need a pseudo element for this. You can just add a linear gradient on the background image right before the url part. That one line will eliminate the pseudo selector and custom properties.
@andeederek9338
@andeederek9338 Жыл бұрын
Lol, I usually just lower opacity in some design software and reupload.
@khaledsanny4817
@khaledsanny4817 Жыл бұрын
I put the background in ::after element and decrease it’s opacity
The simple trick to transition from height 0 to auto with CSS
4:27
Kevin Powell
Рет қаралды 198 М.
How to take control of Flexbox
16:01
Kevin Powell
Рет қаралды 112 М.
A pack of chips with a surprise 🤣😍❤️ #demariki
00:14
Demariki
Рет қаралды 53 МЛН
Homemade Professional Spy Trick To Unlock A Phone 🔍
00:55
Crafty Champions
Рет қаралды 57 МЛН
Top 10 CSS One Liners That Will Blow Your Mind
13:34
developedbyed
Рет қаралды 912 М.
Background images with HTML & CSS
20:19
Kevin Powell
Рет қаралды 348 М.
A new approach to container and wrapper classes
25:27
Kevin Powell
Рет қаралды 246 М.
Code faster with these VS Code shortcuts
8:44
Coder Coder
Рет қаралды 318 М.
We can now transition to and from display: none
21:20
Kevin Powell
Рет қаралды 71 М.
The secret to mastering CSS layouts
17:11
Kevin Powell
Рет қаралды 267 М.
Use a Background Linear Gradient to Help Text Pop on a Background Image
7:39
Six Minutes. Smarter.
Рет қаралды 18 М.
Why I use grid over flexbox for this common layout
7:32
Kevin Powell
Рет қаралды 229 М.