布局-两列布局(一列定宽,一列自适应)

结构:

1 <div class="parent">
2         <div class="left">
3             <p>left</p>
4         </div>
5         <div class="right">
6             <p>right</p>
7             <p>right</p>
8         </div>
9     </div>

样式:

1.解决方案一:float +margin

 1 .parent {
 2         background-color: grey;
 3         width: 300px;
 4         height: 200px;
 5
 6     }
 7     .left {
 8         float: left;/*元素脱离文档流,但是内容在文档流中*/
 9         width: 100px;
10         background-color: skyblue;
11 12     }
13     .right {
14         margin-left: 110px;
15         background-color: greenyellow;
16     }
17     /*优点:易理解
18     缺点:(1)兼容性有点问题,因为left有浮动,right没有浮动,所以right会有3px的bug,即两个right文字会想右缩3px,可在left上加margin-right:-100px;来解决,这类似于hack            (2)也因为left有浮动,right没有,所以在第一个<p>right</p>上清除浮动,right就会掉下去,即在left水平线下

        .right p:first-child::before{
        clear: both;
        content: " ";
        display: block;
        height: 0;
        overflow: hidden;
        visibility: hidden;

}*/

2.解决方案二:float+ margin + fix(上面方法的改进)

结构:

<div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right-fix">
            <div class="right">
                <p>right</p>
                <p>right</p>
            </div>
        </div>
    </div>

样式:

 1 .parent {
 2         background-color: grey;
 3         width: 300px;
 4         height: 200px;
 5
 6     }
 7     .left {
 8         float: left;/*元素脱离文档流,但是内容在文档流中*/
 9         width: 100px;
10         background-color: skyblue;
11         position: relative;/*提高left层级*/
12     }
13     .right-fix {
14         float: right;
15         width: 100%;
16         margin-left: -100px;
17     }
18     .right {
19         margin-left: 110px;
20         background-color: greenyellow;
21         }
22     p {
23         margin: 0;
24     }

3.解决方案三:float+ overflow

结构是最上面的结构

样式:

.parent {
        background-color: grey;
        width: 300px;
        height: 200px;
    }
    .left {
        float: left;/*元素脱离文档流,但是内容在文档流中*/
        width: 100px;
        background-color: skyblue;
        margin-right: 10px;
    }
    .right {
        overflow: hidden;/*触发BFC模式(Block Formating context块级的格式化文本),产生的效果是:BFC模式下的容器里面的内容与外界隔离,外面的内容如:浮动元素是不会影响BFC里的内容的*/
        background-color: greenyellow;
    }
    /*IE6不支持*/

4.解决方案四:table+table-cell (两列自然等高)

结构:最上面的结构

样式:

.parent {
        background-color: grey;
        width: 300px;
        height: 200px;
        display: table;
        table-layout: fixed;/*加速table的渲染,实现布局优先*/
    }
    .left {
        display: table-cell;
        width: 100px;
        background-color: skyblue;

        border-right: 10px solid transparent;
        background-clip: padding-box;/*设置列之间的间距*/
    }
    .right {
        display: table-cell;
        background-color: greenyellow;
    }

5.解决方案五:flex+ flex:1  (两列自然等高)

结构:最上面的结构

样式:

.parent {
        background-color: grey;
        width: 300px;
        height: 200px;
        display: flex;
    }
    .left {
        width: 100px;
        background-color: skyblue;
        margin-right: 10px;
    }
    .right {
        flex: 1;/*.right适应到剩下的所有部分*/
        background-color: greenyellow;
    }/*flex是css3新增的内容,兼容性低。flex根据内容去自适应,所以性能是一个问题,通常用flex作小范围的布局,而不是大范围的布局,即right中的内容不要太复杂,太多,太多会影响flex的性能*/
时间: 2024-10-26 22:35:04

布局-两列布局(一列定宽,一列自适应)的相关文章

NEC学习 ---- 布局 -两列, 左侧定宽,右侧自适应

CSS代码:以下两处代码是NEC中CSS初始化样式和功能性样式.今后的NEC研究中,默认这两处是引用的. /* 这是CSS reset 代码 --- 初始化样式 */ /* reset */ html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;

要布局左右两边定宽,中间自适应

最近在布局时,有一些问题,左右两边定宽,中间自适应,首先想到的就是左浮动和右浮动,但是在操作时还是会出现一些问题 1. 采用左边左浮动,右边右浮动,中间块用margin-left/margin-right <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style>

中间定宽,两边自适应布局的三种实现方法

中间定宽,两边自适应布局的三种实现方法 1. 浮动加定位 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>中间定宽,两边自适应</title> <style type="text/css"> html,body,div{ height: 100%; } .parent{ p

css高度已知,左右定宽,中间自适应三栏布局

css高度已知,左右定宽,中间自适应三栏布局: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X

css页面布局之左侧定宽,右侧自适应

左侧定宽,右侧自适应是一种常见的布局方式,比如好多后台和外卖点餐页面.常用的几种方案如下:方案1,使用flex布局:在线效果http://jsrun.net/FeYKp <div class="main" style="width: 100%;height: 400px;"> <div class="left" style="width: 200px;height: 200px;background: red;&quo

html+css实现左侧定宽,右侧自适应的布局

实现一侧定宽,一侧自适应的布局的方法a .b a.利用左侧元素浮动,或者绝对定位的方式使其脱离常规文档流 1.方法一:利用float和margin来实现 css <style> .father{border:1px solid #444;overflow:hidden;} .father img{width:60px;height:64px;float:left} .father p{margin-left:70px;padding-right:20px;} </style> ht

CSS布局 -- 左侧定宽,右侧自适应

左侧定宽,右侧自适应 有很多种方法可以实现 缩小窗口试试看? 方案一: 左边左浮动,右边加个margin-left 查看 demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/19

CSS布局 -- 左右定宽,中间自适应

左右定宽,中间自适应 有几种方法可以实现 改变窗口大小看看? 方案一: 左右设置绝对定位,定宽,中间设置margin-left  margin-right 查看 demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

页面布局方案-左定宽,右自适应左右百分比

左右百分比 两列布局, 左右为百分比,高度自适应. 效果: 代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>左侧固定,右侧自适应</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <style type="text/c

左侧定宽,右侧自适应,两列布局且等高

.container{ overflow: hidden; } .con-left{ float: left; width: 200px; background-color: red; background:#d3daf8 ; position: relative; /*margin-bottom: -99999px; padding-bottom: 99999px;*/ /*这是两列高度对齐代码*/ } .con-right{ margin-left: 200px; position: rel