自印刷出版物诞生以来,排版就一直是平面设计的基础。

同样,排版在网页设计中也扮演着重要角色。

1.CSS的基本排版技术

1.1 文本颜色

对应网页而言,文本颜色也许是最基本的样式之一。

默认情况下,浏览器把绝大部分文本渲染为黑色。

p {
color: #3b4348;
}

1.2 字体族

字体族(font-family)属性的值是一个备选字体的列表,按优先级从左到右排列。

body {
/* 列出包含空格的字体族名称时,引号不是非加不可,但最好加上。*/
/* 规范中只要求与通用字体族重名的字体族要加引号,但同时也建议给包含非标准符号的名称加引号 */
/* 字体列表最后的serif叫作通用字体族,在这里充当没有选择的选择 */
font-family: 'Georgia Pro', Georgia, Times, 'Times New Roman', serif;
}

Georgia是一种衬线字体。

衬线字体:“衬线”是字形笔画末梢的装饰性线条。

如果网页中要显示代码,应该首选monospace字体族,也叫“等宽字体”,因为monospace的每个字符的宽度都一样,不同行之间的字符可以完美对齐。

1.3 字型大小与行高

几乎所有浏览器中font-size的默认大小都是16像素,除非用户修改过偏好设置。

h3 {
font-size: 1.314em; /* 21px */
}

em单位用于font-size属性时,实际上是一个相应元素继承的font-size缩放因子。

对于font-size属性,可用百分比代替em

rem是基于根元素的em大小缩放,也就是基于html元素的font-size缩放。

长度单位还有mm、cm、in和pt等绝对物理长度,这些主要是给打印样式准备的。

1.4 行间距、对齐及行盒子的构造

如果行盒子中包含多个行高不一的行内盒子,那么这个行盒子的最终高度至少等于其中最高的行内盒子。

设置行高时,需要考虑当前字体大小。

body {
line-height: 1.5;
}

line-height设置没有单位的值1.5,意思是当前font-size的1.5倍。

也可以给line-height设置像素、百分比值或em值,但要注意body元素的所有子元素都会继承line-height的计算值。

如果给line-height设置没有单位的值,那么子元素继承的是一个系数,永远与自己的font-size成比例。

行内盒子也会受到verticaal-align属性的影响,它的默认值是baseline,即子元素的基线与父元素的基线对齐。

如果行盒子中有一个元素使用vertical-align调整了位置,那么它可能会扩展行盒子的高度。

1.5 文本粗细

我们使用font-weight属性来设置标题文本的粗细。

font-weight属性的值可以使用关键字:normalboldbolderlighter,也可以使用100的整数倍:100、200、300、··· 900。

默认值normal对应400,bold对应700,这两个粗细值是最常用的。

如果某款字体缺少你想要的粗细变体,浏览器会尽量模拟加粗效果,但无论如何不能模拟变细效果。这种模拟的结果往往差强人意。

1.6 字体样式

设置font-style:italic会从字型中选择斜体显示,前提是存在这个变体。如果不能存在,浏览器会通过倾斜字体来模拟,但结果同样也不会太理想。

1.7 大小写变换和小型大写变体

使用text-transform属性控制英文字母大小写。

1.8 控制字母和单词间距

通过word-spacing属性来控制单词间的距离,。它的值意味着在默认词间距基础上增加或减少一定的量。

通过letter-spacing属性来控制字符间的距离。

2.版心宽度、律动和毛边

行长对阅读体验有着重大影响。用排版的行话说,就是版心宽度。

article元素的宽度设置为38em,并令其在页面上居中。

article {
max-width: 38em;
margin: 0 auto;
}

2.1 文本缩进与对齐

设置段首缩进。

p + p {
text-indent: 1.25em;
}

段落的右边参差不齐,我们暂时先不管它。这种参差不齐的样式在排版上也有术语,叫作“毛边”。

居中显示。

h1 {
text-align: center;
border-bottom: 1px solid #c8bc9d;
}

text-align属性应用justify值,可以在单词间平均分布间距,结果是左右两端对齐,消除毛边。

2.2 连字符

手工在HTML中插入一个表示连字符的实体­。只有当浏览器需要断词换行时才会显示这个连字符。

使用hyphens属性,让浏览器帮我们插入连字符。

p { hyphens: auto; }

2.3 多栏文本

article {
max-width: 70em;
margin: 0 auto;
columns: 20em; /* 在保证最小宽度20em的前提下,自动设置栏数 */
column-gap: 1.5em;
}

columns属性是columns-countcolumn-width属性的简写形式。

columns-count属性表示最大栏数,column-width属性表示最小栏宽。

h1 {
column-span: all; /* 横跨所有栏 */
}

在印刷设计中,律动关系的应用非常普遍,结果就是正文文本都会排进基线网格。

3.Web字体

使用Web字体需要考虑许可和侵权问题。

嵌入Web字体的关键是@font-face规则。

@font-face {
font-family: Vollkorn;
font-weight: bold;
src:url('fonts/vollkorn/Vollkorn-Bold.woff') format('woff');
}

前面的@font-face块声明了在font-family值为Vollkorn且为粗体时应用该规则。之后提供了一个URL,供浏览器下载包含粗体字体的Web开放字体格式(WOFF,Web open font format)文件。

所有浏览器开发商都支持标准的WOFF格式。

为了解决旧版浏览器对字体格式支持的不一致问题,可以在@font-face规则中声明多个src值。

@font-face规则可以接受几个声明,多数是可选的。

  • font-family:必需,字体族的名称
  • src:必需,URL或URL列表,用于下载字体
  • font-weight:可选的字体粗细
  • font-style:可选的字体样式

这些声明是字体描述符(font descriptor),它们不会改变字体,它们的值只是为了告诉浏览器在什么情况下可以触发使用这个特定的字体文件。

浏览器加载和选择字体的原则:正确的font-family优先于正确的粗细值。

4.文本特效

4.1 合理使用文本阴影

CSS的text-shadow属性可以用来给文本绘制阴影。

对于标题或短文本,阴影适合模拟凸版印刷或者喷涂效果。

h1 {
text-shadow: -.2em .2em .2em #ccc;
}

text-shadow需要指定相对于源文本x轴和y轴的偏移量、模糊距离和颜色值,由空格分隔。

除此之外,还可通过用逗号分隔来给文本添加多组阴影。多组阴影会按先后次序堆叠,先定义的在上,后定义的在下。

为同一段文本添加多组阴影可以模拟出压印或浮雕的效果,方法就是在文本上方和下方加上偏暗或偏亮的阴影。

可以利用多组阴影创造出3D效果。

几乎所有浏览器都支持text-shadow属性。对于支持它的浏览器而言,由于绘制阴影开销比较大,请不要滥用。

参考资料:

  • 《精通CSS》— [英] 安迪·巴德、[瑞典] 埃米尔·比约克隆德

CSS网页排版的更多相关文章

  1. 简单实用的CSS网页布局中文排版技巧

    由于汉字的特殊性,在css网页布局中,中文排版有别于英文排版.排版是一个麻烦的问题,小编认为,作为一个优秀的网页设计师和网页制作人员,掌握一些简单的中文排版技巧是不可或缺的,所以今天特意总结了几个简单 ...

  2. html学习第二天—— 第九、十章——CSS的继承、层叠和特殊性+CSS格式化排版

    继承CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代.比如下面代码:如某种颜色应用于p标签,这个颜色设置不仅应用p标签, ...

  3. CSS网页布局全精通

    在本文中将使用四种常见的做法,结合CSS于结构化标记语法制作两栏布局.很快地就会发现,不用嵌套表格,间隔用的GIF也能做出分栏版面布局. 相关文章:CSS网页布局开发小技巧24则 稍后在"技 ...

  4. CSS文字排版

    一.font-size 我来试一试:为第一段中的“胆小如鼠”设置字号为:20px,字体颜色为:red. <!DOCTYPE HTML> <html> <head> ...

  5. HTML+CSS学习笔记 (10) - CSS格式化排版

    文字排版--字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性.下面我们来看一个例子,下面代码实现:为网页中的文字设置字体为宋体. body{font-family:" ...

  6. 总结与学习DIV+CSS网页布局技巧

    以前用表格布局时设置网页居中非常方便,把表格对齐方式设置为居中就行了,就这么简单,现在呢,用DIV+CSS样式表控制,好像不是那么容易了,其实也很简单,只不过方式不同而已. <style> ...

  7. DIV+CSS 网页布局之:混合布局

    1.混合布局 在了解了一列.两列和三列布局之后,混合布局也就不难理解了,混合布局也可以叫综合型布局,那么混合布局就可以在一列布局的基础之上,分为两列布局,三列布局,网页布局的结构普遍都是三列布局,但是 ...

  8. DIV+CSS 网页布局之:一列布局

    1.网页布局 布局(layout)即对事物的全面规划和安排,页面布局是对页面的文字.图像或表格进行格式化版式排列.网页布局对改善网站的外观非常重要,又称版式布局,大多数网站会把内容安排到多个列中,就像 ...

  9. 从零开始学习html(十)CSS格式化排版——下

    六.文字排版--删除线 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&q ...

随机推荐

  1. Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

    Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...

  2. Threejs实现滴滴官网首页地球动画

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  3. Cyber Security - Palo Alto Firewall Security Zones

    Firewall Security Zones Zones: The foundational aspect of every Firewall. Police network traffic Enf ...

  4. Ethical Hacking - POST EXPLOITATION(4)

    PIVOTING Use the hacked device as a pivot. Try to gain access to other devices in the network. Tool: ...

  5. 题解 CF296B 【Yaroslav and Two Strings】

    题目 传送门 题目大意 如果两个只包含数字且长度为 \(n\) 的字符串 \(s\) 和 \(w\) 存在两个数字 \(1≤i,j≤n\),使得 \(s_i<w_i,s_j>w_j\) , ...

  6. ant design pro/前端/JS:实现本地运行https

    工具:github---mkcert 用于生成本地证书 ant p版本:1.0.0 这里我只说如何给antp部署https,以及会遇到的问题解决,其他请看原文参考 1.用mkcert生成证书,去git ...

  7. CentOS 7.0 x86_64官方正式版系统(64位)

    下载地址 http://www.xitongzhijia.net/linux/201603/69219.html

  8. 何时/如何使用 Vue3 render 函数

    什么是 DOM? 如果我们把这个 HTML 加载到浏览器中,浏览器创建这些节点,用来显示网页.所以这个HTML映射到一系列DOM节点,然后我们可以使用JavaScript进行操作.例如: let it ...

  9. 谁能告诉我如何通过Jenkins完成分布式环境搭建并执行自动化脚本

    ​今天我们接着昨天的内容,看一看如何完成Jenkins分布式环境的搭建和使用,因为我之前也是自己一个人摸索的,如果有不对的地方,请各位看官私信指出. 新增分布式部署节点 在系统管理/节点管理中点击新建 ...

  10. java基础(一)注释

    注释的三方方式: 1.多行注释 /* 多行注释01 多行注释02 多行注释03 */