frameset 给主框架添加滚动条

        之前做了一个Web项目,用到了frameset框架,具体设计如下:

<frameset rows="130,*" cols="*" frameborder="no" border="0" framespacing="0" >
    <frame src="page.htm" id="topFrame" name="topFrame" scrolling="no">
    <frameset cols="230,*" frameborder="NO" border="0" framespacing="0">
        <frame src="menu.htm" noresize id="menu" name="menu" scrolling="no" >
        <frame src="statistics.htm" noresize id="main" name="main" scrolling="no">
    </frameset>
</frameset>

        后来发现当main.htm太大时,页面只有一部分出现滚动条,不论怎么设置frame中scrolling的属性,就是无法在整张页面上出现滚动条。在网上搜索了很多资料,最后网友所提及的<iframe>给了我提示,就尝试着用了一下,最后真的达到了自己所需要的效果。

        解决方法很简单,就是先建一个页面,加个<iframe>,指向原先的页面就可以了。比如:

test.htm

<html>
<head>
<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>测试页面</title>
<style>
body{
    scrollbar-base-color:#C0D586;
    scrollbar-arrow-color:#FFFFFF;
    scrollbar-shadow-color:DEEFC6;
    width:100%;
    height:1100px;
    margin:0px; 
    padding:0px
}
</style>
</head>
    <!--解决frameset滚动条的方法 -->
    <body>
	    <iframe src="main.htm" style="height:100%;width:100%;border-width: 0px; ">
       </iframe>
	</body>
</html>


main.htm

<html>
<head>
<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>测试页面</title>
<style>
body{
    scrollbar-base-color:#C0D586;
    scrollbar-arrow-color:#FFFFFF;
    scrollbar-shadow-color:DEEFC6; 
}

</style>
</head>
<frameset rows="130,*" cols="*" frameborder="no" border="0" framespacing="0" >
    <frame src="top.htm" id="topFrame" name="topFrame" scrolling="no">
    <frameset cols="230,*" frameborder="NO" border="0" framespacing="0">
        <frame src="menu" noresize id="menu" name="menu" scrolling="no" >
        <frame src="${ctx}/user/toStaticis.do" noresize id="main" name="main" scrolling="no">
    </frameset>
</frameset>
<noframes>
	<body>您的浏览器不支持框架!</body>
</noframes>
</html>


最终出现的效果:












  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
frameset已经被HTML5废弃,不再被推荐使用。现在推荐使用CSS来布局网页。如果你的网页使用了frameset布局,建议将其改为使用CSS Flexbox或Grid布局。 如果你的网页必须使用frameset布局,那么可以使用JavaScript来实现多个frame共用一个滚动条。 具体实现步骤如下: 1. 在frameset添加一个垂直分割线,将frameset分为上下两个部分。 2. 在上部分的frame添加一个内联框架(iframe),用于显示需要滚动的内容。 3. 在下部分的frame添加一个空的内联框架,用于占位。 4. 在上部分的frame添加一个JavaScript脚本,用于获取下部分的内联框架,并将其高度设置为0。 5. 在上部分的frame添加一个滚动条,用于控制内联框架的滚动。 示例代码如下: ```html <frameset cols="100%"> <frame src="top.html" scrolling="no" /> <frame src="bottom.html" scrolling="no" /> </frameset> ``` 在上部分的frame(top.html)添加以下JavaScript代码: ```javascript var bottomFrame = parent.frames[1].document.getElementsByTagName("iframe")[0]; bottomFrame.style.height = "0"; var scrollbar = document.createElement("div"); scrollbar.style.position = "fixed"; scrollbar.style.bottom = "0"; scrollbar.style.left = "0"; scrollbar.style.width = "100%"; scrollbar.style.height = "20px"; scrollbar.style.backgroundColor = "gray"; document.body.appendChild(scrollbar); scrollbar.addEventListener("scroll", function() { bottomFrame.contentWindow.scrollTo(0, this.scrollTop); }); ``` 这段代码首先获取了下部分的内联框架,并将其高度设置为0,以便让滚动条和上部分的内容占据整个页面。然后,创建了一个固定在页面底部的滚动条,并添加了一个滚动事件,用于控制下部分内联框架的滚动。 在下部分的frame(bottom.html),不需要添加任何代码,只需留空即可。 这样,就可以实现frameset上下分布的多个frame共用一个滚动条的效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值