一、背景


翻出我4年前看的《精通CSS》一书,可惜当初没有整理读书笔记的习惯,最近又很少写前端,遂很多东西、知识点遗忘了,恰且现在 css 也有些变化和进步,遂一起打包整理,输出成几篇 blog 系列,以犒自己。

二、文字


1、字体类型

(1)字型

字型分 serif(有衬线)sans-serif(无衬线)

sans-serif 被认为是比 serif 更容易阅读的。

(2)第三方字体

@font-face 可引入第三方字体。

2、字体大小

font-size可以设置字体大小,单位有 %、px、em、rem。

(1) 各单位对比
单位 绝对值 相对值 相对于什么元素
px N/A
% 父元素
em 父元素
rem 根元素 ( html / body [html 比 body 优先级高] )
(2) 为什么推荐用 rem?

首先 px 是相对大小,万一想适配屏幕时去放缩所有元素的字体,就很不方便,所以 pass。

然后 %em都有个问题:相对于父元素,这样导致每个元素的参考系都不同,计算起来很不方便。

所以推荐用 rem。

(3) 怎么使用 rem?
 <style>
body {
font-size: 62.5%;
/* 因为浏览器默认字体大小为16px,
所以 100% = 16px
所以 62.5% = 10px */
} #div1 {
font-size: 1rem;
/* 1rem = 1 * 10px = 10px */
} #div2 {
font-size: 2.5rem;
/* 2rem = 2.5 * 10px = 25px */
}
</style>

Q:为什么 body 上的 font-size 设置成了 62.5%,而不是其他值?

A:因为这样 rem 的 base 值就是 10px,有两个好处:

1、指定时很好计算。

2、若是小数会被转成整数 (如 1.5rem = 15px ),因为 font-size 不支持含小数的 px

三、图像


1、颜色

CSS 里的颜色值有三种类型:

  • 十六进制 - 如:"#ff0000"
  • RGB - 如:"rgb(255,0,0)"
  • 颜色名称 - 如:"red"

2、图像

(1) <img> alt 和 title 的区别

alt 是当图片不存在时的替代文字,title是对图片的描述与进一步说明。

为了 SEO,最好两个都加上。

3、背景

(1) 属性

顺序如下:

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position

在用 background 简写时,顺序跟上面保持一致:

body {background:#ffffff url('img_tree.png') no-repeat scroll right top;}

(2) 背景所在定位

background-position: [横向] [纵向]

取值类型:

关键词:top/bottom、left/right、center

百分比:x%

数值:px、em 等

Q:为什么 百分比% 的规则定义的与众不同?

A:其实是为了照顾人们的直觉:

background-position: 0 0;  				//图片靠着左上角
background-position: 50% 50%; //图片水平垂直居中
background-position: 100% 100%; //图片靠着右下角
(3) 背景占据区域

1、background-origin background-clip的取值:

border-box: content + padding + border

padding-box【默认】 : content + padding

content-box:content

2、background-origin background-clip的区别:

前者是移动,后者是切割 (基于 background-origin 的值 )。

(4) 添加多个背景
#example1 {
background-image: url(img_flwr.gif), url(paper.gif);
background-position: right bottom, left top;
background-repeat: no-repeat, repeat;
}

1、多张图片的属性用逗号隔开。

2、第一张图片显示在最顶端,以此类推。

四、链接


1、link 样式

请最好按照下面的顺序添加伪类,否则有些会失效。

(1) a:link 显示
(2) a:hover 悬停
(3) a:active 点时
(4) a:visited 点过

当键盘移动到链接上时,还会有 a:visited。

2、页内跳转 - #

<div id="main">
<a href="#target">click!</a> <span>block——1</span>
<br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/>
<span id="target">block——2</span>
</div>

1、点击 a 标签即可跳转。

2、浏览器打开 url#target 即可自动跳转 (当前页面刷新不行)

五、表格


1、一个表格的范例

	<table summary="三年二班2019期末考试 - 学生各科目成绩">
<caption>
三年二班2019期末考试
</caption>
<thead>
<tr>
<th colspan="3">学生各科目成绩</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td scope="col">语文</td>
<td scope="col">数学</td>
</tr>
<tr>
<td scope="row">张三</td>
<td>78</td>
<td>80</td>
</tr>
<tr>
<td scope="row">李四</td>
<td>92</td>
<td>88</td>
</tr>
<tr>
<td scope="row">王五</td>
<td>62</td>
<td>73</td>
</tr>
</tbody>
</table>

(1) summary 类似<img> 的 alt 属性。

(2) th/td的 scope 属性用来标识是列头还是行头。

2、table 的 合并 / 分隔 - border / collapse

以上面的 demo 为例:

(1) 合并(collapsed)
	table, td ,th{
border: 1px solid black;
}
table{
width: 200px;
}
/* 下面为重点 */
table{
border-collapse: collapse;
}

(2) 分隔(separated)
	table, td ,th{
border: 1px solid black;
}
table{
width: 200px;
}
/* 下面为重点 */
table{
border-collapse: separate;
border-spacing: 10px;
}

若 border-collapse: separate ,而省略 border-spacing,那 border-spacing 也是有默认值的且非0。( 0 则跟 border-collapse: collapse 一样了 )

3、各个 table 相关标签的对比

是否支持? border width/height 是否符合盒模型 margin padding text-align vertical-align
table √ / √ × ×
caption √ / √ √(默认居中) ×
thead/tbody × × / × N/A × ×
tr × × / √ × ×
th/td √ / √ × √(默认居中)

唉,table 真的有太多坑了。

4、淘汰的 table 属性

(1) table 标签的 cellspacing/cellpadding 属性已被淘汰,请用border-spacingpadding代替。

(2) 直接在 table 标签定义的 border=1不推荐使用,请在 CSS 里:

table, td ,th{
border: 1px solid black;
}

六、表单


1、一个表单的范例

<form accept-charset="utf-8" action="form_action.asp" method="post">
<fieldset>
<div>
<!-- 关联 label 的方法一 -->
<label for="name">Name:</label>
<input name="name" id="name" type="text" />
</div>
<div>
<!-- 关联 label 的方法二 -->
<label>
Email:
<input name="email" type="text" />
</label>
</div>
<button type="submit">submit</button>
</fieldset>
</form>

1、fieldset 周围会加上一个细线边框(哪怕没有 legend 标签),想去掉就把 border 属性设置为 none 。

2、input 元素 focus 时默认会有一个蓝色轮廓,outline: none 可以去掉。

朝花夕拾《精通CSS》三、对一些标签元素的使用的更多相关文章

  1. CSS中html的标签元素分类

    在CSS中,html中的标签元素大体被分为三种不同的类型: 块状元素.内联元素(又叫行内元素)和内联块状元素.    常用的块状元素有:  <div>.<p>.<h1&g ...

  2. CSS 轻松搞定标签(元素)居中问题

    在CSS里,标签位置居中一直是困扰Web前端的难题.在本文中,我对这类问题进行了探究和给出了几点建议,供读者参考. 1 行内标签 1.1 水平居中 在父级标签中使用 text-align: cente ...

  3. 朝花夕拾《精通CSS》二、选择器 & 层叠

    一.背景 翻出我4年前看的<精通CSS>一书,可惜当初没有整理读书笔记的习惯,最近又很少写前端,遂很多东西.知识点遗忘了,恰且现在 css 也有些变化和进步,遂一起打包整理,输出成几篇 b ...

  4. 朝花夕拾《精通CSS》一、HTML & CSS 的基础

    一.背景 翻出我4年前看的<精通CSS>一书,可惜当初没有整理读书笔记的习惯,最近又很少写前端,遂很多东西.知识点遗忘了,恰且现在 css 也有些变化和进步,遂一起打包整理,输出成几篇 b ...

  5. CSS html标签元素分类

    在CSS中,html中的标签元素大体被分为三种不同的类型: 块状元素.内联元素(又叫行内元素)和内联块状元素.  常用的块状元素有: <div>.<p>.<h1>… ...

  6. Bootstrap入门(三)<p>标签的css样式

    Bootstrap入门(三)<p>标签的css样式 前提:引入css文件,内容放在一个class为container的div中   <p>标签属性 1.“ text-left ...

  7. CSS选取第n个标签元素

    最近做一个项目,碰到这样的需求,需要选取某个元素的倒数第几个标签元素,想让他显示不同的样式 1.first-child first-child表示选择列表中的第一个标签.例如:li:first-chi ...

  8. CSS中不定宽块状元素的水平居中显示

    CSS中不定宽块状元素的水平居中显示 慕课网上的HTML/CSS教程 http://www.imooc.com/view/9 其中有三种方法 第一种是加入table标签 任务是实现div元素的水平居中 ...

  9. CSS三种写法的优先级

    在HTML文件中引入CSS样式有三种方法: 外部样式:通过link标签引入CSS样式: 内页样式:写在HTML页面里面的style标签里面: 行内样式:写在对应标签的style属性里面. 我知道一般情 ...

随机推荐

  1. web漏洞-命令执行、文件上传、XSS

    一.命令执行   1:什么是命令执行? 命令执行漏洞是指攻击者可以随意执行系统命令.属于高危漏洞之一任何脚本语言都可以调用操作系统命令. 应用有时需要调用一些执行系统命令的函数,举个例子如:PHP中的 ...

  2. python之with语句结合上下文管理器

    所谓上下文管理器即在一个类中重写了__enter__方法和__exit__方法的类就可以成为上下文管理器类. 我们可以通过with语句结合上下文管理器简化一些操作. 使用with语句结合自定义上下文管 ...

  3. 用HAL库结合STM cube编写代码控制stm32f103c8t6来驱动减速电机实现慢快逐步切换转动

    用到的模块 TB6612FNG电机驱动模块 stm32F103C8T6最小系统板 LM2596S降压模块 直流减速电机(不涉及编码器知识) 模块介绍 1.TB6612FNG电机驱动模块 (1)< ...

  4. 基于JavaScript google map集成流程

    google地图集成流程 一.获取Google Map API密钥 1.进入Google官网 => https://www.google.com.hk/ ,申请一个谷歌账号(如果没有)然后访问下 ...

  5. cookie与session django中间件

    目录 一.什么是cookie 二.django中操作cookie 2.1 如何操作cookie 2.2 操作cookie 三.什么是session 四.django中操作session 4.1 创建c ...

  6. java8-date和timeAPI

    一 我们为什么要学习 java.timeAPI 原先的Date and Calendar 类的api比较复杂,不易于理解,应用起来不是很灵活. Calendar 是个线程不安全的类会导致SimpleD ...

  7. Python代码编写规范,你真的会吗?

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:yangjiajia123456  最近两年的工作都是和运维相关,有时 ...

  8. 分享一篇关于C#大文件上传的整个过程

    简单写个小例子,记录一下此次大文件上传遇到的所有问题. 一.客户端(使用winform窗体实现) 具体功能: 点击“选择”按钮,选择要上传的文件 点击“上传文件”按钮,上传该文件调用UpLoad_Re ...

  9. 4.Android-adt安卓打包过程、adb指令学习

    本章学习adt安卓打包过程.adb指令学习.并通过adb将打包的APK发给设备 1.打包 在eclipse中已经帮我们实现打包了. 具体打包流程如下: 最终一个APK包含了如下: classes.de ...

  10. 查看python版本多少位的

    正常我们在cmd终端输入python之后,如果有安装python,就会在回车之后出来关于你安装的python版本信息,几版本,多少位的,但是还有一种,像我这样只显示了python版本是3.7.5,并没 ...