css居然有根据容器宽度自动截取长度加省略号功能,强大!!

作者:☆威廉古堡♂

项目中最初的做法(js截取):

//字符长度截取包括中英文混合
function subStr(str, len) {
    str = str.toString();
    var newLength = 0;
    var newStr = "";
    var chineseRegex = /[^\x00-\xff]/g;
    var singleChar = "";
    var strLength = str.replace(chineseRegex,"**").length;
    for(var i = 0;i < strLength;i++) {
            singleChar = str.charAt(i).toString();
            if(singleChar.match(chineseRegex) != null) {
                    newLength += 2;
            }else {
                    newLength++;
            }
            if(newLength > len) {
                    break;
            }
                    newStr += singleChar;
    }
    if(strLength > len) {
            newStr += "...";
    }
    return newStr;
} 

但发现无意中发现css居然有根据容器宽度自动截取长度加省略号功能,而且无需再次调用js方法去截取字符串。特别在数据比较多的table中,对每行中的列都要调用js方法,会导致页面加载时间,影响系统性能,导致用户体验不够。但会增加一点服务器流量。可以根据情况衡量使用。

语法:

text-overflow : clip |  ellipsis

取值:

clip: 
不显示省略标记(...),而是简单的裁切。
ellipsis: 
当对象内文本溢出时显示省略标记(...)

说明:

  1. 设置或检索是否使用一个省略标记(...)标示对象内文本的溢出。对应的脚本特性为textOverflow。
  2. text-overflow属性仅是注解,当文本溢出时是否显示省略标记。并不具备其它的样式属性定义。要实现溢出时产生省略号的效果还须定义:强制文本在一行内显示(white-space:nowrap)及溢出内容为隐藏(overflow:hidden),只有这样才能实现溢出文本显示省略号的效果。

兼容性:

text-overflow : clip

text-overflow : ellipsis

关于text-overflow属性如何应用,我们作如下的说明讲解:
       text-overflow:ellipsis; 
       overflow:hidden; 
       white-space:nowrap; 
       width:200px; (标注容器的宽度)

  text-overflow属性仅是注解,当文本溢出时是否显示省略标记。并不具备其它的样式属性定义。我们想要实现溢出时产生省略号的效果。还必须定义:强制文本在一行内显示(white-space:nowrap)及溢出内容为隐藏(overflow:hidden)。只有这样才能实现溢出文本显示省略号的效果。

在Div中的方法

<DIV STYLE="width: 200px; border: 1px dashed red; overflow: hidden; text-overflow:ellipsis"> 
<NOBR>就是比如有一行文字,很长,表格内一行显示不下.</NOBR> 
<NOBR>就a是比如有一行文字,很长,表格内一行显示不下.</NOBR> 
<NOBR>就1是比如有一行文字,很长,表格内一行显示不下.</NOBR> 
<NOBR>就F是比如有一行文字,很长,表格内一行显示不下.</NOBR> 
<NOBR>就是 Like You Pig Very Very Very Much.</NOBR> 
</DIV>

在Table中的方法

<TABLE style="table-layout:fixed;border-collapse:collapse;font-size:12px;" border="1" width="200" bordercolor=#666666> 
<TR> 
<TD nowrap style="overflow:hidden;text-overflow:ellipsis;">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</TD> 
</TR> 
</TABLE>

示例:

<!DOCTYPE html>
<html>
<head>
<title>text-overflow demo</title>
<meta charset=utf-8" />
<style>
.test_demo_clip {
    text-overflow:clip;
    overflow:hidden;
    white-space:nowrap;
    width:200px;
    background:#ccc;
}
.test_demo_ellipsis {
    text-overflow:ellipsis;
    overflow:hidden;
    white-space:nowrap;
    width:200px;
    background:#ccc;
}
</style>
</head>
<body>
<h2>text-overflow : clip </h2>
  <div class="test_demo_clip">
  不显示省略标记,而是简单的裁切条
</div>
<h2>text-overflow : ellipsis </h2>
<div class="test_demo_ellipsis">
  当对象内文本溢出时显示省略标记
</div>
</body>
</html>

演示结果:

时间: 2024-08-02 07:01:55

css居然有根据容器宽度自动截取长度加省略号功能,强大!!的相关文章

解决html表格中内容超出不强制换行和超出宽度自动隐藏并显示省略号

在表格布局中经常会遇到因为表格内容长短的变化导致布局混乱的情况,这个时候我们可能会有为了布局稳定把单元格宽度写死的情况:但是我们设置了宽度却发现超出了宽度之后会自动变大,用css定义元素的overflow:hidden;属性也不行:最后找的的解决方案如下: table{         table-layout:fixed;/* 只有定义了表格的布局算法为fixed,下面td的定义才能起作用. */ } td{     width:100%;     word-break:keep-all;/*

字符串截取长度显示省略号...

function cutstr(str ,len){ var temp, icount = 0, patrn =/[^\x00-\xff]/, strre = ""; for(var i = 0; i< str.length; i++){ if(icount < len -1){ temp = str.substr(i,1); if(patrn.exec(temp) == null) { icount = icount + 1; }else{ icount= icount

CSS根据屏幕分辨率宽度自动适应的办法

CSS根据屏幕分辨率宽度自动适应的办法 第一种办法是js选择CSS <SCRIPT language=JavaScript><!-- Beginif (screen.width == 640){document.write('<link href="/Css/Style.css" rel="stylesheet" type="text/css" />');} if (screen.width == 800){docu

CSS流体(自适应)布局下宽度分离原则——张鑫旭

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1463 一.简短的前言 之前曾作有“页面重构鑫三无准则之无宽度准则”一文,属于流体布局系列中的偏理论性的文章,本文也是这种性质的,可谓是“无宽度准则”一文的延续. “无宽度准则”是说内部元素不要定宽,但是,除非你的页面是像google的产品页面一样都是100%自适应的,那么页面的终归会有一个固定的宽度值,一般出现在页面的

CSS中的高度和宽度

1.简单的说,常规流向的块级元素,width为auto时,会尽量充满父元素的内容宽度,而height为auto时,则是由其内部的不浮动的子元素的高度决定(无浮动,绝对定位). 2.width:100%;width:auto <div>    <p>1</p></div><style type="text/css">div{ width:600px; overflow:auto;}p{ width:100%;      padd

ie浏览器和火狐浏览器对对容器宽度定义的差异

首先我们说说firefox和IE对CSS的宽度显示有什么不同: 其实CSS ’width’ 指的是标准CSS中所指的width的宽度,在firefox中的宽度就是这个宽度.它只包含容器中内容的宽度.而Internet Explorer ’width’则是指整个容器的宽度,包括内容,padding ,border. Firefox中:容器占的宽度=内容宽度+padding宽度+border宽度 IE中:内容宽度=您定义的容器宽度(Internet Explorer ’width’)-padding

纯CSS实现侧边栏/分栏高度自动相等

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=694 一.为何要分栏高度一致? 分栏高度一致的目的是更加美观.举两个例子吧. ① 对于分栏布局,我们或许会用边框(border)进行分隔,就如鄙人博客的分栏: 此时最担心的问题就是高度不一致,尤其是无边框属性的分栏高度超过有边框属性的分栏,结果就会: 虽然我们可以使用min-height或是边框重叠技术进行适当修复,但是

百度联盟广告如何理解按父容器宽度

创建百度联盟广告位的时候,选择按父容器宽度展示,但是在加入之后,查看代码发现广告的宽度为页面的宽度,并不是希望的父级的宽度, 如图在这里查看: 解析:百度联盟广告自动生成的div按父级的div宽度来自适应,如果父级是一个包含padding的div,则父级的宽度为padding+本身的宽,然而,我们希望百度的广告所占的宽度仅仅为父级本身的宽,所以此时需要给默认创建的加广告的div外面包一个div,该div默认宽度即为父级的本身的宽,则百度联盟的广告可以正常显示,如在vue中加入百度联盟广告时,代码

css实现图片自适应容器的几种方式

css实现图片自适应容器 经常有这样一个场景,需要让图片自适应容器的大小. 1.img标签的方式 我们马上就能想到,把width.height 设置为100%啊.来看一哈效果. <div class='div1'> <img src="./peiqi.png" > </div> .div1 { width:500px; height:400px; border:1px solid black; } .div1 img { /* width: 100%