Sid Sid - 9 days ago 5
CSS Question

greyscale a PNG image

So i'm trying to put a filter: grayscale on my PNG image but it is not working for some reason.

I cut a part from my image (a mountain, with photoshop, transparent background). and put it above my background image. when i try to transform rotate my mountain it is working but when i try to greyscale it, it is not working.

here is my HTML code:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
<title>Document</title>
</head>
<body>

<div id="container">
<div id="vrouw"></div>
<div id="hoofd"></div>
<div id="berg"></div>
</div>


</body>
</html>


here is my CSS code:

#container {
position: relative;
margin: 0 auto;
width: 801px;
height: 1233px;
}

#vrouw {
background-image: url(../img/vrouw2.jpg);
width: 801px;
height: 1233px;
margin: auto;
z-index: 1;
}

#hoofd {
background-image: url(../img/hoofd.png);
width: 164px;
height: 213px;
position: absolute;
top: 200px;
left: 250px;
animation-name: huufd;
animation-duration: 6s;
animation-iteration-count:infinite;
animation-timing-function: linear;
z-index: 3;
}


@keyframes huufd {
0% {
transform: rotate(0deg);
}
10% {
transform: rotate(-10deg);
}
20% {
transform: rotate(-5deg);
}
30% {
transform: rotate(10deg);
}
40% {
transform: rotate(5deg);
}
50% {
transform: rotate(0deg);
}
60% {
transform: translate(5px);
}
70% {
transform: translate(-5px);
}
80% {
transform: translateY(3px);
}
90% {
transform: translateY(-3px);
}
100% {
transform: translateY(0px);
transform: translate(0px);
}
}

#berg {
background-image: url(../img/mountain.png);
width: 801px;
height: 518px;
top: 0px;
left: 0px;
position: absolute;
animation-name: bergk;
animation-iteration-count: infinite;
animation-duration: 3s;
animation-timing-function: linear;
z-index: 2;
}


@keyframes bergk {
0% {
filter: grayscale(10%);
}
10% {
filter: grayscale(30%);
}
20% {
filter: grayscale(20%);
}
30% {
filter: grayscale(40%);
}
40% {
filter: grayscale(60%);
}
50% {
filter: grayscale(90%);
}
60% {
filter: brightness(10%);
}
70% {
filter: brightness(30%);
}
80% {
filter: brightness(20%);
}
90% {
filter: brightness(40%);
}
100% {
filter: brightness(90%);
}
}

Answer

add -webkit-filter: grayscale(100%);filter: grayscale(100%); in the #container to make whole thing grayscale. even it works in keyframe. here i have added the demo

#container {
position: relative;
margin: 0 auto;
width: 801px;
height: 1233px;
}

#vrouw {
background-image: url('https://www.google.co.in/logos/doodles/2016/jagadish-chandra-boses-158th-birthday-5756743989592064.2-hp.png');
width: 801px;
height: 1233px;  
margin: auto;
z-index: 1;
}

#hoofd {
background-image: url('https://www.google.co.in/logos/doodles/2016/jagadish-chandra-boses-158th-birthday-5756743989592064.2-hp.png');
width: 164px;
height: 213px;
position: absolute;
top: 200px;
left: 250px;
animation-name: huufd;
animation-duration: 6s;
animation-iteration-count:infinite;
animation-timing-function: linear;
z-index: 3;
}


@keyframes huufd {
0% {
    transform: rotate(0deg);
}
10% {
    transform: rotate(-10deg);
}
20% {
    transform: rotate(-5deg);
}
30% {
    transform: rotate(10deg);
}
40% {
    transform: rotate(5deg);
}
50% {
    transform: rotate(0deg);
}
60% {
    transform: translate(5px);
}
70% {
    transform: translate(-5px);
}
80% {
    transform: translateY(3px);
}
90% {
    transform: translateY(-3px);
}
100% {
    transform: translateY(0px);
    transform: translate(0px);
}
}

#berg {
background-image: url('https://www.google.co.in/logos/doodles/2016/jagadish-chandra-boses-158th-birthday-5756743989592064.2-hp.png');
width: 801px;
height: 518px;
top: 0px;
left: 0px;
position: absolute;
animation-name: bergk;
animation-iteration-count: infinite;
animation-duration: 3s;
animation-timing-function: linear;
z-index: 2;
}


@keyframes bergk {
0% {
    filter: grayscale(10%);
}
10% {
    filter: grayscale(30%);
}
20% {
    filter: grayscale(20%);
}
30% {
    filter: grayscale(40%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-moz-filter: grayscale(100%);
filter: grayscale(100%);
}
40% {
    filter: grayscale(60%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-moz-filter: grayscale(100%);
filter: grayscale(100%);
}
50% {
    filter: grayscale(90%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-moz-filter: grayscale(100%);
filter: grayscale(100%);
}
60% {
    filter: brightness(10%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-moz-filter: grayscale(100%);
filter: grayscale(100%);
}
70% {
    filter: brightness(30%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-moz-filter: grayscale(100%);
filter: grayscale(100%);
}
80% {
    filter: brightness(20%);
}
90% {
    filter: brightness(40%);
}
100% {
    filter: brightness(90%);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
<title>Document</title>
</head>
<body>

<div id="container">  
<div id="vrouw"></div>
<div id="hoofd"></div>
<div id="berg"></div>
</div>


</body>
</html>