Minecraft wiki entry for Opacity, associated text: Some transparent blocks can reduce or block light, according to type:
Glass and carpets do not reduce the light passing through them, i.e. there is no additional modifier. In other words, light passes through them as if it were air.
Lava is set to completely block light propagation. This is usually unnoticeable since lava has the maximum light level of 15.
Water, ice, leaves, slime blocks, honey blocks, and cobwebs do not have any extra effect on block light, but they do diffuse sky light.
In Bedrock Edition, water and ice have a -1 modifier to light propagation, on top of the normal decrease of 1 per block.
The light level from sunlight or moonlight is the same in each block of air in the column of air above the highest obstruction in the column. When placed, water, ice, leaves, slime blocks, honey blocks, and cobwebs obstruct that light column so that the lowest air block above the leaves acts as other light sources do.
Sunlight is attenuated by leaves and each vertical layer of leaf blocks attenuates the light further.
The growth of grass blocks is linked to the amount of light in the blocks directly above them. A grass block can be killed by placing an opaque, partially transparent, or enough transparent blocks above it, preventing grass from spreading to nearby dirt blocks.