CSS之创建等高列布局之一

高度相等列在Web页面设计中永远是一个网页设计师的需求。如果所有列都有相同的背景色,高度相等还是不相等都无关紧要,因为你只要在这些列的父元素中设置一个背景色就可以了。但是,如果一个或多个列需要单独设置自己的背景色,那么它的视觉完整性的设计就显得非常重要了。大家都知道当初Table实现等高列布局是多么的简单,但是我们使用CSS来创建等高列布局并非是那么容易的事情

如果一个设计是固定宽度(非流体的宽度设计),那么实现多列等高效果是相当的容易。最好的技术就是使用Dan Cederholm的Faux Columns技术。只要制作一张合适的背景图片,在你多列的父元素中进行垂直铺放,从而达到一种假像(假的多列等高布局效果)。但是在流体布局中要用CSS实现多列等高的设计那就不是那么容易的事情,因为我们没有办法在使用背景图片来实现多列等高的假像了,那么是不是就没有办法实现了呢?那当然不是那么回事了,不管是实现固定布局还是流体布局的等多列等高视觉效果,方法还是蛮多的,这些方法体现了CSS的不同技术,也各有千秋,下面我们就一起来探讨Web页面中的多列等高的实现技术

下面要介绍的方法都是让我们的布局如何实现多列的等高视觉效果,正如下图所示

这里写图片描述

方法1:假等高列

这种方法是我们实现等高列最早使用的一种方法,就是使用背景图片,在列的父元素上使用这个背景图进行Y轴的铺放,从而实现一种等高列的假像

HTML:

这里写图片描述

在制作样式之前需要一张类似下面的背景图:

这里写图片描述

CSS:

这里写图片描述

这里让外部容器背景在Y轴延伸背景,三列全部左浮动,但是缺点是不适合流体布局等高列的布局,另外如果你需要更换背景色或实现其他列数的等高列时,都需要重新制作过背景图

方法2:给容器div使用单独的背景色(固定布局)

这种方法实现有点复杂,如果你理解其实现过程也是相当的简单。这种方法我们主要给每一列的背景设在单独的<div>元素上。这种方法的实现的原则是:任何<div>元素的最大高度来撑大其他的<div>容器高度。如下图所示

这里写图片描述

上图中,不管我们哪一列的高度最高,那么其三个容器“rightBack,contentBack,leftBack”的高度相应会随最高列的高列变化,下面我们一起来看其实现过程

HTML:

这里写图片描述

CSS:

这里写图片描述

这里写图片描述

看起来蛮复杂吧?其实你只要了解了它是如何的工作原理就会变得非常简单,你只要理解并掌握以下几点

第一步:首先给’.rightWrap’和’.leftWrap’还有’.contentWrap’三个列容器设置浮动让其具备包裹性,同时设置其宽度跟父容器相同,最后在三个列都和父容器等宽的前提下分别向左移动一段距离,移动的距离就是你所要设置的列的宽度,又因为这三个容器是父子关系,所以子元素的高度变化必然导致父元素的高度一起变化,所以这样最后的效果看起来就是三个列横向排布,且等高的布局。

注意:到此已经实现了三个列等高的效果,但是因为内容还都是在外部的,所以此时添加内容后的效果不好,我们要做的就是将内容继续调整

这里写图片描述

这里写图片描述

这里写图片描述

我们发现包含内容的三个div都已经在外部,我们需要将它们调整回来,很明显现在的文字都在浅绿色容器内纵向排列,我们只要知道将浅绿色容器移动回来的值,那也就意味着知道了文字移动了回来的值,因为既然是父子容器那么必然是叠加的,上面的颜色层会改住下面的层,只是现在移动开了所以露出了下面的层,所以浅绿色移动回来的值等于它当初移动出去时候的距离’黄色的宽+深绿色的宽’,这里就是320+420=740px

第二步:给每个子元素设置浮动后再将其的固定宽度设置为之前父子容器偏移的固定距离,并且让其相对定位后偏移指定的距离即可(这个距离就是320+420),因为这里是相对定位所以哪怕前面的元素通过left移动走了,原来的空间还是要进行保留,再加上浮动让后面的元素本身就和前面的元素在同行显示

用两幅图来展示其实现的过程

下图是实现上面的第二步对应的示例图,也就是容器“div.rightWrap”,“div.contentWrap”,“div.leftWrap”进行相对定位(position: releative),并展示了如何设置对应的“right”值

这里写图片描述

上图虚线代表的范围是可视范围,其中有两列背景将会溢出,解决这个只需要在最外层容器“div.rightWrap”加上“overflow:hidden”就可以进行隐藏溢出的其他背景色。接下来下图所展示的是上面所说的第五步

这里写图片描述

前面我们对三个内容元素都进行了相对定位,现在只需要按第五步将其定位回去,如上图所示。其实说到最后,你只要理解了这两幅,你就什么都清楚了

缺点:这种方法不像其他方法一样简单明了,给你理解会带来一定难度,但是只要你理解清楚了,将能帮你创建任意列数的等高布局效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转这10句话

第一句 如果我们之间有1000步的距离  你只要跨出第1步 我就会朝你的方向走其余的999步 第二句 通常愿意留下来跟你争吵的人  才是真正爱你的人 第三句 付出真心 才会得到真心  却也可能伤得彻底 保持距离 就能保护自己  却也注定永远寂寞 第四句 有时候 不…

一篇介绍VC开发OCX的文章,写得太棒了!!!

From: http://www.cnblogs.com/gengaixue/archive/2010/08/13/1799112.html VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程 开篇语&#xff1a;最近在弄ocx控件发布到asp.net网站上使用&#xff0c;就是用户在使用过程中&#xff0c;自动下载安装ocx控件。&…

Taro+react开发(37)箭头函数括号加个return

{getLearnList.map((item, index) > (<View><View key{index} className"img-title"><Text>xueyuan</Text><Image mode"widthFix" src{item.imgCoverPath} /></View></View>))}

使用webpack打包后的vue项目如何运行(express)

我们知道使用webpack打包vue项目后会生成一个dist文件夹&#xff0c;dist文件夹下有html文件和其他css、js以及图片等&#xff0c;那么打包后的文件该如何正确运行呢&#xff1f; 倘若直接打开html文件&#xff0c;会报如下错误&#xff1a; 那么该如何运行呢&#xff1f;其实…

数据链路层与交换机

1. 数据链路层的功能是什么&#xff1f;负责网络中相邻节点之间可靠的数据传输&#xff0c;并进行有效的流量和差错控制。具体地讲&#xff0c;以一次数据发送为例&#xff0c;数据链路层的作用包括数据链路的建立、维护与拆除、帧包装、帧传输、帧同步、帧的差错控制以及流量控…

编译vo-aacenc遇到的问题

sourceforge更新了vo-aacenc到0.1.3&#xff0c;就把自己的编码器也更新到最新。编译过程中无聊多测试了一下 发现一个小问题http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/下载后解压 1 [gonglinux vo-aacenc-0.1.3]$ pwd 2 /home/gong/ff4android/vo-aacenc…

CSS之创建等高列布局之二

3. 给容器div使用单独的背景色&#xff08;流体布局&#xff09; 这种布局可以说是就是第二种布局方法&#xff0c;只是这里是一种多列的流体等高列的布局方法。前面也说过了&#xff0c;其实现原理就是给每一列添加相对应用的容器&#xff0c;并进行相互嵌套&#xff0c;并在…

Oracle中Number(p,s)的意义

From: http://www.chinabyte.com/biz/cbfwq/394/2650894.shtml number(p,s) p:1~38 s:-84~127 p>0&#xff0c;对s分2种情况分析&#xff1a; 1. s>0 精确到小数点右边s位&#xff0c;并四舍五入。然后检验有效数位是否<p&#xff1b;如果s>p&#xff0c;小数点…

Taro+react开发(38)注意请求接口的/

//获取课程课期 export const getLastOfflineLessonByCourseCode data > {return request.get(${vdp}/offlineLesson/getLastOfflineLessonByCourseCode,data); };

git 上传代码步骤

接下来 第一步&#xff1a;建立git仓库 cd到你的本地项目根目录下&#xff0c;执行git命令&#xff0c;此命令会在当前目录下创建一个.git文件夹。 git init 第二步&#xff1a;将项目的所有文件添加到仓库中 git add . 这个命令会把当前路径下的所有文件&#xff0c;添加…

CSS之创建等高列布局之三

4. 使用正padding和负margin对冲实现多列布局方法 这种方法很简单&#xff0c;就是在所有列中使用正的上、下padding和负的上、下margin&#xff0c;并在所有列外面加上一个容器&#xff0c;并设置overflow:hiden把溢出背景切掉。下面一起来看代码 HTML: CSS: 这里代码的关键…

一个 人 的 态度 决定 他 成功 的 高度

一个 人 的 态度 决定 他 成功 的 高度转载于:https://blog.51cto.com/sunwei/122390

var arr = [] 与 var arr = new Array();

new关键字的使用除了在需要实例化一个对象&#xff0c;或罕见的需要延时加载数据的情况外&#xff0c;你基本上不需要使用new关键字。在Javascript里分配大量的new变量地址是一项很慢的操作&#xff0c;为了效率起见&#xff0c;你应该始终使用对象符号。 new Array() 会实例化…

将windows下编辑好的文件(GBK)转换成Linux下的格式(UTF8)

背景&#xff1a;一般我们在windows上编辑好的文件默认编码是GBK&#xff0c;而且换行符是^M&#xff0c;为了将这些文件用在linux上&#xff0c;我们一般会将它们转换成Linux下的文件格式&#xff0c;即去掉^M&#xff0c;且将文件格式转换成UTF8。 这时&#xff0c;就会用到两…

git报错:‘fatal:remote origin already exists‘怎么处理?附上git常用操作以及说明。

git添加远程库的时候有可能出现如下的错误&#xff0c; 怎么解决&#xff1f; 只要两步&#xff1a; 1、先删除 $ git remote rm origin2、再次执行添加就可以了。   ----------------------------------------------git常用操作---------------------------------------…

CSS之两栏固定布局(一)

1. 固定布局之两栏布局——边栏在左边&#xff0c;主内容在右边 实现的布局效果&#xff1a;整个布局居中显示&#xff0c;而且侧栏显示在左边&#xff0c;主内容在右边 HTML&#xff1a; - div.wrapper是主容器&#xff0c;以960px为例&#xff0c;并且居中显示 - div.heade…

Html文件转换为Aspx文件后发现样式丢失或失效

css中中文注释导致aspx页面样式出错 今天遇到一个很奇怪的问题&#xff0c;网页设计把页面用层布局 发给我们以后&#xff0c;IE6下&#xff0c;静态HTML页面正常显示&#xff0c; 弄到vs里&#xff0c;扩展名改为aspx后页面就全变脸了&#xff0c;样式应用不上&#xff0c;布局…

bash日期操作

应用背景&#xff1a;我们经常会需要根据当前日期来产生所需要的文件名&#xff0c;或者产生10天内的文件&#xff0c;而这个文件名就是与日期有关的。 看下面的例子&#xff1a; [zcmbash #48]$cat dateoper.sh #!/bin/bash todaydate %Y%m%d filename"pre_"$today…