一个常见布局问题的讨论

须要实现的是一个简单的左右布局页面,左側是一个固定定位的导航栏,右側是主体内容。当中右側下部须要实现一个footer,这个页脚须要在浏览器上下拉伸的时候始终固定在右側下方,同一时候。当页面缩放到小于右側主题内容高度时,footer不会超过主体内容。

详细见下图:

上述的html结构例如以下:

<body>
	<div class="nav">左側固定导航栏</div>
	<div class="content">
		<div class="text">我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br></div>
	</div>
	<div class="footer_con"><span class="footer">我是footer</span></div>
</body>

这在实现上。也没有其它特别的难度:

首先,左側导航栏使用fixed定位,设置top 、 bottom 、 left都为0。

                              .nav{
					width: 120px;
					height: 100%;
					position: fixed;
					left: 0px;
					bottom: 0px;
					background-color: green;
			}

右側内容部分是实际内容大小撑开,下部的footer測试须要依据浏览器的上下拉伸固定在页面底端,这首先会想到用fixed,可是会出现例如以下问题,

也就是会覆盖上面的主体内容,这要就会使用绝对定位:

                            .footer{
					position: absolute;
					left: 0px;
					right: 0px;
					bottom: 0px;
					z-index: 100;
					background-color: red;
					margin-left: 120px;
			              }

这要设置后,会发现另外一个问题,假设设置以body为据对定位基准,设置body的position为relative,或者以footer类的父元素定位position为relative,都会出现直接接在内容部分后面,而不会一直保持在底部。例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ4NzU2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

为此。还是选用以body为绝对定位基准,由于须要的效果是一直保持在页面底部。此时假设将body的高度设置为浏览器当前窗体高度,那么就能够将footer撑究竟部。

当中涉及到一个浏览器处理页面的问题:

浏览器默认都将html、body元素设置为高度为0,假设不设置高度的话。此时body的正常文档流的子元素的实际高度会撑开body而使得body的高度也是此实际高度。假设设置了body的高度,则会以此高度显示。假设设置了html的高度,则能够以min-height:100%的方式来设置body的高度继承html元素的高度而实现全屏显示。min-height的定义例如以下:

描写叙述
length 定义元素的最小高度。默认值是 0。

% 定义基于包括它的块级对象的百分比最小高度。

inherit 规定应该从父元素继承 min-height 属性的值。

必须是min-height。不能使用height。由于设置height为100%时就是设置height为浏览器当前窗体的高度。就也会出现覆盖主体内容的问题。

此处,就是要实现内容元素全屏显示。而footer元素脱离了文档流,同一时候以body为绝对定位基准,因此假设body为整个窗体大小,那么footer的bottom:0就会固定在页面的底部。同一时候。因为页面最低高度为100%,设置footer的直系父元素footer-con的高度和footer的高度同样。那么当减小浏览器窗体的高度时,footer-con和内容部分是body的正常文档流,小于此高度时,也就是body的100%高度,浏览器就会出现滚动栏,而此时body的底部一直会是footer-con元素的底部,那么footer设置的bottom为0就会停留在foote-con元素的底部,从而就不会超出而往上覆盖主体内容部分。

这就是这里使用绝对定位实现的效果。

终于的效果例如以下,当浏览器往上缩小高度使得footer达到主体内容时。不会跟着浏览器继续往上:

整个分析也是对巧妙使用绝对定位实现特殊效果的一个锻炼,有时候看似简单的东西中间都能够蕴含值得思考的内容。

时间: 2024-10-27 04:55:34

一个常见布局问题的讨论的相关文章

Android 布局学习之——Layout(布局)具体解释二(常见布局和布局參数)

 [Android布局学习系列]   1.Android 布局学习之--Layout(布局)具体解释一   2.Android 布局学习之--Layout(布局)具体解释二(常见布局和布局參数)   3.Android 布局学习之--LinearLayout的layout_weight属性   4.Android 布局学习之--LinearLayout属性baselineAligned的作用及baseline    Layout Parameters(布局參数): 在XML文件里,我们常常看到类

Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

[Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.Android 布局学习之——LinearLayout的layout_weight属性   4.Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline    Layout Parameters(布局参数): 在XML文件中,我们经常看到类似与lay

&lt;转载&gt;div+css布局教程之div+css常见布局结构定义

在使用div+css布局时,首先应该根据网页内容进行结构设计,仔细分析和规划你的页面结构,你可能得到类似这样的几块: 页面层容器.页面头部.标志和站点名称.站点导航(主菜单).主页面内容.子菜单.搜索框.页脚(版权和有关法律声明). 通常采用DIV元素来将这些结构定义出来,类似这样: <div id="Container"></div> 页面层容器 <div id="header"></div> 页面头部 <di

android开发中常见布局的注意点

常见布局的注意点 线性布局: 必须有一个布局方向 水平或者垂直 在垂直布局中 只有左对齐 右对齐 水平居中生效 在水平布局中 只有顶部对齐 底部对齐 垂直居中生效 权重:组件按比例分配屏幕的剩余部分(即现先分配组件的长度 再按权重分配屏幕剩余的部分)所以使用权重的时候推荐设置组件的长度或宽度为0dp 相对布局: 组件默认的位置都是左上角,组件之间可以重叠 可以相对于父元素上下左右对齐,相对于父元素 水平居中 垂直居中,水平垂直同时居中 可以相对于其他组件上下左右对齐 可以布局与其他组件的上下左右

CSS常见布局问题整理

实现div的水平居中和垂直居中 多元素水平居中 实现栅格化布局 1. 实现div的水平居中和垂直居中 实现效果: 这大概是最经典的一个题目了,所以放在第一个. 方法有好多, 一一列来 主要思路其实就是 使用position,相对父元素做绝对定位(设置百分比[由父元素宽高调节子元素大小]/设置margin和相对位置(确定宽高)) 使用flex属性 使用tranfrom做相对位移的调节 1) 只适用: 宽高已定 设置position: absolute(父元素记得设置: relative), 然后t

纯CSS实现移动端常见布局——高度和宽度挂钩的秘密

纯CSS实现移动端常见布局--高度和宽度挂钩的秘密 不踩坑不回头.之前我在一个项目中大量使用css3的calc计算属性.写代码的时候真心不要太爽啊-可是在项目上线之后,才让我崩溃了,原因非常easy,在低于安卓4.4的版本号的手机上,自带的浏览器是不支持这个属性的. 好吧,这还不时最坑爹的,在国产的猎豹浏览器以及其它一些浏览器里面,有可能也不支持.总而言之,这个坑踩大了.只是没关系,大部分的常见布局问题,我都能解决掉.可是,以下这个-.我真心有点费解.只是,没关系,通过我的研究,终于还是非常快用

干货!各种常见布局实现+知名网站布局分析1.0版

各种页面常见布局+知名网站实例分析+相关阅读推荐 阅前必看:本文总结了各种常见的布局实现,网上搜的"史上最全布局"好像也没有这么全吧?哈哈!这篇文章就当作一个知识整理吧.当然,文章肯定还有不足的地方,至少目前来看,有两点我是不满足的.第一点,兼容性还没有时间去一一测试,后续再补吧!第二点,缺少每个方法的优缺点分析,由于害怕自己总结的不好或不足,不是很有把握的东西,暂时还是不写了,以免误导他人,以后再看吧!各位读者如果发现问题或者有什么意见,欢迎提出!还有就是这篇文章没提到的其他布局,待

常见布局、媒体查询

常见布局实现: 作者:Sweet_KK 链接:https://juejin.im/post/5aa252ac518825558001d5de 来源:掘金 一.水平居中 文本/行内元素/行内块元素居中 #parent{ text-align: center; } ==text-align== 只控制行内内容(文字.行内元素.行内块元素)如何相对于他的块父元素对齐 优缺点 优点:简单快捷,容易理解,兼容性非常好 缺点:只对行内内容有效:属性会继承影响到后代行内内容:如果子元素宽度大于父元素宽度则无效

一个ListView布局的不断演化

刚出来工作,就负责一个APP的某块功能的编写,该功能就是类似微博那样的界面.微博界面的编写实际上是非常复杂的,虽然它只是一个ListView,但要想让这个ListView滑得动,是的,在一些配置低的手机,随便一个负载内容多的Item,都有可能导致OOM...如果只是简单的为了实现了效果,可以选择将所有内容都写在xml文件,如果布局不好的话,就会出现嵌套过多的情况,同样也会出现OOM的情况...就算不会出现OOM的情况,也能滑得动,也会面临是否能够滑得快... 要想能滑得动,也能滑得快,就要动点脑