1. 学习CSS的基础
1.1 基本语法规范
每个CSS语法包含两个部分:选择器+应用的属性
** 1.2 引入方式**
(1)内部样式表
通过style标签,来写CSS
这种方法不太常见,如果是比较简单的CSS,这样写也可以
(2)内联样式
通过html标签中的style属性,来应用一些样式
内联样式是一种比较特殊的用法(通常会搭配JS来使用)
这种写法适合于样式特别简单的情况(如果样式比较复杂,这就会很乱)
两种写法都可以
内联样式只是针对当前元素生效(可以不写选择器,也不用写{},直接写CSS属性和值就可以了)
(3)外部样式(使用最多)
把css代码单独提取出来,放到一个.css文件中
然后在html代码中,****通过link标签,来引入该css文件(一般link标签放在head中)
这种方法好处是,可以让多个HTML,复用同一份样式
打开开发者工具,也可以看到对应css信息
2. 选择器
2.1 选择器的功能和种类
选择器的功能:就是选中页面的元素(标签)
可以一次选择一个,也可以一次选择全部
选择器的种类:
(1)基础选择器:单个选择器构成的
标签选择器、类选择器、id选择器、通配符选择器
(2)复合选择器:把多种基础选择器综合起来
后代选择器、子选择器、并集选择器。伪类选择器
2.2 基础选择器
(1)标签选择器
写的选择器,就是html的标签名
能快速为同一类型的标签都选择出来. ,但是不能差异化选择
(2)类选择器
在CSS代码中,创建一个类名,在对应的html元素中,通过class属性来引用这个类名
此时具有该类名的元素,就都会应用上相关的CSS属性
好处是可以表示不同的标签 ,也可以让多个标签的都使用同一个样式
** 一个类可以被多个标签使用,一个标签也可以使用多个类(中间用空格分开)**
(3)id选择器
id选择器和类选择器类似,不同的一点是id选择器是在一个页面必须唯一不能重复
CSS 中使用 # 开头表示 id 选择器,html 的元素 id 不必带 #
(4)通配符选择器
*** 直接选中页面上的所有元素**
这个通配符选择器,最大的用途就是取消浏览器的默认样式
因为不同的浏览器,默认的样式是不同的,在实际开发时,要求页面不依赖默认样式
所以需要使用通配符选择器
2.3 复合选择器
2.3.1 后代选择器
通过多个选择器的组合,能够选中某个元素里面的子元素或后代元素
**选择器1和2中间必须加空格,选择器1和2都可以是任意选择器 **
选择器1 选择器2 {
}
2.3.2 子选择器
通过多个选择器的组合,能够选中某个元素里面的子元素
注意:用大于号分割,只选亲儿子
** 下面来看一下后代选择器和子选择器的区别**
2.3.3 并集选择器
并列的写多个选择器,中间用逗号来分割
但是有些特殊情况下,子选择器并列,也会影响到后代元素,比如
想color,font相关的这种 会被子元素继承,但还是有些子元素不会别继承,没有什么规律
2.3.4 伪类选择器
(1)链接伪类选择器
**a:link 选择未被访问过的链接 **
**a:visited 选择已经被访问过的链接 **
**a:hover 选择鼠标指针悬停上的链接 **
**a:active 选择活动链接(鼠标按下了但是未弹起) **
(2).force伪类选择器
**选取获取焦点的 input 表单元素. **
3. 常用元素属性
3.1 字体属性
(1)字体样式:font-family
(2)字体大小:font-size
**(3)字体粗细:font-weight **
(4)字体样式:font-style
(1)设置字体
**font-family **
多个字体之间注意使用逗号分割,如果都找不到,使用默认字体
注意字体带上引号,最好使用常见字体
<body>
<style>
.one {
font-family: '微软雅黑';
}
.two {
font-family: '宋体';
}
</style>
<div class="one">
正在学习CSS
</div>
<div class="two">
还在学习CSS
</div>
</body>
(2)大小
font-size 加上px
<body>
<style>
.one {
font-size: 20px;
}
.two {
font-size: 30px;
}
</style>
<div class="one">
正在学习CSS
</div>
<div class="two">
还在学习CSS
</div>
</body>
</html>
(3)粗细
font-weight 只能是100的整数,不带px
可以使用数字表示粗细,也可以使用单词表示
**normal(400) 默认值 ; bold(700)粗体字符 **
bolder 更粗字符 ; lighter:更细字符
<body>
<style>
/* 设置字体粗细 */
.one {
font-weight: 900;
}
.two {
font-weight: 100;
}
</style>
<div class="one">
正在学习CSS
</div>
<div class="two">
还在学习CSS
</div>
</body>
(4)文字样式
font-style 设置文字 倾斜/带下划线...
font-style: normal 恢复为默认文字样式
3.2 文本属性
(1)文本颜色:****color:rgb
(2)文本对齐:****text-align (left、center 、right)
(3)文本装饰:****text-decoration (默认、倾斜、删除..)
(4)文本缩进:****text-indent (px、em)
(5)行高:****line-height (水平居中:text-align;垂直居中:line-height)
(1)文本颜色
color 取值方式有很多种
(1)直接取单词(比较有限)
(2)使用rgb(三原色方式)方式来表示
** color: rgb(255, 0, 0) 括号中表示3原色 红 绿 蓝 0-255 255就是最亮的**
(3)还是使用rgb,但是使用十六进制的风格表示,比如 #00ff00
** 也可以缩写(00ff00缩写为0f0,11ff66缩写为1f6;必须都一样才可以缩写)**
(4)rgba多个分量,alpha表示透明度
<body>
<style>
div {
color: red;
}
</style>
<div>
这是一段话
</div>
</body>
(2)文本对齐
text-align
**有三种,靠左:left 居中:center 靠右:right **
(3)文本装饰
**text-decoration: [值]; **
**underline 下划线. [常用] **
**none 啥都没有. 可以给 a 标签去掉下划线. **
**overline 上划线. [不常用] **
**line-through 删除线 [不常用] **
去掉a标签超链接的下划线
<body>
<style>
a {
text-decoration: none;
}
</style>
<a href="#">这是超链接</a>
</body>
给一段话加上下划线
<body>
<style>
div {
text-decoration: underline;
}
</style>
<div>这是一句话</div>
</body>
给一段话加上删除线
<body>
<style>
div {
text-decoration: line-through;
}
</style>
<div>这是一句话</div>
</body>
(4)文本缩进
**text-indent: [值]; **
CSS中表示尺寸的单位:
**px (像素) **
em (相对单位,相对于当前文字大小,
比如当前一个文字大小16px,1em=》16px,2em=》32px)
(5)行高
line-height 行高=字体大小+行间距
设置行高时,会同时对上下两个方向都产生影响
上下两个边距都是均等的,所以也就可以设置垂直居中
水平居中:text-align 垂直居中:line-height
<style>
.two {
line-height: 50px;
}
</style>
<div class="one">
上一行
</div>
<div class="two">
中间行
</div>
<div>
下一行
</div>
</body>
** 因为行高上下均等,所以就可以基于行高实现,垂直方向的文本居中**
3.3 背景属性
(1)背景颜色:background-color
(2)背景图片:background-image: url(...);
(3)背景平铺:background-repeat: [平铺方式]
(4)背景位置:background-position: x y (top, left, right, bottom, center)
(5)背景尺寸:background-size: length|percentage|cover|contain;
(1)背景颜色
**background-color: [指定颜色] 使用方法和color类似 **快速输入(bgc)
(1)英语单词 (2)rab (3)#十六进制 (4)rgba
默认是 transparent 透明的(应用了父元素的背景)
div标签的父元素是body标签,修改一下
<style>
body {
background-color: rgb(67, 176, 55);
}
div {
width: 200px;
height: 150px;
font-size: 20px;
background-color: brown;
text-align: center;
line-height: 150px;
}
</style>
<div>
这是一段话
</div>
(2)背景图片
**background-image: url(...); **
<body>
<style>
div {
width: 900px;
height: 500px;
font-size: 20px;
background-image: url(风景照.jpg);
text-align: center;
line-height: 500px;
}
</style>
<div>
这是一段话
</div>
</body>
(3)背景平铺
当设置图片背景后,默认是一个平铺的效果(相当于铺地砖,只要有空地,一片接一片)
可以通过这个设置平铺或取消平铺
**background-repeat: [平铺方式] **
**repeat: 平铺 **
**no-repeat: 不平铺 **
**repeat-x: 水平平铺 **
**repeat-y: 垂直平铺 **
<body>
<style>
div {
width: 900px;
height: 500px;
font-size: 20px;
background-image: url(风景照.jpg);
background-repeat: repeat;
text-align: center;
line-height: 500px;
}
</style>
<div>
这是一段话
</div>
</body>
(4)背景位置
背景图片和背景颜色是可以共存的,背景图会出现在背景颜色的上方
设置背景图的位置:background-position: x y;
**参数有三种风格: **
**1. 方位名词: (top, left, right, bottom, center) **
**2. 精确单位: 坐标或者百分比(以左上角为原点) **
3. 混合单位: 同时包含方位名词和精确单位
<body>
<style>
div {
width: 900px;
height: 500px;
font-size: 20px;
background-image: url(风景照.jpg);
background-repeat: no-repeat;
background-position: 100px 100px;
text-align: center;
line-height: 500px;
}
</style>
<div>
这是一段话
</div>
</body>
如果只是使用px为单位,并不好实现,让背景图“居中”的效果
还可以设为 百分数 还可以设为 表示位置的英文单词
比如
(5)背景尺寸
background-size: length|percentage|cover|contain;
(1)可以通过px的方式来直接设置背景的宽度和高度
(2)cover和cotain都能让背景图自适应这里的元素大小
不同的是cover不会让元素漏出背景色,使图像完全覆盖背景区域
而cotain可能会漏出一部分背景色,把图片拉伸为元素大小就可以了,保证背景图始终在元素之内
3.4 圆角矩形
(1)基本用法
**border-radius: length; **
**length 是内切圆的半径. 数值越大, 弧线越强烈 **
(2)生成圆形
border-redius设置为正方形宽度的一半就可以了
可以是px 也可以是百分数 50%
(3)生成圆角矩形
(4)展开写法
border-redius也可以对四个角分别设置
border-radius:2em;
等价于
border-top-left-radius:2em;
border-top-right-radius:2em;
border-bottom-right-radius:2em;
border-bottom-left-radius:2em;
border-radius: 10px 20px 30px 40px;
等价于(顺时针)
border-top-left-radius:10px;
border-top-right-radius:20px;
border-bottom-right-radius:30px;
border-bottom-left-radius:40px;
4. 元素的显示模式
(1)块级元素
独占一行,可以设置宽度高度
div,h1-h6****,p,ul,li,table...
(2)行内元素
不独占一行,不能设置宽度高度 (可以理解成一个文本,最终行内元素的尺寸取决于内部的内容多少)
span,a,em,i....
(3)行内块元素
不独占一行,可以设置宽度高度
input,img...
(4)改变显示模式
通过display来修改元素的显示模式
常见的用法,就是把行内元素给改成块级元素
**. **
**可以把 div 等变成行内元素, 也可以把 a , span 等变成块级元素. **
**display: block 改成块级元素 [常用] **
**display: inline 改成行内元素 [很少用] **
display: inline-block 改成行内块元素
display:none(特殊的选项,元素不显示,隐藏元素)
5. 盒模型
**每一个 HTML 元素就相当于是一个矩形的 "盒子" **
**这个盒子由这几个部分构成 **
**边框 border 内容 content 内边距 padding 外边距 margin **
打开Chrome开发者工具,可以看到这个盒模型
5.1 边框:border
** border: 5px black solid; (无顺序要求)**
** box-sizing: border-box;**
**可以改四个方向的任意边框. **
**border-top/bottom/left/right **
.solid 实线边框 dashed 虚线边框 dotted 点线边框
直接设置border会撑大原有的属性
这样可能会导致比如,页面宽度300px,要放3个100px的照片,刚好可以占满,但给图片加边框后,就可能会导致最后一个图片放不下了
所以,实际在使用时,是设置box-sizing:border-box
此时设置的边框就会挤压内容,而不是撑大元素
5.2 内边距:padding
padding 设置内容和边框之间的距离
**默认内容是顶着边框来放置的. 用 padding 来控制这个距离 **
**可以给四个方向都加上边距 **
**padding-top padding-bottom **
**padding-left padding-right **
也可以简写 padding: 上 右 下 左 ;
padding默认情况下,也会撑大元素
通过box-sizing为border-box就可以阻止盒子被撑大了
5.3 外边距:margin
**控制盒子和盒子之间的距离. **
**可以给四个方向都加上边距 **
**margin-top margin-bottom **
**margin-left margin-right **
也可以简写 margin: 上 右 下 左 ;
外边距margin在垂直方向上会存在
“塌陷”情况,两个元素都设置了外边距的时候,实际的外边距是两者较大值,而不是相加
在水平方向不会出现(直接相加)
5.4 块级元素的水平居中
基于 margin 可以实现一个元素的水平居中 (不是文本的水平居中)
文本的水平居中:text-align:center
文本的垂直居中:line-heigh:【height】
元素的水平居中,就可以使用margin,前提是块级元素
**把水平 margin 设为 auto **
把水平方向的外边距设为auto(浏览器自适应)就会达到水平居中的效果
6. 去除浏览器默认样式
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
7. 弹性布局
7.1 弹性布局:flex
主要是安排页面上的元素位置(排列方式)
前面的属性,大多都是针对一个元素本身进行设置的
但是还有些元素,是影响的元素和元素之间的
比如盒子模型中的外边距就是一部分
弹性布局就是,强调这一点的,默认的网页布局是从上到下的(块级元素),而在实际我们看到的网页中不仅有从上到下,也有从左到右
弹性布局:display:flex
div块级元素,使用后独占一行
** 给父元素设置一个属性,让弹性布局:display:flex;就可以放到一行中了**
7.2 水平方向的排列方式:justify-content
前面通过弹性布局display:flex,将块级元素调整的水平方向上了
默认这些元素都挤在左上角的,现在可以通****过
justify-content 进行水平方向的排列(设置主轴上的子元素排列方式)
值描述flex-start默认值,靠左排列flext-end靠右排列center位于中间位置space-between元素中间有等分间隔space-aroud元素中间有等分间隔,最左边和最右边空出来
7.3 垂直方向的排列方式:align-items
**align-items 只能针对单行元素来实现. 如果有多行元素, 就需要使用 item-contents **
7.4 实现一个简单的页面布局
<!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>flex</title>
</head>
<body>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.nav {
width: 100%;
height: 50px;
background-color: rgb(60, 60, 60);
color: white;
text-align: center;
line-height: 50px;
font-size: 20px;
}
.container {
width: 100%;
height: 1000px;
background-color: grey;
display: flex;
justify-content: center;
align-items: center;
}
.container .left, .container .right {
width: 15%;
height: 100%;
background-color: rgb(158, 251, 141);
font-size: 20px;
line-height: 1000px;
text-align: center;
}
.container .content {
width: 70%;
height: 100%;
background-color: white;
font-size: 20px;
line-height: 1000px;
text-align: center;
}
.footer {
width: 100%;
height: 150px;
background-color: rgb(60, 60, 60);
color: aqua;
font-size: 20px;
text-align: center;
line-height: 150px;
}
</style>
<div class="nav">
导航栏
</div>
<div class="container">
<div class="left">
左侧边栏
</div>
<div class="content">
内容区域
</div>
<div class="right">
右侧边栏
</div>
</div>
<div class="footer">
页脚
</div>
</body>
</html>
版权归原作者 快到锅里来呀 所有, 如有侵权,请联系我们删除。