您现在的位置是:网站首页> 编程资料编程资料
CSS flex-basis 文本溢出问题的解决css多行文本溢出时出现省略号的示例纯CSS定制文本省略的方法大全CSS实现单行、多行文本溢出显示省略号的实现方法css实现文本溢出显示省略号CSS实现限制字数功能当对象内文本溢出时显示省略标记用css截取字符实现文字自动截断隐藏溢出文本css实现li中文本超出行宽自动隐藏兼容IE和FF的单行溢出文本显示省略号-CSS教程-网页制作-网页教学网
2021-08-29
2042人已围观
简介 这篇文章主要介绍了CSS flex-basis 文本溢出问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
不值一提的 flex-basis
,却给文本溢出添加省略号这个小小的功能带来很多了麻烦。下面来演示一下。
1. flex 家族
flex 里有很多的属性,我们经常用到的就是如下操作:
.container { display: flex; } .container > .left { flex: 1; } .container > .right { flex: 1; }
这样可以很方便的实现一个左右等分的布局。
我们来看一个引起问题的例子:
Document 我比较短我很长,不是开玩笑的,可以长到没边
我们想要的效果:
但实际的效果:
为什么会出现这个情况?
2. flex-basis 从中作梗
flex: auto
实际上是三个属性的集合:
flex-grow: 1; flex-shrink: 1; flex-basis: auto;
flex-grow
表示放大比例, flex-shrink
表示收缩比例, flex-basis
表示分配多余空间前,项目占据的主轴空间。
我们左边 div 不放大,不缩小,固定 80px 宽度;右边 div 自动铺满剩余宽度也就是 200px - 80px = 120px,实际效果却远远超出了 120px,这是因为 flex-basis 为 auto 时的计算导致的。
我们来看看 flex-basis: auto 的历史:
- 最初的时候 flex-basis 是由 width/height 决定的;
- 后来有个bug 1032922 ,flex-basis 的计算就变成了沿主轴的宽度决定了;
- 后来又出现了一个 bug 1093316 ,又变回了由 width/height 决定且出现了一个新的概念
content
来自动计算宽/高;
所以当我们没有给 flex-basis
元素设置 width
时, flex-basis: auto
由内部的 content
决定宽度,且受 max/min-width
限制。
如此一来,在内部 content
自由的情况下,那么 flex-basis
元素的宽度就看 max/min-width
了。
max-width
的默认值是 none
,而 min-width
的默认值一般是 0
,而此处却是 auto
,这也是出现“异常”的原因了。
flex-basis
元素:
普通元素:
3. 解决方式
知道原因后,那我们就可以对症下药了。
- 首先自然是设置
width
属性即可了,只要width
小于剩余空间即可,一般设置为width: 0;
这样可百分之百确定小于剩余空间; - 不设置
width
但用min-width
来限制也是一样的,既然 flex 项 的min-width:auto
,那我们也设置一个小于剩余空间的值,一般也是min-width: 0;
- 设置
overflow:hidden
来限制溢出效果也是一致的。
介绍了三种解决方式,再来聊聊前两种为什么可以解决的原因吧。
第一种很简单,width 设置为 0,但是 flex-basis
会让元素填满剩余空间,所以就会铺满,由于 P 元素有不换行显示省略号,会正常显示。
那么第二种呢?
第二种的情况比较复杂,当我们设置了 min-width
不为 auto 的值后,这里会用到 shrink-to-fit 算法,这个算法的计算机制如下:
min(max(preferred minimum width, available width), preferred width)
翻译成人话就是:
- preferred minimum width:最小宽度
- available width:可用宽度,也就是content box的宽度
- preferred width:首选宽度,除了明确换行外的不换行时的宽度
shrink-to-fit 的宽度 = min ( max (最小宽度, 可用宽度) , 首选宽度)
那么来计算一下:
- 最小宽度:0
- 可用宽度:272px
- 首选宽度:200 - 一些七七八八的值剩余部分(98px)
由计算可得:
max(0, 272) = 272
min(272, 98) = 98
所以最终宽度是剩余部分 98px,当我们手动设置 min-width: 110px
时就可以看到超过溢出去了。
总结
css 并没有我们想象的那么信口拈来,还有有规律可循的,不过这个寻的过程却是有点复杂……遇到不解的可以多看看它是怎么来的,要干嘛,就能明白解决它的思路了。
相关内容
- 纯CSS实现数字加减按钮的最佳方案CSS3实现紫色发光按钮悬停特效基于CSS 属性实现按钮悬停边框和背景动画集合CSS实现鼠标移动到图片或按钮上改变大小的方法示例CSS实现菜单按钮动画css 单选按钮图标替换的方法纯css实现Material Design中的水滴动画按钮
- postcss-pxtorem移动端适配的实现吃透移动端 1px的具体用法移动端适配 使px自动转换remHtml5移动端适配IphoneX等机型的方法浅谈移动端适配大法html5实现移动端适配完美写法详解如何使用rem或viewport进行移动端适配
- 详解八种方法实现CSS页面底部固定css实现背景渐变与底部固定的蓝天白云示例div footer标签css实现位于页面底部固定
- 用css完成根据子元素不同书写样式的方法CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- CSS3改变浏览器滚动条样式详解css3自定义滚动条样式写法CSS3自定义滚动条样式的示例代码CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
- 浅谈CSS3 动画卡顿解决方案CSS3实现超慢速移动动画效果非常流畅无卡顿
- 纯CSS3实现漂亮的input输入框动画样式库(Text input love)HTML中利用div+CSS实现简单的箭头图标的代码css 11种方法实现一个tips带有描边的小箭头css实现带箭头和圆点的轮播可自定义箭头样式的CSS3气泡提示框CSS3制作可自定义配置箭头的气泡提示框效果源码基于CSS实现带阴影和小箭头的黑色风格下拉菜单效果CSS实现让同一行文字和输入框对齐的方法利用HTML、CSS 实现带表情的评论框的制作教程CSS实现带箭头的提示框效果【示例代码】
- CSS3下的渐变文字效果实现示例css 进度条的文字根据进度渐变的示例代码css3实现文字扫光渐变动画效果的示例CSS3文字背景色渐变过渡特效源码CSS实现文字高光水波渐变的动态效果实例一款纯css3实现的颜色渐变按钮的代码教程使用CSS3的背景渐变Text Gradient 创建文字颜色渐变CSS 网页文字渐变效果css实现文字颜色渐变的三种方法
- css自定义属性和聚光灯效果的实现最新Edge浏览器将支持CSS自定义属性深入解析CSS中的自定义属性css如何实现自定义更为美观的链接提示效果初步认识css自定义属性
- 纯CSS实现红绿灯效果(面试常见)你应该知道的5个CSS面试问题小结前端HTML+CSS笔试题面试题前端面试必备之CSS3的新特性面试时可能被问到的一些CSS问题CSS常见面试问题汇总(推荐)