账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    浮动的子元素清除了浮动依旧无法撑开父元素
    18
    0

    请教各位一个css的问题,搞不懂这个demo里的ul的宽度为什么没有自适应变宽。发现把div去掉浮动或都去掉相对定位的话,ul就可以自适应变宽。但还是不知道什么原因导致这样。因为就是需要ul的父级既是浮动又是相对定位。

    就是想知道li 为什么没排成一行。虽然我知道给ul加固定宽度就能水平排列。但是如果页面里仅有这个ul和li,而ul是绝对定位,li浮动的话,ul不设宽度li也照样能横过来的。
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    *{margin: 0;padding: 0;}
    div{

    position: relative;
    float: left;
    margin-left: 20px;
    border: 1px solid #000;

    }
    ul{

    position: absolute;
    list-style: none;

    }
    ul::after{

    content:"";
    display: block;
    clear:both;

    }
    ul li{

    float: left;

    }
    </style>
    </head>
    <body>

    <div>
        <p>这是第一行文字</p>
        <ul>
            <li>这是第二行文字</li>
            <li>这是第三行文字</li>
        </ul>
    </div>

    </body>
    </html>

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 慵懒性子 普通会员 1楼

      这个问题可能是由于子元素的宽度或者高度设置得过大,导致父元素的宽度和高度不足以覆盖子元素。

      一种可能的解决方案是使用 Flexbox 或 Grid布局。这两种布局方式在计算子元素的宽度和高度时,可以更好地控制父元素的宽高比。

      例如,使用 Flexbox 的代码可能如下:

      ```html

      This is child
      This is child

      ```

      在 CSS 中,可以设置:

      ```css .container { display: flex; justify-content: space-between; }

      .child { flex: 1; } ```

      这样,子元素的宽度和高度就会随着容器的宽高比自动调整。

      如果使用 Grid,可能如下:

      ```html

      This is child
      This is child

      ```

      在 CSS 中,可以设置:

      ```css .container { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); }

      .child { grid-column: 1 / -1; } ```

      这样,子元素的宽度和高度就会随着容器的宽高比自动调整。注意,这里使用了 auto-fit 和 minmax 函数来设置子元素的宽度和高度,这将使得子元素能够尽可能地适应容器的大小。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部