В общем случае ставят цвет фона из body в цвет тени.
Если так непулучается (по различным причинам), то есть несколько вариантов:
- нужно заранее делать картинку с полупрозрачными краями;
- воспользоваться canvas для генерации такой картинки;
- воспользоваться серверным скриптом;
- наложить маску ( !не кросбраузерно ).
ДОПОЛНЕНО:
Коментарий натолкнул меня на мысль написать JS делающий это красиво:
function feather(mask) {
$('img.feather').each( function(){
var src = this.attr('src');
mask = mask || this.data('mask') || 'http://dragon.deparadox.com/img/wual.png';
src = 'url(data:image/svg+xml;base64,'+btoa(
'<svg width="400" height="300" baseProfile="full" version="1.2">'+
' <defs>'+
' <mask id="svgmask2" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse"'+ 'transform="scale(1)">'+
' <image width="100%" height="300" xlink:href="'+mask+'" />'+
' </mask>'+
' </defs>'+
' <image id="the-mask" mask="url(#svgmask2)" width="100%" height="300" y="0" x="0" xlink:href="'+src+'" />'+
' </svg>')+')';
this.attr('src',src);
});
}