CSS
- 概述:CSS(Cascading Style Sheets),层叠样式表,用于控制HTML标签的展示样式,美化页面
如果学习了CSS,HTML标签的很多自带属性就可以不用了,都可以使用CSS代替,起到解耦的作用 - 使用:HTML定义元素,CSS控制展示样式
- CSS与HTML的结合方式
(1)内联样式:将CSS属性写在HTML标签的style属性上,优点是控制强度大,缺点是一次只能控制一个标签,代码复用性差
<h1 style="color: aqua;font-size: 100px;font-weight:900;">内联样式</h1>
(2)内部样式:配合选择器,一次可以控制一个或多个标签,能提高代码的复用性
(3)外联样式:一次可以控制多个页面,开发中推荐使用,即创建一个CSS目录,再创建一个CSS文件,在该文件中通过CSS控制展示样式,在html文件中通过link标签将CSS和HTML关联起来,简单的说就是将内部样式的选择器单独写在一个CSS文件中,使HTML文件看起来简单
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/iconfont.css">
</head>
选择器
- 概述:选择器就是一种语法,为了选中一个或多个标签,进行样式的控制,以减少CSS代码的重复,一般写在head标签中的style属性里
- 常见的选择器
(1)类选择器:选择多个class属性值一样的标签进行控制,用"."符号选择
<head>
<style type="text/css">
.myh1{
color: #FF0000;
font-size: 200px;
}
</style>
</head>
<body>
<h1 class="myh1">内部样式</h1>
<h1 class="myh1">类选择器</h1>
</body>
(2)id选择器:通过标签的id属性,一次选择一个或多个id名,用”#“符号选择
<head>
<style type="text/css">
#mydiv,#mydiv2{
color: red;
font-size: 100px;
}
</style>
</head>
<body>
<div id="mydiv">内部样式</div>
<div id="mydiv2">id选择器</div>
</body>
多个标签的id名不能一样,因为id是唯一的
(3)标签名选择器:直接选择标签名进行标签控制,可以一次选择多个标签同时控制
<head>
<style type="text/css">
h1{
color: red;
}
div{
color: red;
}
h1,div{
font-size: 200px;
}
</style>
</head>
<body>
<h1>内部样式</h1>
<div id="">标签名选择器</div>
</body>
- 选择器的优先级:内联样式>id选择器>类选择器>标签名选择器
以上是主要的选择器,除此之外,还有一些其他选择器
(1)包含选择器:标签嵌套,则层层往下选,因为CSS属性具有继承性,子类本身没有属性,可以继承父标签的属性
<head>
<style type="text/css">
div span b{
color: red;
}
</style>
</head>
<body>
<div id="">
<span><b>asdfasdfsdaf</b></span>
</div>
</body>
以上代码中div span b是指所有b标签都被操作,如果span标签下嵌套其他标签,其他标签里再嵌套b标签,我们指想对span标签下的b标签内容进行操作,就需要">"符号,即写成div span>b,也就是子选择器
(2)伪类选择器:针对鼠标的几种状态(鼠标悬浮状态、鼠标按下的状态、链接的状态、链接被访问过后的状态)
<style type="text/css">
/* 鼠标悬浮状态 */
a:hover{
color: #FFFF00;
}
/* 鼠标按下的状态 */
a:active{
color: aqua;
}
/* 链接的状态 */
a:link {
color: #FF0000;
text-decoration: none; /* 去掉链接的下划线*/
}
/* 链接被访问过后的状态 */
a:visited{
color: pink;
}
</style>
<body>
<a href="https://www.baidu.com">一个链接</a>
</body>
(3)通配符选择器:选择所有标签进行控制
*{
}
选择器有很多种,这里就列举这几种使用最多的,在使用过程中可以在W3Schoo自学文档中查阅学习
常用属性
- 概述:直接在选择器中使用属性控制元素
- 属性:
(1)overflow:scroll/visible/hidden/auto
其中,scroll指若内容超出,提供上下拉条和左右拉条,拉动看内容
visible指在边框外继续显示超出的内容
hidden指隐藏超出的内容
auto指若内容超出,提供拉条上下拉动看内容
<head>
<style type="text/css">
div {
overflow: visible;
}
</style>
</head>
<body>
<div id="">内容</div>
</body>
(2)行标签和块标签之间的转换
display:block; 把行标签变成块标签
display:inline-block; 把块标签变成行标签,但也留有一些块标签的特点,比如设置上下间距
display:none; 隐藏标签,即在浏览器中看不到该标签内的内容
除此之外,还有个隐藏标签的属性是:visibility:hidden
两者的区别是前者标签隐藏后占的位置不在,后者隐藏后占的位置还在
(3)div+CSS布局
在使用div标签时,配合选择器,可以得到一个方框
#div1{
/* 方框的宽高 */
width: 200px;
height: 200px;
/* 设置边框粗细,颜色,线的类别 */
border: 1px blue solid;
/* 背景颜色 */
background: #008000;
/* 背景图片 */
background-image: url(图1.jpg);
/* 图片填充满 */
background-size:100% 800px ;
/* 内部元素距离左边边框的距离 */
padding-left:20%;
/* 也可以设置距离右边,顶部,底部边框的距离
分别是padding-right,padding-top,padding-bottom */
}
#div2{
/* 该方框距离左边另一个方框的距离 */
margin-left:20%;
/* 也可以设置距离右边方框,顶部方框,底部方框的距离
分别是margin-right,margin-top,margin-bottom */
}
这里拿div方框举例,当然也可以对整个页面背景操作,只需在body标签里操作即可
说HTML的时候说过div是块标签,那么,可不可以让多个div一行显示?
答案是可以的,使用浮动属性float,取值left指向左浮动,right指向右浮动
当使用float浮动属性时,在不需要浮动的标签内要清除浮动,用clear:both
<div id="" style="clear:both"></div>
(4)shadow,设置阴影,取值有4个,指阴影的左右位置,上下位置,阴影的范围和阴影的颜色
box-shadow:10px 10px 10px gray;
(5)如果元素设了绝对定位,有了重叠,那么想要设置重叠顺序可以使用z-index,值越大就在最上面
div {position: absolute;}
#div1 {z-index: 2220;}
#div2 {z-index: 120;}
如上图代码,假设定位重叠,那么div1标签里的内容就会在div2标签里的内容之上
(6)元素的定位方式
页面的左上角称为原点位置,第一个元素默认会在该位置
元素的定位有两种方式:
相对定位(position:relative):一个元素的位置会参考上一个元素的位置
绝对定位(position:absolute):所有元素都参考原点的位置,彼此之间没有参考关系
注:一般页面的元素默认采用相对定位,如果使用了绝对定位,那么设置元素距离原点的距离,用top left right bottom
(7)透明度,前三个取值代表颜色,第四个取值代表透明度,0~1,越低越透明
color: rgba(0,0,0,0.5);
(8)对背景图片的操作
body{
background-image:url(图1.jpg) ;
/* 设置背景图片是否重复 no-repeat代表不重复*/
background-repeat: no-repeat;
/* 背景图片的尺寸 左右的尺寸 上下的尺寸 */
background-size: 100% 800px;
/* 背景图片的位置 background-position */
background-position:center 20px;
/* 固定背景图片 */
background-attachment:fixed;
}
(9)彩色变黑白
filter: grayscale(0%);
filter: gray;
其中,取值的百分比代表黑白程度,越高黑白程度越高
(10)缩进和行高
<head>
p {
/* 设置首行缩进 em代表倍数*/
text-indent: 2em;
/* 设置行高 */
line-height:1.5em;
}
</head>
<body><p>大量内容</p></body>
(11)过渡动画:监听鼠标hover,使用transition设置过渡后的div属性
例如当鼠标移到浏览器中的图片上时,实现图片拉大的效果,当鼠标移开图片,图片再还原成原来的大小
<head>
<style type="text/css">
div {
width: 400px;
height: 400px;
background-image: url(图1.jpeg);
background-size: 100% 100%;
transition: all 1s;
}
div:hover{
transition:all 1s;
background-size: 105% 105%;
}
</style>
</head>
<body>
<div></div>
</body>
上面代码是对全部元素进行整体操作,还可以对单个属性进行操作
例如:
过度的属性 transition-property
过度的时长 transition-duration
过度延时 transition-delay
过度的速率 transition-timing-function: linear
(12)自定义动画(漂浮广告):Animation
格式:animation:myDH 5s;(myDH指动画名,5s指动画时间)
@keyframes myDH
{
/* 自定义动画 */
from{background:red;}
to{background:blue;}
}
@keyframes myDH
{
/* 自定义动画,也可以细分这个动画 */
0%{background:red;}
25%{background:yellow;}
50%{background:blue;}
75%{background:green;}
100%{background:pink;}
}
/* 设置属性 */
div {
width: 200px;
height: 200px;
background: #008000;
/* animation: myDH 1s 1s reverse; */
/* 单个使用属性 */
/* 指定要绑定到选择器的关键帧的名称 */
animation-name: myDH;
/* 动画指定需要多少秒或毫秒完成 */
animation-duration: 1s;
/* 设置动画在启动前的延迟间隔。 */
animation-delay: 0s;
/* 定义动画的播放次数。 infinite无限次 */
animation-iteration-count: 1;
/* 设置动画变动的速率 */
animation-timing-function:1;
/* 指定是否应该轮流反向播放动画。原路返回 */
animation-direction:reverse;
/*forwards 动画执行完之后,停留在最后一帧*/
animation-fill-mode: forwards;
}
(13)旋转:在选择器里使用transform: rotate()设置旋转,括号里取旋转度数
<style type="text/css">
div{
height: 400px;
width: 400px;
background-image: url(图1.png);
transform: rotate(15deg);
}
</style>
<body>
<div></div>
</body>
以上代码就是把图片旋转15度显示在浏览器中
CSS属性跟选择器一样有很多,这里只列举了部分刚学习过的属性,其他的属性根据需要可在W3Schoo自学文档中查阅自学
盒子模型
- 概述:CSS 假定所有的HTML 文档元素都生成了一个描述该元素在HTML文档布局中所占空间的矩形元素框,可以形象地将其看作是一个盒子。CSS 围绕这些盒子产生了一种“盒子模型”概念
- 构成:内容区(content)、填充(padding)、边框(border)、空白边(margin)
- 作用:改善网页布局
<head>
<style type="text/css">
/* 把外层设置为一个盒子 */
#box {
width: 100%;
height: 600px;
border: 1px black solid;
/* 把外层设置为一个盒子 */
display: flex;
/* 设置内层是横向排列 纵向排列 */
flex-direction: row;
/* 设置内层的对齐方式 */
justify-content: center;
/* 自动换行 */
flex-wrap: wrap;
overflow: hidden;
}
.nei {
width: 100px;
height: 100px;
border: 1px black solid;
margin-top: 50px;
margin-left: 20px;
}
</style>
</head>
<body>
<div id="box">
/* order指定该方框排的顺序 */
<div id="" class="nei" style="order: 2;">1</div>
<div id="" class="nei" style="order: 1;">2</div>
<div id="" class="nei" style="order: 3;">3</div>
</div>
</body>
浏览器的兼容性
概述:有些属性对于个别浏览器来说是不兼容的,也就起不到效果,这时通过加浏览器的标志让标签起作用
-ms-transform:rotate(7deg); /* IE 9 */
-moz-transform:rotate(7deg); /* Firefox */
-webkit-transform:rotate(7deg); /* Safari and Chrome */
-o-transform:rotate(7deg); /* Opera */