css
css:(cascading style sheets)层叠样式表,作用就是用来美化页面
css语法结构
格式:选择器{属性1:“值”;属性2:“值”}
选择器:作用:定位到摸个作用
选择器暂时理解为html标签
css的引用方式
与html语言配合使用
- 行间样式
- 在html标签的style属性中编写css语言
- 注意事项:几乎所有的标签都有id class style title 行间样式只对一个标签起作用
<body>
<!--行间样式
style="css语言"-->
<h1 style="color: red;background-color: blue">hello world</h1>
</body>
- 嵌入式
- 在head标签中进行css语言编写,但是对整个页面所有的选择器标签都起作用
<head>
<meta charset="UTF-8">
<title>嵌入式</title>
<style>
/*ctrl+/生成注释,h1生成样式,对所有的h1都起作用*/
h1{
color: red;
background-color: aqua;
}
/*ctrl+/生成注释,div生成样式*/
div{
color: blue;
background-color: yellow;
}
</style>
</head>
<body>
<h1>hello world</h1>
<div>hello 0624班</div>
<h1>111</h1>
</body>
- 外链式
- 将css样式单独写在.css文件中然后再html中引入该文件
- 使用link标签引入css文件
<head>
<meta charset="UTF-8">
<title>外链式</title>
<!-- rel="stylesheet" 表示定义当前文件与被链文件的关系
href="css/2.css" 表示css文件路径-->
<link rel="stylesheet" href="css/2.css">
</head>
<body>
<h1>hello world</h1>
<div>
hello div
</div>
</body>
- 三种模式的优先级
- 遵循就近原则
- 三种方式的总结
- 使用行间样式,对单个元素进行修改
- 嵌入式,教学,单独案例
- 外链式:(开发时推荐使用的方式)
选择器
选择器的作用就是定位到具体的某一元素
选择器类型:基本选择器(标签选择器,id选择器,类选择器),属性选择器,关系选择器......
基本选择器
- 标签选择器
- 格式:标签名称{属性1:“值”;属性2:“值”;。。。}
- id选择器 id选择器格式 #id{属性1:值} id值具有唯一性,尽量不要重复
- class选择器 .class{属性1:值} class可以重复
- 同一个标签class可以有多个值,可以分别进行优化
<head>
<meta charset="UTF-8">
<title>类选择器</title>
<style>
.c1{
color: yellow;
}
.c2{
background-color: aqua;
}
</style>
</head>
<body>
<div class="c1 c2">我是div</div>
<div class="c1">我是class1</div>
</body>
属性选择器
根据html标签的属性进行选择
格式 标签名[属性名=“属性值”]{属性1:“值”}
= 表示整体是这个字符串
^= 表示以选定字符串开头
$= 表示以选定字符串结尾
~= 表示包含 选定的这个字符串 必须有空格隔开
<head>
<meta charset="UTF-8">
<title>属性选择器</title>
<style>
/* = 表示整体是这个字符串*/
a[title="sina"]{
color: yellow;
}
/*^= 表示以选定字符串开头*/
a[title^="h"]{
color: red;
}
/*$= 表示以选定字符串结尾*/
a[title$="u"]{
color: green;
}
/*~= 表示包含 选定的这个字符串 必须有空格隔开*/
a[title~="hello"]{
color: aqua;
}
</style>
</head>
<body>
<a href="http://www.baidu.com" title="hbaidu">百度</a>
<a href="http://www.ujiuye.com" title="hello ujiuye">优就业</a>
<a href="http://www.sina.com.cn" title="sina">新浪</a>
</body>
</html>
关系选择器
- 后代选择器
后代选择器 选择器1 选择器2{属性:值} (空格分隔)
注意事项忽略层级关系,就是说选择器1下的所以选择器2都会被选中,不论套了几层
<head>
<meta charset="UTF-8">
<title>后代选择器</title>
<style>
/* 后代选择器 选择器1 选择器2{属性:值}
注意事项忽略层级关系*/
.c1 p{
color: red;
}
</style>
</head>
<body>
<div class="c1">
<p>hello world1</p>
<div>
<p>hello world2</p>
</div>
<span>hello world3</span>
</div>
</body>
结果:hello world1 和hello world2都被选中了
- 子元素选择器
能更加精确的定位到具体的子元素
格式:选择器1 > 选择器2 {属性:值}(大于号空格)
.c1 > p {
color: red;
}
结果:hello world1被选中了
- 并列选择器
选择多个
格式:选择器1,选择器2,选择器3,选择器4{属性:值}(逗号分隔)
<head>
<meta charset="UTF-8">
<title>并列选择器</title>
<style>
/*格式:选择器1,选择器2,选择器3,选择器4{属性:值}*/
div,p,span,h1{
color: red;
}
</style>
</head>
<body>
<div>
我是div
</div>
<p>
我是p
</p>
<span>我是span</span>
<h1>我是h1</h1>
</body>
伪类选择器和伪元素选择器
选择器 :hover{属性:值} 鼠标移入事件
选择器 :after{content:值} 值从后面插入
选择器 :before{contnt:值} 值从前面插入
选择器:target{} 选择器对页面某个target元素指定样式(该元素的id被当作页面中的超链接使用)只在用户点击了超链接并跳转到target之后起作用
<head>
<meta charset="UTF-8">
<title>伪类选择器</title>
<style>
.item1 {
width: 100px;
height: 100px;
background-color:pink;
}
.item1:hover{
width: 200px;
height: 200px;
background-color:yellow;
}
.item1:after{
content: "后面";
}
.item1:before{
content: "前面";
}
</style>
</head>
<body>
<div class="item1">中间</div>
</body>
选择器优先级
行间样式 1,0,0,0
id选择器 0,1,0,0
class选择器 0,0,1,0
标签选择器 0,0,0,1
关系型选择器
级别可以相加计算后的值的大小作为优先级比较
id .class{}0,1,1,0
.class .class{}0,0,2,0
颜色表示方法
- 使用十六进制
- 是由#加三对十六进制数组成(红,绿,蓝,三原色)
- 如果每对值相同则可以省略一个#fff黑色 #000白色
- 使用十进制
- rgb(255,255,255)
- 使用三个0-255的十进制数组成
- 英文单词
常用的css样式
背景属性
- 背景颜色
- background-color: orange;
- 背景图片
- background-image: url("../image/1.jpg");
- 是否平铺
- background-repeat: no-repeat;
- 图片位置
- background-position: center center;
- x: left center right
y: top center bottom
- 图片相对位置大小
- background-size: 100% 100%;
- 连写方式 :颜色 图片 是否重复 是否滚动 方位词
- background: orange url("../image/1.jpg") no-repeat scroll center center;
<title>背景属性</title>
<style>
.c1{
width: 1000px;
height: 1200px;
/*背景颜色*/
background-color: orange;
/*背景图片*/
background-image: url("../image/1.jpg");
/*是否平铺*/
background-repeat: no-repeat;
/*x: left center right
y: top center bottom
*/
/*图片位置*/
/*background-position: center center;*/
/*background-position: left;*/
图片相对位置大小
background-size: 100% 100%;
/* 连写方式 :颜色 图片 是否重复 是否滚动 方位词*/
background: orange url("../image/1.jpg") no-repeat scroll center center;
}
</style>
</head>
<body>
<div class="c1"></div>
</body>
字体样式
- 字体颜色
- color
- 字体大小
- font-size
- 字体粗细
- font-weight :100-900
- 字体选择
- font-famliy
- 字体类别
- font-style
<title>字体属性</title>
<style>
.c1{
/*字体颜色 */
color: orange;
/*字体大小*/
font-size: 36px;
/*字体粗细*/
font-weight: lighter;
font-weight: 900;
/*字体 */
font-family: 方正粗黑宋简体;
/*字体倾斜 */
font-style: oblique;
}
</style>
</head>
<body>
<div class="c1">
hello world
</div>
</body>
文本样式
-
首行缩进 几个字
- text-indent:2em
文字水平居中对齐
text-align: center文字竖直居中设置行高与高度相同即可
line-height: 100px;文字以图片为的竖直方向居中
vertical-align: middle;清除下划线
text-decoration: none
<title>文本样式</title>
<style>
.c1{
background-color: orange;
首行缩进 几个字符
text-indent:2em;
文字水平居中对齐
text-align: center;
文字竖直居中设置行高与高度相同即可
line-height: 100px;
}
.c2 img{
文字以图片为的竖直方向居中
vertical-align: middle;
}
u{
清除下划线
text-decoration: none;
}
</style>
</head>
<body>
<div class="c1">
吕布
</div>
<div class="c2">
<img src="../image/2.jpg" alt="">芜湖
</div>
<u>哈哈哈</u>
</body>
边框样式
- 边框样式:solid 实线,double 双实线 dotted 点划线 dashed 虚线
border-style: solid; - 边框颜色
border-color: orange; - 边框粗细
border-width:1px; - 连写
border: orange solid 1px; - 单边框设置
border-top: pink double 10px; - 设置边框弧度 后面的参数是半径 (可通过设置多个参数来让四个角有不同的弧度)
border-radius: 150px;
<title>边框样式</title>
<style>
.c1{
width: 300px;
height: 300px;
边框样式:solid 实线,double 双实线 dotted 点划线 dashed 虚线
border-style: solid;
边框颜色
border-color: orange;
边框粗细
border-width:1px;
连写
border: orange solid 1px;
边框的部分设置
border-top: pink double 10px;
}
.c2{
width: 300px;
height: 300px;
background-color: pink;
设置边框弧度 后面的参数是半径
border-radius: 150px;
}
</style>
</head>
<body>
<div class="c1">
</div>
<div class="c2">
</div>
</body>
内外间距
盒子模型
内边距padding
内边距是内容到边框的距离
注意整个元素的大小是由内容+边框+padding值
padding: 10px;一个值表示对四个内边距同时设置
两个表示对上下,左右
三个值表示 上, 左右,下
四个值表示上,右,下,左
<title>内边距</title>
<style>
.c1,.c2{
width: 100px;
height: 100px;
border: orange solid 1px;
}
.c2{
padding-top: 10px;
padding-bottom: 10px;
注意整个元素的大小是由内容+边框+padding值
padding: 10px;
一个值表示对四个内边距同时设置
两个表示对上下,左右
三个值表示 上, 左右,下
四个值表示上,右,下,左
}
</style>
</head>
<body>
<div class="c1">
我是div1
</div>
<div class="c2">
我是div2
</div>
</body>
外边距margin
外边距是边框外部的距离
可多个值同padding
margin: 10px;设置div居中
margin: 0 auto;
<title>外边距</title>
<style>
.c1,.c2,.c3{
height: 100px;
border: orange solid 1px;
}
.c2{
可多个值同padding
margin: 10px;
}
.c4{
width: 100px;
height: 100px;
border: 1px orange solid;
设置div居中
0指的是上下的间距
margin: 0 auto;
}
</style>
</head>
<body>
<div class="c1"></div>
<div class="c2"></div>
<div class="c3"></div>
<div class="c4"></div>
</body>
盒子的大小
实际盒子的大小:边框+内外边距
元素类型
元素:html标签加内容
块元素,行内元素,行内块元素
块元素
- 支持所有的样式
- 如果不设置宽度,和父元素宽度相同
- 独占一行,即使设置了宽度业独占一行
div,d,ul,ol,h,dl,dt,dd
<title>块元素</title>
<style>
.father{
width: 200px;
height: 100px;
background-color: pink;
}
.son{
background-color: red;
height: 30px;
}
</style>
</head>
<body>
<div class="father">
我是父
<div class="son">我是儿子</div>
</div>我是你爸爸
</body>
行内元素
- 宽高由内容决定
- 支持部分样式(宽高,margin上下,padding上下都失效)
- 盒子并排显示
- 元素与元素之间有间隙
span ,a,i,strong,b,u
*{
margin: 0;
padding: 0;
}
清除浏览器格式
*{
margin: 0;
padding: 0;
}
清楚浏览器格式
.s1{
background-color: pink;
/*设置大小没用只与内容大小有关*/
font-size: 35px;
/*生效*/
margin-left: 10px;
/*失效*/
margin-top: 100px;
/* padding同margin*/
padding-left: 10px;
}
.s2{
}
</style>
</head>
<body>
<span class="s1">我是span</span>
<div class="s2">我是div</div>
</body>
行内块元素
- 支持所有样式
- 如果不设置宽高,有内容确定
- 多个元素之间有间隙
img
可以将块元素,行内元素转化为行内块元素
display:
- 转为行内块元素
- display: inline-block;
- 转为行内元素
- display: inline;
- 转为块元素
- display: block;
- vertical-align: top; 基线的位置
<title>行内块元素</title>
<style>
*{
padding: 0;
margin: 0;
}
.c1{
width: 100px;
height: 100px;
background-color: pink;
display: inline-block;
}
.c2{
width: 100px;
height: 100px;
background-color: orange;
转为行内块元素
display: inline-block;
转为行内元素
display: inline;
转为块元素
display: block;
vertical-align: top;
}
.c3{
width: 100px;
height: 100px;
background-color: orange;
display: inline-block;
vertical-align: top;
}
</style>
</head>
<body>
<div class="c1">sss</div>
<span class="c2">aaa</span>
<span class="c3">哈哈</span>
</body>
元素溢出overflow
- 默认值 visible hidden:隐藏 scroll:添加滚动条
- overflow: auto;
- 标题一行省略
- 1.规定宽高
width: 100px;
height: 100px;
border: orange 1px solid; - 2.强制在一行显示
white-space: nowrap; - 3.隐藏溢出内容
overflow: hidden; - 4.ellipsis:隐藏用省略号代替 clip:不显示省略标记
text-overflow: ellipsis;
- 1.规定宽高
<title>元素溢出</title>
<style>
/*.c1{*/
/* width: 100px;*/
/* height: 100px;*/
/* border: orange 1px solid;*/
默认值 visible hidden:隐藏 scroll:添加滚动条
overflow: auto;
/*}*/
.c1{
1.规定宽高
width: 100px;
height: 100px;
border: orange 1px solid;
2.强制在一行显示
white-space: nowrap;
3.隐藏溢出内容
overflow: hidden;
4.ellipsis:隐藏用省略号代替 clip:不显示省略标记
text-overflow: ellipsis;
}
</style>
</head>
<body>
<div class="c1">
好撒看多好卡尾号的
客户空间的厚度和我会放
开我去分行会计费和空气很
疯狂我去二姐和佛wqerefwqc
ewqdsqwfewfdsfadsf
</div>
</body>
浮动
文档流
html元素从上往下,从左到右依次排序
<span>我是span</span>
<a href="">我是a</a>
<div>我是div</div>
浮动介绍
元素脱离文档流,可以先左或者向右浮动
<title>浮动</title>
<style>
.father{
width: 100px;
height: 100px;
border: orange 1px solid;
}
.son1{
background-color: red;
width: 50px;
height: 50px;
/*float: left;*/
float: right;
}
.son2{
background-color: green;
width: 50px;
height:60px;
/*float: left;*/
}
</style>
</head>
<body>
<div class="father">
<div class="son1"></div>
<div class="son2"></div>
</div>
浮动特点:
- 浮动有左浮动和右浮动
- 当碰到父元素,浮动元素,未浮动元素,都会停下来
- 没浮动元素的文字会环绕浮动元素
- 如果父元素没设置高度,所有元素都浮动那么父元素就没有高度
清除浮动
- 在父元素上清除 overflow:hidden
- 在父元素的最后一个位置添加一个空div
- style:“clear:both”
- 使用伪元素选择器,在父元素
- content:“”;
- dispaly:table
- clear:both
定位
相对定位(position: relative)
- 脱离文档流,但是文档流的位置还是占用
- 以左上为基准,对父元素进行定位
- left top right bottom
<title>相对定位</title>
<style>
.father{
background-color: orange;
width: 200px;
height: 200px;
}
.son1{
width: 50px;
height: 50px;
background-color: aqua;
position: relative;
left: 30px;
top: 30px;
}
.son2{
width: 50px;
height: 50px;
background-color: red;
}
</style>
</head>
<body>
<div class="father">
<div class="son1"></div>
<div class="son2"></div>
</div>
</body>
绝对定位(position: absolute)
- 脱离文档流并且不占用位置
- 以最近的已定位(相对,绝对,固定)的父元素定位,如果所有符元素都没定位,则参考浏览器
- 子绝父相
<title>绝对定位</title>
<style>
.father{
background-color: orange;
width: 200px;
height: 200px;
margin: 300px;
}
.son1{
width: 50px;
height: 50px;
background-color: aqua;
position: absolute;
left: 30px;
top: 30px;
}
.son2{
width: 50px;
height: 50px;
background-color: red;
}
</style>
</head>
<body>
<div class="father">
<div class="son1"></div>
<div class="son2"></div>
</div>
</body>
固定定位(position: fixed)
- 脱离文档流并且不占用位置
- 以浏览器进行位置参考
定位的层级关系
在元素css中定义一个z-index
z-index:值,值越大层级越高