可以轻松使用标准图标集中的其中一个图标:
$("#myButton").button({icons: {primary: "ui-icon-locked"}});
但是,如果我想添加一个不属于框架图标集的我自己的图标呢?
我认为这就像给自己带有背景图像的CSS类一样简单,但这不起作用:
.fw-button-edit {
background-image: url(edit.png);
}
有什么建议吗?
答案 0 :(得分:62)
我还可以推荐:
.ui-button .ui-icon.your-own-custom-class {
background-image: url(your-path-to-normal-image-file.png);
width: your-icon-width;
height: your-icon-height;
}
.ui-button.ui-state-hover .ui-icon.your-own-custom-class {
background-image: url(your-path-to-highlighted-image-file.png);
width: your-icon-width;
height: your-icon-height;
}
然后输入JS代码:
jQuery('selector-to-your-button').button({
text: false,
icons: {
primary: "you-own-cusom-class" // Custom icon
}});
它对我有用,并希望它也适合你!
答案 1 :(得分:14)
我相信他不会工作的原因是因为你的图标的background-image
属性被jQuery UI默认的精灵图标背景图像覆盖。有问题的风格是:
.ui-state-default .ui-icon {
background-image: url("images/ui-icons_888888_256x240.png");
}
这比您的.fw-button-edit
选择器具有更高的特异性,从而覆盖了背景图像元素。由于它们使用精灵,.ui-icon-locked
规则集仅包含获取精灵图像位置所需的background-position
。我相信使用它会起作用:
.ui-button .ui-icon.fw-button-edit {
background-image: url(edit.png);
}
或其他具有足够特异性的东西。在此处了解有关CSS特异性的更多信息:http://reference.sitepoint.com/css/specificity
答案 2 :(得分:3)
这是基于上面的Yi Jiang和Panayiotis提供的信息以及jquery ui button sample code:
当我迁移早期的JSP应用程序时,每个按钮都有一个带有图像的工具栏,我希望将图像放在按钮声明中,而不是为每个工具栏按钮创建一个单独的类。
<div id="toolbarDocs" class="tableCaptionBox">
<strong>Checked Item Actions: </strong>
<button id="btnOpenDocs" data-img="<s:url value="/images/multi.png"/>">Open Documents</button>
<button id="btnEmailDocs" data-img="<s:url value="/images/email.png"/>">Attach to Email</button>
</div>
当然还有比上面两个更多的按钮。上面的s标记是struts2标记,但您可以将其替换为任何URL
<button id="btnOpenDocs" data-img="/images/multi.png">Open Documents</button>
以下脚本从按钮标记中查找属性data-img,然后将其设置为按钮的背景图像。
它暂时设置ui-icon-bullet(任意现有的任何样式),然后稍后更改。
此类定义临时样式(如果您打算使用此类,则最好为特定工具栏添加更多选择器,以便页面的其余部分不受影响)。实际图片将被下面的Javascript取代:
button.ui-button .ui-icon {
background-image: url(blank.png);
width: 0;
height: 0;
}
以及以下Javascript:
$(document).ready(function () {
$("#toolbarDocs button").each(
function() {
$(this).button(
{ text: $(this).attr('data-img').length === 0? true: false, // display label for no image
icons: { primary: "ui-icon-bullet" }
}).css('background-image', "url(" + $(this).attr('data-img') +")")
.css('background-repeat', 'no-repeat');
});
});
答案 3 :(得分:2)
此链接的解决方案对我很有用: http://www.jquerybyexample.net/2012/09/how-to-assign-custom-image-to-jquery-ui-button.html
$(document).ready(function() {
$("#btnClose")
.text("")
.append("<img height="100" src="logo.png" width="100" />")
.button();
});
答案 4 :(得分:0)
我的解决方案是向JQuery UI添加自定义图标(使用精灵):
CSS:
.icon-example {
background-position: 0 0;
}
.ui-state-default .ui-icon.custom {
background-image: url(icons.png);
}
.icon-example
定义自定义图标文件中图标的位置。 .ui-icon.custom
使用自定义图标定义文件。
注意:您可能还需要定义其他JQuery UI类(如.ui-state-hover
)。
JavaScript的:
$("selector").button({
icons: { primary: "custom icon-example" }
});
答案 5 :(得分:0)
建立在msanjay的答案上我将其扩展为jquery ui按钮和单选按钮的自定义图标:
<div id="toolbar">
<button id="btn1" data-img="/images/bla1.png">X</button>
<span id="radioBtns">
<input type="radio" id="radio1" name="radName" data-mode="scroll" data-img="Images/bla2.png"><label for="radio1">S</label>
<input type="radio" id="radio2" name="radName" data-mode="pan" data-img="Images/bla3.png"><label for="radio2">P</label>
</span>
</div>
$('#btn1').button();
$('#radioBtns').buttonset();
loadIconsOnButtons('toolbar');
function loadIconsOnButtons(divName) {
$("#" + divName + " input,#" + divName + " button").each(function() {
var iconUrl = $(this).attr('data-img');
if (iconUrl) {
$(this).button({
text: false,
icons: {
primary: "ui-icon-blank"
}
});
var imageElem, htmlType = $(this).prop('tagName');
if (htmlType==='BUTTON') imageElem=$(this);
if (htmlType==='INPUT') imageElem=$("#" + divName + " [for='" + $(this).attr('id') + "']");
if (imageElem) imageElem.css('background-image', "url(" + iconUrl + ")").css('background-repeat', 'no-repeat');
}
});
}
答案 6 :(得分:0)
// HTML
<div id="radioSet" style="margin-top:4px; margin-left:130px;" class="radio">
<input type="radio" id="apple" name="radioSet" value="1"><label for="apple">Apple</label>
<input type="radio" id="mango" name="radioSet" value="2"><label for="mango">Mango</label>
</div>
// JQUERY
// Function to remove the old default Jquery UI Span and add our custom image tag
function AddIconToJQueryUIButton(controlForId)
{
$("label[for='"+ controlForId + "'] > span:first").remove();
$("label[for='"+ controlForId + "']")
.prepend("<img position='fixed' class='ui-button-icon-primary ui-icon' src='/assets/images/" + controlForId + ".png' style=' height: 16px; width: 16px;' />");
}
// We have to call the custom setting to happen after document loads so that Jquery UI controls will be there in place
// Set icons on buttons. pass ids of radio buttons
$(document).ready(function () {
AddIconToJQueryUIButton('apple');
AddIconToJQueryUIButton('mango');
});
// call Jquery UI api to set the default icon and later you can change it
$( "#apple" ).button({ icons: { primary: "ui-icon-gear", secondary: null } });
$( "#mango" ).button({ icons: { primary: "ui-icon-gear", secondary: null } });
答案 7 :(得分:0)
在css中
.ui-button .ui-icon.custom-class {
background-image: url(your-path-to-normal-image-file.png);
width: your-icon-width;
height: your-icon-height;
}
.ui-state-active .ui-icon.custom-class, .ui-button:active .ui-icon.custom-class {
background-image: url(your-path-to-highlighted-image-file.png);
width: your-icon-width;
height: your-icon-height;
}
HTML中的
<button type="button" class="ui-button ui-widget ui-corner-all">
<span class="custom-class"></span> CAPTION TEXT
</button>
JavaScript中的
$("selector").button({
icons: { primary: "custom-class" }
});