CSS (Cascading Style Sheets) ,通常称为 CSS样式表 或 层叠样式表(级联样式表)。
它定义了如何显示 HTML 元素。
HTML 标签原本被设计为用于定义文档内容,样式表定义如何显示 HTML 元素。
根据css样式书写的位置可分为以下3类:
是通过标签的style属性来设置元素的样式。(任何HTML标签都拥有style属性)
<html标签 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;">
显示的内容
html标签>
<h2 style="font-size: 30px; color: red; background-color: pink;"> css引入方式1:行内式 / 内联样式(Inline Styles)
h2>
显示效果如下:
:
;
隔开。是将CSS代码集中写在HTML文档的head头部标签中,并且用标签定义。
<head>
<style type="text/CSS">
选择器(选择的标签) {
属性1: 属性值1;
属性2: 属性值2;
属性3: 属性值3;
}
style>
head>
<head>
<style>
.h2 {
font-size: 30px;
background-color: skyblue;
}
style>
head>
<body>
<h2 class="h2">css引入方式2:内嵌式 / 内部样式表h2>
body>
显示效果如下:
是将所有的样式放在一个或多个以 .css 为扩展名的外部样式表文件中,通过标签将外部样式表文件链接到HTML文档中。
<head>
<link rel="stylesheet" type="text/css" href="css文件路径">
head>
rel——定义当前文档与被链接文档之间的关系,在这里需要指定为“stylesheet”,表示被链接的文档是一个样式表文件。
type——定义所链接文档的类型,在这里需要指定为“text/CSS”,表示链接的外部文件为CSS样式表。可以省略
href——定义所链接外部样式表文件的URL,可以是相对路径,也可以是绝对路径。
<head>
<link rel="stylesheet" type="text/css" href="./test.css">
head>
<body>
<h3>css引入方式3:外链式 / 外部样式表h3>
body>
/* test.css页面 */
h3 {
font-size: 40px;
background-color: coral;
}
显示效果如下:
平时我们在html文件中使用CSS,用的最多的方式是内部样式块和链入样式表。
这两种css的操作语法都是一样的,由两个主要的部分构成:选择器和一条或多条声明【具体样式设置】
注释是用来解释说明你的代码的含义。
语法格式:
/* 这是个注释 */
注意:
选择器的作用:得到需要被控制的html元素
选择器分为基础选择器和复合选择器
根据html元素的名称得到需要设置样式的html元素。
作用:
标签选择器 可以把某一类标签全部选择出来 比如所有的div标签 和 所有的 span标签
优点:
能快速为页面中同类型的标签统一样式
缺点:
不能设计差异化样式
<head>
<style>
h2 {
color: red;
}
p {
background-color: pink;
}
div {
/* 设置字体加粗 */
font-weight: 700;
}
style>
head>
<body>
<h2>标签选择器 / 元素选择器h2>
<p>根据html元素的名称得到需要设置样式的html元素p>
<p>作用:标签选择器可以把某一类标签全部选择出来,比如所有的div标签和所有的span标签p>
<div>优点:能快速为页面中同类型的标签统一样式div>
<div>缺点:不能设计差异化样式div>
body>
显示效果如下:
根据html元素的id属性值得到需要设置样式的html元素。
需要为html元素设置id属性,
在样式文件中使用#
表示id属性,后面紧跟id名。
<head>
<style>
h2 {
color: red;
}
#p1 {
font-size: 20px;
font-weight: 700;
}
#p2 {
color: blue;
}
#p3 {
background-color: pink;
}
style>
head>
<body>
<h2>id 选择器h2>
<p id="p1">根据html元素的id属性值得到需要设置样式的html元素p>
<p id="p2">需要为html元素设置id属性p>
<p id="p3">在样式文件中使用#表示id属性,后面紧跟id名。p>
body>
显示效果如下:
根据html元素的class属性值得到需要设置样式的html元素。
需要为html元素设置class属性,
在样式文件中通过.
表示class属性,后面紧跟class名。
优点:
可以为元素对象定义单独或相同的样式,可以选择一个或者多个标签
注意:
长名称或词组可以使用中横线-
连接来为选择器命名。
不要纯数字、中文等命名, 尽量使用英文字母来表示。
<head>
<style>
h2 {
color: red;
}
.p1 {
font-weight: 700;
background-color: skyblue;
}
.p2 {
font-size: 20px;
}
.p3 {
color: blue;
}
.p4 {
background-color: pink;
}
style>
head>
<body>
<h2>class 选择器 / 类选择器h2>
<p class="p1">根据html元素的class属性值得到需要设置样式的html元素。p>
<p class="p2">需要为html元素设置class属性,p>
<p class="p3">在样式文件中通过 . 表示class属性,后面紧跟class名。p>
<p class="p4">优点:可以为元素对象定义单独或相同的样式,可以选择一个或者多个标签p>
body>
显示效果如下:
我们可以给标签指定多个类名,从而达到更多的选择目的。
各个类名中间用空格隔开。
<head>
.pink {
background-color: pink;
}
.strong {
font-weight: 700;
}
.big {
font-size: 30px;
}
style>
head>
<body>
<div class="pink strong big">我们可以给标签指定多个类名,从而达到更多的选择目的。div>
body>
显示效果如下:
通配符选择器用*
号表示,*就是选择所有的标签,它是所有选择器中作用范围最广的,能匹配页面中所有的元素。
一般用于清除所有HTML标记的默认边距:
* {
margin: 0; /* 定义外边距 */
padding: 0; /* 定义内边距 */
}
得到被父元素包含的所有子元素,包含嵌套在内的所有的子孙后代元素。
其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔,先写父亲爷爷,再写儿子孙子。
<head>
<style>
.shopping {
width: 300px;
border: 2px solid #000;
}
.shopping .title {
font-weight: 700;
text-align: center;
background-color: #ccc;
}
.shopping ul {
color: red;
background-color: lightblue;
}
style>
head>
<body>
<div class="shopping">
<p class="title">购物商城p>
<ul>
<li>家电li>
<li>厨卫li>
<li>家具
<ol>
<li>衣柜
<ul>
<li>两开门小衣柜li>
<li>八开门大衣柜li>
ul>
li>
<li>床li>
<li>沙发li>
ol>
li>
ul>
<div>
<ul>
<li>休闲食品li>
<li>蔬菜li>
<li>水果
<ol>
<li>苹果li>
<li>香蕉li>
ol>
li>
ul>
div>
div>
body>
显示效果如下:
得到指定父元素的直接子元素,而不是所有子元素。即只能选择作为某元素**子元素(亲儿子)**的元素。
其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个 >
进行连接。
<head>
<style>
.shopping {
width: 300px;
border: 2px solid #000;
}
.shopping .title {
font-weight: 700;
text-align: center;
background-color: #ccc;
}
.shopping>ul {
color: red;
background-color: lightblue;
}
style>
head>
<body>
<div class="shopping">
<p class="title">购物商城p>
<ul>
<li>家电li>
<li>厨卫li>
<li>家具
<ol>
<li>衣柜
<ul>
<li>两开门小衣柜li>
<li>八开门大衣柜li>
ul>
li>
<li>床li>
<li>沙发li>
ol>
li>
ul>
<div>
<ul>
<li>休闲食品li>
<li>蔬菜li>
<li>水果
<ol>
<li>苹果li>
<li>香蕉li>
ol>
li>
ul>
div>
div>
body>
显示效果如下:
如果某些选择器定义的相同样式,就可以利用并集选择器,可以让代码更简洁。
并集选择器(CSS选择器分组)是各个选择器通过逗号,
连接而成的(逗号可以理解为 和的意思),通常用于集体声明。
任何形式的选择器(包括标签选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。
<head>
<style>
.sitenav .site-r a {
color: red;
}
.nav a {
color: #aaa;
}
.nav,
.sitenav {
font: 18px "microsoft yahei";
}
style>
head>
<body>
<div class="nav">
<ul>
<li><a href="#">公司首页a>li>
<li><a href="#">公司简介a>li>
<li><a href="#">公司产品a>li>
<li><a href="#">联系我们a>li>
ul>
div>
<div class="sitenav">
<div class="site-l">左侧导航栏div>
<div class="site-r"><a href="#">登录a>div>
div>
body>
显示效果如下:
伪类选择器用2个点——就是冒号:
表示,比如 :link{}
作用:
用于向某些选择器添加特殊的效果。比如给链接添加特殊效果, 比如可以选择 第1个,第n个元素。
伪类选择器很多,以下介绍链接伪类和结构伪类:
<head>
<style>
* {
margin: 0;
padding: 0;
}
.nav {
margin: 50px;
overflow: hidden;
text-align: center;
}
li {
list-style: none;
float: left;
}
a {
text-decoration: none;
display: block;
width: 150px;
height: 30px;
line-height: 30px;
background-color: pink;
}
a:link {
color: black;
}
a:visited {
color: red;
}
a:hover {
font-weight: 700;
background-color: orange;
}
a:active {
background-color: purple;
}
style>
head>
<body>
<div class="nav">
<ul>
<li><a href="#1">公司首页a>li>
<li><a href="#2">公司简介a>li>
<li><a href="#3">公司产品a>li>
<li><a href="#4">联系我们a>li>
ul>
div>
body>
显示效果如下:
nth-child
:<head>
<style>
li {
width: 200px;
box-sizing: border-box;
}
/* 选择ul里面的第一个孩子li */
ul li:first-child {
color: red;
}
/* 选择ul里面的最后一个孩子li */
ul li:last-child {
color: blue;
}
/* nth-child */
/* 1. n可以是数字,选择ul里面的第几个孩子 li */
ul li:nth-child(4) {
font-weight: 700;
font-size: 20px;
}
/* 2. n可以是关键词:even偶数、odd奇数 */
ul li:nth-child(even) {
background-color: pink;
}
ul li:nth-child(odd) {
background-color: skyblue;
}
/* 3. n可以是公式(n从0开始计算,2n类似于even,2n+1类似于odd) */
/* 3n选择3的倍数 */
ul li:nth-child(3n) {
border: 3px solid orangered;
}
/* n+5 从第5个(包含第5个)往后面选择 */
ol li:nth-child(n+5) {
background-color: aquamarine;
}
/* -n+4 选择前面4个(包含第4个) */
ol li:nth-child(-n+4) {
background-color: lightpink;
}
style>
head>
<body>
<ul>
<li>1li>
<li>2li>
<li>3li>
<li>4li>
<li>5li>
<li>6li>
<li>7li>
<li>8li>
ul>
<ol>
<li>ol里的第1个lili>
<li>ol里的第2个lili>
<li>ol里的第3个lili>
<li>ol里的第4个lili>
<li>ol里的第5个lili>
<li>ol里的第6个lili>
<li>ol里的第7个lili>
<li>ol里的第8个lili>
ol>
body>
显示效果如下:
nth-of-type
:<head>
<style>
/* 注意:nth-child 先选第几个孩子 再看类型 */
/* 1. 当类型不相匹,则谁都选不到 */
div span:nth-child(1) {
background-color: blue;
}
/* 2. 当类型相匹,则根据是父元素的第几个孩子选择 */
/* 以下选择到的是div的第2个孩子,即第一个span */
div span:nth-child(2) {
background-color: pink;
}
/* 注意:nth-of-type 先选类型,再看第几个 */
/* 1. 选择div里面的span 的第一个 */
div span:first-of-type {
background-color: skyblue;
}
/* 2. 选择div里面的span 的最后一个 */
div span:last-of-type {
background-color: purple;
}
/* 3. 选择div里面的span 的第3个 */
div span:nth-of-type(3) {
background-color: orange;
}
/* 4. 选择div里面的i 的偶数/奇数 */
div i:nth-of-type(even) {
background-color: lightcoral;
}
div i:nth-of-type(odd) {
background-color: greenyellow;
}
style>
head>
<body>
<div>
<p>我是div里的pp>
<span>我是div里的第1个spanspan><br>
<span>我是div里的第2个spanspan><br>
<span>我是div里的第3个spanspan><br>
<span>我是div里的第4个spanspan><br><br>
<i>我是div里的第1个ii><br>
<i>我是div里的第2个ii><br>
<i>我是div里的第3个ii><br>
<i>我是div里的第4个ii><br>
div>
body>
显示效果如下:
nth-child
和 nth-of-type
的区别:选择符 | 表示 |
---|---|
::before |
在元素内部的前面插入内容 |
::after |
在元素内部的后面插入内容 |
伪类选择器注意事项
before
和 after
必须有 content
属性before
在内容前面,after 在内容后面before
和 after
创建的是一个元素,但是属于行内元素Dom
中查找不到,所以称为伪元素代码演示
伪元素的使用案例——添加字体图标
p {
width: 220px;
height: 22px;
border: 1px solid lightseagreen;
margin: 60px;
position: relative;
}
p::after {
content: '\ea50';
font-family: 'icomoon';
position: absolute;
top: -1px;
right: 10px;
}
根据html元素的设置的属性名称得到需要设置样式的html元素。
<head>
<style>
input {
display: block;
margin: 10px;
}
div {
width: 100px;
}
/* 选择有placeholder属性的input标签 */
input[placeholder] {
background-color: pink;
}
/* 选择type属性值为text的input标签 */
input[type="text"] {
font-size: 18px;
}
/* 选择有type属性和value属性,且value属性值为"搜索" 的input标签*/
input[type][value="搜索"] {
border: 3px solid red;
}
/* 选择class属性值以icon开头的div元素 */
div[class^=icon] {
color: red;
}
/* 选择class属性值以left结尾的div元素 */
div[class$=left] {
background-color: yellow;
}
/* 选择class属性值里面包含new的div元素 */
div[class*=new] {
font-weight: 700;
}
style>
head>
<body>
<input type="text" placeholder="姓名">
<input type="text" placeholder="年龄">
<input type="password" placeholder="密码">
<input type="search" value="搜索">
<div class="icon1new">图标1div>
<div class="icon2-left">图标2div>
<div class="icon3-left">图标3div>
<div class="newiicon4">图标4div>
body>
显示效果如下:
font-family属性用于设置哪一种字体。
网页中常用的字体有宋体、微软雅黑、黑体等,
可以同时指定多个字体,中间以逗号,
隔开,表示如果浏览器不支持第一个字体,则会尝试下一个,直到找到合适的字体; 如果都没有,则以电脑默认的字体为准。
p {font-family: "Times New Roman", "Microsoft Yahei", Times, serif;}
注意:
<head>
<style>
div p:nth-child(1) {
font-family: "宋体";
}
div p:nth-child(2) {
font-family: "Times New Roman", "Microsoft Yahei", Times, serif;
}
style>
head>
<body>
<div>
<p>font-family属性用于设置哪一种字体。p>
<p>网页中常用的字体有宋体、微软雅黑、黑体等p>
div>
body>
显示效果如下:
font-size属性用于设置字号。
p {font-size:20px;}
单位:
可以使用相对长度单位【em / px】,也可以使用绝对长度单位【cm / mm】。
相对长度单位比较常用,一般较多使用像素单位px,绝对长度单位使用较少。
谷歌浏览器默认的文字大小为16px。
一般给body指定整个页面文字的大(标题标签比较特殊,需要单独指定文字大小)。
<head>
<style>
div p:nth-child(1) {
font-size: 20px;
}
div p:nth-child(2) {
font-size: 1em;
}
style>
head>
<body>
<div>
<p>font-size属性用于设置字号。p>
<p>相对长度单位比较常用,一般较多使用像素单位px,绝对长度单位使用较少。p>
div>
body>
显示效果如下:
font-style属性用于定义字体风格,设置斜体或正常字体,其可用属性值如下:
p {font-style:italic;}
平时我们很少给文字加斜体,反而喜欢给斜体标签(em,i)改为普通模式。
<head>
<style>
div p:nth-child(1) {
font-style: italic;
}
div p:nth-child(2) {
font-style: normal;
}
style>
head>
<body>
<div>
<p>font-style属性用于定义字体风格,设置斜体或正常字体p>
<p>属性值:normal——默认值,显示标准的字体样式;italic——斜体p>
div>
body>
显示效果如下:
font-weight 属性设置字体的粗细,常用数字来表示加粗和不加粗。
属性值 | 描述 |
---|---|
normal | 默认值(不加粗的) |
bold | 粗体(加粗的) |
lighter | 定义更细的字符 |
100~900 | 400 等同于 normal,700 等同于 bold |
<head>
<style>
div p:nth-child(1) {
font-style: normal;
}
div p:nth-child(2) {
font-weight: 700;
}
style>
head>
<body>
<div>
<p>font-weight 属性设置字体的粗细,常用数字来表示加粗和不加粗。p>
<p>400 等同于 normal,700 等同于 boldp>
div>
body>
显示效果如下:
font属性用于对字体样式进行综合设置。
选择器 { font: font-style font-weight font-size/line-height font-family;}
注意:
使用font属性时,必须按上面语法格式中的顺序书写,不能更换顺序,各个属性以空格隔开。
其中不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用。
<head>
<style>
div p:nth-child(1) {
font: italic 700 20px/30px "楷体";
}
div p:nth-child(2) {
font: 20px "microsoft yahei";
}
style>
head>
<body>
<div>
<p>使用font属性时,必须按: font-style font-weight font-size/line-height font-family 的顺序书写,不能更换顺序。p>
<p>其中不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用。p>
div>
body>
color属性用于定义文本的颜色,其取值方式有如下3种:
表示 | 属性值 |
---|---|
预定义的颜色值 | red,green,blue |
十六进制 | #FF0000,#FF6600,#29D794 |
RGB代码 | rgb(255,0,0),rgb(100%,0%,0%) |
<head>
<style>
.color {
color: red;
}
style>
head>
<body>
<p class="color">测试color 颜色p>
body>
显示效果如下:
line-height属性用于设置行间距,就是行与行之间的距离,即字符的垂直间距,一般称为行高。
line-height常用的属性值单位有三种:
实际工作中使用最多的是像素px
<head>
<style>
.lh {
line-height: 35px;
}
style>
head>
<body>
<p class="moren">默认行高p>
<p class="lh">测试line-height 行高p>
body>
显示效果如下:
text-align属性用于设置文本内容的水平对齐,相当于html中的align对齐属性。
属性值 | 解释 |
---|---|
left | 左对齐(默认值) |
right | 右对齐 |
center | 居中对齐 |
注意:是让盒子里面的内容水平居中, 而不是让盒子居中对齐
<head>
<style>
.tar {
text-align: right;
}
.tac {
text-align: center;
}
style>
head>
<body>
<p>测试text-align 水平对齐方式--默认left左对齐p>
<p class="tar">测试text-align 水平对齐方式--right右对齐p>
<p class="tac">测试text-align 水平对齐方式--center居中对齐p>
body>
显示效果如下:
vertical-align 属性设置一个元素的垂直对齐方式,它只针对于行内元素或者行内块元素
属性值 | 描述 |
---|---|
baseline | 默认值,基线对齐 |
top | 顶线对齐 |
middle | 中线对齐 |
bottom | 底线对齐 |
<head>
<style>
.vat {
vertical-align: top;
}
.vam {
vertical-align: middle;
}
.vab {
vertical-align: bottom;
}
style>
head>
<body>
<span>baseline默认值,基线对齐span>
<img src="../imgs/dog.webp" width="100px"> <br>
<span>top顶线对齐span>
<img src="../imgs/dog.webp" width="100px" class="vat"> <br>
<span>middle中线对齐span>
<img src="../imgs/dog.webp" width="100px" class=" vam"> <br>
<span>bottom底线对齐span>
<img src="../imgs/dog.webp" width="100px" class=" vabm"> <br>
body>
text-decoration 通常用于给链接修改装饰效果
属性值 | 描述 |
---|---|
none | 默认。定义标准的文本。 取消下划线(最常用) |
underline | 定义文本下的一条线。下划线 也是我们链接自带的(常用) |
overline | 定义文本上的一条线。(不用) |
line-through | 定义穿过文本下的一条线。(不常用) |
<head>
<style>
.tdu {
text-decoration: underline;
}
.tdo {
text-decoration: overline;
}
.tdlh {
text-decoration: line-through;
}
.tdn {
text-decoration: none;
}
style>
head>
<body>
<p class="tdu">测试text-decoration 装饰线--underline下划线p>
<p class="tdo">测试text-decoration 装饰线--overline上划线p>
<p class="tdlt">测试text-decoration 装饰线--line-through删除线p>
<a class="tdn" href="#">测试text-decoration 装饰线--none 取消下划线a>
body>
text-indent属性用于设置首行文本的缩进
<head>
<style>
.ti32px {
text-indent: 32px;
}
.ti2em {
text-indent: 2em;
}
style>
head>
<body>
<p>测试text-indent 首行缩进:标准不缩进p>
<p class="ti32px">测试text-indent 首行缩进:32pxp>
<p class="ti2em">测试text-indent 首行缩进:2emp>
body>
显示效果如下:
文本转换属性是用来指定在一个文本中的大写和小写字母。
可用于所有字句变成 大写uppercase 或 小写lowercase,或每个单词的首字母大写capitalize。
<head>
<style>
.ttu {
text-transform: uppercase;
}
.ttl {
text-transform: lowercase;
}
.ttc {
text-transform: capitalize;
}
style>
head>
<body>
<p class="ttu">测试text-transform 字母大小写--大写uppercasep>
<p class="ttl">测试text-transform 字母大小写--小写lowercasep>
<p class="ttc">测试text-transform 字母大小写--首字母大写capitalizep>
body>
显示效果如下:
letter-spacing 属性增加或减少字符间的空白(字符间距),
对单词和汉字都有效果。
<head>
<style>
.ls {
letter-spacing: 10px;
}
style>
head>
<body>
<p class="ls">测试letter-spacing 字符间距p>
body>
显示效果如下:
word-spacing属性增加或减少单词与单词之间的空白,
以单词间空格为依据,只对单词有效果,对汉字无效果。
<head>
<style>
.ws {
word-spacing: 10px;
}
style>
head>
<body>
<p class="ws">测试word-spacing单词间距p>
<p class="ws">This is some text. This is some text.p>
<p class="ws">这是一段汉字。p>
body>
显示效果如下:
在css3中,我们可以使用text-shadow属性将阴影应用于文本。
语法:
text-shadow: h-shadow v-shadow blur color;
属性值 | 描述 |
---|---|
h-shadow | 必需。水平阴影的位置。允许负值。 |
v-shadow | 必需。垂直阴影的位置。允许负值。 |
blur | 可选。模糊的距离。 |
color | 可选。阴影的颜色。 |
<head>
<style>
.ts1 {
font-size: 25px;
text-shadow: 10px 10px 5px rgba(0, 0, 0, .7);
}
.ts2 {
font-size: 25px;
text-shadow: -5px -5px 10px;
}
style>
head>
<body>
<p class="ts1">测试text-shadow 文字阴影1p>
<p class="ts2">测试text-shadow 文字阴影2p>
body>
显示效果如下:
background-color:颜色值;
默认的值是 transparent 透明的
表示 | 属性值 |
---|---|
预定义的颜色值 | red,green,blue |
十六进制 | #FF0000,#FF6600,#29D794 |
RGB代码 | rgb(255,0,0),rgb(100%,0%,0%) |
<head>
<style>
div {
width: 200px;
height: 200px;
background-color: pink;
}
style>
head>
<body>
<div>div>
body>
<head>
<style>
div {
width: 300px;
height: 300px;
border: 1px solid red;
background-image: url(../imgs/cute.png);
}
style>
head>
<body>
<div>div>
body>
显示效果如下:默认铺满整个盒子大小
CSS3 渐变(gradients)可以在两个或多个指定的颜色之间显示平稳的过渡。
以前,你必须使用图像来实现这些效果。但是,通过使用 CSS3 渐变(gradients),你可以减少下载的时间和宽带的使用。此外,渐变效果的元素在放大时看起来效果更好,因为渐变(gradient)是由浏览器生成的。
linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片。
指定方向:向下 / 向上 / 向左 / 向右 / 对角方向 / 指定角度
如果不指定方向,默认从上到下渐变
指定至少两种颜色
CSS3 渐变也支持透明度(transparent),可用于创建减弱变淡的效果。
为了添加透明度,我们使用 rgba() 函数来定义颜色节点。rgba() 函数中的最后一个参数可以是从 0 到 1 的值,它定义了颜色的透明度:0 表示完全透明,1 表示完全不透明。
<style>
div {
width: 200px;
height: 100px;
margin-bottom: 10px;
border: 1px solid black;
}
/* 1. 默认:从上到下 */
.div1 {
background-image: linear-gradient(red, yellow, green);
}
/* 2. 指定方向:从左到右 (to bottom向下 / to top向上 / to left向左) */
.div2 {
background-image: linear-gradient(to right, red, yellow, green);
}
/* 3. 指定不均匀分布占比 */
.div3 {
background-image: linear-gradient(to right, red 5%, yellow 25%, green 70%);
}
/* 4. 对角线:向右下角 */
.div4 {
background-image: linear-gradient(to bottom right, red, yellow, green);
}
/* 5. 使用角度:角度是指水平线和渐变线之间的角度 */
.div5 {
background-image: linear-gradient(45deg, red, yellow, green);
}
/* 6. 使用透明度 */
.div6 {
background-image: linear-gradient(to right, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1));
}
style>
<body>
<div class="div1">默认 从上到下div>
<div class="div2">指定方向:从左到右 to rightdiv>
<div class="div3">指定不均匀分布占比div>
<div class="div4">对角线:向右下角 to bottom rightdiv>
<div class="div5">使用角度:45degdiv>
<div class="div6">使用透明度:rgba(255, 0, 0, 0), rgba(255, 0, 0, 1)div>
body>
显示效果如下:
radial-gradient() 函数用径向渐变创建 “图像”。径向渐变由中心点定义。
/* 语法: */
background-image: radial-gradient(shape size at position, start-color, ..., last-color);
/* shape 形状:ellipse (默认 椭圆形) / circle(圆形)
size 大小:farthest-corner (默认 从圆心到离圆心最远的角)
position 位置:center(默认)/ top / bottom */
案例:
<head>
<style>
div {
width: 200px;
height: 100px;
margin-bottom: 10px;
border: 1px solid black;
}
/* 1. 默认形状:椭圆形ellipse */
.div1 {
background-image: radial-gradient(red, yellow, green);
}
/* 2. 指定为圆形circle */
.div2 {
background-image: radial-gradient(circle, red, yellow, green);
}
/* 3. 指定不均匀分布占比 */
.div3 {
background-image: radial-gradient(red 5%, yellow 25%, green 70%);
}
/* 4. 设置中心点为顶部 */
.div4 {
background-image: radial-gradient(farthest-corner at top, red, yellow, green);
}
/* 5. 设置中心点为右上角 */
.div5 {
background-image: radial-gradient(farthest-corner at top right, red, yellow, green);
}
style>
head>
<body>
<div class="div1">默认形状:椭圆形ellipsediv>
<div class="div2">指定为圆形circlediv>
<div class="div3">指定不均匀分布占比div>
<div class="div4">设置中心点为顶部div>
<div class="div5">设置中心点为右上角div>
body>
显示效果如下:
参数 | 作用 |
---|---|
repeat | 在x轴和y轴上平铺(默认的) |
no-repeat | 不平铺 |
repeat-x | 在x轴上平铺 |
repeat-y | 在y轴上平铺 |
<style>
div {
width: 300px;
height: 300px;
border: 1px solid red;
background-image: url(../imgs/cute.png);
background-repeat: no-repeat;
}
style>
显示效果如下:
background-repeat: repeat-x;
显示效果如下:
background-repeat: repeat-y;
显示效果如下:
参数 | 值 |
---|---|
length | 百分数 | 由浮点数字和单位标识符组成的长度值 |
position | top | center | bottom | left | center | right 方位名词 |
注意:
必须先指定background-image属性
position 后面是x坐标和y坐标。 可以使用方位名词或者 精确单位。
实际上指定的是图片左上角相对于元素左上角的位置
如果指定两个值,两个值都是方位名字,则两个值前后顺序无关,比如left top和top left效果一致
background-position: center top;
/* background-position: top center; */
如果只指定了一个方位名词,另一个值默认居中对齐。
background-position: center;
如果position 后面是精确坐标, 那么第一个肯定是 x,第二个一定是y
background-position: 50px 50px;
如果只指定一个数值,那该数值一定是x坐标,另一个默认垂直居中
background-position: 150px;
如果指定的两个值是 精确单位和方位名字混合使用,则第一个值是x坐标,第二个值是y坐标
background-position: 50px bottom;
背景附着就是解释背景是滚动的还是固定的
属性值 | 描述 |
---|---|
scroll | 默认值,背景图像随对象内容滚动 |
fixed | 背景图像固定 |
body {
background-image: url(../cat.jpeg);
background-size: 300px;
background-repeat: no-repeat;
background-attachment: scroll;
}
显示效果如下:
body {
background-attachment: fixed;
}
显示效果如下:
/* background: 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置; */
/* background: transparent url(image.jpg) repeat-y scroll center top ; */
background: pink url(../imgs/cat.png) no-repeat fixed center 100px;
/* 不需要指定每一个值。如果省略值的话,就使用属性地默认值 */
background: url(../imgs/cat.png) no-repeat 50% 100px;
background: rgba(0, 0, 0, 0.3);
background-size指定背景图像的大小。
CSS3以前,背景图像大小由图像的实际大小决定。
CSS3中可以指定背景图片,属性值:
像素
百分比大小(相对于父元素的宽高)
cover——把背景图片等比例缩放,直到短的一边也缩放到能覆盖掉盒子的对应边的大小。
问题:可能有部分背景图片显示不全
contain——把背景图片等比例缩放,直到长的一边缩放到能覆盖掉盒子的对应边的大小。
问题:可能有部分空间是背景图片未覆盖到的,即有部分空白区域。
<style>
div {
width: 200px;
height: 100px;
margin-bottom: 10px;
border: 1px solid black;
background: url(../dog.webp) no-repeat;
}
div:nth-child(1) {
background-size: 200px 100px;
}
div:nth-child(2) {
background-size: 100% 100%;
}
div:nth-child(3) {
background-size: cover;
}
div:nth-child(4) {
background-size: contain;
}
style>
<div>
<p>测试像素单位p>
div>
<div>
<p>测试百分比单位p>
div>
<div>
<p>测试coverp>
div>
<div>
<p>测试containp>
div>
显示效果如下:
background-clip属性指定背景绘制区域。
值 | 说明 |
---|---|
border-box | 默认值。背景绘制在边框方框内(背景颜色覆盖住边框)。 |
padding-box | 背景绘制在衬距方框内(背景颜色不覆盖边框,覆盖住内边距)。 |
content-box | 背景绘制在内容方框内(背景颜色只覆盖住内容)。 |
<style>
div {
margin-bottom: 20px;
width: 200px;
height: 80px;
border: 10px dotted black;
padding: 20px;
}
.border {
background-clip: border-box;
background-color: pink;
}
.padding {
background-clip: padding-box;
background-color: skyblue;
}
.content {
background-clip: content-box;
background-color: lightgreen;
}
style>
<div class="border">测试background-clip: border-box 背景颜色覆盖住边框div>
<div class="padding">测试background-clip: padding-box 背景颜色不覆盖边框,覆盖住内边距div>
<div class="content">测试background-clip: content-box 背景颜色只覆盖住内容div>
显示效果如下:
origin是原点、起源的意思
值 | 描述 |
---|---|
padding-box | 默认值,背景图像不覆盖边框,覆盖内边距 |
border-box | 背景图像覆盖边框 |
content-box | 背景图像只覆盖内容区域 |
background-origin属性指定background-position属性应该是相对位置。
注意: 如果背景图像background-attachment是"固定",这个属性没有任何效果。
<style>
div {
width: 200px;
height: 120px;
margin-bottom: 10px;
padding: 10px;
border: 10px dotted black;
background: pink url(../cute.png) no-repeat;
}
div:nth-child(2) {
background-origin: border-box;
}
div:nth-child(3) {
background-origin: padding-box;
}
div:nth-child(4) {
background-origin: content-box;
}
style>
<div>不设置background-origin属性div>
<div>background-origin: border-boxdiv>
<div>background-origin: padding-boxdiv>
<div>background-origin: content-boxdiv>
显示效果如下:
属性值 | 描述 |
---|---|
none | 无标记。 |
disc | 默认。标记是实心圆。 |
circle | 空心圆 |
square | 实心方块 |
decimal | 数字 |
decimal-leading-zero | 0开头的数字标记。(01 02 03) |
lower-roman / upper-roman | 小 / 大写罗马数字 (i ii iii iv v / I II III IV V) |
lower-alpha / upper-alpha | 小 / 大写英文字母 (a b c / A B C) |
<style>
/* 把列表项标记的类型设置为实心方块。 */
.square {list-style-type: square;}
style>
<ul class="square">
<li>电视剧li>
<li>电影li>
<li>综艺li>
ul>
ul {
list-style-image: url(img/icon.png)
}
<head>
<style>
ul,
ol {
width: 15%;
list-style-image: url(../imgs/列表.png);
}
ol {
list-style-position: inside;
}
li {
border: 1px solid black;
}
style>
head>
<body>
<ul>
<li>电视剧li>
<li>电影li>
<li>综艺li>
ul>
<ol>
<li>有序列表1li>
<li>有序列表2li>
<li>有序列表3li>
ol>
body>
显示效果如下:
list-style 简写属性在一个声明中设置所有的列表属性。
可以设置的属性(按顺序): list-style-type, list-style-position, list-style-image.
可以不设置其中的某个值,比如 “list-style:circle inside;” 也是允许的。未设置的属性会使用其默认值。
/* 去掉列表的项目符号标记 */
list-style: none;
table, th, td
{
border: 1px solid black;
}
以上设置表格有双边框,这是因为表和th/ td元素有独立的边界,需显示为单个边框,可使用 border-collapse属性。
设置表格的边框是否被折叠成一个单一的边框或隔开
table
{
border-collapse:collapse;
/* border-collapse:separate 单元格与单元格边框分开 */
}
table,th, td
{
border: 1px solid black;
}
Width和height属性定义表格的宽度和高度。
table {
width: 30%;
}
td {
height: 30px;
}
text-align属性设置水平对齐方式,属性值:
text-align: center;
垂直对齐属性设置垂直对齐方式,属性值:
vertical-align:bottom;
如需控制边框和表格内容之间的间距,应使用td和th元素的填充属性:
th {
padding: 10px;
}
tr:nth-child(even) {
background-color: lightblue;
}
tr:nth-child(odd) {
background-color: pink;
}
background: url(../imgs/flower.webp) no-repeat;
综合简单案例:
<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>Documenttitle>
<style>
table,
tr,
th,
td {
border: 1px solid black;
border-collapse: collapse;
}
table {
width: 30%;
/* 让表格在页面中水平居中 */
margin: 0 auto;
/* 表格内文本水平居中 */
text-align: center;
}
th {
padding: 10px;
background: url(../imgs/flower.webp) no-repeat;
background-size: 100%;
}
td {
height: 30px;
/* 单元格垂直居中对齐 */
vertical-align: center;
}
tr:nth-child(even) {
background-color: lightblue;
}
tr:nth-child(odd) {
background-color: pink;
}
style>
head>
<body>
<table>
<caption>学生信息表caption>
<tr>
<th>姓名th>
<th>年龄th>
<th>性别th>
tr>
<tr>
<td>张三td>
<td>25td>
<td>男td>
tr>
<tr>
<td>李四td>
<td>20td>
<td>男td>
tr>
<tr>
<td>王五td>
<td>23td>
<td>男td>
tr>
table>
body>