子元素宽度如何撑开父元素宽度

clipboard.png

如图这是一个横向滚动栏,子元素高度会自动撑开父元素的高度,但是好像子元素宽度不能自动撑开父元素的宽度,如何使用css使子元素宽度可以自动撑开父元素宽度,避免计算父元素的宽度。

阅读 20.6k
8 个回答
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>无标题文档</title>
</head>

<body>
    <style>
        .box{width:300px;height:100px;background:#000;}
        .inner{white-space:nowrap;width:auto;display:inline-block;zoom:1;*display:inline;margin:10px 0 0 10px;background:#FC9;}
        .inner span{display:inline-block;width:80px;height:100px;margin:0 10px;background:#dd4215;}
    </style>
    <div class="box">
        <div class="inner">
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
        </div>
    </div>
</body>
</html>

图片描述

<!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-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style lang="">
        * {
            margin: 0;
            padding: 0;
        }

        .wrap {
            width: 640px;
            margin: 0 auto;
            background-color: #eee;
        }

        .nav {
            overflow-y: auto;
        }

        ul {
            list-style: none;
            display: inline-block;
            white-space: nowrap;
            font-size: 0;
        }

        li {
            display: inline-block;
            width: 80px;
            text-align: center;
            font-size: 12px;
        }
    </style>
</head>

<body>
    <div class="wrap">
        <div class="nav">
            <ul>
                <li>test1</li>
                <li>test2</li>
                <li>test3</li>
                <li>test4</li>
                <li>test5</li>
                <li>test6</li>
                <li>test7</li>
                <li>test8</li>
                <li>test9</li>
            </ul>
        </div>

    </div>
</body>

</html>

横向滚动布局 white-space: nowrap;

内部元素 display: inline-block;

正常来说肯定是可以的,不能撑开的原因有很多,可能是子元素浮动了,可能是父元素固定了宽度,具体是因为啥,还是需要看源码才行

没有 demo 的问题都不是好问题

父元素没有高度,可能是子元素浮动造成的,清除浮动即可 请百度 clearfix

看看你的父元素高度是不是0 很可能是子元素导致父元素高度塌陷..
因为子元素浮动之后脱离了文本流.
这时候只需清楚浮动即可..百度清除浮动的方法

新手上路,请多包涵

我也遇到这个问题。
有个很容易忽略的地方--
块级父元素如果不设定宽度的话,就默认父元素宽度,如果需要子元素动态撑开父元素宽度,需要给父元素加上display:inline-block;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏