一、CSS简介
CSS(层叠样式表,Cascading Style Sheets)是一种用来描述HTML或XML(包括SVG等)文档的样式的语言。CSS描述了文档的样式,如字体、颜色、间距和布局等。通过将样式与文档分离,CSS使开发者可以更好地控制文档的外观和布局,同时也提高了文档的可维护性和可复用性。
CSS作用:就是通过编码方式,对Html页面的各种标签元素进行样式控制。
二、基础语法
1. CSS三种引入方式
-
外部样式表(.css文档中定义)
-
内部样式表(head中定义)
-
内联样式(在标签上定义)
-
注:三种方式的优先级: 内联样式 > 内部样式表 = 外部样式表
2. CSS语法
CSS 规则由两个主要的部分构成:
-
选择器:指定将要添加样式的 HTML元素的方式。可以使用标签名,class值,id值等多种方式。
-
声明:形式为属性(property):值(value),用于设置特定元素的属性信息,可以设置多个声明,多个声明之间用英文的分号";"隔开。
selector{ // 选择器
property1:value1; //声明
property2:value2;
property3:value3;
}
示例:
/* 给h2标签设置前景色为红色,字体大小14像素 */
h2{
color:red;
font-size:14px;
}
3. 入门案例
-
目标
设置h1标签内容的颜色。
- html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>入门案例</title>
</head>
<body>
<h1>学习CSS</h1>
</body>
</html>
- 样式设置
内敛样式 ,在行内直接设置CSS属性。
<!-- 内联样式 -->
<h1 style="color: red;">学习CSS</h1>
内部样式:在head标签中添加style标签,在style中集中设置CSS样式。
<!-- 内部样式 -->
<style>
h1{
/* color: red; */ /*英文单词写法*/
/* color: #ff0000; */ /*十六进制写法,可以使用缩写#ff00*/
/* color: #ff00; */ /*十六进制缩写写法*/
/* color: rgb(255, 0, 0); */ /*rgb写法,rgb颜色值分为三组, 第一组代表红色、第二组代表绿色、第三组代表蓝色。每一组的取值范围是0 - 255*/
/* color: rgb(100%,0%,0%); */ /*rgb百分比写法*/
color: rgb(100%,0%,0%,.1); /*rgb百分比写法,带透明度*/
}
</style>
外部样式:在项目的根目录创建css目录,在css目录中创建start.css文档,在文档中设置样式。
/* 想要实现同样的样式,可以有多种不同的书写方式 */
h1{
/* color: red; */ /*英文单词写法*/
/* color: #ff0000; */ /*十六进制写法,可以使用缩写#ff00*/
/* color: #ff00; */ /*十六进制缩写写法*/
/* color: rgb(255, 0, 0); */ /*rgb写法,rgb颜色值分为三组, 第一组代表红色、第二组代表绿色、第三组代表蓝色。每一组的取值范围是0 - 255*/
/* color: rgb(100%,0%,0%); */ /*rgb百分比写法*/
color: rgb(100%,0%,0%,.1); /*rgb百分比写法,带透明度*/
}
同时,要在html文件的head标签中使用link标签引入外部的css文件。
<link type="text/css" rel="stylesheet" href="css/start.css"/>
4. CSS选择器
4.1. 基础选择器
- 实现创建需要的HTML文件,再引入所需要的CSS文件。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS基础选择器</title>
<link type="text/css" rel="stylesheet" href="index.css"/>
</head>
<body>
<ul>
/* 命名可能不太规范,可不要学我哦 */
<li><h1>CSS</h1></li>
<li class="grey">CSS简介</li>
<li id="css_selector">CSS选择器</li>
<li class="grey">CSS属性</li>
<li my_attr="anli">CSS案例</li>
<li id="yingyong">CSS应用</li>
</ul>
</body>
</html>
-
通配选择器:
可以匹配页面中的所有标签。
*{
margin: 0;
padding: 0;
}
-
标签选择器
根据标签名称选中页面中指定的标签,会使所有相同类型标签的样式都改变。
/* margin-left:设置元素的左外边距 */
ul{
margin-left: 40px;
}
h1{
color: blue;
}
-
ID选择器
根据标签上的ID属性值来选中指定的标签,用 # 开头。
#css_selector{
color: yellow;
}
-
类选择器
根据标签上的class属性值来选中所有带此class属性的标签,用 . 开头。
.grey{
color: hotpink;
}
-
属性选择器
属性选择器可以根据标签上所携带的属性来选中标签,[属性名] { } ,拥有此属性的标签都会设置成对应的样式 。
[my_attr]{
color: orange;
}
/* [属性名="值"]{} 拥有此属性并且属性的值是对应的值的标签都会设置成对应的样式 */
[my_attr="anli"]{
color: gainsboro;
}
[id="yingyong"]{
color: aqua;
}
4.2. 进阶选择器
实现创建需要的HTML文件,再引入所需要的CSS文件。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS进阶选择器</title>
<link type="text/css" rel="stylesheet" href="index2.css"/>
</head>
<body>
<div id="level1" class="level1_class">
<h1>level1_标题1</h1>
<h2>level1_标题2</h2>
<h3>level1_标题3</h3>
<h4>level1_标题4</h4>
<h5>level1_标题5</h5>
<h6>level1_标题6</h6>
<div id="level11" class="level11_class">
<h1>level11_标题1</h1>
<h2>level11_标题2</h2>
<h3>level11_标题3</h3>
<h4>level11_标题4</h4>
<h5>level11_标题5</h5>
<h6>level11_标题6</h6>
</div>
</div>
<div id="level2" class="level2_class">
<p>level2_标题</p>
</div>
<p>level3_标题</p>
<p>level4_标题</p>
<p>level5_标题</p>
<span id="test_id" class="test_class" attr="123">CSS样式优先级</span>
</body>
</html>
-
后代选择器
使用示例:设置ID为level1的标签下面所有h2子元素的样式。
#level1 h2{
color: red;
}
-
子代选择器
使用示例:设置ID为level1的标签下面的h3子元素的样式。
注:和后台选择器的区别在于:只选择最近的子代元素。
#level1>h3{
color: blue;
}
-
同级选择器
使用示例:选中class="level1_class"的元素后面所有的同级p标签,而前面的同级p标签不会被选择。
.level1_class~p{
color: green;
}
-
相邻兄弟选择器
使用示例:选中所有class="level2_class"的元素后面最近的的同级p标签
.level2_class+p{
background: yellow;
}
-
伪类选择器
:hover
当鼠标放到所有的p标签上时,将p标签的样式改变,当鼠标移开时,样式还原。
p:hover {
background: lightpink;
color: white;
}
-
伪元素
在selector元素内部的开头或结尾插入一个伪元素
before:在标签的所有内容的前面添加内容。
after:在标签的所有内容的后面添加内容。
4.3. 选择器分组
可以通过使用英文的逗号","将多个选择器连接到一起,同时给多个符合的元素设置统一的样式
例如:把很多元素显示为灰色,可以使用类似如下的规则
h6,.level1,#level2{
background: gray;
}
4.4. 选择器优先级
优先级只有在单selector场景中比较才有意义。
优先级排名:
第一名:ID选择器
第二名:属性选择器/类选择器
第三名:标签选择器
第四名:通配选择器
三. CSS样式
1. 背景相关样式
在项目的css目录中创建css_background.css文档。
#css_background{
width: 1200px;
height: 800px;
}
创建Html页面,引入css_background.css文件,内容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS背景样式</title>
<link type="text/css" rel="stylesheet" href="css/css-background.css"/>
</head>
<body>
<div id="css_background">
</div>
</body>
</html>
- background-color:设置背景色
background-color: orange;
background-image:设置背景图片
background-image: url(1.jpg);
background-position:设置背景图片的起始位置,背景图像如果要重复,将从这一点开始
background-position:bottom center;
background-repeat:设置背景图片是否及如何重复
/* 背景图片重复方式及是否重复 no-repeat:不能重复 repeat-x:
横向重复 repeat-y:竖向重复*/
background-repeat: no-repeat;
background-size:设置背景图片的尺寸
/* 背景图片大小 */
/* background-size: 800px 500px; */
background-size: 50% 50%;
- background-attachment:设置背景图片是固定还是随着页面的其余部分滚动
/* background-attachment: scroll; */
background-attachment: fixed;
- background: 简写属性,将上面列出的背景相关的多个属性设置在一个声明中(推荐)
background: yellow url(1.jpg) bottom center no-repeat scroll;
2. 文本相关样式
在项目的css目录中创建css_text.css文档。
#css_text{
width: 500px;
height: 100px;
background: yellow;
}
创建Html页面,引入css_text.css文件,内容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS文本样式</title>
<link type="text/css" rel="stylesheet" href="css/css-text.css"/>
</head>
<body>
<div id="css_text">
CSS文本样式
</div>
</body>
</html>
- 文本缩进 text-indent
#css_text{
text-indent: 100px;
}
- 水平对齐 text-align
/* left:水平左对齐 right:水平右对齐 center:水平居中对齐 */
text-align: center;
- 行高 line-height
当块元素中只有一行文本时,将行高设置为容器的高度,可实现垂直方向上的居中
line-height: 100px;
- 词间隔 word-spacing
/* 词间隔,词语之间需要有空格 */
word-spacing: 2em;
- 字母间隔 letter-spacing
/* 字符间隔,不需要空格 */
letter-spacing: 2em;
- 大小写转换 text-transform
/* 大小写转化 lowercase:大写转小写 uppercase:小写转大写*/
text-transform: lowercase;
- 文本装饰 text-decoration
/* 文本装饰 line-through:定义穿过文本的一条线。overline:定义文本上的一条线 underline:定义文本下的一条线*/
text-decoration: line-through;
- 空白字符处理 white-space
/* 空白字符处理*/
white-space: nowrap;
- 文本阴影 text-shadow
/* 文本阴影 x距离,y距离,模糊,颜色*/
text-shadow: 2px 2px 8px red;
3. 字体相关样式
- 设置字体 font-family
- 字体大小 font-size
- 字体粗细 font-weight
- 字体风格 font-style
4. 尺寸相关样式
-
设置宽度 width
-
设置高度 height
-
设置最大宽度 max-width
-
设置最大高度 max-height
-
设置最小宽度 min-width
-
设置最小高度 min-height
5. 链接相关样式
-
链接的四种状态(本质上其实就是给a标签设置伪类选择器):
-
a:link - 普通的、未被访问的链接
-
a:visited - 用户已访问的链接
-
a:hover - 鼠标指针位于链接的上方
-
a:active - 链接被点击的时刻
-
6. 列表相关样式
- 列表标记的类型:list-style-type
- 将列表符号设置为图像 list-style-image
7. 表格相关样式
-
设置边框线宽度
-
设置边框线颜色
-
设置边框线样式
-
合并重复边框 border-collapse
-
单元格与内容之间空白的距离 border-spacing
-
表格标题的位置 caption-side
四. 修改元素默认显示行为
转化为行内元素(内联元素)显示: inline
display: inline;
转化为块级元素显示:block
display: block;
转化为行内块显示:inline-block
display: inline-block;
不显示:none
display: none;
五. 清除默认样式
不同的浏览器默认的样式可能不尽相同,所以开发时的第一件事可能就是如何把它们统一。如果没清除默认的CSS样式往往会出现浏览器之间的页面差异。
每次新开发网站或新网页时候通过初始化CSS样式的属性,可以让用到的CSS或html标签更加方便准确,使得我们开发网页内容时更加方便简洁,同时减少CSS代码量,节约网页下载时间。
html {
color: #000;
background: #FFF;
}
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
code,
form,
fieldset,
legend,
input,
textarea,
p,
blockquote,
th,
td {
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
fieldset,
img {
border: 0;
}
address,
caption,
cite,
code,
dfn,
em,
strong,
th,
var {
font-style: normal;
font-weight: normal;
}
ol,
ul {
list-style: none;
}
caption,
th {
text-align: left;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 100%;
font-weight: normal;
}
q:before,
q:after {
content: '';
}
abbr,
acronym {
border: 0;
font-variant: normal;
}
sup {
vertical-align: text-top;
}
sub {
vertical-align: text-bottom;
}
input,
textarea,
select {
font-family: inherit;
font-size: inherit;
font-weight: inherit;
*font-size: 100%;
}
legend {
color: #000;
}