博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多种方法实现div两列等高(收集整理)
阅读量:6417 次
发布时间:2019-06-23

本文共 5334 字,大约阅读时间需要 17 分钟。

HTML骨架

主内容区域

1.背景模拟(使用背景图片实现等高):

背景模拟主要依靠一张图片,然后将其平铺,使页面在视觉上,产生等高效果,如图

背景模拟实现很简单,直接利用了background-repeat属性,使背景图片以Y轴方向重复。

图片:            

css:              background-repeat:repeat-y;

关于背景图片,这个需更具你的实际项目需求,值得注意的是背景图片切图时必须以两列的形式,否这达不到等高效果。

*{
margin:0; padding:0;}#header,#footer{
width:960px;/*设置头部,页脚宽度*/ height:30px;/*设置头部,页脚高度*/ background-color:#6CF;/*设置头部,页脚背景颜色*/}#container{
width:960px;/*设置元素宽度*/ background:url(images/bg.png) repeat-y 0 0; /*将背景图片以y轴重复*/}.mainbox{
float:left;/*元素左浮动*/ width:650px;/*元素宽度*/}.sidebox{
float:right;/*元素右浮动*/ width:280px;/*元素宽度*/}.mainbox,.sidebox{
padding:0 5px; color:#FF0000;}/*设置mainbox,sidebox共同属性*/#container:after{
display:block; visibility:hidden; font-size:0; line-height:0; clear:both; content:"";}/*清楚浮动*/

2.负边距实现

提 到负边距,在学习盒子模型时,相信大家都学过,也了解过。在这我就不阐述了, 负边距实现等高主要利用了padding-bottom 和 margin-bottom两个属性,父元素container层内添加了overflow属性,其中margin为负值,padding为正值。如图

*{
margin:0; padding:0;}#header,#footer{
width:960px; height:30px; background-color:#E8E8E8;}#container{
width:960px; overflow:hidden;/重点!将父级元素多余部分切除掉/ margin:10px 0;}.mainbox{
float:left; width:650px; background-color:#333333;}.sidebox{
float:right; width:280px; background-color:#AAAAAA;}.mainbox,.sidebox{
padding:0 5px; color:#FF0000; margin-bottom:-9999px;/*将容器背景色拉伸*/ padding-bottom:9999px;/*将容器背景色拉伸*/}#container:after{
display:block; visibility:hidden; font-size:0; line-height:0; clear:both; content:"";}

3.使用border实现等高

使用边框(border)实现等高,其实也就是” 使用负边距实现等高”的一个改版,也是一个投机取巧的方法。

*{
margin:0; padding:0;}#header,#footer{
width:970px; height:30px; background-color:#9CF;}#container{
position:relative;/*将子元素的定位到具体的参照对象*/ width:970px; margin:10px 0;}.mainbox{
width:650px; background-color:#FC9; border-right:320px solid #F63;/*设置左边框宽度为320px像素,同等于sidebox的宽度*/}.sidebox{
width:320px; position:absolute; top:0; right:0;/*使元素靠右*/}

4。使用JavaScript实现等高

使用JavaScript实现等高很简单,使用getElementById方法获取两个元素的的高度值,判断两个元素的高度,最后负值。

总结:凡事有利必有害,使用CSS实现等高也是如此,不过,最后还是推荐使用JavaScript方式实现等高,毕竟CSS样式主要作用是修饰页面

5.JQuery 实现两列等高并自适应高度

原理就是取得左右两边的高度,然后判断这个值,把大的值赋给小的就行了。代码:

$(document).ready(function() {    var _leftheight = $(".left").height();    var _rightheight = $(".right").height();    if (_leftheight > _rightheight) {        $(".right").height(_leftheight);    } else {        $(".left").height(_rightheight);    }});

6. 扩展:CSS 多列 多模块 等高 布局

原理是事先通过正内边距来使其拥有足够高的布局控件,然后通过负外边距来使得其的位置不变。通过给父元素溢出隐藏,我们可以隐藏掉事先占据的足够高的空间。由两列实际的内容高度来决定整个父元素的高度,从而实现了等高。

习 惯思维上,我们都是多列等高,然后把这几列都浮动。现在我们变换一下思路,直接使用不浮动的一列的时候,情况会怎样,我们发现,当一列不浮动搭配正 内边距加负外边距,父元素溢出隐藏,它的高度跟还是由内在元素来决定,但是通过web developer toolbar我们可以看到它实际上已经占据了足够的高度空间同样的道理,定位也遵循这个规则。我们可以把两侧边框使用绝对定位来固定到两侧,因为绝对定位是不占布局空间的,那么我们需要一个文档流来对父元素进行占位。基本上父元素有多高,就显示绝对定位的元素多少内容,实际上这也就实现了一个等高。
知道了这个表现原理,那么上文的布局也就不难了,只需要把每列最后一个模块再进行正内边距加负外边距来进行空间占位就可以实现了!至于下边框,实际上另外一个容器从底下进行拼装实现的~!

        
无标题 1

你相信这个左右等高的布局是纯的CSS写的吗?

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

不由得你不信,这个的确是纯CSS写的

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

测试一下

View Code

参考:

  • http://hi.baidu.com/mengqing723/item/726c87a43d6410d95bf19131
  • http://hi.baidu.com/setcookie/item/2d990eb512f7f074254b0933

转载地址:http://wbpra.baihongyu.com/

你可能感兴趣的文章
JavaScript是如何工作的: Web推送通知的机制
查看>>
Java中的字符串常量池
查看>>
案例实战:LightningChart集成Dynamotive汽车遥测软件|见证真正无与伦比的性能
查看>>
HTTP Request Method
查看>>
使用eclipse mybatis generator插件在maven 项目中自动构建代码以及遇到的一些坑
查看>>
设计师都是美工?NO!网页设计 VS. 平面设计有区别!
查看>>
“手把手教你设计”—12个最佳手机APP界面设计教程
查看>>
前端项目的总结——css in js 的好处?
查看>>
(九)整合spring cloud云服务架构 - HongHu commonservice-eureka 项目构建过程
查看>>
Linux下二进制文件的分割与合并
查看>>
知识点018-IP,PV,UV的区别
查看>>
阿里云飞天技术汇之“阿里云在线直播技术与应用分享”主题沙龙
查看>>
WEB Struts2 构建struts2框架
查看>>
javascript Date format(js日期格式化)
查看>>
spring2
查看>>
怎样判断一个变量的类型?
查看>>
Single Number三连
查看>>
JavaScript事件处理
查看>>
Android工具类系列-获取字符串首字母,并对字符串列表进行排序。
查看>>
MySQL详解--锁
查看>>