CSS
1、Emmet语法
1.1快速生成HTML结构语法
1.如果要生成多个相同标 签 加上*数字就可以了
如div*3 就可以快速生成3个div
- 如果有父子级关系的标签,可以用>,比如 ul>li 就可以了
- 如果有兄弟关系的标签,用+就可以了 比如div+p
- 如果想带有类目或者id名字的,直接写 .demo 或者 #two 就可以了(默认div,不想用div可以用 p.demo 或者 span.demo )
- 如果div类名是有顺序的,可以用自增符号$
- 如果想要在生成的标签内部写内容可以用 {} 表示
1.2快速生成CSS样式
直接写单词每个字母缩写,如text-align: center; = tac;
1.3快速格式化代码
shift+alt+f 也可右键 选中
二、CSS 的复合选择器
复合选择器可以更准确、更高效的选择目标元素(标签)
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
1.后代选择器(重要)
空格隔开父亲和子类
把ol中的li选出来改为red
<style>
ol li {
color: red;
}
</style>
<ol>
<li>1</li>
<li>1</li>
<li>1</li>
</ol>
<ul>
<li>2</li>
<li>2</li>
<li>2</li>
</ul>
把外标签写在前面,内标签写在后面,用空格隔开,可以一直往下查,可以用class给标签取名,用名字往下传递
元素1 元素2 元素… {样式声明}
2.子元素选择器(重要)
大于> 父亲>子类
只选择最近的一级子元素(亲儿子)
元素1>元素2{样式声明}
<style>
ol div {
color: red;
}
</style>
<ol>
<div>1</div>
<li>1</li>
<li>1</li>
<li>
<div>1</div>
</li>
</ol>
全红
<style>
ol>div {
color: red;
}
</style>
<ol>
<div>1</div>
<li>1</li>
<li>1</li>
<li>
<div>1</div>
</li>
</ol>
只有第一个红
3.并集选择器
逗号 兄弟1,兄弟2
div,
p {
color: red;
}
用逗号分开,里面可以写后代选择器
4.伪类选择器
a:link 选择所有未被访问的链接(没有点击过的)
a:visited 选择所有已被访问的链接
a:hover 选择鼠标指针位于其上的链接
a:active 选择活动链接(鼠标按下未弹起的链接)
<style>
/* a:link 没有点击(访问过的)链接 */
a:link {
color: #333;
text-decoration: none;
}
/* a:visited 选择点击过(访问过的)的链接 */
a:visited {
color: orange;
}
/* a:hover 选择鼠标进过的那个链接 */
a:hover {
color: skyblue;
}
/* a:active 选择的是我们鼠标正在按下没有弹起的链接 */
a:active {
color: green;
}
</style>
<body>
<a href="#">1111</a>
</body>
1、为确保生效,请按照LVHA的顺序声明 :link - :visited - :hover - :active。
2、因为a链接在游览器中具有默认样式,所以需单独指定样式,写在body {}里的无法起作用。
3、实际开发中一般是
a {
color: gray;
}
a:hover {
color: skyblue;
text-decoration: underline;
}
5、focus选择器
把鼠标选中的input表单选取出来
<style>
/* 把获得光标的input表单元素选取出来 */
input:focus {
background-color: red;
}
</style>
<body>
<input type="text">
</body>
三、CSS的元素显示模式
HTML元素一般分为块元素(一行只放一个)和行内元素(一行放好多个)两种类型
1、块元素
有
<h1> - <h6>、 <p>、 <div>、 <ul>、 <ol>、 <li>等, <div>是最典型的块元素
块元素特点
- 比较霸道,独占一行
- 高度宽度,外边距和内边距都可以控制
- 宽度默认是容器的100%
- 是一个容器及盒子,里面可以放行内或块级元素
注意
- 文字类的元素内不能使用块级元素
- p 标签主要用于存放文字,因此 p 里不能放块级元素,特别是不能放 div
- 同理,h1 - h6 等都是文字类块级标签,里面也不能放其他块级元素
2、行内元素
有
<a>、 <strong>、 <b>、 <em>、 <i>、 <del>、 <s>、 <ins>、 <u>、 <span>等,其中<span>是最典型的行内元素,有些地方也将其称为内联元素
行内元素的特点:
- 相邻行内元素在一行上,一行可以显示多个。
- 高宽直接设置是无效的。
- 默认的宽度是本身内容的宽度。
- 行内元素只能容纳文本或其他行内元素。
注意
- 链接里面不能再放链接
- 特殊情况链接 a 里面可以放块级元素,但是给 a 转换一下块级模式最安全
3、行内块元素
在行内元素有几个特殊标签——img、input、td,同时具有块元素和行内元素
特点
- 和相邻行内元素在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
- 默认宽度就是它本身内容的宽度(行内元素特点)。
- 高度,行高、外边距和内边距都可以控制(块级元素特点)。
4、元素显示模式转换
1.把行内元素转换为块级元素,display: block;
<style>
a {
width: 150px;
height: 50px;
background-color: red;
display: block; //重点
}
</style>
2.把块级元素转换为行内元素,display: inline;
3.转换为行内块元素,display: inline-block;
5、单行文字垂直居中的代码
1.让文字的行高等于盒子的高度!!
使得line-height = height;
2.文字居中原理
盒子高度40,文字本身高度加上空隙和下空隙等于40,正好居中;即上空隙和下空隙把文字挤到中间了,如果行高大于盒子高度,文字偏上,反之偏下。
五、实战1(小米侧边栏)
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
a {
height: 40px;
line-height: 40px;
width: 230px;
font-size: 14px;
text-indent: 2em;
text-decoration: none;
color: white;
background-color: rgb(83, 87, 88);
display: block;
}
a:hover {
background-color: rgb(255, 111, 0);
}
</style>
</head>
<body>
<a href="#">手机 电话卡</a>
<a href="#">电视 盒子</a>
<a href="#">笔记本 平版</a>
<a href="#">出行 穿戴</a>
<a href="#">智能 路由器</a>
<a href="#">健康 儿童</a>
<a href="#">耳机 音响</a>
</body>
</html>
效果:
六、CSS的背景
1、背景颜色
background-color: 颜色值 or transparent(透明)
2、背景图片
1.背景图片
background-image属性描述了元素的背景图像,实际开发中常见于logo或者一些装饰性的小图片或者超大背景图片,优点是非常便于控制位置
background-image: none 或者
background-image: url(图片文件地址);
2.背景平铺
使用background-repeat: no-repeat; //不平铺
background-repeat: repeat; //平铺(默认)
background-repeat: repeat-x; //沿着x轴平铺
background-repeat: repeat-y; //沿着y轴平铺
注意:背景图片会压住背景颜色
3、背景图片的位置
background-position: x y;
可以使用方位名词或者精确单位
1.方位名称:
top|center|bottom|left|center|right
-
若后两个词都是方位名词,则与顺序无关系,如top right = right center
-
若只有一个方位名词,则另一个默认center
2.精确单位
第一个x,第二个y,单位px;
如果只有一个数值默认x,另外一个默认center
3.混合单位
一个方位名词,一个精确单位
4.适应屏幕最大
background-size: cover;
4、背景图像的固定
background-attachment:
scroll 背景图片是随对象内容滚动(默认)
fixed 背景图像固定
5、背景符合写法
合并写在一个属性background中,从而节约代码(实际开发提倡的)
此简写没有特定书写顺序,一般习惯约定顺序为:
background:背景颜色,图片地址,背景平铺,背景图片滚动,背景图片位置
background: transparent url(image.jpg) no-repeat fixed top;
6、背景半透明
CSS3为我们提供了背景颜色半透明的效果。
background: rgba(0, 0, 0, 0.3); r对应红色,g对应绿色,b对应蓝色,a对应透明度,取值在0-1之间,一般习惯把 0 省掉,直接写 .3。
只是让盒子背景颜色半透明,盒子里面的内容不受影响
七、实战2(成长守护平台logo)
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
h3 {
width: 118px;
height: 40px;
font-size: 14px;
font-weight: 400;
line-height: 40px;
background-color: aliceblue;
background-image: url(icon.png);
background-repeat: no-repeat;
text-indent: 1.5em;
background-position: center left;
}
</style>
</head>
<body>
<h3>成长守护平台</h3>
</body>
</html>
效果:
八、实战3(五彩导航栏)
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
a {
display: inline-block;
background-color: skyblue;
width: 120px;
height: 58px;
text-align: center;
text-decoration: none;
color: white;
line-height: 48px;
}
.bj1 {
background-image: url(images/bg1.png);
background-repeat: no-repeat;
}
.bj2 {
background-image: url(images/bg2.png);
background-repeat: no-repeat;
}
.bj3 {
background-image: url(images/bg3.png);
background-repeat: no-repeat;
}
.bj4 {
background-image: url(images/bg4.png);
background-repeat: no-repeat;
}
/* a链接的名字后面:hover也可以使用 */
.bj1:hover {
background-image: url(images/bg11.png);
background-repeat: no-repeat;
}
.bj2:hover {
background-image: url(images/bg22.png);
background-repeat: no-repeat;
}
.bj3:hover {
background-image: url(images/bg3.jpg);
background-repeat: no-repeat;
}
.bj4:hover {
background-image: url(images/bg5.png);
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div>
<a href="#" class="bj1">五彩导航</a>
<a href="#" class="bj2">五彩导航</a>
<a href="#" class="bj3">五彩导航</a>
<a href="#" class="bj4">五彩导航</a>
</div>
</body>
</html>
效果:
(原始的)
(鼠标放在第二个上,四个鼠标放上都有效果)