CSS中三列布局的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

CSS中三列布局的问题

2016-05-26 17:37:24 1863 1

问题描述
我现在有一个三列布局,暂且以左侧A、中间B和右侧C三个区间来表示。现有要求如下:

A的宽度固定,为150px
C的宽度根据内容自动撑开,也就是刚好包裹住其内容, 右侧有15px的留白。
B的宽度自适应,文字内容居中
演示效果请猛戳点击预览

解决思路
利用CSS3的flex布局可以解决该问题,但是由于要支持IE8+, 所以这种方法不太合适
利用圣杯布局或者淘宝UED提供的双飞翼布局,但是由于双飞翼布局针对固定宽度和或者流体宽度(百分比), 视乎不太适合现在的C宽度自动适应的问题。
利用display:table, 可以支持IE8+, 和思路2一样,C的宽度不是刚好包裹住的
不知道各位有没有什么更好的方法,我的测试代码如下

<!doctype html>
<html>

<head>
    <meta charset="utf-8">

</head>

<body>

    <p>双飞翼布局,支持IE5.5+</p>
    <div style="
    overflow: hidden;
">


<div style="
    width: 100%;
    text-align:center;
    vertical-align:middle;
    float: left;
    background: pink;
            padding-bottom: 5000px;  margin-bottom: -5000px;
            ">
            <div style="
    margin: 0 20% 0 20%;padding:10px;
  ">Main
                <p>dddd</p>
            </div>
        </div>


        <div style="
    float: left;
    background: green;
    margin-left: -100%;
    width: 20%;
    padding-bottom: 5000px;  margin-bottom: -5000px;
">left</div>
        <div style="
    width: 20%;
    background: red;
    margin-left: -20%;
    float: left;
    padding-bottom: 5000px;  margin-bottom: -5000px;
">right</div>
    </div>



    <p>display:table布局,支持IE8+</p>

    <hr />

    <style>
    .extFooterSection {
        display: table;
        width: auto;
    }
    #systemBrandLogo,
    .eventLinks,
    #socialLanyon {
        display: table-cell;
    }
    .extFooter-wrapper {
        display: table-row;
    }
    #systemBrandLogo {
        width: 150px;
        background: pink;
        vertical-align: middle;
        padding-left: 20px;
        padding-right: 20px;
    }
    #systemBrandLogo img {
        width: 150px;
    }
    .eventLinks {
        width: 100%;
        list-style: none;
        margin: 0;
        padding: 0;
        background: lightgreen;
        vertical-align: middle;
        text-align: center;
    }
    .eventLinks li {
        list-style: none;
        display: inline;
        margin: 0;
        padding: 0;
    }
    #socialLanyon {
        background: lightblue;
        vertical-align: middle;
        max-width: 390px;
    }
    #socialLanyon a {
        background: url(https://qa.activestatic.net/images/logos/standardFooterLogosLanyon.png) no-repeat;
        height: 33px;
        width: 33px;
        text-indent: -5000px;
        display: block;
        float: left;
        margin: 0 5px;
    }
    #socialLanyon .social1 {
        background-position: 0 -330px;
    }
    #socialLanyon .social2 {
        background-position: 0 -198px;
    }
    #socialLanyon .social3 {
        background-position: 0 -264px;
    }
    a {
        text-decoration: none;
    }
    #socialText,
    #socialIcons {
        display: inline-block;
    }
    #socialIcons {
        vertical-align: middle;
    }
    </style>

    <div class="extFooterSection">
        <div class='extFooter-wrapper'>
            <div id="systemBrandLogo">
                <a href="http://lanyon.com/solutions/regonline?utm_source=referral&amp;utm_medium=app&amp;utm_campaign=viral_regonline&amp;utm_content=footer_mktg" class="brandLogo" target="_blank" title="Lanyon.com">
                    <img class="brandLogo mobileVisible" src="https://qa.activestatic.net/images/logos/headerlogo_RegOnline.png">
                </a>
            </div>
            <ul class="eventLinks">
                <li><a class="modalDialog ready" href="">Event Contact Information</a>
                </li>
            </ul>
            <div id="socialLanyon">
                <div style='min-width:390px;'>
                    <div id="socialText">Tell others about this event:</div>
                    <div id="socialIcons"><a class="social1" href="">Share on Facebook</a><a class="social2" href="" target="_blank" title="Tweet this on Twitter">Tweet this on Twitter</a><a class="social3" href="" title="Update your LinkedIn Network">Update your LinkedIn Network</a>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <hr />


    <!--
    .hideText{
        text-indent: 100%;
        white-space: nowrap;
        overflow: hidden;
    }
-->
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:16:40

    可以利用创建了新的BFC的元素不会和浮动元素重叠来做。简单来说,左侧左浮动,右侧右浮动,中间是创建了新的BFC的元素即可。示例代码:

    <style>
        .co
        .left {background:red;width:150px;float:left;}
        .right {background:blue;margin-right:15px;float:right;}
        .center {background:green;overflow:hidden;text-align:center;}
    </style>
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="center">center</div>
    0 0
相关问答

19

回答

【分享】如何提高网站的打开速度?

enj0y 2012-11-17 14:35:22 58034浏览量 回答数 19

43

回答

什么是云主机,云服务器与vps有什么区别?

zhuangdengyun 2011-11-01 04:21:50 51658浏览量 回答数 43

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 148117浏览量 回答数 31

23

回答

【云服务器分享】网站访问速度快才是硬道理

dreamdoo 2012-10-15 10:15:02 86585浏览量 回答数 23

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 310390浏览量 回答数 251

13

回答

【云服务器分享】如何节省网站流量

dreamdoo 2012-10-15 10:36:09 81819浏览量 回答数 13

21

回答

【Java学习全家桶】1460道Java热门问题,阿里百位技术专家答疑解惑

管理贝贝 2018-05-31 13:57:45 49904浏览量 回答数 21

49

回答

0M带宽包年包月ECS支持带宽升级

qilu 2014-07-15 14:40:04 52283浏览量 回答数 49

46

回答

H5技术百问——不懂H5你就OUT啦

yq传送门 2017-09-09 11:03:04 48497浏览量 回答数 46

3

回答

Nginx—owncloud安装记事

寒喵 2014-06-07 23:24:41 49768浏览量 回答数 3
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载