首页
网页制作
网络编程
脚本专栏
数据库
网站运营
网络安全
平面设计
CMS教程
搜索
建站极客
网页制作
CSS
正文
CSS创建竖排文字的简单方法小结
所属分类:
网页制作
/
CSS
阅读数: 873
收藏 0
赞 0
分享
下面是由我翻译自
Nettuts+
的文章,希望这几种方法能够给你带来一些提示。
方法一:<br />标签
一种可能的方法(但不推荐)是在每个字母后面添加<br />标签来实现竖排文字:
复制代码
代码如下:
<h1>
N
E
T
T
U
T
S
</h1>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>br Tags</title> </head> <body> <h1> N E T T U T S </h1> </body> </html>
提示:您可以先修改部分代码再运行
千万不要使用使用这种方法,它是跛脚和草率的。
方法二:静态包裹
通过这个方法,我们将每个字母包裹在一个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 标签中一样。因此,它会严格地显示你添加的空格。
本文由露兜博客翻译自:
The Easiest Way to Create Vertical Text with CSS
更多精彩内容
其他人还在看
CSS样式分离之再分离达到精简与重用
无论是CSS的分离还是js的分离,其主要作用之一就是精简与重用,CSS本身就代表着精简与重用,CSS样式分离,我一般指的是“以单独的CSS文件将CSS样式分离出来”,此处的重用多针对不同页面的重用,就是说,一个样式文件,可以多个页面使用,这对于一些公共样式的重构是很有
评论 0
收藏 0
赞 0
分享
CSS属性behavior的语法使用说明
在进行CSS网页布局的时候,我们经遇到刷新要保留表单里内容的时候,习惯的做法使用cookie,但是那样做实在是很麻烦,css中的behavior就为我们很好的解决了这个问题。今天jb51.net就向大家介绍CSS属性behavior的语法
评论 0
收藏 0
赞 0
分享
网页制作中的水平居中和垂直居中解决方法集合
在定义网页的CSS样式的时候,我们或许并不怎么用到垂直居中。
评论 0
收藏 0
赞 0
分享
最常见IE的Bug及其fix修复方法
Internet Explorer – Web程序员的毒药。在IE上开发时间中有超过60%的时间是花在和IE的bug进行搏斗,让你的开发生产率严重下降。下面是一个教程,告诉你9个IE上最常见的BUG以及如何解决它们。
评论 0
收藏 0
赞 0
分享
CSS常用浏览器兼容调整小结
用CSS+DIV来写网站代码的好处显而易见,这里不多说了,但由于不同浏览器对CSS的解释不统一,造成不同浏览器下页面错位的现象十分常见……
评论 0
收藏 0
赞 0
分享
css firefox火狐浏览器下的兼容性问题
css firefox火狐浏览器下的兼容性问题
评论 0
收藏 0
赞 0
分享
DIV+CSS 浏览器兼容性小结
在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果!
评论 0
收藏 0
赞 0
分享
div+css 布局常识 8问
CSSer与其他IT职位一样,在找工作的时候,都会面临着面试官提出的问题,或者给出的试卷。今天jb51.net收集了常见的8条面试题目,希望对您有所帮助。
评论 0
收藏 0
赞 0
分享
CSS用四种方式实现布局
CSS用四种方式实现布局
评论 0
收藏 0
赞 0
分享
css 解决表格边框不显示的问题
在 IE6 中,当表格单元格中的数据为空时,边框是不显示的,在IE8中是会显示的,怎样解决这个不兼容的问题呢。
评论 0
收藏 0
赞 0
分享
查看更多
网络赚钱
更多
揭秘朋友圈面膜:足不出户 国内生产俩月造出国际大牌
抢孩子谣言发布者究竟是谁?运营80余公众号造谣吸粉月赚20万
没钱不懂技术的屌丝草根站长该怎么通过网络赚钱
网赚感悟:网站为什么不赚钱?网赚没你想的那么简单
做什么样的网站能赚钱?
Google AdSense 电汇教程 谷歌联盟国内电汇收款教程(招行)
站长故事
更多
美团副总裁杨俊:做O2O的4个关键节点 会高效率地花钱
一个年入80W的96年草根站长
揭晓互联网三大巨头(百度,腾讯,阿里巴巴)和草根站长的往来
创业失败:一个屌丝站长4年互联网的辛酸经历
浅谈网站站长之现状
我对互联网VC的10点看法 知己知彼百战不殆