我在div中有一个图像。我需要添加一个水印效果,或者基本上是另一个图像,超过div的图像。我怎么能用css做到这一点?
示例代码:
<div id="image">
</div>
的CSS:
#image {
background:url(images/images.png) no-repeat;
}
答案 0 :(得分:64)
至少有两种方法可以做到这一点,其中一种方法被@ erenon的回答所触及。
为了满足您的要求并使用图像:
<div id="image">
<img src="path/to/watermarking_image.png" alt="..." />
</div>
使用以下CSS:
#image {
/* the image you want to 'watermark' */
height: 200px; /* or whatever, equal to the image you want 'watermarked' */
width: 200px; /* as above */
background-image: url(path/to/image/to/be/watermarked.png);
background-position: 0 0;
background-repeat: no-repeat;
position: relative;
}
#image img {
/* the actual 'watermark' */
position: absolute;
top: 0; /* or whatever */
left: 0; /* or whatever, position according to taste */
opacity: 0.5; /* Firefox, Chrome, Safari, Opera, IE >= 9 (preview) */
filter:alpha(opacity=50); /* for <= IE 8 */
}
这应该产生如下内容:
+--------------+--------------+
| | |
| 'watermark' | |
| | __ |
+--------------+ / \ |
| ( ) |
| /\ \ / |
| / \ || | <-- Picture. Of...something. O_o
| /\ / \ || |
|/ \________/ \_()||_()(|
+-----------------------------+
另一种方式,假设您想要'水印'是'一个字',则使用字:
<div id="image">
<p>Watermark text</p>
</div>
以下CSS:
#image {
/* the image you want to 'watermark' */
height: 200px; /* or whatever, equal to the image you want 'watermarked' */
width: 200px; /* as above */
background-image: url(path/to/image/to/be/watermarked.png);
background-position: 0 0;
background-repeat: no-repeat;
position: relative;
}
#image p {
/* the actual 'watermark' */
position: absolute;
top: 0; /* or whatever */
left: 0; /* or whatever, position according to taste */
opacity: 0.5; /* Firefox, Chrome, Safari, Opera, IE >= 9 (preview) */
filter:alpha(opacity=50); /* for <= IE 8 */
}
这应该产生如下内容:
+--------------+--------------+
| | |
| watermark | |
| text | __ |
+--------------+ / \ |
| ( ) |
| /\ \ / |
| / \ || | <-- Picture. Of...something. O_o
| /\ / \ || |
|/ \________/ \_()||_()(|
+-----------------------------+
我意识到这个问题可能会让您满意,但我希望这对您有用,即使只是作为一般信息。
答案 1 :(得分:7)
您确定要在客户端进行水印吗?这样做基本上打败了拥有水印的全部目的。你想要做的是服务一个已经包含水印的图像。这样做,你将不得不编写服务器端代码。
答案 2 :(得分:5)
#watermark{
background:url(images/watermark.png) no-repeat;
width: 100px;
height: 100px;
position: relative;
top: 0;
left: 0;
}
#image{
width: 100px;
height: 100px;
position: relative;
top: 0;
left: 0;
}
<div>
<div id="image"><img src="..." /></div>
<div id="watermark"></div>
</div>
有些人无法突破重叠水印,但有些人可以。强烈建议使用服务器端水印,例如:imagemagick lib。
答案 3 :(得分:2)
您可能会使用透明的PNG覆盖两个图像,但您确实希望在服务器上执行此操作,因为基于客户端的解决方案很容易被击败,并且不会真正保护任何内容。