span设置长文本显示固定长度,超出部分省略号表示,鼠标移动文字上显示所有内容

解决方法

思路为:设定width,并使文本内容强制单行显示,超出宽度部分用省略号隐藏。
代码如下:

<span class="tmp" id="tmp" >这是一句测试文本,超出宽度部分用省略号隐藏</span>

css:

.tmp{
  white-space:nowrap;/*强制单行显示*/
  text-overflow:ellipsis;/*超出部分省略号表示*/
  overflow:hidden;/*超出部分隐藏*/
  width: 260px;/*设置显示的最大宽度*/
}

运行后发现,宽度width未能生效,这是因为span标签属于行内元素(inline),所以无法设置高度和宽度;如果需要改变其宽高,就需要将其转变为块体元素(block)或行内块体元素(inline-block)。
修改后代码如下:

<span class="tmp" id="tmp"></span>

css:

.tmp{
  white-space:nowrap;/*强制单行显示*/
  text-overflow:ellipsis;/*超出部分省略号表示*/
  overflow:hidden;/*超出部分隐藏*/
  width: 260px;/*设置显示的最大宽度*/
  display:inline-block;
}

此时查看运行结果,省略号掩藏效果已经给出,但此时在span同行继续添加span显示文字时,产生了错位现象。此时需要给span添加元素的垂直对齐方式。

vertical-align: top 

最后使鼠标移动到文字上显示全部,方法为在span标签中添加title字段,将文字填充至title中。下面为最终版本:

<span class="tmp" id="tmp"  title=""></span>

css:

.tmp{
  white-space:nowrap;/*强制单行显示*/
  text-overflow:ellipsis;/*超出部分省略号表示*/
  overflow:hidden;/*超出部分隐藏*/
  width: 260px;/*设置显示的最大宽度*/
  display:inline-block;
}
.tmp-next{
  vertical-align: top;
}

js:

$.ajax({
            type : 'get',
            url: 'work/getWord',//数据来源,在controller层编写
            dataType:'json',
            success: function(datatmp){
                document.getElementById('tmp').innerHTML =datatmp.word;
                //将从数据源获取的datatmp中的word字段填充至id为tmp的标签中
                $("#tmp").attr("title",datatmp.word);
            }
        })

如有问题欢迎留言指正

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐