整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

python web自动化测试 (html)(五)

python web自动化测试 (html)(五)

elenium的定位元素方式是基于html语言构建的,所以学习web自动化是很有必要去学习html

HTML

HTML 全名 HyperText Markup Language(超文本标记语言),是一种用于创建网页的标准标记语言。常常和css js一起使用来构建漂亮的页面。

HTML构成

HTML的元素的以 标签、属性、text、内嵌标签 构成

下面以百度为例

在我们看到的页面上展示的内容都在内嵌标签有(head 头部信息、body 体信息)

在web自动化测试中重要的是body里内嵌标签中,因为展示的页面操作都是在body 中完成的

html脑图结构

常见HTML标签

p : 段落 文本,代表进行换行

h1-h6:标题从H1(最大) 到H6(最小) ,标题大小

div:对html页面进行布局,填充数据,容器,也有换行作用

span:对html页面进行布局,填充数据,容器,在一行独立设置样式

ul: 将 <ul> 标签与 <li> 标签一起使用,创建无序列表 组合:<ul><li></li></ul>


web自动化测试的重点

a:超链接跳转到页面,需要配合 href,一般都是<a href='www.baidu.com'> </a>使用

img: 图片的超链接,组合<img src="#图片链接#">

iframe:

在html页面里面嵌套html页面 ,src 页面链接 width 宽度 height 长度

组合 <iframe src="http://www.toutiao.com" width="400" height="500"></iframe>

select标签:组合<form><selevct></select> </form>

select的作用下拉选择框

form标签:

form的作用form表单是前端和后端进行用户数据交互的一种方式,前端编写的数据可以通过form表单传递给后端

<form action="http://httpbin.org/post" method="post"> #数据内容#<from>

action:接口地址,根据需求更改请求的接口地址 method:请求方法

input: input:通常有name和value属性

格式:<input type="" name="" value="">

代表输入,基本web自动化测试都必须要测的内容

<input name> :默认属性输入框

组合:name 属性 <input name="123" value=“number”>

input name属性的作用:

当我们选择(输入)的数据传递给后端时会进行接收

input value值的作用:

后端接收的数据如果是json格式的话就会以接收{"name(123)"="value(number)"}

input type 的作用:

设定输入格式,不设置格式,默认是text 文本输入

<input name='password' type='password'>:

type='password':代表输入内容带*号,用于设置密码框

type="text":默认是text 文本输入

type="checkbox":代表多选

type="radio":代表单选框

type="file"选择文件

type="submit" 提交按钮(配合form表单使用,将form内的数据提交到后端)

input placeholder的作用:输入框提示

input disable 的作用

禁用输入框,输入框置灰,如果想输入在F12找到该元素并且去除

input readonly 的作用:只读输入框

样式代码与演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>web自动化</title>
</head>
<form action="http://httpbin.org/post" method="post">
<div>div也是个容器,对html页面进行布局
    <h4>标题h4<span>对html页面进行布局,这是个容器</span></h4>
    <a href="http://www.toutiao.com">点击我,跳转头条<img
            src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANgAAAA2CAMAAACSsKctAAAANlBMVEVHcEzuQEDwRETyRUX3TEzvQkLuQEDuQUHuQUHvQEDuQUHuQEDvQkLuQEDuQUHwQUHxQkLtQEDKaksGAAAAEXRSTlMAxiweDlyo49Nri/F5+bhLOapXaIgAAATMSURBVGje7ZrpsqQqDIAb2VEE3/9lx263AAmu3XVv1cn8mFOtIh+JIQuvFyFSzdK8/jsSrbg7BG+HSdjPZi3iJPTchR7a7iYam7mGNvwKTM5vlOQd6n3Z37IhN6zSNhW1TsJqMt/TwQk6G3gxmt0DC5/LfpxS9U38wOJ9RJN38uG4KGBR0wRNxrcHtn4dlPjpv4pCYzqEEffBfAG2XDC9sxyCUbbfH3wVDdbkS2P4FzQGRR4As8NdsEYXy01Y4xMa28C6KljT3gUDXNtYOn5fY3UwNtwEA9+XA397+zONxR03fQ1MerjG0Is4QYK5riLzEMDdC4+CuQoY99sKoW9R20z5zsKwN0gAczDFUohdPzSKRpw4j9Yp0+Jg2GgCrHBf3sAVuIytC8u4RjIwYmGOh8AMvTutfLtgydR8ZjzCgeV32M7eFlyZj2T8GY3lfHwNmChTGmcP5tECNNFBf4m4AqEGhGt8rYEj2i+AwUhwFCocgOs+ok383MFfMecdoGYUHFwkW76Jz5kiHlmQ4TtPY48+iNAnfqgX1a+vtNMueXyjvqox5WTkJFgthq3t0i2ydhY+4MsbYhKMtEu6dxFseqw1Gd+s2raasylPRgCluoJJgnnU3SYaHbS8Y4rJBv3h42AFdN1gGzwWZtgcMHD3Xk5BfYOz67qlsWKDnq3G1DP74DTCZVwQVbA1X57WpWWqk40od4svgInKBrtUPJSpfGPGyYYC6zma/OjJm0RzBcwcBONltAzKIVYxfyBObJlbFAHAtKSyOla4x+c1FiuhAxvOiDcpWBKo4GDbp3sLDA2CJR07EGCaUZYJwUys5OGgBhdYCRYFIWQQHKzrjU/AXCUdQ8C0e0+Y295XwbSsFhiS4qLUC9hePsZ2QqqVT4I3NvtgvrfbXQLxkwsYUoWsgI37uX4GbOXj231+J332DPHsXKb+cknCkC2gkZ1iLQE2RtRPgiVJq6mAadVtUKL5CAea69v9qGxxs/KTMLFrVaozYLLi7UcwrVxWY3XYtjfu32q07cOF/Ob7YKpWLm0Emewj+7m43Ud5EGzdAvjJKnz/jTbCg2B2OBIpXgBzZl9a/xFdhBChwYWXYIEYe1GYzn6fHlPIE3rJDhBBTPxIPHYng5bDObEXQqrEK34PTP+B/c/A/kzxD+wUWLB1AXVJd8cUm3Jkv1W/SpmGlsiVOUw32GxPbMVbZtA9WwneGjo+Xun/34s8hEGLqQ+AgUaVff0cDHCpJ7stSZvKTVW//vNPoXVuNV3rVQ7WVR+juRjRfLqtMeuzkWOtG2SxdtrnuehrSc9utyBpwjwB5sp23eqdI33Og5Wm6IZan3eXKz/wcc8UYdl87ZOsrUtDZmzz6xIwoU9nB2CHKw5FLGBWVkQXzrTsu4Fvw1K+JGRWmjoPiTjto6eqysMeF08NFA0chRVu8jNRyzpogXpF6rF9LuSw2MVzHtnphMxRNLgj6IasdpCBNef8B+CKj53zyI5tWOqdATsP0VP7GPoYJd1QDQuuagw2f30xj9URaFF6MM8pMPSxfa7w4FmqxtTb4YgjCOVPReQRanvgKa5TGuvQ7j9+rq5QD6aNMqRa/LffKb9JvQoR6Al9XCQyrCZCIL5eX5Z4+QEscJfekj/2D7KhSDEKe9jHAAAAAElFTkSuQmCC">
    </a>
    <!--    下面是html页面中嵌套另一个html页面-->
</div>
<div></div>
<iframe src="http://www.toutiao.com" width="400" height="500"></iframe>
<!-- 段落-->
<p>这是第一行段落</p>
<p>这是第二行段落</p>
<p>菜单标题</p>
<ul>无序列表
    <li>菜单1</li>
    <li>菜单2</li>
    <li>菜单3</li>
</ul>
<!--    用户输入-->
username:<input name="username" placeholder="输入账号" >
<p></p>
password:<input type="password" name="password" placeholder="输入密码">
    <p></p>
    禁用框 <input name="text"  disabled>
    <p></p>
    只读框 <input name="text" placeholder="只能复制框内文字" readonly>
<p>choice you like color</p>
<div>

    <!--        radio代表的意思是单选-->
    <input type="radio" name="like_color" value="红色">red
    <input type="radio" name="like_color" value="蓝色">blue
    <input type="radio" name="like_color" value="绿色">green

</div>
<p>choice you not like color</p>
<div>
    <!--        checkbox代表的意思是多选-->
    <input type="checkbox" name="not_like_color">yellow
    <input type="radio" name="not_like_color">white
    <input type="radio" name="not_like_color">black
    <p>选择文件</p>
    <input type="file" name="file" >
</div>
<p>choice you not like animal</p>

<select name="dog">
    <option>dog</option>
    <option>cat</option>
    <option>fish</option>
</select>
    <p></p>
    <input type="submit" width="50" height="20" value="点击提交">
</form>
</html>


作为web自动化测试 ,了解具体是什么意思,以及如何进行元素的定位调用即可,当然全能弄懂那当然是更好的

TML(网页)

Web领域的一些基本概念。

WEB

Web(World Wide Web)叫全球广域网,俗称万维网(www)。

W3C

W3C(World Wide Web Consortium)叫万维网联盟,是国际最著名的标准化组织,制定了web标准。

WEB标准

一个网页包含了html元素 Css JavaScript,Html元素决定了网页结构,Css进行了修饰美化,JavaScript控制了交互行为和动态效果。

web标准包含了下面三个方面:

  • 结构标准(HTML):用于对网页元素进行整理和分类。
  • 表现标准(CSS):用于设置网页元素的版式、颜色、大小等外观样式。
  • 行为标准(JavaScript):用于定义网页的交互和行为。

HTML定义

Html不是一种编程语言,而是描述性的标记语言,主要作用是定义内容的结构。

2014年10月万维网联盟(W3C)完成了HTML5标准制定,是目前最新的HTM版本。

HTML5的出世,标志着web进入一个富客户端(具有很强的交互性和体验的客户端程序)时代,像APP网页,小程序都是HTML5的应用场景。

Html5新特性:

  • 用于绘画的 canvas 元素。
  • 用于媒介回放的 video 和 audio 元素。
  • 对本地离线存储的更好的支持。
  • 新的特殊内容元素,比如 article、footer、header、nav、section。
  • 新的表单控件,比如 calendar、date、time、email、url、search。

页面基本结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"> <!--字符集-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <meta name="Author" content="">
    <meta name="Keywords" content="关键词" />
    <meta name="Description" content="页面描述" />
    <title>页面标题</title>
</head>
<body>

</body>
</html>

关于viewport

viewport用户网页的可视区域,一个针对移动网页优化的页面 viewport meta 标签如下:

<meta name="viewport" content="width=device-width, initial-scale=1.0">
  • width:控制 viewport 的大小,可以指定的一个值,如 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
  • height:和 width 相对应,指定高度。
  • initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
  • maximum-scale:允许用户缩放到的最大比例。
  • minimum-scale:允许用户缩放到的最小比例。
  • user-scalable:用户是否可以手动缩放。

常见元素

head区域元素:

meta title style link script base。

body区域元素:

  • div、section、article、aside、header、footer
  • p
  • span、em、strong
  • table、thead、tbody、tr、td
  • ul、ol、dl、dt、dd
  • a
  • form、input、select、textarea、button

元素分类

块级元素:每个元素都是独占一行

  • address – 地址
  • blockquote – 块引用
  • center – 举中对齐块
  • dir – 目录列表
  • div – 常用块级容易,也是css layout的主要标签
  • dl – 定义列表
  • fieldset – form控制组
  • form – 交互表单
  • h1-h6 – 标题
  • hr – 水平分隔线
  • isindex – input prompt
  • menu – 菜单列表
  • noframes – frames可选内容,(对于不支持frame的浏览器显示此区块内容)
  • noscript – )可选脚本内容(对于不支持script的浏览器显示此内容)
  • ol – 排序表单
  • p – 段落
  • pre – 格式化文本
  • table – 表格
  • ul – 非排序列表

行内元素:元素在同一行水平排列

  • a – 锚点
  • abbr – 缩写
  • acronym – 首字
  • b – 粗体
  • big – 大字体
  • br – 换行
  • em – 强调
  • font – 字体设定(不推荐)
  • i – 斜体
  • img – 图片
  • input – 输入框
  • label – 表格标签
  • s – 中划线(不推荐)
  • select – 项目选择
  • small – 小字体文本
  • span – 常用内联容器,定义文本内区块
  • strike – 中划线
  • strong – 粗体强调
  • sub – 下标
  • sup – 上标
  • textarea – 多行文本输入框
  • tt – 电传文本
  • u – 下划线
  • var – 定义变量

inline-block:元素可以排列在同一行显示,并且可以设置一些块元素属性

通过Css:display:inline-block 改变元素。

元素默认样式

很多元素都自带了默认样式,不同浏览器下默认样式表现不一致,为了统一或者满足一些需求我们需求将所有默认样式清空,这种处理方式又称为 Css Reset,比如:

*{
    margin: 0;
    padding: 0;
}

另外一种方案使用normalize.css,它将不同浏览器下的默认样式进行了统一,

https://github.com/necolas/normalize.css

CSS(层叠样式表)

Css的单位

html中的单位是像素px

绝对单位

  • in:英寸,1in=2.54cm=96px
  • pc:皮卡,1皮卡=1/16英寸
  • pt:点,1点=1/72英寸
  • px:像素,1点=1/96英寸

相对单位

  • em:font-size中相对于父元素的字体大小,在元素属性中使用是相对于自身字体大小
  • rem:根元素的字体大小,在元素属性中使用是相对于根元素字体大小
  • 1h:元素的line-height
  • vw:视窗宽度的1%
  • vh:视窗高度的1%
  • vmin:视窗较小尺寸的1%
  • vmax:视图大尺寸的1%

字体属性

属性:字体、行高、颜色、大小、背景、边框、滚动、换行、修饰属性(粗体、斜体、下划线)

p{
    font-size: 20px;        /*字体大小*/
    line-height: 30px;      /*行高*/
    font-family: PingFang SC;   /*字体类型:显示PingFang SC,没有就显示默认*/
    font-style: italic ;        /*italic表示斜体,normal表示不倾斜*/
    font-weight: bold;  /*粗体或写(400|500|600)*/
    font-variant: small-caps;  /*小写变大写*/
}

行高(line-height)

一般约定行高、字号都是偶数,这样保证它们的差一定偶数除2得到整数,如下图所示:

line-height

文本垂直居中

对于单行文本可以设置行高=盒子高度

对于多行元素的垂直对齐,我们可以使用vertical-align: middle属性,不过vertical-align 仅适用inline、inline-block 和 table-cell 元素。

vertical-align

vertical-align: baseline;
vertical-align: sub;
vertical-align: super;
vertical-align: text-top;
vertical-align: text-bottom;
vertical-align: middle;
vertical-align: top;
vertical-align: bottom;
/* 指定长度值 */
vertical-align: 10em;
vertical-align: 4px;
/* 使用百分比 */
vertical-align: 20%;
/* 全局值 */
vertical-align: inherit;
vertical-align: initial;
vertical-align: revert;
vertical-align: unset;

文本属性

  • letter-spacing: 0.5em ; 单个字母之间的间距。
  • word-spacing: 1em; 单词之间的间距。
  • text-decoration: none; none 去掉下划线、underline 下划线、line-through 中划线、overline 上划线。
  • color:red; 字体颜色。
  • text-align: center; 文字对齐方式,属性值可以是:left、right、center、justify。
  • text-transform: lowercase; uppercase(大写)、lowercase(小写)capitalize(首字母大写)。
  • text-indent:10px; 文本首行缩进。
  • text-shadow:2px 2px #ff0000; 文字阴影效果。
  • white-space: normal; 设置元素空白处理,normal,nowrap,break-spaces。

Overflow属性

内容溢出处理

  • visible:默认值,多余的内容会全部显示出来。
  • hidden:超过元素的内容隐藏。
  • auto:内容超出显示滚动条。
  • scroll:Windows总是显示滚动条。Mac和auto 属性相同。

滤镜

filter:gray()

背景属性

  • background-color:#fff; 设置背景颜色。
  • background-image:url(img.png); 设置图像为背景。
  • background-repeat: no-repeat; no-repeat不要平铺,repeat-x横向平铺;repeat-y纵向平铺。
  • background-position:center top; 设置背景图片在容器的位置,top,bottom,left,right,center。
  • background-attachment:scroll; 设置背景图片随滚动条移动,scroll(跟随滚动),fixed(固定)。
  • background-origin:border-box; css3,border-box(背景相对于边框框定位),padding-box(背景相对于填充框定位),content-box(背景相对于内容框定位)。
  • background-clip:border-box; css3,背景裁切。
  • background-size:cover; css3,调整尺寸,contain(在不裁剪或拉伸图像的情况下,在其容器内尽可能大地缩放图像),cover(尽可能大地缩放图像以填充容器,必要时拉伸图像。),auto(在相应的方向上缩放背景图像,以保持其固有比例。)。

优先级

理解优先级很重要,有助于我们排查一些问题。浏览器将优先级分为两部分:HTML的行内样式和选择器的样式。

行内样式

行内样式是直接作用在元素,它的优先级高于选择器样式,使用!important可以提高样式表的优先级。

<div style="font-size:16px">
</div>

选择器样式

<style type="text/css">
    p{
      font-size: 16px;
    }
</style>
<link rel="stylesheet" href="style/app.css">

优先级规则如下:

  • 如果选择器的ID数量最多的胜出。
  • 如果ID数量一致,那么拥有最多类的选择器胜出。
  • 如果以上两次比较都一致,那么拥有最多标签名的选择器胜出。

优先级

我们通过下图这种标记方式,就可以判断出选择器的优先级。

优先级

两条经验法则

  1. 尽量不要使用ID选择器,因为它会大幅提升优先级。当需要覆盖这个选择器时,通常找不到另一个有意义的ID,于是就需要复制原来的选择器加上另一个类来让它区别于想要覆盖的选择器。
  2. 不要使用!important。它比ID更难覆盖,一旦用了它,想要覆盖原先的声明,就需要再加上一个!important,而且依然要处理优先级的问题。

基础选择器

  • 类型或标签选择器,匹配目标元素的标签名,如 :p,input[type=text],优先级(0,0,1)。
  • 类选择器,匹配class属性中有指定类名的元素,如:.box,优先级(0,1,0)。
  • ID选择器,匹配拥有指定ID属性的元素,如:#id, 优先级(1,0,0)。
  • 通用选择器(*),匹配所有元素 ,优先级(0,0,0)。

组合选择器

由多个基础选择器组合成的复杂选择器。

  • 后代组合器(单个空格()表示),比如 .nav li,表示li是一个拥有nav类的元素的后代。
  • 子组合器(>),匹配的元素是直接后代,.parent > .child。
  • 相邻兄弟组合器(+),匹配的元素紧跟在后面其它元素后面,div + p。
  • 通用兄弟组合器(~),匹配所有跟随在指定元素之后的兄弟元素,它不会选中目标元素之前的兄弟元素,li.active ~ li。

复合选择器

多个基础选择器连起来(中间没有空格)组成一个复合选择器(如:ul.nav)。复合选择器选中的元素将匹配其全部基础选择器,.box.nav 可以选中 class="box nav" ,但是不能选中 class="box"。

伪类选择器

用于选中某种特定状态的元素,优先级(0,1,0)。

  • :first-child——匹配的元素是其父元素的第一个子元素。
  • :last-child——匹配的元素是其父元素的最后一个子元素。
  • :only-child——匹配的元素是其父元素的唯一一个子元素(没有兄弟元素)。
  • :nth-child(an+b)——匹配的元素在兄弟元素中间有特定的位置。公式an+b里面的a和b是整数,该公式指定要选中哪个元素。要了解一个公式的工作原理,请从0开始代入n的所有整数值。公式的计算结果指定了目标元素的位置。下表给出了一些例子。

:nth-child(an+b)

  • :nth-last-child(an+b)——类似于:nth-child(),但不是从第一个元素往后数,而是从最后一个元素往前数。括号内的公式与:nth-child()里的公式的规则相同。
  • :first-of-type——类似于:first-child,但不是根据在全部子元素中的位置查找元素,而是根据拥有相同标签名的子元素中的数字顺序查找第一个元素。
  • :last-of-type——匹配每种类型的最后一个子元素。
  • :only-of-type——该选择器匹配的元素是满足该类型的唯一一个子元素。
  • :nth-of-type(an+b)——根据目标元素在特定类型下的数字顺序以及特定公式选择元素,类似于:nth-child。
  • :nth-last-of-type(an+b)——根据元素类型以及特定公式选择元素,从其中最后一个元素往前算,类似于:nth-last-child。
  • :not(<selector>)——匹配的元素不匹配括号内的选择器。括号内的选择器必须是基础选择器,它只能指定元素本身,无法用于排除祖先元素,同时不允许包含另一个排除选择器。
  • :focus——匹配通过鼠标点击、触摸屏幕或者按Tab键导航而获得焦点的元素。
  • :hover——匹配鼠标指针正悬停在其上方的元素。
  • :root——匹配文档根元素。对HTML来说,这是html元素,但是CSS还可以应用到XML或者类似于XML的文档上,比如SVG。在这些情况下,该选择器的选择范围更广。还有一些表单域相关的伪类选择器。
  • :disabled——匹配已禁用的元素,包括input、select以及button元素。
  • :enabled——匹配已启用的元素,即那些能够被激活或者接受焦点的元素。
  • :checked——匹配已经针对选定的复选框、单选按钮或选择框选项。
  • :invalid——根据输入类型中的定义,匹配有非法输入值的元素。例如,当<inputtype="email">的值不是一个合法的邮箱地址时,该元素会被匹配。

更多参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS

伪元素选择器

伪元素选择器可以向HTML标记中未定义的地方插入内容,优先级(0,0,1)。

  • ::before——创建一个伪元素,使其成为匹配元素的第一个子元素。该元素默认是行内元素,可用于插入文字、图片或其他形状。必须指定content属性才能让元素出现,如:.nav::before。
  • ::after——创建一个伪元素,使其成为匹配元素的最后一个子元素。该元素默认是行内元素,可用于插入文字、图片或其他形状。必须指定content属性才能让元素出现,如:.nav::after。
  • ::first-letter——用于指定匹配元素的第一个文本字符的样式,如:h1::first-letter。
  • ::first-line——用于指定匹配元素的第一行文本的样式。
  • ::selection——用于指定用户使用鼠标高亮选择的任意文本的样式。通常用于改变选中文本的background-color。只有少数属性可以使用,包括color、background-color、cursor、text-decoration。

属性选择器

属性选择器用于根据HTML属性进行匹配元素,优先级(0,1,0)。

  • [attr]——匹配的元素拥有指定属性attr,无论属性值是什么,如:input[disabled]。
  • [attr="value"]——匹配的元素拥有指定属性attr,且属性值等于指定的字符串值,如:input[type="radio"]。
  • [attr^="value"] ——“开头”属性选择器。该选择器匹配的元素拥有指定属性attr,且属性值的开头是指定的字符串值,例如:a[href^="https"]。
  • [attr*="value"]——“包含”属性选择器。该选择器匹配的元素拥有指定属性attr,且属性值包含指定的字符串值,如:[class*="sprite-"]。
  • [attr~="value"]——“空格分隔的列表”属性选择器。该选择器匹配的元素拥有指定属性attr,且属性值是一个空格分隔的值列表,列表中的某个值等于指定的字符串值,如:a[rel="author"]。
  • [attr|="value"]——匹配的元素拥有指定属性attr,且属性值要么等于指定的字符串值,要么以该字符串开头且紧跟着一个连字符(-)。

小结

本文要点回顾,欢迎留言交流。

  • Web中的一些基本概念介绍。
  • Html页面结构,元素分类。
  • Css优先级。
  • Css选择器,(基础选择器,组合选择器,复合选择器,伪类选择器,伪元素选择器,属性选择器)。

网页中文字作为信息的主要载体,非常重要,之前学习过HTML中关于文本、段落等格式的知识,这些只是简单排版,如果想制作更好看的文本样式,就的使用css 字体和文本样式了。

css字体

css 字体属性主要包括字体系列、字体大小、字体风格等其它样式。

1、设置字体系列 —— font-family

这个属性用来设置网页使用哪种类型的字体显示文本,语法如下:

font-family: "字体1","字体2","字体3"...

font-family 属性可以定义多个字体,浏览器会从前到后优先选择使用字体,当浏览器不支持第一个字体,则会尝试使用第二个字体,以此类推。如果浏览器不支持所有字体,则使用默认字体。

如下示例:

2、字体样式—— font-style

字体样式有三种:

  • 正常 - 正常显示文本
  • 斜体 - 以斜体字显示的文字
  • 倾斜的文字 - 文字向一边倾斜(不管是斜体字还是正常的字体)

如下示例:

这里有2种斜体,它们有什么区别?

italic 和 oblique 都是向右倾斜的文字, 但区别在于 italic 是指斜体字,而 oblique 是倾斜的文字,对于没有斜体的字体应该使用 oblique 属性值来实现倾斜的文字效果。

3、字体大小 —— font-size

“font-size”属性来设置字体大小,它的值可以使用预定义关键字、绝对大小、相对大小

预定义关键字

预定义关键字有 xx-small、x-small、small、medium、large、x-large、xx-large,尺寸按顺序依次增大。它的可选范围只有这几种,且不同浏览器厂商定义的预定义关键字对应的字体大小不一致,所以相同的属性值,在不同浏览器看到的大小不一样,建议不要使用这种方式。

绝对大小

绝对大小使用比如:px(像素)、pt(点,1pt 相当于 1/72in)、in(英寸)、cm(厘米)、mm(毫米)等单位设置字体大小。

如下示例:

绝对大小不会随着页面大小改变而改变,如果要想使文字大小自适应不同的屏幕或设备就需要使用相对大小。

相对大小:

相对大小使用 em、%、rem等来设置大小,它们都是相对于某个参考基准的字体大小,来计算当前字体的大小,只是参考基准不同而已。

如果你不指定一个字体的大小,默认大小和普通文本段落一样,是16像素(1em=16px,100%=16px)。

em和%都是相对于父级元素的字体大小,其子级元素会在其父级元素的计算结果上继续计算大小,如下示例:

如上p元素的字体大小是36px,而不是12px * 200%等于24px,它是在其父级div元素的计算结果上继续计算的值。

使用em 或 %虽然可以方便修改文字大小,但是当元素嵌套很深的时候,就变得比较复杂,深层的元素文字大小就变得不可控,所以css3 新增加了rem 来设置字体大小。

rem 是相对于根元素 (html 元素) font-size属性的值,每一层级都会参考html根元素的字体大小来计算,这样一来,无论嵌套多少层,字体大小的计算就变得统一了。

rem 是CSS3新增的一个相对单位,IE9 以下版本的老浏览器却不支持它,这也是很多编程人员尚未使用 rem 的原因。

在定义字体大小时,建议在 html 元素中定义绝大多数元素所需要的字体大小,并让所有子元素继承 html 的字体大小。如果某个子元素要改变字体大小,则使用相对尺寸 em 或 % 或 rem 重新定义。

4、复合属性—— font

font 属性可以看成是字体的简写,它可以定义字体系列、大小、风格、粗细、等样式,语法如下:

 font:"font-style font-variant font-weight font-size/line-height font-family"

其中font-size和font-family的值是必需的。如果缺少了其他值,将使用浏览器的默认值。

如下示例:

除了以上设置,font还有其它的属性值,如下:

这些属性,只有部分浏览器支持,具体使用时请查看浏览器是否支持。

5、其它字体属性

字体还有 font-weight(设置粗细的属性)、font-variant(设置小型大写字母的字体显示文本)如下示例:

font-weight 字体粗细:有normal、lighter、bold、数值三种,数值范围从 100 ~ 900 依次变粗,900 相当于 bold。

font-variant值有normal(标准字体显示)、small-caps(浏览器会显示小型大写字母的字体)、inherit(继承父元素的设置)

如下示例:

font-variant 属性设置小型大写字母的字体显示文本,这意味着所有的小写字母均会被转换为大写,但是所有使用小型大写字体的字母与其余文本相比,其字体尺寸更小。

css 文本样式

css 文本属性主要设置比如字符间隔,文本颜色、单词间隔、行高、文字修饰、对齐方式等效果。

1、文字颜色 —— color

color 使用以“#”开头16进制的颜色代码或颜色关键词(如red、blue),如下示例:

2、字符间隔 —— letter-spacing

设置字符水平间距,如下示例:

3、单词间隔 —— word-spacing

设置单词之间的间距,如下示例:

这里注意中文比较特殊,一个中文字不等同于英文的一个单词。

4、行高 —— line-height

设置字体行之间垂直间距,如下示例:

5、文字修饰 —— text-decoration

可以设置文字下划线、删除线等样式,如下示例:

还可以定义波浪线效果,如下示例:

6、水平对齐 —— text-align

有三种水平方向的对齐方式,居左,居中、居右,如下示例:

7、垂直对齐—— vertical-align

vertical-align 属性设置一个元素的垂直对齐方式。

该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

如下示例,对齐图片:

还有很多其它属性,在此不每个都介绍了,可参考如下:

8、文字大小写转换—— text-transform

可用于所有字句变成大写或小写字母,或每个单词的首字母大写。如下示例:

9、文本缩进 —— text-indent

文本缩进属性是用来指定文本的第一行的缩进。如下示例:

文本缩进可以使用绝对值如:px、pt、cm等,也可以是相对单位 %。且可以是负值,如果是负值,就相当于变成向左缩进了。

10、空白处理 —— white-space

white-space属性指定元素内的空白怎样处理。如下示例:

11、文字阴影 —— text-shadow

text-shadow 可以设置文字阴影效果,比如内阴影或外阴影,语法:

text-shadow: x坐标 y坐标 模糊大小 颜色;

其中x/y 坐标相对于文本左上角的偏移量,如下示例:

12、文本溢出 —— text-overflow

text-overflow 属性指定当文本溢出时包含它的元素应该如何显示。可以设置文本被剪切、显示省略号 (...) 或显示自定义字符串(不是所有浏览器都支持)。

text-overflow 需要配合以下两个属性使用:

  • overflow: hidden;

如下示例:

总结

本篇讲述了文字和文本的大部分样式设置,掌握这些css用法非常重要,网页大部分都是文本,要想制作一个漂亮的页面,这些是必须要学会的,且要学会融会贯通。

本篇主要讲了以下内容:

  1. 字体系列、大小、样式、粗细等样式的设置。
  2. 字体font简写属性的使用。
  3. 文本颜色、字符间隔、单词间隔、行高等设置。
  4. 文本修饰、大小写转换、文本缩进、空白处理等。
  5. 文本水平对齐、垂直对齐。
  6. 文本阴影及文本溢出。

以上都是最基本的,要多加练习,才能够理解学会使用。感谢关注,祝学习愉快!

上篇:前端入门——css 盒子模型