css 两列布局的多种实现方式及原理。

  两列布局是非常常见的需求在实际项目中,实现的方式也有很多。这里提供几种实现方式和原理。供大家参考

  页面基本布局如下代码所示:

  

 1 <div class="main">
 2     <div class=‘left‘>
 3         左侧    1
 4     </div>
 5     <div class=‘right‘>
 6         右侧    1
 7         <div>假如div很多的话</div>
 8         <div>假如div很多的话</div>
 9         <div>假如div很多的话</div>
10         <div>假如div很多的话</div>
11         假如内容很多的话
12         假如内容很多的话
13         假如内容很多的话
14         假如内容很多的话
15         假如内容很多的话
16     </div>
17 </div>

  父元素.main 包含两个子div,left和right。这里只是简单举个例子,所以布局很简单,只要有效果就好。

  一、内联div的方式:

  众所周知,html元素存在块级元素,内联元素以及内联块级元素等多种属性。在基本的block和inline两种属性基础上衍生出的inline-block,因为具有两种基本属性的共有特性,所以在很多地方有特殊用处。这里主要用到inline-block的inline特性,将子元素设置为inline-block使得两者不会换行。同时左侧定宽,右侧自动即可。css如下:

.main{
            width: 100%;
            height:500px;
            border: 1px solid blue;
            overflow: auto;
        }
        .left1{
            display: inline-block;
            width: 200px;
            background:#ff4433;
            vertical-align: top;
        }
        .right1{
            display: inline-block;
            background: pink;
        }

  二、使用绝对定位

  绝对定位有很多特性,其中比较重要的一点是,脱离文档流,相对父元素最近的不为static定位的来定位。这里主要就用到了该特性,因为脱离了文档流,所以紧邻的div不会自动换行,只需要设好外间距即可达到效果。代码如下:

.main{
            width: 100%;
            height:500px;
            border: 1px solid blue;
            overflow: auto;
        }
        .left2{
            position: absolute;
            width: 200px;
            background:#ff4433;
        }
        .right2{
            margin-left: 200px;
            background: pink;
        }

这里不够严谨,最好父元素为相对定位,以免发生意想不到的定位情况。

  三、float方式

  既然提到了绝对定位脱离文档流的方式,相信大家还会想起来另一个狂放不羁爱脱离的属性,对就是浮动。既然特性相同当然可以实现相同效果。不过这里声明一下使用浮动的话注意要清除浮动,否则会带来一些意想不到的效果,这里简便起见就不清除了。

.main{
            width: 100%;
            height:500px;
            border: 1px solid blue;
            overflow: auto;
        }
        .left3{
            float: left;
            width: 200px;
            background:#ff4433;
        }
        .right3{
            margin-left: 200px;
            background: pink;
        }

  四:flex布局

  弹性流式布局,这个是根据百分比来布局的。在h5中是非常常见的。因为手机型号的问题,所以根据百分比来布局是比较合适的。如果固定宽度的话,很容易就出现问题。有关flex的内容,这里不详细描述。只稍微提一下flex布局的基本思想:将设置为display: flex的元素作为一个flex容器,其子元素根据flex对应的值来分配父容器的宽度(默认从左至右排列)。例如div1:flex1,div2:flex2 ,则div1,div2则按1:2来分配父元素的宽度。但是如果子元素有设置固定宽度,则剩下的子元素按flex对应比例分配余下的区域。所以要实现左侧定宽的效果,只需设置左侧固定宽度即可,若左侧不定宽,可以按照比例来分配各子元素的宽度。代码如下:

.main4{
     display: flex;
     flex-flew:row;
 }
.left4{
        width:200px;
 }
 .right4{
        flex:3;
 }

或者非定宽的布局:

.main4{
            display: flex;
            flex-flew:row;
        }
        .left4{
            flex:1;
        }
        .right4{
            flex:3;
        }

  以上就是关于两列布局的几种实现方式,为了体现思路即可,所以很多地方不够严谨。希望能给需要的同学提供下参考和思路。还是那句话抛砖引玉,希望有兴趣的同学一起探讨。

  转载请注明出处!!

时间: 2024-08-09 13:29:03

css 两列布局的多种实现方式及原理。的相关文章

css两列布局,一边固定宽度,另一边自适应

<!DOCTYPE HTML><HTML>    <head>                <meta charset="utf-8" />        <title>css两列布局,一边固定宽度,另一边自适应</title>    </head>    <style>        a, body, center, cite, code, dd, del, div, dl, dt, e

CSS两列布局

在布局中,我们常常需要出现两列的情况,其中左边一列固定宽度,右边一列随着浏览器宽度变化而变化.如何实现呢? 传统的方法是利用float将左部分浮动起来,再通过margin将右部分右移,得到所需效果,代码如下: <!--两列布局,其中左侧固定,右侧自适应--> <div class="left background-color-red height-60 width-300"></div> <div class=" background

css 两列布局中单列定宽单列自适应布局的6种思路

前面的话 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.本文将从float.inline-block.table.absolute.flex和grid这六种思路来详细说明如何巧妙地实现布局 float [思路一]float 说起两列布局,最常见的就是使用float来实现.float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清除浮动.如果各浮动元素的高度不同时,可能会出犬牙交错的效果 [1]float + margin 将定宽的一列使用float,而自适应的一列使用计

div+css两列布局与三列布局

一.两列布局: 1.左边定宽,右边自适应. 方法一:采用position:absollute;并设置margin-left的值. 例: #left{ position:absolute; width:300px; top:0px; left:0px; background:#F00; } #right{ background:#0FC; margin-left:300px; } <div id="left">左边定宽</div> <div id="

css 两列自适应布局的4种思路

前面的话 前面已经介绍过css 两列布局中单列定宽单列自适应布局的6种思路的两列布局,而两列自适应布局是指一列由内容撑开,另一列撑满剩余宽度的布局方式.本文将从float.table.flex和grid来介绍两列自适应布局的4种思路 float [思路一]float 在单列定宽单列自适应的两列布局中,经常用float和负margin配合实现布局效果.但由于margin取值只能是固定值,所以在两列都是自适应的布局中就不再适用.而float和overflow配合可实现两列自适应效果.使用overfl

两列布局

很多网站都使用了两列布局,就是左边固定,右边自适应的布局.两列布局有多种方法,现在来列举一下 第一种:margin + float /   margin + absolute 将左边设置 float 或者 absolute ,使其脱离文档流,右边使用margin-left设置左右间隔,大小一般为 >= 左边的宽度,因为是块级元素,所以右边可以充满剩余的屏幕,这样就实现了左边固定,右边自适应的效果. 代码如下: <!DOCTYPE html> <html> <head&g

慕课笔记利用css进行布局【两列布局】

<html> <head> <title>两列布局</title> <style type="text/css"> body{margin:0;padding:0;text-align:center} /*两列的布局样式*/ /*float:left向左浮动*/ .content{width:920px;margin:0 auto} .left{width:20%;height:500px;background:#f00;fl

如何通过 CSS 实现一个左边固定宽度、右边自适应的两列布局

最近在百度 IFE 训练营中看见的一道题目: 用两种不同的方法来实现一个两列布局,其中左侧部分宽度固定.右侧部分宽度随浏览器宽度的变化而自适应变化  个人总结出如下三种实现思路: 通过绝对定位实现 See the Pen absolute-two-column by xal821792703 (@honoka) on CodePen. 注意点如下: 需要套一个“positioned”的父元素 div-a 绝对定位,并将位置调整为浏览器左上角 div-b margin-left 属性值为 div-

两列布局方式

两列布局方式:1.float IE6 有3px偏移 在left上加 margin-left: -100px.left{ background-color: red;float: left;width: 100px } .right{background-color: green;margin-left: 110px } <div class="content"> <div class="left">left</div> <d