自定义文本溢出CSS?

时间:2011-12-06 14:53:04

标签: css css3

我知道这可以通过Javascript实现,因为我自己也做过。但是,随着我构建的平台变得越来越大,我想尽可能多地使用JS重载。此外,在这个时间点,我认为使用CSS文本溢出属性更加可行,因为FireFox现在也支持它。

无论如何,阅读text-overflow reference page on MDN,我对第三个参数定义为“string”感到好奇。我不知道这是否引用“text-overflow属性接受字符串值”,或者它是否是一个参数(就像剪辑和省略号一样)。

基本上,我只想知道这个字符串参数是否允许我生成自定义文本溢出输出,例如" .."。我尝试过这样的事情:

  • text-overflow: string(" ..");
  • text-overflow: " ..";
  • text-overflow: ellipsis-" ..";

3 个答案:

答案 0 :(得分:18)

根据MDN文档底部的Compatibility Table,似乎只有Firefox 9+支持text-overflow的字符串值。

所以,你在这个问题上大部分都不走运。

答案 1 :(得分:1)

Mozilla已经开始提出这种语法,它已经在2012年初的UI level 3 spec LC草案中出现了:

text-overflow: ' ..';

或者,如果您打算将..附加到现有省略号:

text-overflow: '... ..';

但是,除了Mozilla's own之外,还没有其他已知的实现,因此这种语法有可能从规范的后续版本中删除。

答案 2 :(得分:0)

基于-webkit-line-clamp的纯css方法,您可以像老板一样自定义textoverflow css:

@-webkit-keyframes ellipsis {/*for test*/
    0% { width: 622px }
    50% { width: 311px }
    100% { width: 622px }
}
.ellipsis {
    max-height: 40px;/* h*n */
    overflow: hidden;
    background: #eee;

    -webkit-animation: ellipsis ease 5s infinite;/*for test*/
    /**
    overflow: visible;
    /**/
}
.ellipsis .content {
    position: relative;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-pack: center;
    font-size: 50px;/* w */
    line-height: 20px;/* line-height h */
    color: transparent;
    -webkit-line-clamp: 2;/* max row number n */
    vertical-align: top;
}
.ellipsis .text {
    display: inline;
    vertical-align: top;
    font-size: 14px;
    color: #000;
}
.ellipsis .overlay {
    position: absolute;
    top: 0;
    left: 50%;
    width: 100%;
    height: 100%;
    overflow: hidden;

    /**
    overflow: visible;
    left: 0;
    background: rgba(0,0,0,.5);
    /**/
}
.ellipsis .overlay:before {
    content: "";
    display: block;
    float: left;
    width: 50%;
    height: 100%;

    /**
    background: lightgreen;
    /**/
}
.ellipsis .placeholder {
    float: left;
    width: 50%;
    height: 40px;/* h*n */

    /**
    background: lightblue;
    /**/
}
.ellipsis .more {
    position: relative;
    top: -20px;/* -h */
    left: -50px;/* -w */
    float: left;
    color: #000;
    width: 50px;/* width of the .more w */
    height: 20px;/* h */
    font-size: 14px;

    /**
    top: 0;
    left: 0;
    background: orange;
    /**/
}
<div class='ellipsis'>
    <div class='content'>
        <div class='text'>text text text text text text text text text text text text text text text text text text text text text </div>
        <div class='overlay'>
            <div class='placeholder'></div>
            <div class='more'>...more</div>
        </div>
    </div>
</div>