Beveled Images Using Cascading Style Sheets
Edwards' first technique involves using generated content on the image itself. This "ultra-clean" technique requires no additional markup, but alas, it only works in Opera.
The second technique Edwards presents is to use generated content on a wrapper element. This works with a wider range of web browsers, but requires additional markup and explicit dimensions.
His forth technique is to use shadows instead of borders. This is the most visually appealing technique, but, again, it only works in one browser--this time Firefox 3.5 or later.