0

0

div自适应宽度的问题,求高手帮忙!_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-21 09:26:22

|

1100人浏览过

|

来源于php中文网

原创


在左侧做了一个可以自动伸缩的菜单栏,想让菜单栏展开时,完全展开右面带地图的div,而不是被左面的菜单遮住一部分,该怎么解决?

这是菜单展开的图:搜索

这是菜单隐藏的图:

这是body:
    

        
 
        

             

        
    
    

这是样式表:

    #common_box{
     width:280px;
     height :100%;
     position:fixed;
     left:0;
     top:40px;
     border:1px solid #789;
     background:#fff;
     z-index:99
    }
    #cli_on{
     width:10px;
     height:100%;
     float:right;
     cursor:pointer;
     background:#ccc;
     text-align:center;
     line-height:180px;
     font-size:24px;
     color:#f00;
    }
    .mydiv
    {
        position:fixed;
        top:40px;
        left:0px;
        width: 100%;
        height:650px;
        }

这是伸缩菜单的js:
    
就是想改成像这个网站论坛首页左面菜单栏的那种感觉。

Booltool
Booltool

常用AI图片图像处理工具箱

下载

回复讨论(解决方案)

你这个页面的布局不对啊,你看你使用的是position:fixed。在控制显示位置的,这个很明显的,就会出现覆盖这个问题了。

这个你可以这么处理:
左侧的那块,使用定位处理,而右侧的那块,不使用定位,但是使用一个margin-left来控制左侧空出来的距离

当你左侧的更改时,同时改变右侧的那个margin-left的值就行了。

我这么说,能想明白吗?

mydiv{	margin-top:40px;	background-color:#eee;	height:650px;	margin-left:280px;}


window.onload = function () {	var common_box = document.getElementById("common_box");	var cli_on = document.getElementById("cli_on");	var mapDiv = document.getElementById("mapDiv");	//zheli	var flag = true, r_len = 0, timer = null;	cli_on.onclick = function () {		if (flag) {			r_len = 0;			timer = setInterval(slideright, 10);		} else {			r_len = -270;			timer = setInterval(slideleft, 10);		}	}	function slideright() {		if (r_len <= -270) {			flag = !flag;			cli_on.innerHTML = "";			clearInterval(timer);			return false;		} else {			r_len -= 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}	function slideleft() {		if (r_len >= 0) {			clearInterval(timer);			flag = !flag;			cli_on.innerHTML = "";			return false;		} else {			r_len += 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}}


在你的基础上,稍微改了一点。试试是你要的效果吗?没有测兼容性。

不过,一些效果的话,html部分的布局也是很重要的,先想好布局,之后的js和css写起来,才会更简单的。

感觉应该需要改变div的宽度。用left什么的左右移动菜单和地图,由于之前它们已经绘制完毕了,左右移动时,不是遮盖了自身的一部分(这个效果应该只是左侧菜单需要的),就是由于初始时加载的画面太小已经固定,不能动态适应宽度变化(当你向左侧移动地图时,右侧新增的部分应该不会被自动填充)。
因此,我建议应该在timer的事件中改变两侧div的宽度,同时重新填充div中的内容,使其适应宽度的变化。

	
菜单栏
地图

感觉应该需要改变div的宽度。用left什么的左右移动菜单和地图,由于之前它们已经绘制完毕了,左右移动时,不是遮盖了自身的一部分(这个效果应该只是左侧菜单需要的),就是由于初始时加载的画面太小已经固定,不能动态适应宽度变化(当你向左侧移动地图时,右侧新增的部分应该不会被自动填充)。
因此,我建议应该在timer的事件中改变两侧div的宽度,同时重新填充div中的内容,使其适应宽度的变化。

	
菜单栏
地图


嗯,按照你的帮助修改运行了一下代码,果真左面的菜单栏不会覆盖右面的地图了,但在菜单栏隐藏时,右面的地图会在右面留出15%的空白,没法被自动填充


感觉应该需要改变div的宽度。用left什么的左右移动菜单和地图,由于之前它们已经绘制完毕了,左右移动时,不是遮盖了自身的一部分(这个效果应该只是左侧菜单需要的),就是由于初始时加载的画面太小已经固定,不能动态适应宽度变化(当你向左侧移动地图时,右侧新增的部分应该不会被自动填充)。
因此,我建议应该在timer的事件中改变两侧div的宽度,同时重新填充div中的内容,使其适应宽度的变化。

	
菜单栏
地图


嗯,按照你的帮助修改运行了一下代码,果真左面的菜单栏不会覆盖右面的地图了,但在菜单栏隐藏时,右面的地图会在右面留出15%的空白,没法被自动填充
我写的效果就是需要手动重绘地图的,你需要将
mapDiv.innerHTML = "地图";
这些地方替换成地图的加载代码,这样地图才能自动适应画面变化。

mydiv{	margin-top:40px;	background-color:#eee;	height:650px;	margin-left:280px;}


window.onload = function () {	var common_box = document.getElementById("common_box");	var cli_on = document.getElementById("cli_on");	var mapDiv = document.getElementById("mapDiv");	//zheli	var flag = true, r_len = 0, timer = null;	cli_on.onclick = function () {		if (flag) {			r_len = 0;			timer = setInterval(slideright, 10);		} else {			r_len = -270;			timer = setInterval(slideleft, 10);		}	}	function slideright() {		if (r_len <= -270) {			flag = !flag;			cli_on.innerHTML = "";			clearInterval(timer);			return false;		} else {			r_len -= 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}	function slideleft() {		if (r_len >= 0) {			clearInterval(timer);			flag = !flag;			cli_on.innerHTML = "";			return false;		} else {			r_len += 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}}


在你的基础上,稍微改了一点。试试是你要的效果吗?没有测兼容性。

不过,一些效果的话,html部分的布局也是很重要的,先想好布局,之后的js和css写起来,才会更简单的。


试了一下,效果实现了!是不是用position:fixed;直接固定位置挺不好的?



感觉应该需要改变div的宽度。用left什么的左右移动菜单和地图,由于之前它们已经绘制完毕了,左右移动时,不是遮盖了自身的一部分(这个效果应该只是左侧菜单需要的),就是由于初始时加载的画面太小已经固定,不能动态适应宽度变化(当你向左侧移动地图时,右侧新增的部分应该不会被自动填充)。
因此,我建议应该在timer的事件中改变两侧div的宽度,同时重新填充div中的内容,使其适应宽度的变化。

	
菜单栏
地图


嗯,按照你的帮助修改运行了一下代码,果真左面的菜单栏不会覆盖右面的地图了,但在菜单栏隐藏时,右面的地图会在右面留出15%的空白,没法被自动填充
我写的效果就是需要手动重绘地图的,你需要将
mapDiv.innerHTML = "地图";
这些地方替换成地图的加载代码,这样地图才能自动适应画面变化。
地图这个只在mapDiv里加载,想要完全加载只能靠改变div的宽度来实现了

定位浮动什么的,我会觉得,能少用,就尽量少用,如果用的太多,以后添加功能,更改样式时,都会变得更难。

当然,有时候也不得不用,只要不是把所有的布局,都用float,position这样就好了。

也算是个人习惯。

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 3.8万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号