让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]-->

 

转载于:https://www.cnblogs.com/cnfiowen/archive/2010/06/25/1765363.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值