美文网首页
解决flex布局内容超出盒子宽度问题

解决flex布局内容超出盒子宽度问题

作者: Thesand | 来源:发表于2019-08-24 11:12 被阅读0次

在移动端,flex 布局很好用,它能够根据设备宽度来自动调整容器的宽度,用起来很方便,已经越来越离不开它,但是最近在做项目的时候发现一个问题。

就是在一个设置了 flex:1 的容器中,如果文字很长,这时候文字就会超出容器,而不是呆在设置好的动态剩余的空间中。

例子:
大致是有一个main容器是flex布局,左边一个logo固定宽高,右边content动态宽度。

<div class="main">
    <img alt="" class="logo" src="pic.jpg">
    <div class="content">
        <h4 class="name">a name</h4>
        <p class="info">a info</p>
        <p class="notice">This is notice content.</p>
    </div>
</div>

.main {
    display: flex;
}
.logo {
    width: 100px;
    height: 100px;
    margin: 10px;
}
.content {
    flex: 1;
}
.content > * {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.notice可能会非常长,一些设备下需要隐藏显示,即不换行,并留下省略符…作标记。
这里会发现text-overflow: ellipsis不生效,省略符根本没有出现。而且因为设置了 nowrap 会发现文字会将 content 撑开,导致内容超出了屏幕。所以必须要解决这个问题。

尝试取消父元素.content的flex: 1,无效。
尝试取消.main容器的display: flex,省略号出现。

因此猜测是flex布局的问题,进一步猜测省略符需要对父元素限定宽度。
尝试对父元素.content设置width: 100%无效,但是设置width: 0可行。即:

.content {
    flex: 1;
    width: 0;
}

如果不设置宽度,.content可以被子节点无限撑开;因此.notice总有足够的宽度在一行内显示所有文本,也就不能触发截断省略的效果。测试还有一种方法可以达到效果:

.content {
    flex: 1;
    overflow: hidden;
}

上面的二种方法都可以达到我们需要的效果,即给 content 设置了 flex 为 1 的时候,它会动态的获得父容器的剩余宽度,且不会被自己的子元素把内容撑开。

经过测试,以下的方法是无效的:

给html, body设置max-width,元素似乎能强行撑开页宽;
给body设置overflow,页宽不能被撑开了,但元素宽度还在,即元素本身还是溢出;
给html, body同时设置max-width和overflow,页宽限定在max-width内,元素本身还是溢出;
给.main容器设置overflow: hidden,同理.main是不溢出了,.notice本身还是溢出;
给.notice元素设置width或max-width,虽然宽度受限,但在特定宽度下省略符…显示不全,有时只显示两个点..

相关文章

  • 解决flex布局内容超出盒子宽度问题

    在移动端,flex 布局很好用,它能够根据设备宽度来自动调整容器的宽度,用起来很方便,已经越来越离不开它,但是最近...

  • uni_app

    弹性布局flex: 文字超出宽度后,显示省略号的解决办法 overflow:hidden; white-space...

  • 占满问题

    宽度占满问题 内容区域设置父元素宽度100%出现内容遮挡和超出问题,导致显示不完全 第一种解决方式 - 将父盒子宽...

  • flex 伸缩布局

    1、设置伸缩布局 2、设置固定宽度 flex-basis 3、弹性盒子实现多行排列 flex-wrap...

  • flex 布局文字过长不换行

    问题描述 当我使用 flex 布局做两栏布局的时候,左侧宽度固定,右侧宽度使用 flex: 1,文字溢出,如图 ...

  • flex布局

    flex子元素宽度或高度如果超过父级盒子宽度,子元素主轴方向的宽或高会被收缩会父级盒子中,不会超出父级盒子。 fl...

  • flex弹性布局之容器属性

    一、flex布局 学习flex弹性布局为了解决一些特殊的布局,在这之前我们可以利用大盒子套小盒子,浮动,定位等来完...

  • 解决flex布局导致子元素的宽度无效的问题

    常常我们布局会使用到flex,但布局中存在一些问题,比如无法设置宽度 display: flex;flex-wra...

  • CSS3

    #Flex布局display:flex; Flex布局,按照row行、col列进行布局排版,主要解决了响应式的问题...

  • 小程序开发记录

    1.使用 flexBox 布局,解决 因文字内容过多,而撑开盒子 在子元素上添加flex: 1; 2.阻止事件...

网友评论

      本文标题:解决flex布局内容超出盒子宽度问题

      本文链接:https://www.haomeiwen.com/subject/xhbfectx.html