zoukankan      html  css  js  c++  java
  • CSS文本溢出显示省略号

    项目中常常有这种需要我们对溢出文本进行"..."显示的操作,单行多行的情况都有(具体几行得看设计师心情了),这篇随笔是我个人对这种情况解决办法的归纳,欢迎各路英雄指教。

    单行

    语法

    	overflow:hidden;
    	text-overflow:ellipsis;
    	white-space:nowrap
    

    示例

    文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号

    多行

    1.直接用css属性设置(只有-webkit内核才有作用)

    语法

      overflow: hidden;
      text-overflow: ellipsis;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
    

    移动端浏览器绝大部分是WebKit内核的,所以该方法适用于移动端;

    • -webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。

    • display: -webkit-box 将对象作为弹性伸缩盒子模型显示 。

    • -webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。

    • text-overflow: ellipsis 以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本。

    示例

    文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略

    2.利用伪类

    语法

    <div id="con">
      <span id="txt">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略</span>
      <span class="t"></span>
    </div>
    <style>
    #txt{
      display: inline-block;
      height: 40px;
       250px;
      line-height: 20px;
      overflow: hidden;
      font-size: 16px;
    }
    .t:after{
      display: inline;
      content: "...";
      font-size: 16px;
    	
    }
    </style>
    

    示例

    文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略

    3.利用绝对定位和padding;(跨浏览器解决方案)
    看到上例是不是觉得“哇,终于可以跨浏览器使用了”,但你这样想的时候有没有考虑过IE的感受?IE6/7是没有伪类的,还不赶快跪下对IE叫声“大哥”,虽然IE6已经退出市场,但是IE7还是需要兼容的,所以呢,我自己又想到了以下的办法,我这边测试了下感觉还行。

    上代码

    <p id="con2">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略<span class="t2">...</span>
    </p>
    <style>
    #con2{
      position: relative;
      height: 40px;
       250px;
      line-height: 20px;
      overflow: hidden;
      padding-right: 12px;
    }  
    .t2{
      position: absolute;
      right: 0;
      bottom: 0;
    }
    </style>
    

    这个方法的原理是:首先在包含文字的元素里,嵌入一个<span>...</span>,然后包含文字的元素右侧留出...的位置(padding-right),最后利用绝对定位将...定位至右侧的padding-right区域
    示例

    文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略...

    4.其他
    利用js插件来实现该功能,这里有俩款插件推荐,这篇主要介绍的是css方法,所以它们使用方法就不废话了。

    问题
    感谢村长指出了第二种和第三种都没有考虑到内容不足俩行的情况,这种情况下,我的上面说到的第二种和第三种方法,“...”依旧会存在,并不会隐藏。暂时还没有想出利用css来实现不到俩行隐藏的办法,sorry。所以如果存在不到俩行的情况尽量还是不要用了吧,可以使用js。这个就先放在这儿,什么时候想到办法再来修改

         function mitulineHide(num,con){
    		var contain = document.getElementById(con);
    		 console.log(con);
    		var maxSize = num;
    		var txt = contain.innerHTML;
    		if(txt.length>num){
    			console.log('1')
    			txt = txt.substring(0,num-1)+"..."
    		    contain.innerHTML = txt;
    		}else{
    			console.log("error")
    		}
    	};
    

    该函数传入俩个参数:允许的最大文字数目包含文字的元素节点Id

    如果觉得本文不错的话,帮忙点击下面的推荐哦
    >>>>点击阅读原文

  • 相关阅读:
    JS parseInt 中08.09 被按照0处理
    jsp页面修改后保存无反映,后台也没有执行到代码。
    linux setsockopt函数【转】
    gdb常用命令【转】
    C语言文件操作函数大全
    setsockopt 设置socket 详细用法 【转】
    解决VNC看不到图像的问题
    makefile【转】
    用GDB调试程序【转】
    Linux下GCC使用方法简介【转】
  • 原文地址:https://www.cnblogs.com/yzg1/p/5089534.html
Copyright © 2011-2022 走看看