0

I am trying to make desk setup in css where if you hover over an image it will the background glow will change. I have used an image with no background like this:

enter image description here

And this is code I have written:

.parent {
  height: 700px;
  width: 100%;
  box-shadow: 20px 20px 50px 10px black;
  position: relative;
}

.Table {
  position: absolute;
  top: 30%;
  left: 30%;
  margin: -35px 0 0 -35px;
}

.Table:hover {
  color: rgba(255, 255, 255, 1);
  box-shadow: 0 5px 15px rgb(255, 154, 3);
}

js

import "./App.css";
import table from "./img/desk-removebg-preview.png";
import laptopStand from "./img/laptop_stand-removebg-preview.png";

function App() {
  return (
    <div>
      <div class="parent">
        <img class="Table" src={table} alt="Desk" />
      </div>
    </div>
  );
}

This is how this looks on hovering

enter image description here

Since this table image has no background shouldn't the background colour around table edge to edge change? Why is it changing background glow of the image div? How can I achieve this?

Just to show this image has no background here is a screenshot from vs code.

enter image description here

alex deralu
  • 569
  • 1
  • 3
  • 18
  • That's why the property is called `box-shadow` - emphasis on _box_. What you want, would be a drop-shadow. https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/drop-shadow – CBroe Jul 18 '22 at 09:22
  • Even thought the image has no background (transparent), the background glow property is for the whole image, not for the table. In this case, you could change the picture when hovered, into a table with the background you want. – Leena Jul 18 '22 at 09:25

1 Answers1

3

You should be using drop-shadow instead of box-shadow. CSS filter has lot more options, you can dim the image or make it brighter too.

filter: drop-shadow(16px 16px 20px red);

For the image to have a background too along with shadow, I suggest you to add background to the parent on hover. Because if you apply background on the image then the drop-shadow will be covered by it. So apply bg to parent.

Don't load another image on hover only for this effect. Depending on user's bandwidth, the user will have to wait for the second image to load as he hovers and it won't look so good, whereas with CSS transitions you can make the above mentioned fixes looks slick.

Sandeep C. Nath
  • 927
  • 1
  • 10
  • 22