`

Ext.BLANK_IMAGE_URL

阅读更多

相信各位读者在学习Ext官方示例的时候,会发现每个例子都会引用examples.js。examples.js文件中的第一句就是:

Ext.BLANK_IMAGE_URL = '../../resources/images/default/s.gif';

这是一句将图片地址赋给Ext.BLANK_IMAGE_URL变量的语句。单单看这句话看不出有什么特殊,下面我们看Ext源代码GridView.js中的语句,来学习Ext.BLANK_IMAGE_URL的真正含义。

JavaScript代码清单10-1-1

if (!ts.hcell) {

ts.hcell = new Ext.Template(

'<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id}" style="{style}">'

+ '<div {tooltip} {attr} class="x-grid3-hd-inner x-grid3-hd-{id}"

unselectable="on" style="{istyle}">',

        //判断grid是否启用了菜单

        this.grid.enableHdMenu

        ? '<a class="x-grid3-hd-btn" href="#"></a>'

        : '',

     '{value}<img class="x-grid3-sort-icon" src="', Ext.BLANK_IMAGE_URL, '" />',

    "</div></td>");

}

这段代码是生成Grid的列标题,通过模板动态生成列标题的样式,并定义列标题的排序图标。通过章节开始的那句赋值语句我们就应该知道排序图片是指向‘../../resources/ images/default/s.gif’,s.gif是一个空白的图片,意思是列标题在没有进行排序的情况下默认不显示任何图片,通过运行Ext官方示例Editor Grid Example在FireFox下面查看最终源代码会更加清楚,如图10.1中的红框处所示。

图10.1  最终的源代码

那么可以说明,排序图标是需要动态创建的,在点击Grid的列标题进行排序的时候,Ext会动态地修改CSS来设置图片修饰组件<img>的src属性,来实现图片的动态加载。

这样可以看出,Ext在对一些需要应用图片的地方,都没有显式地写明要应用的图片路径,而都是通过CSS来动态配置,许多应用图片的地方刚开始都使用Ext.BLANK_IMAGE_URL来替代,而在CSS加载之后就会替换到真实的图片路径。另外Ext.BLANK_IMAGE_URL在Ext默认的值为:

BLANK_IMAGE_URL : "http:/"+"/extjs.com/s.gif"

这是连接官方Ext网站的图片,这样如果您的图片在网络不通的情况下会显示一个红叉,所以还是建议在实际应用中将Ext.BLANK_IMAGE_URL设置为本地引用。最后还经过实践证明,如果没有正确地配置Ext.BLANK_IMAGE_URL,可能在许多控件上显示不了CSS文件中定义的装饰图标。

Ext软件包下面的Resources文件夹放置了Ext所需的全部资源文件,包括样式表(css)、图片等,但唯一不包括的一张图片是像素1 * 1的透明GIF文件,为什么这张图片如此特别,需要另作处理呢?我们先从网页的背景图制作方法说起——这是在前端设计中一种非常有用的处理手段。

Ext样式精粹

一般情况下,在HTML页面中插入图片很简单,直接定义Img元素的src属性即可:

<img src="image.gif" />

<a href="http://foo.com"><img src="image.gif" /></a>

<!--套上link元素做连接-->

渐渐地,人们意识到这样更换样式的同时需要修改HTML文件(仅仅是修改img元素的引用地址),不如修改CSS文件方便,不会涉及HTML结构有影响小的特点,于是一个空白图片做占位符号,然后用CSS文件里配置的背景图片做显示,这样有利于更换主题。上面的代码变为HTML和CSS两种:

HTML:

<div id="image"></div>

CSS:

#image {

    height: 30px;

    width: 50px;

     background-image:url(../images/index.gif);

}

此时的div元素中的innerHTML属性为空,即不包含任何字符。问题出现这里了,我们不能直接给div元素套上link元素,否则不能建立连接或div出现异常,如这里给出的一个错误的用法,见源码10-1-1。

源码10-1-1 (错误的用法)

<style>

#image {

    height: 30px;

    width: 50px;

    background:blue;

}

</style>

<a href="#">

    <div id="image"></div>

</a>

<!--如果我想把两个元素“调过来”,div元素嵌套a元素也不行,因为a元素不支持height、width尺寸的属性-->

要可靠地为div元素加上连接,同时也希望利用CSS配置的背景图片,可以利用一种折中但有效的方法,在a元素中包含一个透明的GIF图片,该图片大小为1 * 1像素,IMG元素的尺寸大小就按照实际显示的大小设置。IMG此时的作用不是显示要显示的图片,而是让透明的图片不断地被填充,达到不影响背景图片而又设置大小尺寸的效果。

不过,此时我们距离真正解决问题还差一步之遥。因为这个IMG元素不能够以背景图(在CSS里面)的方式引用那个1 * 1的透明图片。IMG元素本来的用途是显示图片,再加入背景图岂不是多此一举,因此在W3C(HMTL标准制定者)的规范中,IMG元素是不存在背景图的属性或相关设置方法的。如此一来,我们便不能遵从CSS文件路径的定位标准去定义这个透明图片(CSS与HTML路径各自成独立体系),好在这只是唯一需要我们设置的地方,一次定义正确,整个Ext库都能引用这个图片路径。

 

CSS图片拼合(CSS sprites)可有效降低图片文件的HTTP连接请求数。多个图片将以一定间距合并为一个大图片文件。页面中使用这些图片的元素将利用background-position这一CSS属性来显示拼合图片中的指定位置。就好比手表上的日期,你今天看到的是21,明天看到的是22,是因为它的位置往上跳了一格。

总地来说,将几张图片合成一个大图,并给出CSS座标,这就是CSS Sprites的精粹所在,也是Ext制作皮肤的总体思路。

这一技术可有效提升网站的性能, 尤其是网页上有众多小图片时——如许多菜单栏图标。Yahoo!首页是使用此技术的一个实例。

分享到:
评论
1 楼 crud0906 2011-04-13  
引用
问题出现这里了,我们不能直接给div元素套上link元素,否则不能建立连接或div出现异常

请问这个是什么意思?还有为什么一定要套上<a>链接

相关推荐

    ext常用注释

    在Ext框架中,`Ext.BLANK_IMAGE_URL` 是一个非常重要的属性,它用于指定默认的图像路径。例如: ```javascript Ext.BLANK_IMAGE_URL = basePath + "common/ext3.1/resources/images/default/s.gif"; ``` 这里通过...

    extjs3.2api中文

    "BLANK_IMAGE_URL"是ExtJS中的一个常量,它通常被用作一个占位符图像的URL。这个1×1像素的透明图片在JavaScript和CSS中起到了关键作用。在Web开发中,有时需要一个不可见的图像来作为某些元素的默认值或占位符,...

    Ext.Tree.Panel

    - `Ext.BLANK_IMAGE_URL`通常用于设置占位符图片的URL,防止因图片未加载而出现的错误图标。 - `TreeLoader`对象用于从服务器加载树节点数据。可以设置`dataUrl`属性指定数据源,也可以在加载前的事件中动态设置。...

    Extjs 常用属性

    `Ext.BLANK_IMAGE_URL`是一个预定义的属性,用于指定一个空白图像的URL,这个图像通常用于占位符或解决CSS中背景图像加载延迟的问题。在这个例子中,`Ext.BLANK_IMAGE_URL='scripts/ext/resources/images/vista/s....

    EXT_JS实用开发指南_个人整理笔记.docx

    EXT_JS的`Ext.BLANK_IMAGE_URL`常量用于设置空白图片路径,以避免某些浏览器在处理图像时出现问题。 2. **应用启动与`Ext.onReady`**:EXT_JS应用通常从`Ext.onReady`函数开始执行,这个函数会在DOM加载完成并且EXT...

    ext教程1.pdf

    `Ext.BLANK_IMAGE_URL` 是EXTJS 为某些组件(如树形控件)设置的占位符图像URL。 EXTJS 应用程序的启动通常从`Ext.onReady` 函数开始。这个函数会在DOM加载完成后执行,确保在操作DOM元素时页面已经完全准备就绪。...

    Ext Js权威指南(.zip.001

    2.5 关于ext.blank_image_url / 40 2.6 关于字体 / 42 2.7 ext js 4语法 / 42 2.8 本地化 / 60 2.9 为本书示例准备一个模板 / 60 2.10 本章小结 / 61 第3章 调试工具及技巧 / 62 3.1 使用firebug进行调试 / ...

    ExtJS教程.pdf

    为了解决这个问题,可以在自己的代码中设置`Ext.BLANK_IMAGE_URL`为本地的图片路径。例如,在`examples.js`文件中可以看到设置如下: ```javascript Ext.BLANK_IMAGE_URL = '../../resources/images/default/s.gif'...

    grid js 例子一个 ext 的

    - **Ext.BLANK_IMAGE_URL**:设置 Ext JS 的默认空白图片路径。 - **Ext.QuickTips.init()**:初始化快速提示功能。 - **CheckboxSelectionModel**:创建一个复选框选择模型,允许用户多选行。 - **ColumnModel**:...

    Extjs学习笔记

    Ext.BLANK_IMAGE_URL = '../resources/images/default/s.gif'; Ext.onReady(function() { Ext.MessageBox.alert('Hello', 'Hello world'); }); ``` 在上面的代码中,我们首先引入了 ExtJS 的核心文件,然后...

    EXT开发过程中的心得

    - 在使用EXTJS时,需要特别注意`Ext.BLANK_IMAGE_URL`这个配置项,它指向一个1x1像素的透明图片(通常为`s.gif`)。此设置对于确保应用的统一外观至关重要,尤其是在处理不同分辨率下的显示问题时。 3. **IE浏览器...

    ext2.0中文语言包gb2312格式

    Ext.BLANK_IMAGE_URL = 'path/to/blank.gif'; Ext.UpdateManager.defaults.indicatorText = '加载中...&lt;/div&gt;'; Ext.QuickTips.init(); Ext.util.Format.defaultDateFormat = 'Y-m-d'; // 引用中文语言包 Ext...

    电讯盈科 extjs培训教程

    Ext.BLANK_IMAGE_URL = '../extjs2.0/resources/images/default/s.gif'; // Alert 示例 Ext.Msg.alert('提示', '信息主体内容', function() { alert('回调函数'); }); // Confirm 示例 Ext.Msg.confirm('...

    验证码的实现

    - `ct.createChild({ tag: 'img', src: Ext.BLANK_IMAGE_URL })` 创建了一个新的图片元素,并设置初始为空白图片。 - `this.codeEl.addCls('x-form-code')` 添加了之前定义的CSS类,以便应用样式。 - `this.codeEl....

    extjs和struts的技术结合

    13. **Ext.BLANK_IMAGE_URL**:这是ExtJS中的一个全局常量,用于提供一个空的图片URL,常用于占位或者默认图片。 14. **Ext.XTemplate**:XTemplate是ExtJS中的模板引擎,用于动态渲染数据到HTML中,它可以将JSON...

Global site tag (gtag.js) - Google Analytics