修复png bug的脚本

ExpandedBlockStart.gif代码
// IE5.5+ PNG Alpha Fix v2.0 Alpha: Background Tiling Support
//
 (c) 2008 Angus Turnbull http://www.twinhelix.com

// This is licensed under the GNU LGPL, version 2.1 or later.
//
 For details, see: http://creativecommons.org/licenses/LGPL/2.1/

var IEPNGFix = window.IEPNGFix || {};

IEPNGFix.tileBG 
= function(elm, pngSrc, ready) {
    
// Params: A reference to a DOM element, the PNG src file pathname, and a
    // hidden "ready-to-run" passed when called back after image preloading.

    
var data = this.data[elm.uniqueID],
        elmW 
= Math.max(elm.clientWidth, elm.scrollWidth),
        elmH 
= Math.max(elm.clientHeight, elm.scrollHeight),
        bgX 
= elm.currentStyle.backgroundPositionX,
        bgY 
= elm.currentStyle.backgroundPositionY,
        bgR 
= elm.currentStyle.backgroundRepeat;

    
// Cache of DIVs created per element, and image preloader/data.
    if (!data.tiles) {
        data.tiles 
= {
            elm: elm,
            src: 
'',
            cache: [],
            img: 
new Image(),
            old: {}
        };
    }
    
var tiles = data.tiles,
        pngW 
= tiles.img.width,
        pngH 
= tiles.img.height;

    
if (pngSrc) {
        
if (!ready && pngSrc != tiles.src) {
            
// New image? Preload it with a callback to detect dimensions.
            tiles.img.onload = function() {
                
this.onload = null;
                IEPNGFix.tileBG(elm, pngSrc, 
1);
            };
            
return tiles.img.src = pngSrc;
        }
    } 
else {
        
// No image?
        if (tiles.src) ready = 1;
        pngW 
= pngH = 0;
    }
    tiles.src 
= pngSrc;

    
if (!ready && elmW == tiles.old.w && elmH == tiles.old.h &&
        bgX 
== tiles.old.x && bgY == tiles.old.y && bgR == tiles.old.r) {
        
return;
    }

    
// Convert English and percentage positions to pixels.
    var pos = {
            top: 
'0%',
            left: 
'0%',
            center: 
'50%',
            bottom: 
'100%',
            right: 
'100%'
        },
        x,
        y,
        pc;
    x 
= pos[bgX] || bgX;
    y 
= pos[bgY] || bgY;
    
if (pc = x.match(/(\d+)%/)) {
        x 
= Math.round((elmW - pngW) * (parseInt(pc[1]) / 100));
    }
    
if (pc = y.match(/(\d+)%/)) {
        y 
= Math.round((elmH - pngH) * (parseInt(pc[1]) / 100));
    }
    x 
= parseInt(x);
    y 
= parseInt(y);

    
// Handle backgroundRepeat.
    var repeatX = { 'repeat'1'repeat-x'1 }[bgR],
        repeatY 
= { 'repeat'1'repeat-y'1 }[bgR];
    
if (repeatX) {
        x 
%= pngW;
        
if (x > 0) x -= pngW;
    }
    
if (repeatY) {
        y 
%= pngH;
        
if (y > 0) y -= pngH;
    }

    
// Go!
    this.hook.enabled = 0;
    
if (!({ relative: 1, absolute: 1 }[elm.currentStyle.position])) {
        elm.style.position 
= 'relative';
    }
    
var count = 0,
        xPos,
        maxX 
= repeatX ? elmW : x + 0.1,
        yPos,
        maxY 
= repeatY ? elmH : y + 0.1,
        d,
        s,
        isNew;
    
if (pngW && pngH) {
        
for (xPos = x; xPos < maxX; xPos += pngW) {
            
for (yPos = y; yPos < maxY; yPos += pngH) {
                isNew 
= 0;
                
if (!tiles.cache[count]) {
                    tiles.cache[count] 
= document.createElement('div');
                    isNew 
= 1;
                }
                
var clipR = (xPos + pngW > elmW ? elmW - xPos : pngW),
                    clipB 
= (yPos + pngH > elmH ? elmH - yPos : pngH);
                d 
= tiles.cache[count];
                s 
= d.style;
                s.behavior 
= 'none';
                s.left 
= xPos + 'px';
                s.top 
= yPos + 'px';
                s.width 
= clipR + 'px';
                s.height 
= clipB + 'px';
                s.clip 
= 'rect(' +
                    (yPos 
< 0 ? 0 - yPos : 0+ 'px,' +
                    clipR 
+ 'px,' +
                    clipB 
+ 'px,' +
                    (xPos 
< 0 ? 0 - xPos : 0+ 'px)';
                s.display 
= 'block';
                
if (isNew) {
                    s.position 
= 'absolute';
                    s.zIndex 
= -999;
                    
if (elm.firstChild) {
                        elm.insertBefore(d, elm.firstChild);
                    } 
else {
                        elm.appendChild(d);
                    }
                }
                
this.fix(d, pngSrc, 0);
                count
++;
            }
        }
    }
    
while (count < tiles.cache.length) {
        
this.fix(tiles.cache[count], ''0);
        tiles.cache[count
++].style.display = 'none';
    }

    
this.hook.enabled = 1;

    
// Cache so updates are infrequent.
    tiles.old = {
        w: elmW,
        h: elmH,
        x: bgX,
        y: bgY,
        r: bgR
    };
};


IEPNGFix.update 
= function() {
    
// Update all PNG backgrounds.
    for (var i in IEPNGFix.data) {
        
var t = IEPNGFix.data[i].tiles;
        
if (t && t.elm && t.src) {
            IEPNGFix.tileBG(t.elm, t.src);
        }
    }
};
IEPNGFix.update.timer 
= 0;

if (window.attachEvent && !window.opera) {
    window.attachEvent(
'onresize'function() {
        clearTimeout(IEPNGFix.update.timer);
        IEPNGFix.update.timer 
= setTimeout(IEPNGFix.update, 100);
    });
}

 

转载于:https://www.cnblogs.com/samlin/archive/2010/01/11/1644273.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从草根到百万年薪程序员的十年风雨之路,吊打面试官系列!

开头 大家好&#xff0c;我是G哥&#xff0c;目前人在荆州办事&#xff0c;但是干货还是要安排上&#xff01; 国外有一个爆火的开发人员学习路线&#xff0c;目前已经在 Github收获了 131 k star&#xff0c;Star 数量在 Github 所有仓库中排名第 9 。这个仓库有多火就不用说…

从零开始系统化学Android,值得收藏!

前言 每年的3、4月份是各大企业为明年拓展业务大量吸纳人才的关键时期&#xff0c;招聘需求集中、空缺岗位多&#xff0c;用人单位也习惯在初秋进行大规模招聘。 金九银十&#xff0c;招聘旺季&#xff0c;也是一个求职旺季。 不打无准备的仗&#xff0c;在这种关键时期&…

网易严选Java开发三面面经:java技术编程培训班

前言 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤器链&#xff0c;不同的功能经由不同的过滤器。这篇文章就是想通过一个小案例将Spring Security整合到…

网易严选Java开发三面面经:java读文件内容

一、前言 Redis 提供了5种数据类型&#xff1a;String&#xff08;字符串&#xff09;、Hash&#xff08;哈希&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Zset&#xff08;有序集合&#xff09;&#xff0c;理解每种数据类型的特点对于…

网易严选Java开发三面面经:mysql索引面试题

写在前面 最近&#xff0c;很多小伙伴出去面试都被问到了Spring问题&#xff0c;关于Spring&#xff0c;细节点很多&#xff0c;面试官也非常喜欢问一些很细节的技术点。所以&#xff0c;在 Spring 专题中&#xff0c;我们尽量把Spring的每个技术细节说清楚&#xff0c;将透彻…

网易严选Java开发三面面经:南京黑马java培训怎么样

个人背景 如标题所示&#xff0c;我的个人背景非常简单&#xff0c;Java开发经验1年半&#xff0c;学历普通&#xff0c;2本本科毕业&#xff0c;毕业后出来就一直在Crud&#xff0c;在公司每天重复的工作对我的技术提升并没有什么帮助&#xff0c;但小镇出来的我也深知自我努…

网易架构师深入讲解Java开发!BAT等大厂必问技术面试题

前言 MyBatis是目前非常流行的ORM框架&#xff0c;它的功能很强大&#xff0c;然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路&#xff0c;并且讨论MyBatis的几个核心部件&#xff0c;然后结合一个select查询实例&#xff0c;深入代码&#xff0c;来探究MyBa…

网易资深Java架构师:java数组对象转为list集合

前言 现在刷抖音经常可以看到一些老外街坊&#xff0c;问他们最想把什么带回自己的国家&#xff0c;我听过很多的回答都是&#xff1a;淘宝&#xff0c;支付宝&#xff0c;美食&#xff0c;微信&#xff0c;外卖&#xff0c;高铁等等。 确实如此&#xff0c;随着国家的快速发…

网易资深Java架构师:java方法的定义和使用

前言 今年因为这个疫情&#xff0c;感觉这是从工作以来过的最久的一个年了&#xff0c;在家呆的时间不是一般的久&#xff0c;算一算有好几个月呢&#xff01;我大概是3月底快4月了才出门&#xff0c;投了超多的简历&#xff0c;天天面试面试面试面试面试面试面试…庆幸的是还…

PHP----学生管理系统

闲来无事花费两天时间写了份简易版的学生管理系统 源码地址:https://www.cnblogs.com/post/ReadAuth?blogId509327&PostId11333758&url%2Fbyczyz%2Fprotected%2Fp%2F11333758.html 转载于:https://www.cnblogs.com/byczyz/p/11333760.html

网易资深Java架构师:jdkjrejvm的区别和联系

前言 作为同时具备高性能、高可靠和高可扩展性的典型键值数据库&#xff0c;Redis不仅功能强大&#xff0c;而且稳定&#xff0c;理所当然地成为了大型互联网公司的首选。 众多大厂在招聘的时候&#xff0c;不仅会要求面试者能简单地使用Redis&#xff0c;还要能深入地理解底…

深度学习之开端备注

Adagrad //适合稀疏样本 RMSprop//借鉴Adagrad的思想&#xff0c;改进使得不会出现学习率越来越低的问题 由此可见Adadelta既不需要输入学习率等参数&#xff0c;而且表现得非常好&#xff01;&#xff01;但是我试了几次&#xff0c;这个优化器效果极差&#xff01;&#xff0…

网易资深Java架构师:疫情对java行业的影响分析

前言 在实际开发&#xff0c;Redis使用会频繁&#xff0c;那么在使用过程中我们该如何正确抉择数据类型呢&#xff1f;哪些场景下适用哪些数据类型。而且在面试中也很常会被面试官问到Redis数据结构方面的问题&#xff1a; Redis为什么快呢&#xff1f;为什么查询操作会变慢了…

美团java研发岗二面:java静态方法存储在哪个区

思维导图 前言 在很多时候&#xff0c;我们都可以在各种框架应用中看到ZooKeeper的身影&#xff0c;比如Kafka中间件&#xff0c;Dubbo框架&#xff0c;Hadoop等等。为什么到处都看到ZooKeeper&#xff1f; 一、 前些年&#xff0c;互联网行业里对架构师这个岗位的标准还不是…

阿里P8亲自教你!mysql列转行

前言 今日博主听闻&#xff0c;现在很多培训出来的应届生薪资都赶上了摸爬滚打两三年的朋友&#xff0c;讲道理&#xff0c;这说不过去啊 作为同行来说&#xff0c;这个行业发展很快&#xff0c;技术更新很快&#xff0c;淘汰也很快&#xff0c;千万不要再找借口了&#xff0…

阿里P8亲自教你!熬夜整理华为最新Java笔试题

前言 Mysql的锁机制确实非常重要&#xff0c;所以在这里做一个全面的总结整理&#xff0c;便于以后的查阅&#xff0c;也分享给大家。 Mysql的锁机制还是有点难理解的&#xff0c;所以这篇文章采用图文结合的方式讲解难点&#xff0c;帮助大家理解&#xff0c;讲解的主要内容…

阿里P8亲自讲解!javawhile循环语句用法

前言 作为一个已经毕业的计算机专业学长&#xff0c;其实几年大学走来还是挺感慨万千的。&#xff08;说明一下&#xff1a;一本&#xff0c;非958、211&#xff09; 老实说&#xff0c;上大学之前填志愿选专业的时候没有任何打算&#xff0c;就觉得学海熬到头了&#xff0c;向…

阿里P8亲自讲解!java中级开发工程师需要掌握的技能

前言 关于技术人如何成长的问题&#xff0c;一直以来都备受关注&#xff0c;因为程序员职业发展很快&#xff0c;即使是相同起点的人&#xff0c;经过几年的工作或学习&#xff0c;会迅速拉开极大的差距&#xff0c;所以技术人保持学习&#xff0c;提升自己&#xff0c;才能够…

阿里P8亲自讲解!java分布式需要学什么技术

引言 最近项目上线的频率颇高&#xff0c;连着几天加班熬夜&#xff0c;身体有点吃不消精神也有些萎靡&#xff0c;无奈业务方催的紧&#xff0c;工期就在眼前只能硬着头皮上了。脑子浑浑噩噩的时候&#xff0c;写的就不能叫代码&#xff0c;可以直接叫做Bug。我就熬夜写了一个…

[New Portal]Windows Azure Web Site (4) Web Site Gallery

《Windows Azure Platform 系列文章目录》 前言&#xff1a;最近因为工作变动&#xff0c;更新博客的速度变慢了。笔者在这边感到非常抱歉&#xff0c;以后尽量每周更新一篇Windows Azure的博客给大家。 好了&#xff0c;我们回到本章内容。 Windows Azure通过Web Role和Worker…