如何说服列表单元格中的图标大小为 16x16

How do I persuade an icon in a listcell to be sized to 16x16

提问人:Tom Tanner 提问时间:1/16/2017 最后编辑:Tom Tanner 更新时间:1/17/2017 访问量:188

问:

我正在尝试清理一个旧的(ish)firefox扩展程序,我有点痴呆。它创建网站及其网站图标的列表。它会将列表显示为弹出菜单或列表,具体取决于您的要求。

而且我无法让图标正确显示(这是这个扩展程序长期以来一直存在的问题)。在菜单上,在您做出选择之前不会显示任何图标。然后它显示图标,但有一个页面的图标是 256x256,看起来很糟糕。同样,在列表视图中。

据我所知,菜单都是用 menuitem-iconic 构建的,列表是用 listcell-iconic/listitem-iconic 构建的,但即使我在扩展 css 中添加了一个 menuitem-iconic 覆盖(这会影响所有其他菜单图标),我也无法识别它。

如果你把它放到xul浏览器中,你就会明白我的意思

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<!-- listbox showing large icon -->

<listbox>
<listitem label="Widdershins"
      class="listitem-iconic"
      image="http://www.widdershinscomic.com/favicon.ico"
      style="max-height: 18px;"
/>
<listitem label="Darken"
      class="listitem-iconic"
      image="http://darkencomic.com/wp-content/themes/inkblot/includes/images/icon.png"
      style="max-height: 18px;"
/>

</listbox>

<!-- menu shows no icons at all but when you select the 'darken' one you get a huge icon -->

<menulist label="label" accesskey="{accesskey}">
<menupopup>
<menuitem label="Widdershins"
      class="menuitem-iconic"
      image="http://www.widdershinscomic.com/favicon.ico"
      style="max-height: 18px;"
/>
<menuitem label="Darken"
      class="menuitem-iconic"
      image="http://darkencomic.com/wp-content/themes/inkblot/includes/images/icon.png"
      style="max-height: 18px;"
/>
</menupopup>
</menulist>
</window>

我在这里对可能发生的事情感到茫然。列表项的最大高度工作正常,导致相关行上出现一个宽但非常短的图标,但我希望它只是 16x16。

菜单没有这样的限制,并以完整的 256x256 像素显示所选图像。

css firefox-addon xul palemoon

评论

0赞 Makyen 1/16/2017
请提供一个完整的最小可重复示例。事实上,为了复制这个问题,需要生成相当多的额外代码。至少,这将是<listbox>的完整XUL。这至少允许复制代码并将其放入XUL资源管理器中进行测试。
0赞 Makyen 1/16/2017
是否有与显示位置关联的 CSS 文件,或者所有样式都需要内联?
0赞 Tom Tanner 1/16/2017
添加 - 您可以清楚地看到变暗条目的巨大宽度。从XUL浏览器窗口复制
0赞 Tom Tanner 1/16/2017
我不认为有css文件。我发现通过摆弄扩展中的css,我可以使菜单弹出窗口显示图标,但其他问题仍然存在。
0赞 Tom Tanner 1/16/2017
这在XULRunner中显示与在浏览器中完全相同。

答:

2赞 Makyen 1/16/2017 #1

您可以通过添加 CSS 来设置显示图像的元素的样式来实现此目的。是 XBL 论坛的一部分,由 您的 .您可以通过在 XBL 中查找元素或使用 DOM 检查器并显示匿名内容来查看每个显式包含的元素由哪些元素组成。widthheight<image><image><listcell class="listitem-iconic"><listitem class="listitem-iconic">

您可以为显示的菜单列表图标设置类似的样式。image.menulist-icon

由于没有单独的 CSS 文件,您的问题有些复杂。但是,你可以通过使用数据URI直接在XUL中包含CSS。

所以要得到:
listbox and menulist with 16x16 image

您可以使用:

<?xml-stylesheet type="text/css" href="data:text/css,
    image.listcell-icon, image.menulist-icon {
        width: 16px;
        height: 16px;
    }"
?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <listbox>  <!-- listbox showing large icon -->
    <listitem label="Widdershins"
      class="listitem-iconic"
      image="http://www.widdershinscomic.com/favicon.ico"
      style="max-height: 18px;"
    />
    <listitem label="Darken"
      class="listitem-iconic"
      image="http://darkencomic.com/wp-content/themes/inkblot/includes/images/icon.png"
      style="max-height: 18px;"
    />
  </listbox>
<!-- menu shows no icons at all but when you select 'darken' then you get a huge icon -->
  <menulist label="label" accesskey="{accesskey}">
    <menupopup>
      <menuitem label="Widdershins"
        class="menuitem-iconic"
        image="http://www.widdershinscomic.com/favicon.ico"
        style="max-height: 18px;"
      />
      <menuitem label="Darken"
        class="menuitem-iconic"
        image="http://darkencomic.com/wp-content/themes/inkblot/includes/images/icon.png"
        style="max-height: 18px;"
      />
    </menupopup>
  </menulist>
</window>

评论

0赞 Tom Tanner 1/16/2017
这看起来很棒。鉴于我确实有一个用于此扩展的 css 文件,我应该在其中放入什么才能使其工作,因为据推测这会类似地影响每个菜单?
0赞 Makyen 1/16/2017
它将影响所有<image class=“menulist-icon”>'。我不能说它将如何影响“每个菜单”,因为我不知道你是否使用相同的元素来创建这样的菜单。但是,它将影响所有以类似方式创建的内容。<image class="listcell-icon"> and
0赞 Tom Tanner 1/16/2017
好吧,我确实小提琴添加了“.menu-iconic-icon { width: 32px;高度:16px;}“作为实验,这影响了所有浏览器的菜单,产生了奇怪的扭曲菜单。实际上,我想我已经想出了如何缓解这种情况。非常感谢
0赞 Tom Tanner 1/16/2017
顺便说一句 - 为什么我必须指定这一点?它不应该是自动完成的吗?
0赞 Makyen 1/17/2017
嗯,是也不是。虽然存在默认值(多于 ),但能够定义您或其他人正在设计的任何接口的大小也是合理的。对于有多个CSS文件,其中图标的大小是为各种主题定义的menulistlistcell<menulist>