透明背景图像

17

我有以下的 CSS。

   #mypass{
                background-image: url("Images/logo.png");
                background-attachment: fixed;
                background-position:140px 100px ;
                background-size: 100px;
                background-repeat: no-repeat;
                opacity:0.5;
                fileter:alpha(opacity=40);
                color: blue;
        }

我正在使用这个作为

<div id="mypass">
      <center><h2>PRAGATI ENGINEERING COLLEGE</h2>
    <h5>1-378,ADB Road,Surampalem-533437,E.G.Dist.,ph:08852-252233</h5></center>

      <%    out.println("________________________________________________________");
        String photo="Image/"+id+".jpeg";
       System.out.println(photo);

       String yy="";
       int y=((1900+d.getYear())-(Integer.parseInt(id.substring(0, 2))+2000))+1 ;
       switch(y){
          case 1:   yy=y+" st";break;
          case 2:   yy=y+" rd";break;
          case 3:   yy=y+" rd";break;
          case 4:   yy=y+" th";break;
          default: yy=y+" th";
       }

       int branch=Integer.parseInt(id.substring(6,8));
       System.out.println(branch);
       switch(branch){
         case 12:yy+=" IT";break;
         case 05:yy+=" CSE";break;
         case 03:yy+=" MECH";break;
         case 02:yy+=" EEE";break;
         case 04:yy+=" ECE";break;
         default:yy+="PEC";
       }
    %>
      <h2 class="buspass" style="color:#FF33CC"><a class=title onclick="javascipt:window.print(), width=400, height=400" onmouseover="this.style.cursor='hand'">BusPass</a></h2>
      <img class="printright" src="<%=photo%>" width="90" height="90" />
      <table>
         <!-- <tr><td>RollNumber</td><td>: <%=id%></td></tr> -->
          <tr ><td>Name</td><td style="color:black">: <%=name%></td></tr>
          <tr><td>Class</td><td style="color:black">: <%=yy%></td></tr>
          <tr><td>AcadamicYear</td><td style="color:black">: <%=s%></td></tr>
          <tr><td>Stage</td><td style="color:black">: <%=pickuppoint%></td></tr>
          <tr><td>BusRoute</td><td style="color:black">: <%=routecode%></td></tr>
        <!--  <tr><td>SeatNo</td><td>: <%=seatno%></td></tr>-->
        <!--  <tr><td>IssueDate</td><td>: <%=ddd%></td></tr> -->
      <!--    <tr><td>ValidTill</td><td>: <%=valid%></td></tr> -->
      </table>
      <h3 class="printrightdown">INCHARGE</h3>
    </div>

我想只对使用了该类的元素的背景图像透明度和滤镜进行修改,而不是应用于所有元素。我该如何做到?


3
哇!等一下!你的CSS无效。你混淆了“class”和“id”。你的代码中没有透明度或过滤器。 - SpliFF
7
保留图像的透明度(PNG中的alpha通道)。 - Eric Fortis
7
@SpliFF - 你觉得人们在试着掌握这些东西时还能去哪里呢?与其攻击提问者使用这个网站的原因,平静地解释一下提问者可能困惑的问题会更有帮助。请记住,这个网站的存在是为了帮助人们。 - sscirrus
4
SO不是一个教程网站,而是一个问答网站。没有清晰的问题就不会有答案。就这么简单。 - SpliFF
2
我只想指出,CSS的filter属性拼错了。 - user456814
显示剩余5条评论
5个回答

38

你无法使用CSS调整背景图片的透明度。

你可以通过设置一个元素的不透明度 (opacity) 或者使用纯色背景的 rgba() 来调整透明度,但是不能调整背景图片的透明度。

使用支持原生透明度的图片格式(如PNG),并将所需透明度嵌入到图片中。


8
需要有半透明背景的元素:
#myPass

这是如何在不修改HTML的情况下,为元素添加可控透明度背景的方法:
#myPass::before {
    content: "";
    position: absolute;
    top: 0; right: 0;
    bottom: 0: left: 0;
    background: url(image.jpg) no-repeat top center;
    opacity: 0.5;
}

唯一需要注意的是,#myPass 元素必须定位:
#myPass {
    position: relative; /* absolute is good too */
}

5

我自己也遇到了这个问题。如果你将linear-gradient与背景图片url结合起来,就可以控制图片的透明度。通过保持两个“渐变”的相同,你可以获得一个滤镜/透明效果,而不必使用opacity属性。

例如:

 .bg-image {
        background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.5)), url(path-to-image.jpg) center no-repeat;
        background-size: cover;
      }

4
这是实现的方法:

div {
  width: 200px;
  height: 200px;
  display: block;
  position: relative;
}

div::after {
  content: "";
  background: url(image.jpg);
  opacity: 0.5;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  position: absolute;
  z-index: -1;   
}

3
为什么不创建另一个div并将其用作伪背景或其他东西呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接