首页 > 开发 > CSS > 正文

介绍使用css竖排文字的多种方法

2020-03-24 19:14:45
字体:
来源:转载
供稿:网友
制作网页有时候会使用竖排文字,本文介绍使用css竖排文字的多种方法,希望对你有所帮助方法一: br / 标签一种可能的方法(但不推荐)是在每个字母后面添加 br / 标签来实现竖排文字:复制内容到剪贴板
代码:
h1
N
E
T
T
U
T
S
/h1
千万不要使用使用这种方法,它是跛脚和草率的。方法二:静态包裹通过这个方法,我们将每个字母包裹在一个span中,然后在CSS中设置它的display属性为block。复制内容到剪贴板
代码:
!DOCTYPE html
html
head
meta charset=utf-8 /
title Vertical Text /title style
h1 span { display: block; }
/style
/head
body h1
span N /span
span E /span
span T /span
span T /span
span U /span
span T /span
span S /span
/h1 /body
/html
这种方法的问题是,除了可怕的标签外,它需要你手工去给每个字母用span括起来。如果这些文字是由CMS动态生成的,那就别用这种方法了。方法三:使用JavaScript我最初的想法是用JavaScript动态地添加span标签,这样我们就避开了方法二遇到的问题。复制内容到剪贴板
代码:
!DOCTYPE html
html
head
meta charset=utf-8 /
title Vertical Text /title style
h1 span { display: block; }
/style
/head
body
h1 NETTUTS /h1 script
var h1 = document.getElementsByTagName('h1')[0];
h1.innerHTML = ' span ' + h1.innerHTML.split('').join(' /span span ') + ' /span
/script
/body
/html
这个方法绝对是一个进步。以上方法中,我们将一行文本(NETTUTS)分拆放到一个数组中,并且将每个字母用span标签括起来。虽然我们可以用如for语句或$.map来筛选这个数组,但是更好更快的方法是手动地同时将文字插入和括起来。虽然相比方法二,这种方法更好,但是仍然不推荐此方法:在JavaScript被禁用的情况下会破坏你的布局。理想的情况下,如果可能的话,我们应该使用CSS来完成这个任务。方法四:给容器指定一个宽度如果可能的话,还是让我们远离JavaScript吧。如果我们给容器元素指定一个宽度,并强迫文字换行,如何?那是可以的。复制内容到剪贴板
代码:
!DOCTYPE html
html
head
meta charset=utf-8 /
title Vertical Text /title style
h1 {
width: 50px;
font-size: 50px;
word-wrap: break-word;
}
/style
/head
body
h1 NETTUTS /h1
/body
/html
在这个方法中,我们给h1定义很窄的宽度,然后是其文字的宽度等于外围的宽度,最后设置word-wrap 等于 break-word,这样我们就可以强制每个字母单独在一行。不过需要注意的是, break-word是一个CSS3的属性,并不是所有浏览器兼容。如果排除旧浏览器的话,这个问题貌似就可以解决了。。。但并完全是!上面的演示确实可以正常工作,但是玩像素值是很危险的,不信可以看看 将大写字母转换成小写字母的后果(在IE下看看):所以,使用这种方法,当你给h1指定具体像素宽度的时候,要特别小心。这种方法也不推荐!方法五:使用 letter-spacing作为预防措施,并扩展方法四,我们为什么不申请相当大的letter-spacing来解决这个问题?复制内容到剪贴板
代码:
!DOCTYPE html
html
head
meta charset=utf-8 /
title Vertical Text /title style
h1 {
width: 50px;
font-size: 50px;
word-wrap: break-word;
letter-spacing: 20px; /* Set large letter-spacing as precaution */
}
/style
/head
body
h1 Nettuts /h1
/body
/html
这似乎解决了这个问题,但是在这里,我们又使用了一些CSS3的属性。方法六:使用 ems另外,还有一个一行内的解决方法。不知道你有没有记得,当给父级元素指定 overflow: hidden 的时候,父元素就会扩展以包含浮动? 这个方法就类似这个,关键是使用了 em,并给每个字母之间添加了空格。复制内容到剪贴板
代码:
!DOCTYPE html
html
head
meta charset=utf-8 /
title Vertical Text /title style
h1 {
width: 1em;
font-size: 40px;
letter-spacing: 40px; /* arbitrarily large letter-spacing for safety */
}
/style
/head
body
h1 N e t t u t s /h1
/body
/html
漂亮又整洁,对不对?并且,这种方法可以给你的文字指定任意的font-size,因为我们使用了em,它就相当于选择字体的x-height,给我们提供了更多的灵活性。但是,你是否又一次想起,有时一行中会有不止一个字母。可实际情况是,你可以安全使用这种方法,因为我已经指定了一个相当大的letter-spacing,以确保一行只会有一个字母。到目前为止,据我所知,这是最好的跨浏览器兼容的解决方案。方法七:Whitespace最后一个方法来达到这种效果是使用 white-space属性。复制内容到剪贴板
代码:
!DOCTYPE HTML
html lang="en"
head
meta charset="UTF-8"
title Vertical Text /title
style
h1 { white-space: pre; }
/style
/head
body h1
J
E
F
F
R
E
Y
/h1
/body
/html
通过设置 white-space 的值为 pre,即可控制文字的排版就像在一个 pre 标签中一样。因此,它会严格地显示你添加的空格
html教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

上一篇:CSS阴影详解

下一篇:浏览器CSS兼容方案

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表