取消text-align:justify;对于文本的某些部分

时间:2011-12-20 09:51:23

标签: css mobile-safari

为防止包裹文本的一部分,可以使用<span style="white-space: nowrap;">中的该部分。

给定一段合理的文本(text-align: justify),如何取消部分文本的理由?我希望保持整个文本的合理性,但不允许增加两个特定单词之间的距离。

而不是像第二行那样均匀间隔:

Lorem ipsum dolor sit amet, consectetur |
adipiscing    elit.     Phasellus    et |
ullamcorperenim sed velit fermentum.    |

我希望将“adipiscing elit”这两个词保持在一起,如下所示:

Lorem ipsum dolor sit amet, consectetur |
adipiscing elit.      Phasellus      et |
ullamcorperenim sed velit fermentum.    |

这可能吗?

3 个答案:

答案 0 :(得分:6)

选项:

  1. 使用FOUR-PER-EM SPACE U + 2005代替普通空间,例如: adipiscing&#x2005;elit。无法保证浏览器将其视为不可伸缩的空间,但这是他们实际所做的事情,这是一件很自然的事情。毕竟,它是fixed-width spaces之一。缺点:如果文本的主要字体不是Arial Unicode MS或其他一些特别“丰富”的字体,则通常在IE 6上失败(显示一个小框而不是空格)。
  2. 将单词包含在内联标记内(通常为span)并为其设置text-justify: nonedisplay: inline-block。缺点:旧的浏览器不起作用,并强制将两个单词放在一起(由于后一个声明 - 没有它,这种方法在当前浏览器上不起作用。)
  3. 使用NO-BREAK SPACE而不是普通空间。这曾经运作良好,但有一个缺点是将两个单词强制在同一条线上。但是例如当前的Firefox将不间断视为可伸缩的,可悲的是。
  4. 使用类似于Web_Designer更新答案中的技术。我建议使宽度em值,使其与字体大小相关。空间的典型宽度为0.25em。

答案 1 :(得分:0)

我不建议使用html样式属性。如果您使用类,则更容易进行更改:

包裹两个词“adipiscing elit”。在像这样的类的范围内:

<span class="unjustify">adipiscing elit.</span>

然后在你的CSS中:

.unjustify {
    word-spacing: 2px; //experiment with differen't values here.
}


更新

经过一些测试后,上述解决方案似乎不起作用。
...所以我提出了以下(工作)解决方案:

用这样的类在一个范围内包裹两个单词之间的空格:

adipiscing<span class="unjustify"> </span>elit.

然后在你的CSS中:

.unjustify {
    display: inline-block;
    width: 6px;
}

答案 2 :(得分:0)

您应该研究的一个解决方案是使用几个固定宽度的Unicode空格字符之一。参见:

http://www.cs.tut.fi/~jkorpela/chars/spaces.html

http://en.wikipedia.org/wiki/Space_(punctuation

示例:

adipiscing&#x2004;elit.

然而,与Web_Designer的解决方案一样,如果换行符,则会在行尾留下一个空格。