实现左右等高布局

1 margin-bottom:3000px; padding-bottom:3000px;

.container {
            overflow: hidden;
        }

        .container .left {
            float: left;
            width: 100px;
            padding: 10px;
            background-color: blue;
            padding-bottom: 3000px;//增加left的高度,父元素的高度会被撑开
            margin-bottom: -3000px;//减小父元素的高度,最终的效果就是父元素的高度根据内容改变 见http://www.cnblogs.com/xiaofenguo/p/6088231.html
        }

        .container .right {
            margin-left: 10px;
            background-color: red;
            padding: 10px;
            height: 300px;
        }
<div class="container">
    <div class="left"></div>
    <div class="right"></div>
</div>

  2 display:table-cell

 .container {
            display: table;
            width:100%;
        }

        .container .left {
            display: table-cell;
            width: 20%;
            padding: 10px;
            margin-right:-300px;
            background-color: blue;
        }

        .container .right {
            width:80%;
            display: table-cell;
            background-color: red;
            padding: 10px;
            height: 300px;
        }

  3 absolute

.container {
            overflow: hidden;
            border: 1px solid #000;
            width: 500px;
            margin: 0 auto;
            position: relative;
        }

        .container .left {
            width: 20%;
            float: left;
            position: relative;
            background-color: #ccc;
        }

        .container .left .leftBorder {
            border-right: 1px solid red;
            position: absolute;
            width: 100%;
            left:0;
            top:0;
            height: 999999em;
        }

        .container .left .leftInfo {
            position: relative;
            padding: 10px;
            z-index: 1;

        }

        .container .right {
            padding: 10px;
            position: relative;
            background-color: beige;
            width: 70%;
            float: right;
        }

        h4 {
            padding: 10px;
        }
<div class="container">
    <div class="left">
        <div class="leftBorder"></div>
        <div class="leftInfo"></div>
    </div>
    <div class="right">
        <h4>②回流与渲染</h4>
        早先时候我曾翻译过两篇关于回流与重绘的文章,“最小化浏览器中的回流(reflow)”以及“回流与重绘:CSS性能让JavaScript变慢?”。
        我自己是没测过。不过根据上面这两篇文章的说法,以及一位口碑前端前辈的说法,使用absolute隐藏于显示元素是会产生重绘而不会产生强烈的回流。而使用display:none不仅会重绘,还会产生回流,DOM影响范围越广,回流越强烈。所以,就JavaScript交互的呈现性能上来讲,使用absolute隐藏是要优于display相关隐藏的。
        <h4>③配合JavaScript的控制</h4>
        说到元素的显示与隐藏,免不了与JavaScript的交互。例如display相关的隐藏于显示,就是display:block/inline/inline-block/...与display:none。
        要让元素隐藏,很简单,直接:
        dom.style.display = "none";
        但是,如果要显示隐藏的元素,咋办呢?因为不同的标签所处的display水平是不一样的,于是,我们很难有一个简单的统一的显示方法。例如,下面的代码可能使用于div,
        p标签,但是对于span等inline水平的元素,可能就会嗝屁了(原本单行显示结果换行)。
        dom.style.display = "block";
        况且,随着浏览器的不断进步,以后类似于display:table-cell,display:list-item会越来越多的使用。再想通过display实现通用的显隐方法难度又会增大些。
        这就是使用display属性控制元素显隐的局限性。顺带一提的是jQuery的显隐方法show()/hide()/toggle()就是基于display的,其会存储元素先前的display属性值,于是元素再显示的时候就可以准确地显示出之前的display值了
    </div>
</div>

  

其中,实现等高效果的核心CSS代码如下:

.leftBorder{width:100%; height:999em; position:absolute; left:0; top:0;}

同时,满足以下一些条件:

  1. 高度999em的绝对定位层位于侧栏容器内,侧栏positionrelative
  2. 该栏实际元素内容用一个与absolute绝对定位层为兄弟关系的标签层包裹,positionrelativez-index1或其他
  3. 左右栏的父标签需设置overflow:hidden,同时为了兼容IE6/7,需设置positionrelative

  来自:http://www.zhangxinxu.com/wordpress/2011/03/css-%E7%9B%B8%E5%AF%B9%E7%BB%9D%E5%AF%B9relativeabsolute%E5%AE%9A%E4%BD%8D%E7%B3%BB%E5%88%97%EF%BC%88%E4%B8%89%EF%BC%89/

时间: 2024-12-07 17:50:00

实现左右等高布局的相关文章

多列居中等高布局

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>CSS</title> <style type="text/css"> *{ margin:0; padding:0; font-size:12px;

margin 等高布局

<div id="main"> <div id="left"> 我是左边的内容的啦啦啦啦... .<br> 我是左边的内容的啦啦啦啦....<br> 我是左边的内容的啦啦啦啦.... <br> 我是左边的内容的啦啦啦啦. . ..<br> 我是左边的内容的啦啦啦啦... .<br> </div> <div id="right"> 左边的内容

打好基础:浮动是怎么回事?怎么实现等高布局?CSS怎么控制文字换行?

一.浮动是怎么回事? 参考技术文章:CSS浮动的深入研究,以下为读书笔记. 浮动的原始意义 我们使用float浮动做了很多其本职工作以外的事情,于是我们会混淆,我们会回看不清float真正的面目.浮动真正的意义在哪里呢?要知道这个问题的答案很简单,假设现在CSS中没有浮动(float)属性,那么会变成一个什么样子.我们会发现,目前流行采用浮动方法实现的无论是分栏布局,还是列表排列我们都可以用其他一些CSS属性(不考虑table)代替实现,唯一一个实现不了的就是“文字环绕图片”,我是想不出来能有什

神一样的布局——等高布局

copyFrom====〉http://www.cnblogs.com/2050/archive/2012/07/31/2616460.html<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>高度自适应布局</title> <style> body{ padding:0; margin:0; color:#f00;} .cont

CSS布局——左定宽度右自适应宽度并且等高布局

今天有位朋友一早从妙味课堂转来一个有关于CSS布局的面试题,需要解决,花了点时间写了几个DEMO,放上来与大家分享受.那么我们在看DEMO之前一起先来看看这个面试题的具体要求吧: 左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到效果其实也并不是太难,只是给人感觉像有点蛋疼的问题一样.但是你仔细看后你会觉得不是那么回事: 左边固定,右边自适应布局,

俩列布局(左边固定,右边自适应),等高布局,最小高度

俩列布局(左边固定,右边自适应): 1. <!DOCTYPE html> <html> <head> <title>俩列布局</title> <meta charset="utf-8"> <style type="text/css"> *{         margin: 0;         padding: 0;     } #left {         float: left

纯css实现div三列等高布局的最简单方法简化版/也可以多列

使用正padding和负margin对冲实现多列布局方法 这种方法很简单,就是在所有列中使用正的上.下padding和负的上.下margin,并在所有列外面加上一个容器,并设置overflow:hiden把溢出背景切掉. html代码 <div id="wrap"> <div id="left"> <p> left</p> <p> left</p> <p> left</p>

CSS3之flexbox如何实现水平垂直居中和三列等高布局

最近这些天都在弥补css以及css3的基础知识,在打开网页的时候,发现了火狐默认首页上有这样一个东西. 第一个css属性就没有看懂.于是乎,开始各种找资料,各种看书.这些天把对于css3伸缩布局盒(flexbox)模型的理解写成博文,目的是对flexbox做一个简单的介绍. 以下的内容会分为如下小节: 1.关于css3中flexbox需要掌握的概念 2.flexbox实现水平垂直居中对齐 3.三列等高自适应,页脚区域黏附底部的布局 1.关于css3中flexbox需要掌握的知识 因为对于三列等高

任意列+左右两列等高布局,并要求有最小高度

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

CSS等高布局的6种方式

目录 [1]边框模拟[2]负margin[3]table[4]absolute[5]flex[6]js 前面的话 等高布局是指子元素在父元素中高度相等的布局方式.等高布局的实现包括伪等高和真等高,伪等高只是看上去等高而已,真等高是实实在在的等高.本文将介绍边框模拟.负margin这两种伪等高以及table实现.absolute实现.flex实现和js判断这四种真等高布局 伪等高 边框模拟 因为元素边框和元素高度始终是相同高度,用元素的边框颜色来伪装左右两个兄弟元素的背景色.然后将左右两个透明背景