实现文本两端对齐的方式,可使用hyphens,它接收三个值none、manual 和auto。manual是它的初始值,将hyphens设置成auto能够实现。为了确保它奏效,须要在HTML标签的lang属性中指定合适的语言。css
效果以下:css3
上面这种格式的实现,看似简单有很让人头疼,这种格式的DOM形式:git
<dl> <dt>Name:</dt> <dd>Lea Verou</dd> <dt>Email:</dt> <dd>lea@verou.me</dd> <dd>lea@verou.me</dd> <dt>Location:</dt> <dd>Earth</dd> </dl>
因为dt和dd都是块级元素,致使了名字和值都会换行,有一种很好的处理办法:svg
dt, dd { display: inline; } dd + dt::before { content: '\A'; white-space: pre; } dd + dd::before { content: ', '; font-weight: normal; }
Unicode字符中A表明换行符。经过设置 white-space: pre,保留源代码中的这些空白符和换行函数
主要思路是:在CSS 中用渐变直接生成背景图像,而且用em 单位来设定背景尺寸,这
样背景就能够自动适应font-size 的变化了。
具体的实现以下:字体
<pre class="code"> urlParams.gitName = record.gitName; for (let item in record) { if (record[item] == currentId) { urlParams.stage = item; } } localStorage.setItem('urlParams', JSON.stringify(urlParams)); </pre>
.code { padding: .5em; line-height: 1.5; tab-size: 4; /* 接受一个数字或者一个长度值控制代码缩进 */ background: beige; background-size: auto 3em; background-origin: content-box; background-image: linear-gradient(rgba(0,0,0,.2) 50%, transparent 0); }
效果以下:编码
在写页面时,有时会出现通过美化过的&符号,若是用src单独指定某一种字体的话会增长http请求的次数,经过local这个函数能够解决这个问题,它能够指定本地字体的名称。url
在使用font-face将local这个函数引入时,须要指定要渲染的某一个特定的字符,就须要使用unicode-range,它只在@font-face 规则内部生效,它并非一个CSS属性spa
unicode-range它的语法是基于“Unicode码位”,所以须要知道字符的十六进制码位,经过
"&".charCodeAt(0).toString(16);(返回26) 获得&的十六进制编码3d
@font-face { font-family: Ampersand; src: local('Baskerville-Italic'), local('GoudyOldStyleT-Italic'), local('Palatino-Italic'), local('BookAntiqua-Italic'); unicode-range: U+26; } h1 { font-family: Ampersand, Helvetica, sans-serif; }
最终的效果以下:
处理css默认样式下划线的方法可使用background-image及其相关的属性,经过它设置渐变达到效果。
具体的实现以下:
span { background: linear-gradient(gray, gray) no-repeat; background-size: 100% 1px; background-position: 0 1.15em; /* 若是下划线在遇到字母时会自动断开避让,经过设置text-shadow模拟*/ text-shadow: .05em 0 white, -.05em 0 white; }
效果以下:
实现凸版印刷字体的效果
使用投影的效果达到,具体的实现以下:
.div { background: hsl(210, 13%, 60%); color: hsl(210, 13%, 30%); text-shadow: 0 1px 1px hsla(0,0%,100%,.8); }
最终的效果:
空心字效果的实现
方法是使用用text-shadow 属性的扩张参数就可以让投影变大,看起来就像给文字勾边了同样;或者是使用svg
用text-shadow:
div { color: white; text-shadow: 1px 1px black, -1px -1px black, 1px -1px black, -1px 1px black; }
最终效果:
用svg的方法:
<h1> <svg width="2em" height="1.2em"> <use xlink:href="#css" /> <text id="css" y="1em">CSS</text> </svg> </h1>
h1 { font: 500%/1 Rockwell, serif; background: deeppink; color: white; } h1 text { fill: currentColor; } h1 svg { overflow: visible } h1 use { stroke: black; stroke-width: 6; stroke-linejoin: round; }
效果以下:
svg的实现方式虽然语法复杂,可是它的视觉效果倒是最好的。
文字外发光的效果
实现的方法就是使用重叠的text-shadow便可,不须要考虑偏移量,颜色也只需跟文字保持一致。
.hi { background: #203; color: #ffc; text-shadow: 0 0 .1em, 0 0 .3em; }
效果以下:
文字凸起的效果
.css3d { background: #58a; color: white; text-shadow: 0 1px hsl(0,0%,85%), 0 2px hsl(0,0%,80%), 0 3px hsl(0,0%,75%), 0 4px hsl(0,0%,70%), 0 5px hsl(0,0%,65%); 0 5px 10px black; }
效果以下:
环形文字的实现
使用svg实现
<div class="circular"> <svg viewBox="0 0 200 200"> <path d="M 0,50 a 50,50 0 1,1 0,1 z" id="circle" /> <text><textPath xlink:href="#circle"> Each data point or cell of a cube is the </textPath></text> </svg> </div>
.circular { width: 300px; height: 300px; margin: 3em auto 0; } .circular svg { display: block; overflow: visible; } .circular path { fill: none; }
效果以下: