网页前端div的高度设置

首先我们要区分关于CSS里height的一个误区,width:100%是保持和父块宽度一样,但是有的时候我们设置height:100%会无效,为什么呢
因为我们在div设计时会控制width,但是一般不会去设置height,除非你想要一个绝对布局另当别论,不然我们都会让里面的内容去自适应它的height,这就是height:100%无效的原因,你不能对一个自适应高度的父类去保持和它一样的高度,父类的高度应该要是确定的。
那么对于高度,确定的高度这里不谈很好实现,有两种高度,全屏高度保持和另一div相同高度怎么实现呢?
对于全屏高度,你可以选择对<body>标签设置height:100%,再对div设置高度为height:100%,但这样不好,不建议直接对<body>整个块修饰成100%的高度,如果你想对某个块设置成整个网页的高度,可以使用100vh。
vh就是当前屏幕可见高度的1%,也就是说height:100vh == height:100%;
但是有个好处是当元素没有内容时候,设置height:100%该元素不会被撑开,
但是设置height:100vh,该元素会被撑开屏幕高度一致
如果这个页面头顶有个导航栏,我有个块想要剩余的部分高度怎么办呢?假设头顶的导航栏是100px,那么写calc(100vh - 100px)就行了,要注意的是我-号前后都空了一格,不是为了排版好看,而是如果不空,浏览器不能识别这个式子,当然如果我们非要设置某个块的高度,通常都用min-height,如果里面的内容超过我设置的高度了,或者说以后有什么原因我想改变他的高度,可以让他有个自适应的余地
如果你想保持和一个div的高度一致怎么办,比如说有个左导航栏,右边是正文,正文内容不能确定,导航栏一下比正文长一下比正文短,那排版肯定不好看,想要时刻保持高度一致,用CSS我们就无法实现了,就需要用到脚本来帮助我们实现了

$(function (){
	var height=$(".page-content").outerHeight();//获取到块高度
	$(".nav-left").css("height",height);//匹配
});

那如果我正文的div在运行过程中会变怎么办,比如有隐藏的元素,那不就又不一样了,这样我们就需要把这段代码加到一个时刻监视块高度的函数里
height.js

//一个jquery的插件,用于监听元素宽度高度变化,调用方式:
    //$("classname").bind('resize',function(){
        //callback
        //...
        //...
    //});
 (function ($, window, undefined) {
            var elems = $([]),
                jq_resize = $.resize = $.extend($.resize, {}),
                timeout_id,
                str_setTimeout = 'setTimeout',
                str_resize = 'resize',
                str_data = str_resize + '-special-event',
                str_delay = 'delay',
                str_throttle = 'throttleWindow';
                jq_resize[str_delay] = 250;
                jq_resize[str_throttle] = true;
                $.event.special[str_resize] = {
                    setup: function () {
                        if (!jq_resize[str_throttle] && this[str_setTimeout]) {
                            return false;
                        }
                        var elem = $(this);
                        elems = elems.add(elem);
                        $.data(this, str_data, {
                            w: elem.width(),
                            h: elem.height()
                        });
                        if (elems.length === 1) {
                            loopy();
                        }
                    },
                    teardown: function () {
                        if (!jq_resize[str_throttle] && this[str_setTimeout]) {
                            return false;
                        }
                        var elem = $(this);
                        elems = elems.not(elem);
                        elem.removeData(str_data);
                        if (!elems.length) {
                            clearTimeout(timeout_id);
                        }
                    },
                    add: function (handleObj) {
                        if (!jq_resize[str_throttle] && this[str_setTimeout]) {
                            return false;
                        }
                        var old_handler;
 
                        function new_handler(e, w, h) {
                            var elem = $(this),
                                data = $.data(this, str_data);
                            data.w = w !== undefined ? w : elem.width();
                            data.h = h !== undefined ? h : elem.height();
                            old_handler.apply(this, arguments);
                        }
 
                        if ($.isFunction(handleObj)) {
                            old_handler = handleObj;
                            return new_handler;
                        } else {
                            old_handler = handleObj.handler;
                            handleObj.handler = new_handler;
                        }
                    }
                };
 
                function loopy() {
                    timeout_id = window[str_setTimeout](function () {
                        elems.each(function () {
                            var elem = $(this),
                                width = elem.width(),
                                height = elem.height(),
                                data = $.data(this, str_data);
                            if (width !== data.w || height !== data.h) {
                                elem.trigger(str_resize, [data.w = width, data.h = height]);
                            }
                        });
                        loopy();
                    }, jq_resize[str_delay]);
                }
            })(jQuery, this);
$(function (){
	var height=$(".page-content").outerHeight();
	$(".nav-left").css("height",height);
	$(".page-content").bind('resize',function(){
		var height=$(".page-content").outerHeight();
		$(".nav-left").css("height",height);
	});
});

这样就能实现高度的一个时刻保持一样了

全部评论

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务