垂直文本方向

问题描述 投票:86回答:23

我一直在尝试文字在垂直方向上,就像我们在ms-word表中所做的那样,但到目前为止我只能做THIS ...我不满意因为它是一个旋转的盒子...... Isn'有没有办法让实际的垂直方向文字?

我只在演示中将旋转设置为305度,这不会使文本垂直。 270deg但我只做了演示以显示旋转。

html css text vertical-alignment
23个回答
95
投票

替代方法:http://www.thecssninja.com/css/real-text-rotation-with-css

p { writing-mode: tb-rl; }

2
投票

添加课程

.rotate {
        -webkit-transform: rotate(-90deg);
        -moz-transform: rotate(-90deg);

}

我每天都使用它,并没有任何问题。

https://css-tricks.com/snippets/css/text-rotation/


2
投票

下面是一些SVG代码示例,我用它将三行垂直文本放入表格列标题中。通过一些调整可以实现其他角度。我相信大多数浏览器最近都支持SVG。

<svg height="150" width="40">
  <text font-weight="bold" x="-150" y="10" transform="rotate(-90 0 0)">Jane Doe</text>
  <text x="-150" y="25" transform="rotate(-90 0 0)">0/0&nbsp;&nbsp;&nbsp;&nbsp;0/0</text>
  <text x="-150" y="40" transform="rotate(-90 0 0)">2015-06-06</text>
  Sorry, your browser does not support inline SVG.
</svg>

2
投票

要以垂直方式显示文本(自上而下),我们可以简单地使用:

writing-mode: vertical-lr; 

transform: rotate(180deg);

#myDiv{
text-align: center;
}

#mySpan{
writing-mode: vertical-lr; 
transform: rotate(180deg);
}
<div id="myDiv"> 

<span id="mySpan"> Here We gooooo !!! </span>

</div>

注意我们可以添加它以确保浏览器兼容性:

-webkit-transform: rotate(180deg);   
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
transform: rotate(180deg);

我们还可以在writing-mode上阅读更多关于Mozilla docs.的信息


2
投票

#myDiv{
text-align: center;
}

#mySpan{
writing-mode: vertical-lr; 
transform: rotate(180deg);
}
<div id="myDiv"> 

<span id="mySpan"> Here We gooooo !!! </span>

</div>


1
投票

这也有效:

transform: rotate(90deg);

1
投票

最好的解决方案是使用writing-mode writing-mode: vertical-rl; https://developer.mozilla.org/en-US/docs/Web/CSS/writing-mode

它定义文本行是水平还是垂直布局以及块的进展方向。

它具有良好的浏览器支持,但不适用于IE8(如果你关心IE)http://caniuse.com/#feat=css-writing-mode


1
投票

我已经设法有一个有效的解决方案:

(我在middleItem类div中有一个标题)

.middleItem > .title{
    width: 5px;
    height: auto;
    word-break:break-all;
    font-size: 150%;
}

0
投票

您可以使用自动换行:break-word在片段后面使用垂直文本

HTML:

<div class='verticalText mydiv'>Here is your text</div>

CSS:

.verticalText {
word-wrap: break-word;
  font-size: 18px;
}
.mydiv {
  height: 300px;
  width: 10px;
}

0
投票
h1{word-break:break-all;display:block;width:40px;} 

H E L L O

注意:浏览器支持 - IE浏览器(8,9,10,11) - Firefox浏览器(38,39,40,41,42,43,44) - Chrome浏览器(44,45,46,47,48) - Safari浏览器(8,9) - Opera浏览器(不支持) - Android浏览器(44)


0
投票

尝试使用SVG文件,它似乎具有更好的浏览器兼容性,并且不会破坏您的响应式设计。

我尝试了CSS变换,并且在变换原点上遇到了很多麻烦;并最终得到一个SVG文件。花了大约10分钟,我也可以用CSS控制它。

如果您没有Adobe Illustrator,可以使用Inkscape制作SVG。


76
投票
-webkit-transform: rotate(90deg);

其他答案是正确的,但它们导致了一些对齐问题。尝试不同的东西时,这个CSS片段代码对我来说非常合适。

.vertical{
    writing-mode:tb-rl;
    -webkit-transform:rotate(90deg);
    -moz-transform:rotate(90deg);
    -o-transform: rotate(90deg);
    -ms-transform:rotate(90deg);
    transform: rotate(90deg);
    white-space:nowrap;
    display:block;
    bottom:0;
    width:20px;
    height:20px;
}

0
投票

您可以使用以下CSS属性实现相同的功能:

writing-mode: vertical-rl;
text-orientation: upright;

0
投票

你可以这样试试

-webkit-transform: rotate(270deg);   
-moz-transform: rotate(270deg);
-ms-transform: rotate(270deg);
-o-transform: rotate(270deg);
transform: rotate(270deg);

-1
投票

<style>
    #text_orientation{
        writing-mode:tb-rl;
        transform: rotate(90deg);
        white-space:nowrap;
        display:block;
        bottom:0;
        width:20px;
        height:20px;
    }
</style>
</head>
<body>

<p id="text_orientation">Welcome</p>
</body>


-1
投票

这有点hacky但是跨浏览器解决方案,不需要css

<div>
    <div>h</div>
    <div>e</div>
    <div>l</div>
    <div>l</div>
    <div>o</div>
<div>

58
投票

我正在搜索实际的垂直文本而不是HTML中的旋转文本,如下所示。所以我可以通过使用以下方法来实现它。

HTML: -

<p class="vericaltext">
Hi This is Vertical Text!
</p>

CSS: -

.vericaltext{
    width:1px;
    word-wrap: break-word;
    font-family: monospace; /* this is just for good looks */
}

JSFiddle! Demo.

更新: - 如果您需要显示空格,请将以下属性添加到您的CSS。

white-space: pre;

所以,css类应该是

.vericaltext{
    width:1px;
    word-wrap: break-word;
    font-family: monospace; /* this is just for good looks */
    white-space: pre;/* this is for displaying whitespaces */
}

JSFiddle! Demo With Whitespace

更新2(28-JUN-2015)

由于white-space: pre;似乎在Firefox上没有用(对于这个特定用途)(截至目前),只需将该行更改为

white-space: pre-wrap;

所以,css类应该是

.vericaltext{
    width:1px;
    word-wrap: break-word;
    font-family: monospace; /* this is just for good looks */
    white-space:pre-wrap; /* this is for displaying whitespaces including Moz-FF.*/
}

JsFiddle Demo FF Compatible.


25
投票

要将文字旋转90度:

-webkit-transform: rotate(90deg);   
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);

此外,如果未设置为display:block,则无法旋转span标记。


9
投票

对于在firefox中使用下面另一个字符的垂直文本:

text-orientation: upright;
writing-mode: vertical-rl;

7
投票

尝试使用:

writing-mode: lr-tb;

3
投票

我是新手,对我帮助很大。只需更改宽度,高度,顶部和左侧以使其适合:

.vertical-text {
display: block;
position:absolute;
width: 0px;
height: 0px;
top: 0px;
left: 0px;
transform: rotate(90deg);
}

你也可以去here,看看另一种方式。作者这样做:

.vertical-text {
transform: rotate(90deg);
transform-origin: left top 0;
float: left;
}

2
投票

旋转,就像你一样,是要走的路 - 但请注意,并非所有的浏览器都支持它。如果你想获得一个跨浏览器的解决方案,你将不得不为此生成图片。


2
投票

可以使用CSS3 Transform属性

.txtdiv{
  transform:rotate(7deg);
  -ms-transform:rotate(7deg); /* IE 9 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.93969262, M12=0.34202014, M21=-0.34202014, M22=0.93969262,sizingMethod='auto expand')"; /* IE6-8 */
  -webkit-transform:rotate(7deg); /* Opera, Chrome, and Safari */
}
© www.soinside.com 2019 - 2024. All rights reserved.