《Ext JS权威指南》——2.5节关于Ext.BLANK_IMAGE_URL

简介: 本节书摘来自华章社区《Ext JS权威指南》一书中的第2章,第2.5节关于Ext.BLANK_IMAGE_URL,作者:黄灯桥,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.5 关于Ext.BLANK_IMAGE_URL
在Ext-more.js文件中可找到BLANK_IMAGE_URL属性的默认值和定义。其默认值是:

BLANK_IMAGE_URL : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
定义是:
BLANK_IMAGE_URL : (isIE6 || isIE7) ? 'http:/' + '/www.sencha.com/s.gif' : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='

代码中以“data”开头的数据代表一个1*1像素的空白透明图片。因为IE 6和IE 8不支持这样格式的图片数据,所以必须为它指定一个图片路径,默认指向http:///www.sencha.com/s.gif
这个图片有什么用呢?在菜单项的源代码(Item.js)中可找到菜单项的渲染模版代码:

renderTpl: [
  '<tpl if="plain">',
      '{text}',
  '</tpl>',
  '<tpl if="!plain">',
      '<a class="' + Ext.baseCSSPrefix + 'menu-item-link" href="{href}" <tpl if="hrefTarget">target="{hrefTarget}"</tpl> hidefocus="true" unselectable="on">',
          '<img src="{icon}" class="' + Ext.baseCSSPrefix + 'menu-item-icon {iconCls}" />',
          '<span class="' + Ext.baseCSSPrefix + 'menu-item-text" <tpl if="menu">style="margin-right: 17px;"</tpl> >{text}</span>',
          '<tpl if="menu">',
              '<img src="' + Ext.BLANK_IMAGE_URL + '" class="' + Ext.baseCSSPrefix + 'menu-item-arrow" />',
          '</tpl>',
      '</a>',
  '</tpl>'
],

在上面的代码中,Ext.BLANK_IMAGE_URL被用作显示图片。哈哈,有点想不通为什么用1个1*1像素的空白图片来作显示图片吧。别着急,看看它的CSS代码就清楚了。在ext-all-debug.css文件可找到有关“menu-item-arrow”的代码:

.x-menu-item-arrow {
  position: absolute;
  width: 12px;
  height: 9px;
  top: 9px;
  right: 0px;
  background: url('../themes/images/default/menu/menu-parent.gif') no-repeat center center;
}

真相出来了,Ext.BLANK_IMAGE_URL只是一个占位符,目的是显示背景图片。这样做主要有以下两个目的:
在更换主题时如果图片是固定的,有两种方法更新图片,一种是覆盖旧图片,一种是重新定义图片路径。在你固定主题的情况下,覆盖图片的方法是可行的,但如果要由用户自定义主题就不行了。重新定义图片的方法不但增加开发人员工作量,而且也不能实现用户自定义主题功能。使用这种方法,只需要在CSS中指定背景图片就行了,既不需要覆盖图片,也不需要去重新定义图片路径,非常方便实用。
如果使用div标记或span标记代替img标记,那么在这两个标记外增加链接的时候,因为标记内的内容为空,所以链接就会出现问题。如果在div或span内加入空格呢?问题依旧一样,而且还会因为空格造成背景图片难于定位。有兴趣的可以自己做一下测试。
明白了Ext.BLANK_IMAGE_URL的作用,回头再研究一下2.3节的示例中有关Ext.BLANK_ IMAGE_URL的三行代码。因为当浏览器是IE 6或IE 7时,图片地址会指向http:///www.sencha.com/s.gif,如果访问不了Sencha网站,就会出现显示问题,所以需要将地址指向本地地址。如果不是IE 6或IE 7,那么使用默认值就可以了。

相关文章
|
前端开发 JavaScript 算法
JavaScript 权威指南第七版(GPT 重译)(七)(3)
JavaScript 权威指南第七版(GPT 重译)(七)
30 0
|
前端开发 JavaScript 算法
JavaScript 权威指南第七版(GPT 重译)(七)(1)
JavaScript 权威指南第七版(GPT 重译)(七)
54 0
|
8天前
|
存储 前端开发 JavaScript
JavaScript 权威指南第七版(GPT 重译)(六)(4)
JavaScript 权威指南第七版(GPT 重译)(六)
80 2
JavaScript 权威指南第七版(GPT 重译)(六)(4)
|
8天前
|
前端开发 JavaScript API
JavaScript 权威指南第七版(GPT 重译)(六)(3)
JavaScript 权威指南第七版(GPT 重译)(六)
54 4
|
8天前
|
JSON 前端开发 JavaScript
JavaScript 权威指南第七版(GPT 重译)(五)(2)
JavaScript 权威指南第七版(GPT 重译)(五)
34 5
|
8天前
|
JSON JavaScript 前端开发
JavaScript 权威指南第七版(GPT 重译)(四)(4)
JavaScript 权威指南第七版(GPT 重译)(四)
64 6
|
8天前
|
Web App开发 前端开发 JavaScript
JavaScript 权威指南第七版(GPT 重译)(四)(1)
JavaScript 权威指南第七版(GPT 重译)(四)
34 2
|
8天前
|
存储 JavaScript 前端开发
JavaScript 权威指南第七版(GPT 重译)(三)(3)
JavaScript 权威指南第七版(GPT 重译)(三)
41 1
|
8天前
|
存储 JavaScript 前端开发
JavaScript 权威指南第七版(GPT 重译)(三)(2)
JavaScript 权威指南第七版(GPT 重译)(三)
50 3
|
8天前
|
存储 JSON JavaScript
JavaScript 权威指南第七版(GPT 重译)(三)(1)
JavaScript 权威指南第七版(GPT 重译)(三)
78 2