HTML内超过多少像素以省略号显示

        时间过的很快,转眼来到了2013年,我在北京工作也一年有余,静下心来,回头想想,自己貌似一年内没有成长多少,或者说成长的很少,反正自己没有看到,公司年终总结都不知道说些什么。今年是蛇年,是很多人的本命年,包括我,2012年一些事情没有做完,争取春节前做完。进入正题。

        很多时候都有这种需求,页面上的文字显示不下,需要以省略号代替,可能有些人会想到通过控制文字的长度实现,的确,在已知的文字样式下,如果文字全是中文或者全是非中文是可以通过长度来控制的,但是我们的情况通常是中英文混合,这种方式就不适用了,下面总结了几种方式,适用于不同的情况。

        1. 通过CSS控制

<html>

<head>

<style type="text/css">

body{

font-family:Arial, Helvetica, sans-serif;/* 字体 */

font-size:12px;/* 字体大小12像素 */

}

a{

width: 140px;/* 要显示文字的宽度 */

float: left;/* 左对齐,不设置的话只在IE下好用 */

overflow: hidden; /* 超出的部分隐藏起来 */

white-space: nowrap;/* 不显示的地方用省略号...代替 */

text-overflow: ellipsis;/* 支持 IE */

-o-text-overflow: ellipsis;/* 支持 Opera */

}

</style>

</head>

<body>

<a href="#">CSS截取字符串,超出用省略号代替</a>

</body>

</html>

        通过CSS控制不需要改变文本本身,可以在页面渲染的时候就控制如何显示了,并且可以通用,缺点是只能在文字尾部加省略号,但有的时候我想要这种格式,“测试-看我有多长看我....doc”,如果文本过长的话,.doc前的文本加省略号,保留格式标志,这种CSS就无法控制了。

        2. 通过改变要显示的文本,前提是动态网站,思路是后台语言取得文本内容后,在显示在前台前,根据页面当前字体样式动态改变文本。

Font font = new Font("SansSerif", Font.PLAIN, 12);

Button button = new Button();

FontMetrics metrics = button.getFontMetrics(font);

String info = "CSS截取字符串,超出用省略号代替";

String temp = info;

while(metrics.stringWidth(temp) > 140) {

temp = temp.substring(0, temp.length() - 1);

}

System.out.println(temp + "...");

        这是用AWT算的,这种方式有点2。

        3. 通过JavaScript计算

function test() {

var info = "CSS截取字符串,超出用省略号代替";

var temp = info;

while(getTextWidth(temp) > 140) {

temp = temp.substring(0, temp.length - 1);

}

console.log(temp + "...");

}

function getTextWidth(info) {

var width;

var textNode = document.createTextNode(info);// 根据文本创建文本节点

var spanNode = document.createElement("span");// 创建span spanNode.appendChild(textNode);// 文本节点加入到span

document.body.appendChild(spanNode);// span加入到body,这时的文本已经过定义的CSS渲染 width = spanNode.offsetWidth;// 得到span宽度

document.body.removeChild(spanNode);// 删除span

return width; }

        这种方式是根据文本动态创建一个span,从而得到文本宽度,效率应该很低。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

React Native在Android平台运行gif的解决方法

概述 目前RN在Android平台上不支持gif格式的图片,而在ios平台是支持的,期待以后的版本中系统也是可以默认支持Android的。首先说下在ios平台怎...

2805
来自专栏极客编程

前端的对决:React的JSX与Vue的templates

React.js和Vue.js是这个星球上最流行的JavaScript库。它们都很强大,相对来说很容易获取和使用。

922
来自专栏老马寒门IT

06Vue.js快速入门-Vue组件化开发

组件其实就是一个拥有样式、动画、js逻辑、HTML结构的综合块。前端组件化确实让大的前端团队更高效的开发前端项目。而作为前端比较流行的框架之一,Vue的组件和也...

2265
来自专栏java一日一条

Jsoup代码解读之六-parser(下)

读Jsoup源码并非无聊,目的其实是为了将webmagic做的更好一点,毕竟parser也是爬虫的重要组成部分之一。读了代码后,收获也不少,对HTML的知识也更...

562
来自专栏柠檬先生

Extjs grid 组件

表格面板类Ext.grid.Panel 重要的配置参数 columns : Array 列模式(Ext.grid.column.Columnxtype: gr...

1878
来自专栏吴裕超

HTML link标签media参数

写html这么久了,今天才发现link标签还有个media参数,赶紧把它补回来,虽然现在没有用到,但是不能不知道它 定义和用法 media 属性规定被链接文档将...

3198
来自专栏西枫里博客

Bootstrap弹出框中插入图片

一时心血来潮,给博客增加一个打赏功能,看了下大家的打赏按钮,主要分两种,一种是两端是赞和分享中间是打赏的按钮形式,另外一种是孤单的一个打赏按钮。原本想用第一种的...

431
来自专栏施炯的IoT开发专栏

《101 Windows Phone 7 Apps》读书笔记-BOOK READER

课程内容 Ø编页 ØList Picker Ø拉伸List Box 控件中的条目     本章的Book Reader应用程序为Jane Austen的经典小...

1796
来自专栏CoXie带你学编程

初学Python:写码时应该缩进使用 tab 还是空格?

在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了。空格不会出现这个问题,因为空格就占一个字符的位置。

751
来自专栏Java后端生活

Markdown的十个基本标签

1887

扫码关注云+社区