【问题标题】:Create a button using image instead of background color?使用图像而不是背景颜色创建按钮?
【发布时间】:2014-08-12 04:31:04
【问题描述】:

好的,所以我正在尝试制作一个按钮,但不是使用填充颜色并更改 :hover 上的颜色,我想使用图像作为背景并更改其在 :hover 上的不透明度。

这是一个 jsfiddle 来看看我想要做什么。第一个按钮是我要关闭的模板,但它对我的口味来说太无聊了。

我可以创建一个以图像为背景的按钮,但是当我设置和更改不透明度时,它显然会为所有子元素更改此设置,并且我需要文本不受影响。我还需要它以 100% 的宽度响应,以便它可以使用我网站上的包含网格来调整大小。

我试图创建一个容器 div,我放置了链接文本和一个 img src,并尝试执行 position:absolute 和 position/relative 但这会破坏容器 div。我确定我只是忽略了一些简单的事情,并且已经考虑了太久。

本质上,我在容器 div 中堆叠多个元素时遇到了麻烦,因此我可以将 :hover 定位为图像而不是其他任何东西。

任何帮助表示赞赏!

更新:

我想出了如何得到我想要的东西,如下所示:http://jsfiddle.net/6EMNM/

HTML

<div class="cma-button-wrapper">
<a href="#"><div class="cma-button-header">Header Text</div>
<div class="cma-button">
    <img src="http://breadedcat.com/wp-content/uploads/2012/02/cat-breading-tutorial-004.jpg" />
    <p class="title">Bread Cat!</p></a>
</div></div>

CSS

.cma-button-wrapper {
    width:250px;
    }

.cma-button-wrapper img:hover  {
    opacity:.6;
    }


.cma-button-wrapper a{
    text-decoration:none;
    }
.cma-button a{
    /* force the div to properly contain the floated images: */
    position: relative;
    float: left;
    clear: none;
    overflow: hidden;
}
.cma-button img {
    position: relative;
    width:100%;
    height: auto;
    z-index: 1;
    opacity: .2;
}
/*.cma-button img:hover {
    opacity: .3;

}*/

.cma-button .title {
    font-size:1.9em;
    font-family: Helvetica, sans-serif;
    font-weight: lighter;
    display: block;
    position: absolute;
    width: 100%;
    top:10%;
    left: 0;
    z-index: 2;
    text-align: center;
}
.cma-button a {
    color:#000;
    }

.cma-button-header {
    font-family: Helvetica, sans-serif;
    font-weight: light;
    font-size:.9em;
    padding:.4em;
    color:#FFF;
    background-color:#FF7300;
    }

这很接近,但我如何做到这一点,以便当您将鼠标悬停在 .cma-button-wrapper 的任何子元素上时,img 会更改不透明度,但不会改变其他任何内容。纯CSS可以做到这一点还是我需要javascript?谢谢!

【问题讨论】:

  • 问题到底是什么?您清楚地知道如何解决标题中的问题。在标题和问题本身中要具体。代码和 jsfiddle 如何演示您遇到的问题?按钮在哪里?如果您使用正确的按钮元素而不是 img 元素,那么您将遇到一些不同的问题。
  • 我想我想弄清楚如何创建一个 div 堆栈,以便我可以在我的按钮中有多个元素,这些元素都可以单独编辑,而不需要使用两个单独的图像,但我唯一的方法是知道如何做到这一点是使用相对和绝对定位,但这似乎会破坏任何响应性,因为它不会停留在容器 div 内。
  • 恐怕澄清比问题更晦涩难懂。可由谁编辑? you 所说的“响应能力”是什么意思,jsfiddle 如何证明这一点?
  • 我想通了。很抱歉造成混乱,我不知道如何询问如何做我想做的事情。但是我遇到了我在下面发布的另一个问题。

标签: html css button opacity


【解决方案1】:

您有 2 种方法,它适用于所有浏览器:

.button-image:hover {
 -khtml-opacity:.50; 
 -moz-opacity:.50; 
 -ms-filter:"alpha(opacity=50)";
  filter:alpha(opacity=50);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
  opacity:.50; 
}

或者您可以在 Photoshop 中创建 2 张图像。一个“button_image.png”和一个具有您想要的透明度的“button_image_hover.png”。应该是 PNG。

祝你有美好的一天!

【讨论】:

  • 更新你之前的答案,不需要发新的。
  • 谢谢,我知道如何设置不透明度,但我的问题是 div 不会使用 100% 宽度相互堆叠。
猜你喜欢
  • 1970-01-01
  • 2015-10-25
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 2020-03-17
相关资源
最近更新 更多