CSS(Part1~2)
Part 1
CSS简介
结构(HTML)与样式(CSS)相分离
HTML局限性:丑,主要做结构,显示元素内容
CSS:美化
CSS是层叠样式表简称,有时称之为CSS样式表或级联样式表
CSS也是一种标记语言,主要设置HTML页面中的文本内容、图片外形、版面布局、外观显示。
CSS语法规范
写在<head>里,用<style>
两部分:选择器(HTML标签)以及一条或多条声明
给谁改样式{改什么样式}
属性和属性以“键值对”形式出现
属性和属性值之间用“:”分开
多个“键值对”之间用“;”区分
CSS代码风格
样式格式书写
紧凑格式
展开格式
样式大小写
提倡小写
空格规范
属性值前冒号后,保留一个空格
选择器和大括号中间保留一个空格
CSS基础选择器
选择器的作用
选择器(选择符),选择标签用的,选对人,做对事
选择器分类
基础选择器(由单个选择器组成的)
标签选择器
HTML标签名作为选择器
语法:
标签名 {
属性1: 属性值1;
属性2: 属性值2;
......
}
作用:把某一类全部选出,不能差异化选择
类选择器
口诀:样式点定义,结构类(class)调用,一个或多个,开发最常用。
作用:单独选择
语法:
.类名 {
属性1: 属性值1;
......
}
<标签名 class='类名'>XXX</标签名>
多类名:给一个标签指定多个类名
多类名使用方式:调用多个类名中间要用空格分开
多类名使用场景:相同样式放一个类,修改方便
id选择器(常和JS搭配)
口诀:样式#定义,结构id调用,只能调用一次,别人切勿使用
可为标有特定id的HTML元素指定特定样式
HTML元素以id属性来设置id选择器,CSS中id选择器以“#”来定义
语法:
#id名 {
属性1: 属性值1;
......
}
<标签名 id='id名'>XXX</标签名>
通配符选择器
使用“*”定义,表示选取页面中所有元素(标签)
语法:
* {
属性1: 属性值1;
...
}
无需调用
特殊情况使用,比如清楚所有的元素标签的内外边距
复合选择器
CSS字体属性
字体系列Fonts
font-family属性,设置字体系列
p {font-family:"微软雅黑";}
div {font-family: Arial,"Microsoft Yahei","微软雅黑";} //先看第一个字体有没有,没有再看下一个
各个字体间用逗号分隔,多个单词组成的字体用引号包含,尽量使用系统自带字体
常常直接给body指定字体
font-size属性,设置字体大小
p {
font-size: 20px;
}
px(像素),谷歌默认16px
可以给body指定文字大小,标题标签特殊要单独指定
font-weight属性,设置字体粗细
normal(正常字体,400)、bold(粗体,700)、bolder、lighter
font-weight:bold;或font-weight:700;
font-style属性,设置字体样式、文本风格(正常/斜体)
p {
font-style: italic;
}
em {
font-style:normal;(让倾斜的字体不倾斜)
}
字体font复合属性写法
想要div文字变倾斜、加粗、字号16像素、微软雅黑
普通写法:
<style>
div {
font-style: italic;
font-weight: 700;
font-size: 16px;
font-familt: "Microsoft yahei";
}
</style>
如何复合属性简写:
body {
/*font: font-style font-weight font-size/line-height font-family;(严格顺序,空格隔开,不能省略加粗的)*/
font: italic 700 16px "Microsoft yahei";
} (可以和上面一样写在style的div里)
字体属性总结
CSS文本属性
定义文本Text外观
color属性,定义文本颜色
div {
color: red;
}
表示:预定义颜色值(red),十六进制(#FF0000),RGB代码(rgb(255,0,0)或rgb(100%,0%,0%))
text-align属性,对齐文本,水平对齐方式
div {
text-align: center/left(默认)/right;
}
本质是让盒子里面的文字水平移动
text-decoration属性,装饰文本(下划线、删除线、上划线)
div {
text-decoration: none(默认)/underline/overline/line-through;
}
删除超链接下划线:
<head> {
<style> {
a {
text-decorate: none;
}
</style>
</head>
<body> {
<a href="#">超链接</a>
}
text-indent属性,文本缩进
用来指定文本第一行缩进,通常将段落首行缩进
div {
text-indent: 32px;(也可以是负值,往左缩进)
}
em相对单位,当前元素(font-size)1个文字大小,如果当前元素没有设置大小,则会按照父元素的1个文字大小
p {
text-indent: 2em;
}
line-height行间距
p {
line-height: 26px;
}
行间距:上间距+文本高度+下间距
测量小工具:FSCapture.exe
CSS文本属性总结
CSS引入方式
按照CSS样式书写位置或引入方式,CSS样式表分为三大类
行内样式表(行内式)
在元素标签内部的style属性中设定,适合修改简单样式
<div style="color: red;font-size: 12px;">XX</div>
控制当前的标签设置样式
没体现结构与样式分离,不推荐
内部样式表(嵌入式)
写到HTML页面内部,放到<style>中,一般在<head>中
方便控制整个页面中的元素样式设置
代码结构清晰,但并没实现结构与样式完全分离
练习时常用
外部样式表(链接式)
实际开发都是外部样式表,适合样式多情况,样式单独写到CSS文件中,之后把文件引入HTML页面
分布:1.新建CSS文件,把CSSD代码放入,此文件只有样式没有标签;2.在HTML页面中,使用<link>标签引入这个文件
<link rel="stylesheet" href="css文件路径">
CSS引入方式总结
综合案例-新闻界面
制作页面步骤:1.搭建HTML结构页面;2.修改CSS样式
实践过程中:
<hr>水平线标签,不常用
想让图片居中对齐,则是让它的父亲p标签天街水平居中代码
Chrome调试工具
打开调试工具
打开Chrome游览器,按下F12或右键->检查
Elements元素一栏,左边HTML,右边CSS
使用调试工具
只是调试代码、检查错误,不会修改
样式前有黄色叹号提示,则是样式属性书写错误
Part 2
Emmet语法
语法前身是Zen coding,使用缩写,提高HTML、CSS编写速度,VSCode内部已经集成该语法
快速生成HTML结构语法
生成标签,写入标签名按tab键
生成多个标签,用标签*数字
父子关系的标签,用>,比如ul>li
兄弟关系的标签,用+,比如div+p
生成带有类名或id名字的,.demo或#two tab键
生成的div类名有顺序的,可以用自增符号$
生成的标签内部写内容,可以用{}
快速生成CSS样式语法
比如w200+tab,可以生成width: 200px;
比如lh26+tab,可以生成line-height: 26px;
VSCode自动格式化代码
管理->设置->文本编辑器->格式化->Format On Save
CSS复合选择器
什么是复合选择器:建立在基础选择器上,对基本选择器进行组合形成。更准确更高效的选择目标元素(标签)。由两个或多个基础选择器,通过不同的方式组合而成。
后代选择器(重要):
又称包含选择器,可选择父元素里面子元素。写法是把外层标签写在前面,内层标签写在后面,中间用空格分隔。标签发生嵌套时,内层标签就成为外层标签的后代。
层层查找,最终选择的是最后一个
元素1 元素2 {样式声明}
<style>
ol li {
color: red;
}
</style>
元素可以是任意基础选择器(举例)
<head>
<style>
.nav li a {
color: green;
}
</style>
</head>
<body>
<ul>
<li>我是ul的孩子</li>
<li><a href="#">不会变化的</a></li>
</ul>
<ul class="nav">
<li>我是ul的孩子</li>
<li><a href="#">不会变化的</a></li>
</ul>
</body>
子选择器(重要):
子元素选择器只能选择作为某元素的最近一级子元素,即亲儿子,孙子不行。
元素1>元素2{样式声明}
并集选择器:
可以选择多组标签,同时为它们定义相同样式。通常用于集体声明。
元素1,元素2 {样式声明}
任何形式的选择器都可以作为并集选择器的一部分(举例)
<head>
<style>
div,
p,
.pig li {
color: pink;
}
</style>
</head>
<body>
<div>熊大</div>
<p>熊二</p>
<ul class="pig"><li>佩奇</li><li>乔治</li></ul>
</body>
约定的语法规范,并集选择器竖着写,最后一个不加逗号
伪类选择器:
用于向某些选择器添加特殊效果,或选择第n个元素
用“:”表示,如:hover、:first-child
链接伪类
a:link /*选择所有未被访问的链接*/
a:visited /*选择所有已被访问的链接*/
a:hover /*选择鼠标指针位于其上 的链接*/
a:active /*选择活动链接(鼠标按下未弹起的链接)*/
举例:
<head>
<style>
a:link {
color: #333;
text-decorate: none;
}
a:visited {
color: orange;
}
a:hover {
color: skyblue;
}
a:active {
color: green;
}
</style>
</head>
<body>
<a href="#">佩奇</a>
</body>
注意事项:
按LVHA顺序声明:link-;visited-;hover-;active
a链接在游览器中具有默认样式,所以要单独指定
链接伪类选择器实际开发中的写法:
一般用不着四个都写(举例)
a {
color: #333;
text-decoration: none;
a:hover {
color: #369;
text-decoration: underline;
}
结构伪类
:focus 伪类选择器用于获得焦点的表单元素。
焦点就是光标,一般情况<input>类表单元素才能获取,因此这个选择器也主要针对于表单元素。
<head>
<style>
input:focus {
background-color: yellow;
color: red;
}
</style>
</head>
<body>
<input type="text">
<input type="text">
<input type="text">
</body>
复合选择器总结
CSS的元素显示模式
什么是元素的显示模式:
作用:更好布局网页
元素显示模式就是元素(标签)以什么方式进行显示
比如<dic>自己占一行,比如一行可以放多个<span>
HTML元素一般分为块元素和行内元素
块元素:
<div>是最典型的
特点:
独占一行
高度、宽度、外边距、内边距都可控制
宽度默认是容器(父级宽度)的100%
是一个容器及盒子,里面可以放行内或块级元素
注意:
文字类的元素不能使用块级元素
<p>标签主要用于存放文字,因此<p>里不能放块级元素,特别是不能放<div>
同理,<h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素
行内元素
<span>最典型。有的地方称为内联元素
特点:
相邻行内元素在一行,一行可以显示多个
高、宽直接设置是无效的
默认宽度就是它本身内容的宽度
行内元素只能容纳文本或其他行内元素
注意:
链接内不能再放链接
特殊情况<a>里可以放块级元素,但是给<a>转换一下块级模式最安全
行内块元素
几个特殊标签——<img/>、<input/>(表单)、<td>(单元格标签),同时具有块元素和行内元素的特点
特点:
和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)
默认宽度就是它本身的宽度(行内元素特点)
高度、行高、外边距、内边距都可以控制(块级元素特点)
CSS元素显示模式总结
元素显示模式转换
简单理解,即一个模式的元素需要另外一种模式的特性
比如想要增加链接<a>的触发范围
转换为块元素:
display: block;
转换为行内元素:
display: inline;
转换为行内块:
display: inline-block;
一个小工具snipaste的使用
强大的截图工具,也可以将图贴回到屏幕上
常用快捷方式:
F1截图,同时测量大小,设置箭头,书写文字等
F3在桌置顶显示
点击图片,alt可以取色(按下shift可以切换取色模式)
按下esc取消图片显示
简洁版小米侧边栏案例
步骤:1.把链接a转换为块级元素,这样链接就可以单独占一行,并且有宽度和高度;2.鼠标经过a给链接设置背景颜色。
单行文字垂直居中的原理
小技巧:让文字行高(line-height)等于盒子的高度
行高由三部分组成:上空隙+文字+下空隙
行高小于盒子高度,文字偏上;大于,偏下
CSS的背景
背景颜色background-color
background-color: transparent(透明) | color ;
背景图片background-image
background-image: none | url(地址) ;
背景平铺background-repeat
background-repeat: repeat | no-repeat | repeat-x | repeat-y ;
页面元素既可以添加背景图片也可以添加背景颜色,只不过背景图片会压住背景颜色
背景位置background-position
background-position: x y ;
x和y坐标可以使用方位名词或者精确单位
length:百分/由浮点数字和单位标识符组成的长度值
position:top/center/bottom/left/center/right 方位名词
参数:
参数是方位名词:
则两个值前后顺序无关
如果只指定一个,另一个省略,则第二个默认居中对齐
参数是精度单位:
第一个x坐标,第二个y坐标,严格顺序
如果只指定一个数值,它一定是x坐标,另一个默认垂直居中
参数是混合单位:
第一个x坐标,第二个y坐标,严格顺序
背景固定(背景附着)background-attachment
background-attachment: scroll | fixed(固定) ;
背景复合写法background
没有固定顺序,一般习惯:
background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置 ;(举例)
bsckground: black url(地址) no-repeat fixed center top ;
背景颜色半透明
background: rgba(0,0,0,0.3) ;
最后一个alpha透明度,取值范围0~1
我们习惯把0.3的0省略,写成“.3”
注意:背景半透明指盒子背景半透明,内容不受影响
CSS新增属性,IE9+版本游览器才支持
背景总结
实际开发常见于logo或装饰性的小图片或超大的背景图片,优点是非常便于控制位置。(精灵图也是一种运用场景)
综合案例-五彩导航
CSS的三大特性
层叠性
相同选择器给设置相同样式不同值,覆盖(层叠)。主要解决样式冲突的问题。
原则:
就近原则。样式离结构近的被执行
样式不同不会被覆盖
继承性
子标签继承父标签的某些样式,如文本颜色和字号
简化代码,降低复杂性
text-、font-、line-开头的可继承,以及color属性
行高的继承
body {
font: 12px(字体大小)/1.5(行高) Microsoft YaHei ;
}
行高可以跟单位也可以不跟
如果子元素没设置行高,则会继承父元素的行高为1.5
此时子元素的行高是:当前子元素的文字大小*1.5
优先级
给同一个元素指定多个选择器,就会有优先级的产生
选择器相同,则执行层叠性
选择器不同,则根据选择器权重执行
继承或通配符选择器 0,0,0,0
元素选择器 0,0,0,1
类选择器,伪类选择器 0,0,1,0
ID选择器 0,1,0,0
行内样式style="" 1,0,0,0
!important重要的 无穷大(举例)
div {
color: pink!important;
}
注意:
权重是有4组数字组成,但不会有进位
等级判断从左向右,数值相同的判断下一位
简单记忆:继承和通配符权重为0,标签选择器为1,类(伪类)选择器为10,id选择器为100,行内样式表为1000,!important无穷大。
记住,继承的权重是0!父元素再高,子元素也是0。
权重的叠加
如果是复合选择器,则会有权重叠加,需计算(举例)
ul li { /*权重 0,0,0,1+0,0,0,1=0,0,0,2*/
color: green;
}
li { /*权重 0,0,0,1*/
color: red;
}
又比如:.nav li /*权重 0,0,1,0+0,0,0,1=0,0,1,1*/
又比如:a:hover/*权重 标签+伪类 0,0,0,1+0,0,1,0
权重两个练习题