应用PNG图片的透明或半透明的特性能做出非常漂亮的网页来。Firefox和Opera对PNG的支持非常的好,都是IE却无视PNG图片这一特性的“存在”,虽然IE7已经支持都是IE6还是不行。查了一些资料,基本解决了这一问题,准备应用到PJskin上。
虽然有让IE6支持PNG透明背景的JS程序,都是不是很方便,还是用CSS来实现的好。使用到的就是:
IE5.5+的AlphaImageLoader滤镜
引用内容
语法:
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
属性:
enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false
true : 默认值。滤镜激活。
false : 滤镜被禁止。
sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。 crop : 剪切图片以适应对象尺寸。
image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
scale : 缩放图片以适应对象的尺寸边界。
src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。
说明:
在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。
PNG(Portable Network Graphics)格式的图片的透明度不妨碍你选择文本。也就是说,你可以选择显示在PNG(Portable Network Graphics)格式的图片完全透明区域后面的内容。
了解了以上的内容,可以写一段简单的CSS代码(还不是完全正确的代码):
引用内容
#div1 {
height: 600px;
width: 260px;
padding: 20px;
background-repeat: repeat;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png"
}
这段简单的CSS代码就可以在IE中正常的显示PNG透明背景,但是会发现在FF下不会出现背景,分析原因:
AlphaImageLoader滤镜只能被IE支持,FF是不支持该滤镜的
有些初次写的时候很多人会这样:
在代码中添加这样一段: background-image: url(bj1.png);
添加这样一段代码虽然能解决FF下的问题,都是IE又出现问题:新的背景会覆盖在滤镜的背景之上,导致滤镜显示无效,这时候就用到IE和FF对CSS读取的区别特性了:
Firefox、Opera等完全支持PNG透明图片的浏览器也支持子选择器(>),而IE不识别(包括IE7),所有我们可以通过这来定义Firefox、Opera等浏览器中PNG图片的样式。代码如下:
引用内容
html>body #div1 {
background-repeat: repeat;background-image: url(bj1.png);
}
同时,我们通过只有IE才识别的通配符(*),来定义IE浏览器中的滤镜。代码如下:
引用内容
* #div1 {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png")
}
而#div1 {}就放一些IE和FF共用的设置来减少代码文件的大小。最终就是这样:
引用内容
#div1 {
height: 600px;
width: 260px;
padding: 20px;
background-repeat: repeat;
}
html>body #div1 {
background-repeat: repeat;background-image: url(bj1.png);
}
* #div1 {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png")
}
需要注意的是:AlphaImageLoader滤镜会导致该区域的链接和按钮无效,解决的办法是为链接或按钮添加:position: relative;这样条代码,使其相对浮动。AlphaImageLoader无法设置背景的重复,所以对图片的切图精度会有很高的精确度要求。
其实使用PNG透明特性做网页主要解决的问题是IE6对PNG图片的读取,需要应用滤镜:
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
写法的例子:
* #container #header
{filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=image, src="http://huziyi.com/png/h_bj.png");
}
同时为了让FF单独读取背景(FF不支持滤镜,当是支持PNG透明特性),单独写段CSS:
html>body #container #header{
background-image: url(h_bj.png);
}
星玄宇告诉我还有更好的优化写法,可以减少IE7下的读取速度:用*html #来单独为IE6写滤镜的代码,html>body 可以同时被IE7和FF读取,这样就让IE7避免滤镜的使用以加快读取速度。我还没有测试。
在做PNG的皮肤中,PNG文件的切图要求很高,最好做到精确的切图和层的设置。链接失效的问题不仅仅可以在链接CSS里设置相对定位,也可以对该内容所在的层进行相对定位设置。
分享到:
相关推荐
SASS是一种CSS预处理器,允许使用变量、嵌套规则、混合、函数等高级特性编写更易于维护的CSS代码。 资源文件夹(resources)中通常包含了ExtJS应用所需的所有资源,如CSS样式文件、图片、字体等。主题相关的CSS文件...
本资源包含的是ExtJS 4.0版本中需要用到的主要JavaScript库文件和CSS样式文件,这些文件对于理解和使用ExtJS 4.0至关重要。 JavaScript 文件: 1. **ext-all.js**:这是ExtJS的核心库文件,包含了所有组件、功能和...
把皮肤文件解压 把css文件 如xtheme olive css 拷贝到extjs的resources目录下css文件夹里面:">extjs的默认皮肤很好看 但是我们还可以变换样式切换其他皮肤 1 直接添加其他css文件换肤 好多皮肤上网就可以收到的...
1. CSS3滤镜:可以使用CSS3的`filter`属性,通过`drop-shadow`或者`blur`等效果模拟水印。 2. SVG图形:利用SVG矢量图形可以创建透明度可调的水印,适用于现代浏览器。 3. Canvas绘制:在HTML5的Canvas元素上绘制...
3. **实时通信**:由于ExtJS本身不支持实时通信,我们需要借助WebSocket或者Long Polling等技术实现消息的即时传输。WebSocket提供双向通信,可以实现实时的消息推送;而Long Polling则是一种模拟实时的解决方案,...
项目中遇到Extjs3.0在IE9中不兼容,现有两种解决方法
最近小弟做了Extjs实现实现下拉框联动的效果,参考了好久才学会,闲下来发一个简单的例子。。呵呵
EXTJS 样式 extjs字体大小 可以轻松在这个CSS文件里面调整EXTJS插件的字体大小,对这个有需求的同志们有福了!
Extjs 下拉菜单实现拼音输入进行检索
- 在EXTJS中,我们可以使用`x-icon`类来引用CSS图标,类名通常对应于图标名称。例如,一个表示"添加"的CSS图标可能的类名是`x-icon-add`。在组件配置中,可以这样使用: ```javascript { text: '添加', iconCls...
3. **CSS和Div布局**:ExtJS利用CSS和Div元素进行布局管理,实现了灵活的布局策略,如Fit布局、Form布局、Table布局等。这使得开发者能够创建响应式和自适应的设计。 4. **JavaScript API**:ExtJS提供了丰富的API...
- **背景介绍**:ExtJS是一款基于JavaScript的开源框架,用于构建现代化的Web应用程序。它提供了丰富的UI组件和工具,使得开发者能够轻松地创建高性能的用户界面。无论你是新手还是有一定经验的开发者,ExtJS都能够...
《深入剖析ExtJS_2.2实现及应用》是一本专为高级Web开发者设计的书籍,专注于探讨ExtJS 2.2版本的源码结构、实现机制和最佳实践。这本书旨在帮助开发者超越仅仅依赖官方文档的阶段,深入理解ExtJS的内在工作原理,...
2. **cellCls**:为单元格添加自定义CSS类,以实现特定的样式。 3. **colWidths**:可以设置每列的宽度,如果未指定,则按比例自动分配。 4. **defaults**:为所有子组件设定默认属性,如宽度、高度等。 5. **items*...
标题中的“extjs+java实现短信猫发生短信dom”揭示了这个项目是关于使用EXTJS(一个基于JavaScript的用户界面库)和Java技术来构建一个系统,该系统能够通过短信猫(一种硬件设备,用于通过调制解调器发送和接收短信...
在这个目录下,你可能会找到`.js`文件,里面包含了实现上述功能的ExtJS代码,以及可能的HTML和CSS文件来展示这个应用。开发者可能通过阅读这些代码,了解如何将ExtJS组件和动画结合起来,以创建具有翻页效果的电子书...
ExtJS是一种广泛应用于Web开发的...总的来说,"ExtJS静态使用示例"提供了一个学习和实践ExtJS基础功能的机会,通过Grid、Panel和Tree的使用,可以帮助开发者掌握如何在Web应用中构建交互性和功能性丰富的用户界面。
在IT领域,Highstock和ExtJS是两种广泛使用的JavaScript库,它们各自专注于不同的功能,但可以协同工作以创建丰富的、交互式的Web应用程序。本篇文章将深入探讨如何将Highstock与ExtJS结合使用,并通过提供的PHP案例...
在本项目中,“Extjs实现的聊天室”利用了ExtJS的组件化特性和WebSocket技术,构建了一个实时的在线聊天平台。 WebSocket是一种在客户端和服务器之间建立长连接的协议,允许双方进行全双工通信,即数据可以在任意...
在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败。ExtJS4 已完全重新写 grid 组件,tree 也被更新,所以从版本 3 到 4 大部分的属性改变了。 在 ExtJS4 中,API 也发生了很...