关于IE下滚动条的问题

如何让IE下的滚动条在内容少的时候隐藏得更彻底呢?

滚动条的出现使固定的有限空间能够展示更多的内容。但是当展示内容很少的时候,滚动条还需要吗?这个情况下,Firefox会将滚动条隐藏得很彻底,但是,IE做不到这样,还留有滚动条的灰色痕迹。对比图如下:
Firefox 3.0.1:
Firefox隐藏滚动条

IE7为例,IE6是同样的状况:
IE下滚动条隐藏得不彻底

解决这个问题,采用<body scroll="no">的方法不妥,将使这个窗口始终没有滚动条,多出的内容会被隐藏,看不到。

我们需要这样的一种解决方案:当展示内容没有超出当前窗口范围时,将滚动条隐藏得无影无踪(就像FF做得到的那样);当内容超出当前窗口范围时,滚动条要出来发挥作用(scroll="no")没做到。

采用JS实现的完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>解决IE下的滚动条显示与隐藏的自适应</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<link rel="stylesheet" type="text/css" media="screen" href="" mce_href="" />
<style>
body{margin:0;padding:0;}
</style>
</head>
<body>
<div>
<p>testtesttesttesttesttesttesttesttestte ssttesttesttesttes testtesttestte sttestte sttesttestt esttest</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
</div>
</body>
</html>
<SCRIPT LANGUAGE="JavaScript">
<!--
function autoScrollResize() {
var content_h = document.body.clientHeight; // 内容高度
var content_w = document.body.clientWidth;
var broswer_h = document.documentElement.clientHeight; // 浏览器窗口的可视高度
var broswer_w = document.documentElement.clientWidth;
if(content_h < broswer_h && content_w < broswer_w) {
document.getElementsByTagName('body')[0].style.overflow = 'hidden';
document.getElementsByTagName('html')[0].style.overflow = 'hidden'; // 在DTD标准下,为html元素设置overflow:hidden才能去掉滚动条
} else{
document.getElementsByTagName('html')[0].style.overflow = 'auto';
}
}
window.onload = function() {
if(window.ActiveXObject) { // 针对IE
autoScrollResize();
window.attachEvent("onresize", autoScrollResize); // 使用ie的resize时事件监听
}
}
//-->
</SCRIPT>

对代码进行的简要分析如下:

  1. 只是需要对IE做这个调整,if(window.ActiveXObject)只对IE起作用。
  2. onresize事件保证了在窗口缩放的时候,能够对内容是否超出窗口范围进行判断。这个事件的监听需要使用到window.attachEvent()方式才对IE起作用。
  3. document.body.clientHeight获得展示内容的高度,document.documentElement.clientHeight获得浏览器窗口的高度。
  4. 一般情况下,给body标签加上“overflow:hidden”属性即可,但好像不起作用,原因在于文档头引入了DTD标准,这个时候需要给html标签设置“overflow:hidden”属性,这样就可以完全隐藏滚动条了。

至此,解决,附图一张:

IE内容未超出 隐藏滚动条

ie内容超出 显示滚动条

 

 

1、完全隐藏
在<boby>里加入scroll="no",可隐藏滚动条;

<boby scroll="no">


2、在不需要时隐藏
指当浏览器窗口宽度或高度大于页面的宽或高时,不显示滚动条;反之,则显示;

<boby scroll="auto">

3、样式表方法
在<boby>里加入style="overflow-x:hidden",可隐藏水平滚动条;加入style="overflow-y:hidden",可隐藏垂直滚动条。
这种方法在页面头部为:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">这种兼容模式下是不行的,其它的没试过,最后终于找到了正确的方法:
被包含页面里加入

<style>
html { overflow-x:hidden; }
</style>

有一段解释是这样说的:body{ overflow-x:hidden; }在标准 DTD 下是不可以的。

4、另一种方法

<style type="text/css">
body {
overflow-x:hidden; /*隐藏水平滚动条*/
overflow-y:hidden; /*隐藏水平滚动条*/
}
</style>

此方法在页面头部为:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">这种兼容模式下也是不行的。

<style type="text/css">
html {
overflow-x:hidden; /*隐藏水平滚动条*/
overflow-y:hidden; /*隐藏水平滚动条*/
}
</style>

本文来自:http://www.aa25.cn/231.shtml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值