前端CSS
- 其他
- 2025-08-15 05:15:01

文章目录 引入标签的两大重要属性:区分标签class属性id属性学习CSS流程 CSS前言CSS层叠样式表1.CSS组成2.css语法结构3.注释语法4.引入css的多种方式 CSS选择器1.CSS基本选择器2.CSS组成选择器3.分组与嵌套4.属性选择器5.伪类选择器6.伪元素选择器 选择器优先级CSS继承选择器的优先级 CSS样式调节1.字体相关2.文本样色3.文本属性4.背景属性 边框1.边框宽度2.边框样式边框圆角 display属性盒子模型浮动float1.定义2.浮点的作用3.关于浮动的特点4.float样式5.浮动现象6.浮动带来的影响7.clear属性规定了元素的哪一侧不允许其他浮动元素8.清除浮动有三种方式 溢出overflow定位opsition1.static2.relative(相对定位)3.absolute(绝对定位)fixed(固定)是否脱离文档流 z-indexopacity 综合案例 引入
页面都是由HTML构成的,并且页面上有很多相同的HTML标签,但是相同的HTML标签在不同的位置可能有不同的样式 ,我们如何区分标签?引入标签的两大重要属性
标签的两大重要属性:区分标签 class属性两个元素或者两个以上元素定义相同的样式>>>:批量查找
id属性id属性被赋予了标识页面元素的唯一身份>>>:点对点,精准查找
<div class="c1 c2 c3" ></div> <p class=" c1 c5" ></p> <span class=" c1 c8"></span> <div di="d1 "></div> <a href="" id="d2"></a>注意: 1.一个html网页,id是不能重复的,
2.一个标签可以同时定义多个class。
学习CSS流程1.先学习如何查找标签
2.再学习如何调整样式
CSS前言层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
简单理解:CSS如何显示HTML元素。当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。如何区分CSS版本,如CSS3就是css语言,数字3是该语言的版本号
CSS层叠样式表主要用来调整html标签的各种样式
1.CSS组成每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束
2.css语法结构 选择器{ 样式名1:样式值1; 样式名2:样式值2; } 3.注释语法 /*注释内容*/ 4.引入css的多种方式 1.head内style标签内部编写(学习的时候使用) 2.head内link标签引入(标准的方式) 3.标签内部通过style属性直接编写(不推荐)1.内部样式 嵌入式是将css样式集中写在网页里的标签对的标签中
<head> <meta charset="UTF-8"> <title>Title</title> <style> h1 { color: orange; } </style>2.外部样式 外部样式就是将css写在一个单独的文件中,然后在页面进行引入即可
<link rel="stylesheet" href="mycss.css">3.行内样式 行内式是在标记的style属性中设定CSS样式
<h3 style="background: burlywood">style属性内直接编写CSS的第三种方法</h3> CSS选择器 1.CSS基本选择器 1、标签选择器(直接按照标签名查找标签) div { color: orange; font-size: 30px; } 2、类选择器(按照标签的class值查找标签) .c1 { color: lightskyblue; font-size: 30px; } 3、id选择器(根据标签的id之精准查找标签) #d2 { color: darkolivegreen; font-size: 35px; } 4、通用选择器(直接选择页面所有的标签) * { color: cornflowerblue; font-size: 35px; } 2.CSS组成选择器 针对标签的上下层级以及嵌套有另一种说法:父标签 后代标签 子标签 弟弟标签 哥哥标签 祖先标签
<body> <div>div <p>div>>p <span>div>>p>>span</span> </p> <p>div>>p</p> <span>div>>span</span> </div> <span>与div同级span1</span> <p>与div同级p</p> <span>与div同级span2</span> </body>1.后代选择器
div span { color: orange; font-size: 35px; }2.儿子选择器
div>span { color:burlywood; font-size: 35px; }3.毗邻选择器
div+span { color:burlywood; font-size: 35px; }4.弟弟选择器
div~span { color:burlywood; font-size: 35px; } 3.分组与嵌套 1.多个选择器合并查找 div,p,span{ color: rebeccapurple; font-size: 40px; } 2.查找满足条件的选择器 #d1,.c1,span{ color: orange; font-size: 40px; } 3.查找class含有c1的div div.c1 { color: orange; font-size: 40px; } 4.查找id是d1的div div#d1 { color: orange; font-size: 40px; } 5.查找含有c1样式值里面的含有c2样式值的p标签 .c1 p.c2 { color: orange; font-size: 40px; } body内容: <body> <div id="d1" class="c1">I am div(d1)</div> <div id="d2" class="c2">I am div(d2)</div> <div id="d3" class="c1 c3">I am div(d3)</div> <p class="c1">I am p</p> <span>I am span</span> <body>4.属性选择器 1.按照属性名查找 [username] { color:red; font-size: 40px; } 2.按照属性名等于属性值 [username="kimi"] { color:red; font-size: 40px; } 3.按标签里面的属性名=属性值查找的 div[username='kimi'] { color: #ff7d2a; font-size: 40px; } 5.伪类选择器 # a标签补充说明:未点击过的网址默认是蓝色,点击过的则为紫色 1.鼠标移动到链接上,显示orange a:hover { color: orange; } 2.补充 2.1 未访问的链接,显示下列样式 a:link { color: red; } 2.2 选定的链接不动,采用下列样式 a:active { color: lightskyblue; } 2.3 已访问的链接,采用下面样式 a:visited { color: darkgray; } 2.4 input镖 点输入框时获取焦点时样式 input:focus { background-color: #ff7d2a; } 6.伪元素选择器 1.首字母大写且渲染成红色 p:first-letter { font-size: 45px; color: red; } 2.css在开头添加文本无法正常选中 p:before { content: '嘿嘿嘿'; color: orange; } 3.css在末尾添加文本无法正常选中 p:after { content: '我是删不掉的'; color: aquamarine; } 选择器优先级 CSS继承
继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等。
选择器的优先级1.选择器相同 导入方式不同 就近原则
2.选择器不同 导入方式相同,其实是按照不同选择器的权重来决定的 内联样式 > id选择器 > 类选择器 > 标签选择器
CSS样式调节 1.字体相关 1.高度和宽度 只有块儿级标签可以设置 行内标签无法设置 <style> p { height: 1000px; /*高度*/ width: 50px; /*宽度*/ } </style> 2.字体大小 font-family可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。浏览器会使用它可识别的第一个值 ```python body { font-family: "Microsoft Yahei", "微软雅黑", "Arial", sans-serif } font-size: 99px; # 字体大小一般有固定的大小参考(字体代码) 3.字体粗细 font-weight用来设置字体的字重(粗细)。 font-weight: bolder; /*字体粗*/ font-weight: lighter; /*字体细*/ 值描述normal默认值,标准值bold粗体bolder加粗lighter更细100~900设置具体粗细,400等同于normal,而700等同于boldinherit继承父元素字体的粗细值 2.文本样色颜色属性被用来设置文字的颜色。颜色是通过CSS最经常的指定,设置颜色方式如下
1.十六进制值 - 如: #FF0000(颜色编码) 2.一个RGB值 - 如: RGB(255,0,0) 3.颜色的名称 - 如: red 4.还有rgba(255,0,0,0.3),第四个值为alpha(透明度), 指定了色彩的透明度/不透明度,它的范围为0.0到1.0之间。 3.文本属性文本对齐 text-align属性规定元素中的文本的水平对齐方式
值描述left左边对齐 默认值right右对齐center居中对齐justify两端对齐文本装饰 text-decoration 属性用来给文字添加特殊效果。
值描述none默认,定义标准的文本underline定义文本下的一条线overline定义文本上的一条线line_through定义穿过文本下的一条先inherit继承父元素的text_decoration属性的值去掉a标签的默认下划线
a { text-decoration: none; }首行缩进
p { text-indent: 32px; } 4.背景属性 *背景颜色*/ background-color: red; /*背景图片*/ background-image: url('1.jpg'); /* 背景重复 repeat(默认):背景图片平铺排满整个网页 repeat-x:背景图片只在水平方向上平铺 repeat-y:背景图片只在垂直方向上平铺 no-repeat:背景图片不平铺 */ background-repeat: no-repeat; # 不重复 /*背景位置*/ background-position: left top; /*background-position: 200px 200px;*/ 当多个属性名有相同的前缀 那么可以简写一次性完成 div { width: 800px; /*div标签设置宽高*/ height: 800px; background-color: red; background-image: url(" img2.baidu /it/u=167083063,1652780278&fm=253&fmt=auto&app=138&f=JPEG?w=369&h=472"); /*可以索引到图片网页地址*/ /*background-image: url("666.png"); 也可以是本地地址*/ background-repeat: no-repeat; /*不重复*/ /*background-repeat: repeat-x; 只有横向重复*/ /*background-repeat: repeat-y; 只有纵向重复*/ background-position: center center; /*调整图片居中到div标签中*/ /*background: url("666.png") blue no-repeat center center; 所有属性都可以用这一句完成*/ }1.多个属性名前缀相同那么可以简写
background:orange url('url') no-repeat center center; 一个个编写即可 不写就默认2.如何实时修改图片位置
边框边框有三个属性,分别是边框宽度、边框颜色和边框样式
1.边框宽度 属性描述border-width边框的宽度border-style边框的样式border-color边框的颜色 规范写法 border-left-width: 10px; border-left-style: dashed; border-left-color: orange; 简写 border-left: 10px inset blueviolet; 2.边框样式边框的风格样式
值描述none无边框dotted点状边框dashed虚线边框solid实线边框inset边框内嵌入一个立体边框outset边框外嵌入一个立体边框hidden隐藏边框doble双实线groove边框带有立体感的沟槽ridge 边框圆角border-radius:这个属性可以实现圆角边框的效果。
border-radius:50% display属性用于控制HTML元素的显示效果
注意:行内标签是无法设置长宽 只有块儿级可以设置
值意义display:“none”HTML文档中元素存在,但是在浏览器中不显示。一般用于配合JavaScript代码使用。display:“block”默认占满整个页面宽度,如果设置了指定宽度,则会用margin填充剩下的部分。display:“inline”按行内元素显示,此时再设置元素的width、height、margin-top、margin-bottom和float属性都不会有什么影响。display:“inline-block”使元素同时具有行内元素和块级元素的特点。 1.display:none 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。 2.visibility: hidden 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。 """ 行内标签不能设置长宽的,只有块级标签可以 快捷键编写:ul>li*3>a.c1{添加文本}emment """下列是关于display的隐藏、块级变行内、行内变块级
盒子模型margin: 用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
padding: 用于控制内容与边框之间的距离;
Border(边框): 围绕在内边距和内容外的边框。
Content(内容): 盒子的内容,显示文本和图像。
以快递盒举例
1.快递包里面的实际物体 content(内容) 2.物体与内部盒子墙的距离 padding(内边距、内填充) 3.快递盒的厚度 border(边框) 4.快递盒之间的距离 margin(外边距) 1.padding 内边距 padding 内部数据与边框的距离 padding: 20px; 上下左右都一致 padding: 20px 40px; 上下 左右 padding: 10px 20px 30px;上 左右 下 padding: 10px 20px 30px 40px;上 右 下 左 2.margin 外边距 margin 标签与标签之间的距离 margin:0px; # 上下左右都一致 margin:10px 10px; # 第一个控制上下 第二个控制左右 margin:20px 10px 20px; # 上 左右 下 margin:10px 2px 3px 5px; # 上 右 下 左 针对标签的嵌套 水平方向可以居中 margin: 0 auto;注意:如果是套着,可以用margin也可以用padding,标签与标签之间可以用margin去调水平方向 。margin: 0 auto ;
浮动float 1.定义在 CSS 中,任何元素都可以浮动,浮动就是用来做页面布局的。浮动元素会生成一个块级框,而不论它本身是何种元素。
2.浮点的作用只要是设计到页面的布局一般都是用浮动来提升规划好
3.关于浮动的特点浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。
4.float样式 float:left;三种取值
值描述left向左浮动right向右浮动none默认值,不浮动 5.浮动现象 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .c1 { border: 5px solid black;} .c2 { height: 50px; width: 60px; background-color: orange; /*背景颜色*/ float: right; /*往右移动*/} .c3 { height: 80px; width: 40px; background-color: chocolate; float: left; /*往左浮动*/} /*解决塌陷方法一*/ .c4 { clear: left; border: 2px solid darkgray; } /*解决塌陷方法二*/ .clearfix:after{ content: ''; /*空的内容独占一行*/ display: block; /*左右两侧都不能有浮动*/ clear: both; } .c4 { background-color: blueviolet; height: 100px; width: 80px; float: left; } </style> </head> <body> <div class="c1 clearfix" > <div class="c2"></div> <div class="c3"></div> <div class="c4">你真可爱</div> </div> </body> </html>6.浮动带来的影响
浮动的元素是脱离正常文档流的,会造成父标签塌陷.
如何解决浮动的影响? 引入了clear属性
7.clear属性规定了元素的哪一侧不允许其他浮动元素 值描述left在左侧不允许浮动元素right在右侧不允许浮动元素both在左右两侧不允许浮动元素none默认值,允许浮动元素出现在两侧inherit规定应该从父元素继承clear属性的值注意:clear属性只会对自身起作用,而不会影响其他元素。
8.清除浮动有三种方式1.固定高度 (自己加一个div设置高度 )
#d4 { /*高度*/ height: 100px; } 自己设置的高度要比上面悬浮的高度要大2.伪元素清除法
.clearfix:after { /*空的内容独占一行*/ content: ""; display: block; /*左右两侧都不能有浮动*/ clear: both; } 之后只要标签出现了塌陷的问题就给该塌陷的div标签加一个class=“clearfix”属性即可3.overflow:hidden 利用clear属性
.c4 { clear: left; # 左侧(地面 天空)不允许出现浮动的元素 border: 2px solid darkgray; } 溢出overflowoverflow溢出属性
值描述visible默认值。内容不会被修剪,会呈现在元素框之外。hidden内容会被修剪,并且其余内容是不可见的。scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。inherit规定应该从父元素继承 overflow 属性的值。overflow(水平和垂直均设置) overflow-x(设置水平方向) overflow-y(设置垂直方向)
圆形头像示例
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>圆形的头像示例</title> <style> * { margin: 0; padding: 0; background-color: #eeeeee; } .header-img { width: 150px; height: 150px; border: 3px solid white; border-radius: 50%; overflow: hidden; } .header-img>img { width: 100%; } </style> </head> <body> <div class="header-img"> <img src=" pic blogs /avatar/1342004/20180304191536.png" alt=""> </div> </body> </html> 定位opsition 1.staticstatic 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。
2.relative(相对定位)相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
注意:position:relative的一个主要用法:方便绝对定位元素找到参照物。
3.absolute(绝对定位)定义:设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
定义:设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
另外,对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>绝对定位</title> <style> .c1 { height: 100px; width: 100px; background-color: red; float: left; } .c2 { height: 50px; width: 50px; background-color: #ff6700; float: right; margin-right: 400px; position: relative; } .c3 { height: 200px; width: 200px; background-color: green; position: absolute; top: 50px; } </style> </head> <body> <div class="c1"></div> <div class="c2"> <div class="c3"></div> </div> </body> </html> fixed(固定)fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。 注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这 是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。
在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。 示例代码:
<!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"> <title>返回顶部示例</title> <style> * { margin: 0; } .d1 { height: 1000px; background-color: #eeee; } .scrollTop { background-color: darkgrey; padding: 10px; text-align: center; position: fixed; right: 10px; bottom: 20px; } </style> </head> <body> <div class="d1">111</div> <div class="scrollTop">返回顶部</div> </body> </html> 是否脱离文档流相对定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> .c1 { height: 50px; width: 100px; background-color: dodgerblue; } .c2 { height: 100px; width: 50px; background-color: orange; position: relative; left: 100px; } </style> </head> <body> <div class="c1"></div> <div class="c2"></div> <div style="height: 100px;width: 200px;background-color: black"></div> </body> </html>绝对定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> .c1 { height: 50px; width: 100px; background-color: red; position: relative; } .c2 { height: 50px; width: 200px; background-color: green; position: absolute; left: 50px; } </style> </head> <body> <div class="c1">购物车 <div class="c2">空空如也~</div> <div style="height: 50px;width: 100px;background-color: deeppink"></div> </div> </body> </html>绝对定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <div class="c1" style="height: 50px;width: 500px;background-color: black"></div> <div class="c2" style="height: 50px;width: 100px;background-color: deeppink;position: fixed;right: 10px;bottom: 20px"></div> <div class="c3" style="height: 10px;width: 100px;background-color: green"></div> </body> </html>上述例子可知:
脱离文档流: 绝对定位 固定定位 不脱离文档流: 相对定位
z-index #i2 { z-index: 999; }设置对象的层叠顺序。
z-index 值表示谁压着谁,数值大的压盖住数值小的,只有定位了的元素,才能有z-index,也就是说,不管相对定位,绝对定位,固定定位,都可以使用z-index,而浮动元素不能使用z-indexz-index值没有单位,就是一个正整数,默认的z-index值为0如果大家都没有z-index值,或者z-index值一样,那么谁写在HTML后面,谁在上面压着别人,定位了元素,永远压住没有定位的元素。从父现象:父亲怂了,儿子再牛逼也没用 <!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"> <title>自定义模态框</title> <style> .cover { background-color: rgba(0,0,0,0.65); position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 998; } .modal { background-color: white; position: fixed; width: 600px; height: 400px; left: 50%; top: 50%; margin: -200px 0 0 -300px; z-index: 1000; } </style> </head> <body> <div class="cover"></div> <div class="modal"></div> </body> </html> opacity用来定义透明效果。取值范围是0~1,0是完全透明,1是完全不透明。
综合案例导航栏菜单
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>li标签的float示例</title> <style> /*清除浏览器默认外边距和内填充*/ * { margin: 0; padding: 0; } a { text-decoration: none; /*去除a标签默认的下划线*/ } .nav { background-color: black; height: 40px; width: 100%; position: fixed; top: 0; } ul { list-style-type: none; /*删除列表默认的圆点样式*/ margin: 0; /*删除列表默认的外边距*/ padding: 0; /*删除列表默认的内填充*/ } /*li元素向左浮动*/ li { float: left; } li > a { display: block; /*让链接显示为块级标签*/ padding: 0 15px; /*设置左右各15像素的填充*/ color: #b0b0b0; /*设置字体颜色*/ line-height: 40px; /*设置行高*/ } /*鼠标移上去颜色变白*/ li > a:hover { color: #fff; } /*清除浮动 解决父级塌陷问题*/ .clearfix:after { content: ""; display: block; clear: both; } </style> </head> <body> <!-- 顶部导航栏 开始 --> <div class="nav"> <ul class="clearfix"> <li><a href="">玉米商城</a></li> <li><a href="">MIUI</a></li> <li><a href="">ioT</a></li> <li><a href="">云服务</a></li> <li><a href="">水滴</a></li> <li><a href="">金融</a></li> <li><a href="">优品</a></li> </ul> </div> <!-- 顶部导航栏 结束 --> </body> </html>