多浏览器帮忙,文本内容超出容器

灵活的 overflow

2017/12/07 · CSS

原稿出处: 大漠   

说到overflow对于CSSer而言并不会不熟悉,用来决定内容溢出的场所。而过多时候大家还会动用text-overflow来支配内容溢出的显示。一般是平素截取,另一种是截取之后让文本前边带有四个点的省略号。不过有意思的是,大家前几日要说的灵巧overflow

前两天@kizmarh发的博文,让自个儿气象一新。再一次让自个儿只得叹服海外的工程师的立异能力。大家可能会说是什么效益呢?又是何许意义才能称得上是灵活的overflow呢?其余不多说,先上二个效应:
Demo1

初看成效,好象并不曾两样。如若想见到与众分歧的出力,我们可以在上边的德姆o做一下有关的操作。比如,将容器逐步的变小,只怕采用复选框,就能看到不一样的效益:澳门葡京 1

那就是说那样的功效是怎么落到实处的吗?那就是接下去要介绍的。

不胜枚举同桌可能会利用CSS的媒体询问来制作响应式的网站。而在当下当日,有些组件无法只依靠于视窗的拉长率来做为条件的判定。而是借助于分歧的规则做出差距的响应。

有贰个很好的解决方案是Container
Queries
,而它的前身是Element
Queries。他们的前景并不分明,可是中间的局地表征,可以因而Polyfills来落实。但话又说回去,使用Polyfill来促成部分风味,并不是深刻的方案,而且要经过Polyfill达到每1个特征,那也是一件越发繁重的天职。

唯独大家不得不依靠于JavaScript可能说Container
Queries?就算大家应用CSS就能一蹴即至Container
Queries提供的有个别特点,那是否一个更值得可取的方案吧?接下去就来看几个科普的例子。

说到overflow对于CSSer而言并不会素不相识,用来决定内容溢出的气象。而过多时候大家还会采纳text-overflow来支配内容溢出的显得。一般是一贯截取,另一种是截取之后让文本前面带有五个点的省略号。不过有意思的是,我们后日要说的灵活overflow。

CSS 超出隐藏已毕限制字数的成效代码(多浏览器匡助),css字数

<html>
<title>css控制字数</title>
<head>
<style type="text/css">
.dd {
    border: solid 1px gray;
    width: 180px;
    course: hand;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis; /* for IE */
    -o-text-overflow: ellipsis; /* for Opera */
    -icab-text-overflow: ellipsis; /* for iCab */
    -khtml-text-overflow: ellipsis; /* for Konqueror Safari */
    -moz-text-overflow: ellipsis; /* for Firefox,mozilla */
    -webkit-text-overflow: ellipsis; /* for Safari,Swift*/
}
</style>
</head>
<body>


        信心网使用CSS控制文章标题字数信心网使用CSS控制文章标题字数信心网使用CSS控制文章标题字数 
    <br>
    <div class="dd">信心网使用CSS控制文章标题字数信心网使用CSS控制文章标题字数信心网使用CSS控制文章标题字数
    </div>
</body>
</html>

备注:<span>标签不是块标签,尽管没有章程展现为预期的指南,则须要将其改为块标签,添加 style=”display:
block”样式。

 

object.style.whiteSpace=”nowrap”在大家的 HTML DOM
教程中,您能够找到越来越多关于 whiteSpace 属性的底细。

p

{

white-space: normal

}

或是的值

值 描述

normal 暗中认同。空白会被浏览器忽略。

pre 空白会被浏览器保留。其行事艺术接近 HTML 中的 <pre> 标签。

nowrap 文本不会换行,文本会在在同一行上此起彼伏,直到蒙受 <br>
标签甘休。

 

名称:text-overflow

分类:IE专有样式

简述:设置是或不是采纳简单号标示文本溢出

概述:text-overflow是安装是不是选用简单号标示文本溢出的样式(Style)。

text-overflow详细表明语法:

text-overflow : clip | ellipsis

取值:

clip : 暗中认同值。不突显省略标记(…),而是大致的裁切

ellipsis : 当对象内文本溢出时显示省略标记(…)

 

overflow 属性设置当成分的始末溢出其区域时爆发的事体。

继承性:No

说明

这么些性格定义溢出成分内容区的情节会如何处理。假若值为
scroll,不论是或不是须要,用户代理都会提供一种滚动机制。由此,有可能就是元素

框中可以放下全部内容也会冒出滚动条。

JavaScript 语法

CSS 属性也可由此一段 JavaScript 被动态地改变。

多浏览器帮忙,文本内容超出容器。 

本子语法:

object.style.overflow=”hidden”在我们的 HTML DOM
教程中,您可以找到更多关于 overflow 属性 的底细。

在我们的 HTML DOM 教程中,您也足以找到完整的 Style 对象参考手册。

例子

p

{

overflow: scroll

}

或是的值

值 描述

visible 暗中认同。内容不会被修剪,会显未来要素之外。

hidden 内容会被修剪,可是浏览器不会显得供查看内容的滚动条。

scroll 内容会被修剪,不过浏览器会显示滚动条以便查看其余的内容。

auto 如若故事情节被修剪,则浏览器会呈现滚动条以便查看其余的故事情节。

单行文本隐藏

用text-overflow:ellipsis属性来完成单行文本的溢出突显省略号(…),部分浏览器还必要加宽度width属性。
父容器设置如下属性,已毕单行省略号隐藏
overflow:hidden;
text-overf:ellipsis;
white-space: nowrap;

长文本变得更短

在大家Web的实际拔取中,常有那样的一种意义。在有充足的空间里浮现全体的文书内容出来,但在并未充裕的长空里,通过text-overflow:ellipsis把要出示的内容变短。但我们并不只是想把内容截取,比如我们想在有充分的上空显得一行文本,在不丰裕的上空内突显另一行文本,甚至是在更短的半空中,只透过三个图标来呈现。那也等于你在篇章开头看到的效应。那么如此的效益是怎么落实的呢?

前两天@kizmarh发的博文,让自家赏心悦目。再度让本人只可以叹服海外的工程师的立异能力。大家莫不会说是什么效益呢?又是何许效益才能称得上是灵活的overflow呢?其他不多说,先上二个功力:

CSS怎限制显示的文本字数

<html>
<title>css控制字数</title>
<head>
<style type=”text/css”>
.dd
{
border: solid 1px gray;
width:180px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
course:hand;
}
</style>
</head>
<body>
<span class=”dd”>

信心网使用CSS控制文章标题字数信心网使用CSS控制文章标题字数信心网使用CSS控制小说标题字数
</span>
<br>
<div class=”dd”>
信心网使用CSS控制小说题目字数信心网使用CSS控制小说标题字数信心网使用CSS控制作品标题字数
</div>
</body>
</html>

探望功用后,您应该相信那不是虚言了吗,o(∩_∩)o…!

其间white-space 属性设置什么样处理成分内的空白。

以此特性声明建立布局进程中什么处理成分中的空白符。值 pre-wrap 和
pre-line 是 CSS 2.1 中新增

的。

继承性:Yes
JavaScript 语法
CSS 属性也可因而一段 JavaScript 被动态地改变。

剧本语法:
object.style.whiteSpace=”nowrap”在大家的 HTML DOM
教程中,您可以找到更加多关于 whiteSpace 属性

的细节。

p
{
white-space: normal
}
唯恐的值
值 描述
normal 暗中认同。空白会被浏览器忽略。
pre 空白会被浏览器保留。其行为情势接近 HTML 中的 <pre> 标签。
nowrap 文本不会换行,文本会在在同一行上此起彼伏,直到遇见 <br>
标签甘休。

名称:text-overflow
分类:IE专有样式
简述:设置是或不是选用简便号标示文本溢出
澳门葡京 ,概述:text-overflow是设置是还是不是采纳简便号标示文本溢出的体裁(Style)。
text-overflow详细表明语法:

text-overflow : clip | ellipsis

取值:

clip : 私行认同值。不显得省略标记(…),而是简单的裁切
ellipsis : 当目的内文本溢出时显示省略标记(…)

overflow 属性设置当成分的始末溢出其区域时发生的作业。

继承性:No

说明
以此性情定义溢出成分内容区的故事情节会怎么处理。尽管值为
scroll,不论是不是须要,用户代理都会提供一种滚动机制。由此,有大概就是成分

框中可以放下全数情节也会产出滚动条。
JavaScript 语法
CSS 属性也可因而一段 JavaScript 被动态地改变。

剧本语法:
object.style.overflow=”hidden”在大家的 HTML DOM
教程中,您可以找到越多关于 overflow 属性 的细节。

在我们的 HTML DOM 教程中,您也得以找到完整的 St……余下全文>>
 

多行文本隐藏

  • 在WebKit浏览器或移动端(绝超越贰分一是WebKit内核的浏览器)的页面落成比较简单,可以直接采纳Web基特的CSS扩大属性(WebKit是私有属性)-webkit-line-clamp
    ;注意:那是八个 不正规的性质,它从未出现在 CSS 规范草案中。
    父容器中设置如下属性,完成多行省略号隐藏
    overflow : hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;/文本行数/
    -webkit-box-orient: vertical;
  • 正如可靠不难的做法就是安装相对稳定的容器高度,用富含省略号(…)的因素模拟达成;
    p {
    position:relative;
    line-height:1.4em;
    /* 3 times the line-height to show 3 lines */
    height:4.2em;
    overflow:hidden;
    }
    p:after {
    content:”…”;
    font-weight:bold;
    position:absolute;
    bottom:0;
    right:0;
    padding:0 20px 1px 45px;
    background:url(http://css88.b0.upaiyun.com/css88/2014/09/ellipsis\_bg.png))
    repeat-y;
    }
    此间注意几点:

height高度是line-height的3倍;
终止的省略好用了半晶莹剔透的png做了减淡的法力,恐怕安装背景颜色;
IE6-7不显得content内容,所以要包容IE6-7方但是在情节中投入多个标签,比如用<span
class=”line-clamp”>…</span>去模拟;

  • js方法之后再写

落实方案

先是在我们的模版中有两有些结构,都放置在overflower的容器当中,其中overflower-short中放置的是短文本内容,同时还有2个overflower-long容器中放置的是长文本内容。为了让内容更具可读性,在短文本的容器中使用aria-hiddentitle来增强阅读性。比如:

JavaScript

<span class=”overflower”> <!– 放置短文本的容器 –> <span
class=”overflower-short” aria-hidden=”true” title=”Some long text that
could become shorter”> Short text here is.</span> <!–
放置长文本的容器 –> <span class=”overflower-long”>Some long
text that could become shorter.</span> </span>

1
2
3
4
5
6
7
<span class="overflower">
<!– 放置短文本的容器 –>
<span class="overflower-short" aria-hidden="true" title="Some long text that could become shorter">
Short text here is.</span>
<!– 放置长文本的容器 –>
<span class="overflower-long">Some long text that could become shorter.</span>
</span>

此地我们将用到CSS的flex-wrap属性。将overflower容器设置为inline-flex,并且同时把flex-wrap的值设置为wrap。然后再overflower-shortoverflower-long设置不相同的体裁。其它对于不辅助flex-wrap的浏览器,仍然使用text-overflow:ellipsis来处理。

JavaScript

.overflower { line-height: 1.5em; display: inline-block; overflow:
hidden; box-sizing: border-box; max-width: 100%; height: 1.5em;
white-space: nowrap; text-overflow: ellipsis; } .overflower-long {
display: inline; } .overflower-short { display: none; } @supports
(flex-wrap: wrap) { .overflower { display: inline-flex; flex-wrap: wrap;
} .overflower-short { display: block; overflow: hidden; width: 0;
text-overflow: ellipsis; flex-grow: 1; } .overflower-long { flex-basis:
100%; } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
.overflower
{
    line-height: 1.5em;
 
    display: inline-block;
    overflow: hidden;
 
    box-sizing: border-box;
    max-width: 100%;
    height: 1.5em;
 
    white-space: nowrap;
    text-overflow: ellipsis;
} .overflower-long
{
    display: inline;
} .overflower-short
{
    display: none;
} @supports (flex-wrap: wrap)
{
    .overflower
    {
        display: inline-flex;
 
        flex-wrap: wrap;
    } .overflower-short
    {
        display: block;
        overflow: hidden;
 
        width: 0;
 
        text-overflow: ellipsis;
 
        flex-grow: 1;
    } .overflower-long
    {
        flex-basis: 100%;
    }
}

规律就是那般简单,我们来看几个实例:
Demo2

拖动容器右下角改变容器大小,大概采取复选框,你将见到与众区其余出力:澳门葡京 2

他俩是如何是好事的,来看看CSS:

  • 使用@supports做了三个鲁人持竿增强的拍卖,即便浏览器协理flex-wrap天性,那么将使用Flexbox的某天性格的特点,比如容器overflowerinline-flex容器,然后同盟flex-grow:1text-overflow:ellipsis来拍卖短文本样式,对于长文本,将flex-basis设置为100%
  • 别的索要给容器2个稳定的冲天。所以设置height的值,同时为了文本能垂直居中,再安装line-height的值和height等同
  • 对此不支持flex-wrap的浏览器,在overflower也等于最外侧的容器中,通过text-overflow:ellipsiswhite-space来支配文件,当然那一个时候短文本就不显得了

大约就是这么的八个办事规律。就算这种方式让我们落到实处了灵活的overflow,效果是更令人感觉很爽,但对此追求HTML干净的校友而言,那是一件不可以忍受的事情。为了那种效应,让大家的HTML变得冗余。鱼和熊掌不可兼得嘛!

经过那一个职能,再度验证了CSS的有力!

除此之外,为了记残障人员能更好的走访网站,那里还通过aria-hidden='true'以及title等等的特性,增强可阅读性。

Demo1

在火狐里 怎用CSS限制字数并以点的样式显得

<html>
<head>
<style type=”text/css”>
body{
font-family:Arial, Helvetica, sans-serif;/*字体。*/
font-size:12px;/*字体大小12像素。*/
}
div{
width:200px;/*层的大幅度。*/
height:24px;/*层的万丈。*/
line-height:24px;/*行间距。*/

border:#ccc solid 1px;/*层边框为1像素黄色的实线。*/
background-color:#F9F9F9;/*背景颜色*/
margin:5px; /*离开周围都以5像素*/
}
div a{
color:#000;/*超文字超链接的颜料*/
display:block;/*概念为块级*/
width:150px;/*要呈现文字的宽窄*/
float:left;/*左对齐*/
overflow:hidden; /*超越的有个别隐藏起来。*/
white-space:nowrap;/*不显得的地点用简易号…代替*/
padding-right:7px; /*文字距离左侧7像素。*/
text-overflow:ellipsis;/* 支持 IE */
-o-text-overflow: ellipsis; /* 支持 Opera */
}
div:after{content:”…”;}/* 支持 Firefox */
</style>
</head>

<body>
<div><a
href=”#”>CSS截取字符串,超出用简单号代替sdfsdfdsfsdfsdfdsfdsfdsfds</a></div>
<div><a
href=”#”>CSS截取字符串,并将过量用简易号代替</a></div>
</body>
</html>
 

超出隐藏完毕限制字数的成效代码(多浏览器协助),css字数 html title
css控制字数 / title head style type =”text/css” .dd { border : solid 1px
gray ; wid…

总结

那篇文章首要思路是来源于于@kizmarh发的博文,小编的创意让小编肃然生敬的钦佩。通过捐躯HTML的冗余,协作局地CSS的特点,比如Flexbox独有的特点,CSS强大的拔取器,可以帮助我们灵活的落实overflow的效用。相当于说,不借助于其余的JavaScript代码,可以让大家按照容器的大小呈现差其余文书,让我们的用户体验越来越和谐。感兴趣的同桌不仿试试。

2 赞 4 收藏
评论

澳门葡京 3

初看成效,好象并没有两样。借使想看到与众不相同的法力,大家可以在地方的德姆o做一下唇亡齿寒的操作。比如,将容器渐渐的变小,可能选取复选框,就能看到差其余成效:

澳门葡京 4

那就是说这么的功效是怎么落到实处的啊?这就是接下去要介绍的。

洋洋同校或者会动用CSS的传媒询问来打造响应式的网站。而在当时当日,有个别组件不可以只依靠于视窗的涨幅来做为条件的论断。而是依靠于差其余标准化做出不雷同的响应。

有贰个很好的消除方案是Container
Queries
,而它的前身是Element
Queries。他们的前途并不分明,然则里面的某些特征,可以透过Polyfills来达成。但话又说回去,使用Polyfill来兑现部分表征,并不是经久不衰的方案,而且要经过Polyfill达到每多少个特点,那也是一件十二分劳苦的职责。

不过大家只可以凭借于JavaScript可能说Container
Queries?如果大家利用CSS就能一蹴而就Container
Queries提供的有些特色,那是否三个更值得可取的方案吧?接下去就来看几个广大的事例。

长文本变得更短

在咱们Web的骨子里运用中,常有那样的一种意义。在有丰硕的空间里突显全体的文书内容出来,但在并未充裕的长空里,通过text-overflow:ellipsis把要出示的内容变短。但大家并不只是想把内容截取,比如大家想在有充分的上空显得一行文本,在不丰硕的长空内显示另一行文本,甚至是在更短的半空中,只透过二个图标来显示。那也等于您在文章开头看到的成效。那么如此的成效是怎么落实的吗?

兑现方案

先是在大家的模版中有两有个别结构,都放置在overflower的容器当中,其中overflower-short中放置的是短文本内容,同时还有3个overflower-long容器中放置的是长文本内容。为了让内容更具可读性,在短文本的容器中利用aria-hidden和title来提升阅读性。比如:

JavaScript

1

2

3

4

5

6

7

Shorttexthereis.

Some long text that could become shorter.

此地大家将用到CSS的flex-wrap属性。将overflower容器设置为inline-flex,并且还要把flex-wrap的值设置为wrap。然后再overflower-short和overflower-long设置差其他样式。别的对于不辅助flex-wrap的浏览器,依旧使用text-overflow:ellipsis来拍卖。

JavaScript

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

.overflower

{

line-height:1.5em;

display:inline-block;

overflow:hidden;

box-sizing:border-box;

max-width:100%;

height:1.5em;

white-space:nowrap;

text-overflow:ellipsis;

}.overflower-long

{

display:inline;

}.overflower-short

{

display:none;

}@supports(flex-wrap:wrap)

{

.overflower

{

display:inline-flex;

flex-wrap:wrap;

}.overflower-short

{

display:block;

overflow:hidden;

width:0;

text-overflow:ellipsis;

flex-grow:1;

}.overflower-long

{

flex-basis:100%;

}

}

原理就是那样不难,大家来看几个实例:

Demo2

拖动容器右下角改变容器大小,或许拔取复选框,你将见到与众不相同的功效:

澳门葡京 5

她俩是怎样行事的,来探望CSS:

运用@supports做了二个渐进增强的处理,即便浏览器协理flex-wrap属性,那么将运用Flexbox的一对品质的表征,比如容器overflower为inline-flex容器,然后协作flex-grow:1和text-overflow:ellipsis来拍卖短文本样式,对于长文本,将flex-basis设置为百分百

其它需求给容器三个稳住的惊人。所以设置height的值,同时为了文本能垂直居中,再安装line-height的值和height等同

对于不协理flex-wrap的浏览器,在overflower相当于最外侧的器皿中,通过text-overflow:ellipsis和white-space来控制文件,当然那个时候短文本就不呈现了

粗粗就是这么的3个办事规律。固然这种形式让大家落实了灵活的overflow,效果是更令人感觉很爽,但对于追求HTML干净的校友而言,那是一件不可以忍受的事务。为了那种效应,让大家的HTML变得冗余。鱼和熊掌不可兼得嘛!

由此那个职能,再次印证了CSS的兵不血刃!

而外,为了记残障人员能更好的拜会网站,那里还透过aria-hidden=’true’以及title之类的质量,增强可阅读性。

澳门葡京 6

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website