让IE6支持min-width和max-width的方法


说明:让 IE6 及其以下版本支持 CSS 中 min/max-width/height 属性

复制代码 代码如下:

@if (@_win32 && @_jscript_version>4)
var minmax_elements;
minmax_props= new Array(
new Array('min-width', 'minWidth'),
new Array('max-width', 'maxWidth'),
new Array('min-height','minHeight'),
new Array('max-height','maxHeight')
);
// Binding. Called on all new elements. If <body>, initialise; check all
// elements for minmax properties
function minmax_bind(el) {
var i, em, ms;
var st= el.style, cs= el.currentStyle;
if (minmax_elements==window.undefined) {
// initialise when body element has turned up, but only on IE
if (!document.body || !document.body.currentStyle) return;
minmax_elements= new Array();
window.attachEvent('onresize', minmax_delayout);
// make font size listener
em= document.createElement('div');
em.setAttribute('id', 'minmax_em');
em.style.position= 'absolute'; em.style.visibility= 'hidden';
em.style.fontSize= 'xx-large'; em.style.height= '5em';
em.style.top='-5em'; em.style.left= '0';
if (em.style.setExpression) {
em.style.setExpression('width', 'minmax_checkFont()');
document.body.insertBefore(em, document.body.firstChild);
}
}
// transform hyphenated properties the browser has not caught to camelCase
for (i= minmax_props.length; i-->0;)
if (cs[minmax_props[i][0]])
st[minmax_props[i][1]]= cs[minmax_props[i][0]];
// add element with properties to list, store optimal size values
for (i= minmax_props.length; i-->0;) {
ms= cs[minmax_props[i][1]];
if (ms && ms!='auto' && ms!='none' && ms!='0' && ms!='') {
st.minmaxWidth= cs.width; st.minmaxHeight= cs.height;
minmax_elements[minmax_elements.length]= el;
// will need a layout later
minmax_delayout();
break;
} }
}
// check for font size changes
var minmax_fontsize= 0;
function minmax_checkFont() {
var fs= document.getElementById('minmax_em').offsetHeight;
if (minmax_fontsize!=fs && minmax_fontsize!=0)
minmax_delayout();
minmax_fontsize= fs;
return '5em';
}
// Layout. Called after window and font size-change. Go through elements we
// picked out earlier and set their size to the minimum, maximum and optimum,
// choosing whichever is appropriate
// Request re-layout at next available moment
var minmax_delaying= false;
function minmax_delayout() {
if (minmax_delaying) return;
minmax_delaying= true;
window.setTimeout(minmax_layout, 0);
}
function minmax_stopdelaying() {
minmax_delaying= false;
}
function minmax_layout() {
window.setTimeout(minmax_stopdelaying, 100);
var i, el, st, cs, optimal, inrange;
for (i= minmax_elements.length; i-->0;) {
el= minmax_elements[i]; st= el.style; cs= el.currentStyle;
// horizontal size bounding
st.width= st.minmaxWidth; optimal= el.offsetWidth;
inrange= true;
if (inrange && cs.minWidth && cs.minWidth!='0' && cs.minWidth!='auto' && cs.minWidth!='') {
st.width= cs.minWidth;
inrange= (el.offsetWidth<optimal);
}
if (inrange && cs.maxWidth && cs.maxWidth!='none' && cs.maxWidth!='auto' && cs.maxWidth!='') {
st.width= cs.maxWidth;
inrange= (el.offsetWidth>optimal);
}
if (inrange) st.width= st.minmaxWidth;
// vertical size bounding
st.height= st.minmaxHeight; optimal= el.offsetHeight;
inrange= true;
if (inrange && cs.minHeight && cs.minHeight!='0' && cs.minHeight!='auto' && cs.minHeight!='') {
st.height= cs.minHeight;
inrange= (el.offsetHeight<optimal);
}
if (inrange && cs.maxHeight && cs.maxHeight!='none' && cs.maxHeight!='auto' && cs.maxHeight!='') {
st.height= cs.maxHeight;
inrange= (el.offsetHeight>optimal);
}
if (inrange) st.height= st.minmaxHeight;
}
}
// Scanning. Check document every so often until it has finished loading. Do
// nothing until <body> arrives, then call main init. Pass any new elements
// found on each scan to be bound
var minmax_SCANDELAY= 500;
function minmax_scan() {
var el;
for (var i= 0; i<document.all.length; i++) {
el= document.all[i];
if (!el.minmax_bound) {
el.minmax_bound= true;
minmax_bind(el);
} }
}
var minmax_scanner;
function minmax_stop() {
window.clearInterval(minmax_scanner);
minmax_scan();
}
minmax_scan();
minmax_scanner= window.setInterval(minmax_scan, minmax_SCANDELAY);
window.attachEvent('onload', minmax_stop);
@end @*/

由于只有 IE6 及其以下版本不支持min/max-width/height 属性,因此,我们可以用下面的调用方式:
Code:
复制代码 代码如下:

<!--[if lt IE 7]>
<script type="text/javascript" src="minmax.js"></script>
<![endif]-->



相关阅读:
Oracle修改表结构
标签 li 是不是块级元素分析
关于Chat模块控件化的想法
JavaScript入门教程(4) js浏览器对象
Enterprise JavaBeans导论三
《PHP编程最快明白》第三讲:php数组
javascript引用对象的途径
在Win 2003中为SNMP服务配置网络安全性
ASP.NET技巧:请求网址并解析返回的html
js+css使文本框自动适应内容的高度
.NET 常用功能和代码小结
什么是ipv4 ipv6 ipv9 它们有什么区别
SQL Server 2008行数据和页数据压缩介绍
sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 游天津市自然博物馆 不可不知的18个做人硬道理 五五保密法制宣传教育工作自查报告 再写啤酒 召开会议部署“规范执法行为促进执法公正”专项整改活动汇报 请铭记这些人 应届毕业生2014年年度总结 经典QQ心情短语:当我难过时,你能给我一个拥抱。 深爱她 叫风筝,还是叫为爱痴狂。 我的厉害外婆 初中入团志愿书600字范本 凤凰广场的导游词作文350字 腊八祝福的句子 师爱无言 落叶飘零的季节 文秘工作实习心得体会 五彩缤纷的秋天300字 老师不在时作文500字 怎么样创造人生价值 课间十分钟 季王文帅 我心目中未来的校园 标准实习报告结尾 XXX局医疗费管理制度 心无纷扰是幸福 对心灵说“All is well” C级家长 《廉颇蔺相如列传》导学案2 我爱足球250字 “倾城”之美 爱国电影没有共产党就没有新中国观后感 县国土局建设工程专项治理自查报告 残缺的诗歌 被遗忘的那3年 温暖的祝福语 2015大三暑期实习报告—拿到的六把钥匙 学习微课程心得体会 而你是我的定格800字 那逝去的一抹绿色 雨嘲 狐狸、你在哪里、 关于解决人畜饮水工程资金的请示报告 27岁意大利青年创业故事 蟹老板赚钱记作文 老年 中年 少年 杭州Do都城之游 我不是个胆小鬼作文800字 鼻子酸的伤感句子 学习实践科学发展观活动动员会上的讲话 游辽宁省科学技术馆有感(八)

Copyright © 2016 phpStudy |