Web前端:CSS最强总结 附详细代码


Posted in HTML / CSS onMarch 31, 2021

基本知识

基本概念

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
层叠:多个样式可以作用在同一个html的元素上,同时生效

  • 样式定义如何显示HTML 元素
  • 样式通常存储在样式表中
  • 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题
  • 外部样式表可以极大提高工作效率
  • 外部样式表通常存储在 CSS 文件中

多个样式定义可层叠为一个CSS很像化妆,通过不同的CSS将同样的HTML内容打造为不同的呈现结果。 所以,前端程序员相互表白的时候可以说:you are the CSS to my HTML. 这是不是CSS是对HTML进行美化和布局作用的最好总结?

优点

  1. 功能强大
  2. 将内容展示和样式控制分离
    降低耦合度。解耦
    让分工协作更容易
    提高开发效率

CSS的使用

CSS与html结合使用
根据定义CSS的位置不同,分为行内样式、内部样式和外部样式

行内样式

也称为内联样式
直接在标签中编写样式,通过使用标签内部的style属性;

代码样式:

一般在测试的时候使用居多:
语法:
<html标签 style="样式1:值1;样式2:值2;....样式N:值N;">hello my css</html标签> 案例:
<div style="color: red;">hello my css</div>

弊端:只能对当前的标签生效,没有做到内容和样式相分离,耦合度太高。

内部样式

定义在head标签内,通过style标签,该标签内容就是CSS代码

<!DOCTYPE html>
<html>
    <head>
		<meta charset="UTF-8"> 
		<title>内部样式</title> 
		<style>
            div{
                color: red;
			}
        </style>
    </head>
    <body>
        <div>hello my css</div>
    </body>
</html>

外部样式

  1. 提前定义css资源文件
  2. 在head标签内,定义link标签引入外部样式文件
lina.css文件,放在与html页面同级的css文件夹中: 
div {
	color: red; 
}


html页面中的引入 
<!DOCTYPE html> 
<html>
	<head>
		<meta charset="UTF-8">
		<title>外部样式</title>
		<link rel="stylesheet" href="css/lina.css" />
    </head>
    <body>
        <div>hello my css</div>
    </body>
</html>

区别

  • 作用域的范围:外部样式表>内部样式表>行内样式表
  • 优先级:外部样式表<内部样式表<行内样式表;
  • 同样的样式作用在同一个标签身上:就近原则。
  • 不同样式作用在同一个标签身上,叠加生效。

CSS语法

基本格式由两个主要的部分构成:

  • 选择器
  • 一条或多条声明
选择器 {
	属性1:值1;
	属性2:值2;
	... 
}
选择器:筛选具有相似特征的元素 属性和属性值之间用冒号分割,不同的属性之间用分号隔开。

例如:
Web前端:CSS最强总结 附详细代码

CSS注释

注释是用来解释你的代码,并且可以随意编辑它,浏览器会忽略它。
CSS注释以 /* 开始, 以 */ 结束

/*这是CSS的注释*/ 
div {
color: red; /*文字颜色是红色*/ 
}

基本选择器

筛选具有相似特征的元素

id选择器

选择具有相同id属性值的元素,建议html页面中的id值唯一

id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义。

PS: ID属性不要以数字开头,数字开头的ID在 Mozilla/Firefox 浏览器中不起作用。

虽然多个元素可以使用同一个id选择器控制样式,但是不推荐。如果需要同样的样式对多个标签生效, 使用class选择器。

class选择器

选择具有相同的class属性值的元素。

  • class 选择器用于描述一组元素的样式,class 选择器有别于id选择器。
  • class可以在多个元素中使用。 class 选择器在HTML中以class属性表示, 在 CSS 中,类选择器以一个点"."号显示

PS:类名的第一个字符不能使用数字!它无法在 Mozilla 或 Firefox 中起作用

元素选择器/标签选择器

选择具有相同标签名称的元素。

定义选择器语法:标签名称{};PS:标签名称必须是html提供好的标签。

使用标签选择器:自动使用在所有的同名的标签上
Web前端:CSS最强总结 附详细代码

优先级

选择器的优先级

ID选择器 > 类选择器 > 标签选择器
当多个选择器作用在同一个标签上的时候,如果属性冲突,看优先级;如果不冲突,样式叠加生效

样式表的优先级

行内样式 > 内部样式 >外部样式

同样,三个样式表中都有内容作用在同一个html标签的时候,如果属性冲突,看优先级;如果不冲突, 样式叠加生效

CSS常用样式

color:字体颜色

跟颜色相关的取值分3种:

  1. 颜色的单词 red blue…
  2. rgb(红,绿,蓝)三色的取值范围是0-255 rgb(255,0,0)
    rgba(红,绿,蓝,透明度),透明度取值:0-1 0 全透明 1-不透明 0.5 半透明rgba(255,0,0,0.4)
  3. #值1值2值3 :值的范式是00-FF 十六进制数字组成的 例如:#FF0000

width height:宽高

PS:只有块状元素可以设置宽高,行级元素设置不生效

取值方式有2种:

  • 数值 绝对数字 单位是像素PX
  • 百分比:占据父元素的比例

背景样式

Web前端:CSS最强总结 附详细代码
Web前端:CSS最强总结 附详细代码

文本样式

Web前端:CSS最强总结 附详细代码

列表样式

Web前端:CSS最强总结 附详细代码

边框样式

Web前端:CSS最强总结 附详细代码

HTML&CSS调试利器

以谷歌浏览器为例说明。
快捷键F12或者工具条中的开发者工具调出以下内容。
在elements中可以看到当前页面的所有标签,在styles中可以看到html元素对应的样式。
Web前端:CSS最强总结 附详细代码

盒子模型

概念

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素

盒子模型说明图

Web前端:CSS最强总结 附详细代码

  • Margin(外边距) - 清除边框外的区域,外边距是透明的
  • Border(边框) - 围绕在内边距和内容外的边框
  • Padding(内边距) - 清除内容周围的区域,内边距是透明的
  • Content(内容) - 盒子的内容,显示文本和图像

模型例子

Web前端:CSS最强总结 附详细代码
Web前端:CSS最强总结 附详细代码

盒子的宽度和高度

元素的实际宽度和高度:
当我们计算一个元素实际在页面占有的总宽度计算公式是这样的:

总元素宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距

元素的总高度最终计算公式是这样的:
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

如果想要设置的宽度直接就是元素的实际宽度,通过box-sizing 属性

Web前端:CSS最强总结 附详细代码

其他常用样式

float 浮动

什么是浮动

CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。
Float(浮动),往往是用于图像,但它在布局时一样非常有用。

元素怎样浮动

  • 元素的水平方向浮动,意味着元素只能左右移动而不能上下移动
  • 一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止
  • 浮动元素之后的元素将围绕它
  • 浮动元素之前的元素将不会受到影响

彼此相邻的浮动元素
如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻

clear–清除浮动

<!DOCTYPE html>
<html>
    <head>
<meta charset="UTF-8"> <title>浮动</title> <style>
            div{
                width: 400px;
                height: 200px;
                margin-bottom: 10px;
            }
        </style>
    </head>
	<body>
<!--没有浮动属性的元素都属于常规文档流:从上往下从左往右依次显示 浮动的元素都脱离了常规文档流; 为了好理解:大家可以认为浮动元素属于一层,非浮动元素属于一层 如果想要非浮动元素不受浮动元素的影响,需要使用clear属性不影响-->

		<div style="background: rgba(255,0,0,0.5); float: left;"> 
		div1-左浮动,脱离常规文档流,紧贴父元素或者上一个同方向浮动	
		</div>
		
		<div style="background: lawngreen; width: 600px; height: 350px; ">
			div2-未浮动,常规文档流, 
			<br/>PS:此时div1在div2的上方显示,因为div1和div2是不同文档流中的元素,显示互
			如果不想让div2被浮动元素影响,需要添加clear属性。
			添加clear: left;之后div2就会忽略div1浮动的影响,在div1层后面显示,不会重叠 了,大家可以自己试验一下

		</div>
		<div style="background: lightblue; float: right; width: 1800px;">
			div3-右浮动,脱离常规文档流,紧贴父元素或者上一个同方向浮动 			
		</div>
		<div style="background: lightcoral; width: 600px; height: 350px; "> 
			div4-未浮动,常规文档流
			<br/>PS:此时div3在div4的上方显示,因为div3和div4是不同文档流中的元素,显示互不影响
			如果不想让div4被浮动元素影响,需要添加clear属性。
			添加clear: right;之后div4就会忽略div3浮动的影响,在div3层后面显示,不会重叠 了,大家可以自己试验一下
的影响
			clear属性有三个取值:left、right、both;分别是取出左浮动、有浮动和所有浮动元素
		</div>
		<div style="background: lavender;">
			div5-未浮动,常规文档流, </div>
   		</body>
</html>

overflow

控制内容溢出元素框时显示的方式。

overflow属性有以下值:

描述
visible 默认值。内容不会被修剪,会呈现在元素框之外
hidden 内容会被修剪,并且其余内容是不可见的
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容
inherit 规定应该从父元素继承 overflow 属性的值

注意: 在 OS X Lion ( Mac 系统) 系统上,滚动条默认是隐藏的,使用的时候才会显示 (设置 “overflow:scroll” 也是一样的)。

Display(显示) 与 Visibility(可见性)

两者的区别

  • display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏。
  • 隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。但是请注意, 这两种方法会产生不同的结果。
    visibility:hidden 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。
    display:none 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了, 而且该元素原本占用的空间也会从页面布局中消失。

display 改变元素的类型
CSS样式有以下三个:

  • display:block – 显示为块级元素
  • display:inline – 显示为内联元素
  • display:inline-block – 显示为内联块元素,表现为同行显示并可修改宽高内外边距等属性

复合选择器

由两个或多个基础选择器,通过不同方式组合而成的。
可以更准确更精细的选择目标元素标签。

全局选择器

语法:* {} 一般去掉标签的一些默认效果的时候使用,或者整站通用效果时使用。但是不推荐,一般将 * 替换为常用标签的名称,并用逗号分隔,其实就是使用并集选择器
Web前端:CSS最强总结 附详细代码

并集选择器

并集选择器(CSS选择器分组)是各个选择器通过 , 连接而成的,通常用于集体声明。

语法:选择器1,选择器2,......选择器N{}

意思是多个选择器都是通用的样式。任何形式的选择器(包括标签选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。在这里插入代码片
Web前端:CSS最强总结 附详细代码

交集选择器

条件:交集选择器由两个选择器构成,找到的标签必须满足:既有标签一的特点,也有标签二的特点。

语法:h3.class{ color:red; } 其中第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格,例如div.list。

交集选择器是并且的意思。 即…又…的意思

例如: table.bg 选择的是: 类名为 .bg 的 表格标签,但用的相对来说比较少。

后代选择器

概念
后代选择器又称为包含选择器。

作用
用来选择元素或元素组的子孙后代

其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔,先写父亲爷爷,再写儿子孙子。

格式:父级 子级{属性:属性值;属性:属性值;}
语法:.class h3{color:red;font-size:16px;}

当标签发生嵌套时,内层标签就成为外层标签的后代。 子孙后代都可以这么选择。 或者说,它能选择任何包含在内 的标签。

子元素选择器

作用:子元素选择器只能选择作为某元素子元素(亲儿子)的元素。 其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个 > 进行连接。
语法:.class>h3{color:red;font-size:14px;}
比如:
.demo > h3 {color: red;} 说明 h3 一定是demo 亲儿子。 demo 元素包含着h3

选择器实现代码

<!DOCTYPE html>
<html>
    <head>
		<meta charset="UTF-8"> 
		<title>复合选择器</title> 
		<style>
		/*全局选择器: 一般去掉标签的一些默认效果的时候使用,或者整站通用效果时使用。但是不推荐*/
		
		*{
			color: #333;/*定义全局文字颜色,统一色彩基调*/
		}
		/*并集选择器:通常用于集体声明 
		替换全局选择器;
		*/
		div,p,dldt,dd{ 
			/*去掉浏览器的默认样式*/ 
			margin: 0;
			padding: 0;
			color: #333;/*定义全局文字颜色,统一色彩基调*/ 
			}
			/*交集选择器*/ 
			li.myli{
				color: red; 
			}
			/*后代选择器*/ 
			ul li{
                font-size: 28px;
            }
			.myUL li{
				font-family: "微软雅黑";
			}
			.myUL li a{
                text-decoration: line-through;
            }
			/*子元素选择器*/ 
			.demo>h3{
				color: red; 
			}
		</style>

	 </head>
    	<body>
			<ul>
				<li>li11111111111</li>
				<li class="myli">li22222222222</li> 
				<li>li33333333333</li>
				<li>li44444444444<a href="">点击我试试</a></li> <li class="myUL">
                <ul>
                    <li>li11111111111</li>
                    <li class="myli">li22222222222</li>
                    <li>li33333333333</li>
                    <li>li44444444444
						<a href="">点击我试试</a> 
					</li>
				</ul>
			</li>
		</ul> 
		<ol>
            <li>li11111111111</li>
            <li>li22222222222</li>
            <li>li33333333333</li>
            <li>li44444444444</li>
        </ol>
        <div class="demo">
			div1
			<h3>静夜思</h3> 
			<ul>
				<li><h3>静夜思----li</h3></li> 
			</ul>
		</div>
    </body>
</html>

伪类选择器

  • 和类选择器相区别:
    类选择器是一个点 比如 .demo {}
    而伪类 用 2个点 就是 冒号 比如 :link{} 。

  • 作用:
    用于向某些选择器添加特殊的效果。比如给链接添加特殊效果, 比如可以选择 第1个,第n个元素。

因为伪类选择器很多,比如链接伪类,结构伪类等等。我们这里先给大家讲解链接伪类选择器。

  • a:link /* 未访问的链接 */
  • a:visited /* 已访问的链接 */
  • a:hover /* 鼠标移动到链接上 */
  • a:active /* 选定的链接 */
<!DOCTYPE html>
<html>
    <head>
	<meta charset="UTF-8"> 
	<title>伪类选择器</title>
	<style>
		/*伪类选择器*/ 
		a:link{
			color: red;/*默认颜色是红色*/ 
		}
		
		a:visited{
			color: blue;/*访问过的页面是蓝色*/
		} 
		
		a:hover{
			color: green;/*鼠标悬浮是绿色*/
            font-size: 28px;
        }
        
		a:active{
			color: gold;/*按下鼠标不放手是金色*/ 
			font-family: "微软雅黑";
		}
	</style>
	
  </head>
  <body>
	<a href="03-常用样式.html" target="_blank">常用样式</a>
	<a href="04-盒子模型1.html" target="_blank">盒子模型</a> 
	<a href="05-综合练习.html" target="_blank">综合练习</a>
  </body>
</html>

注意

  • 写的时候,他们的顺序尽量不要颠倒 按照 lvha(四类的首字母) 的顺序。否则可能引起错误。
  • 因为叫链接伪类,所以都是利用交集选择器 a:link a:hover
  • 因为a链接浏览器具有默认样式,所以我们实际工作中都需要给链接单独指定样式。
  • 实际开发中,我们很少写全四个状态,一般我们写法如下:
a { 	/* a是标签选择器 所有的链接 */ 
		font-weight: 700;
       	font-size: 16px;
       	color: gray;
}
a:hover { /* :hover 是链接伪类选择器 */
		color : red; /* 鼠标经过, 由原来的 灰色 变成了红色 */
}

复合选择器比较

选择 作用 特征 使用情况 隔开符号及用法
后代选择器 用来选择元素后代 是选择所有的子孙后代 较多 符号是空格 p .one
子代选择器 选择最近一级元素 只选亲儿子 较少 符号是> .nav>p
交集选择器 选择两个标签交集 的部分 交集 较少 没有符号 p.one
并集选择器 选择某些相同样式的选择器 可以用于集体声明 较多 符号是逗号 .nav, .header
链接伪类选择器 给链接更改状态   较多 重点记住 a{} 和 a:hover 实 际开发的写法
HTML / CSS 相关文章推荐
CSS3中的注音对齐属性ruby-align用法指南
Jul 01 HTML / CSS
CSS3中HSL和HSLA的简单使用示例
Jul 14 HTML / CSS
css3学习系列之移动属性详解
Jul 04 HTML / CSS
浅谈css3中的渐进增强和优雅降级
Dec 01 HTML / CSS
CSS3实现苹果手机解锁的字体闪亮效果示例
Jan 05 HTML / CSS
HTML5实现视频直播功能思路详解
Nov 16 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
Mar 01 HTML / CSS
IE9下html5初试小刀
Sep 21 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
Jan 30 HTML / CSS
HTML5实现预览本地图片
Feb 17 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
Dec 08 HTML / CSS
Html5页面中的返回实现的方法
Feb 26 HTML / CSS
血轮眼轮回眼特效 html+css
css3 filter属性的使用简介
Mar 31 #HTML / CSS
使用canvas实现雪花飘动效果的示例代码
利用html+css实现菜单栏缓慢下拉效果的示例代码
CSS实现多个元素在盒子内两端对齐效果
Html5页面播放M4a音频文件
Html分层的box-shadow效果的示例代码
You might like
德生9700DX电路分析
2021/03/02 无线电
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
JS array 数组详解
2009/03/22 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
关于Python如何避免循环导入问题详解
2017/09/14 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
HTML5文档结构标签
2017/04/21 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
大学生工作自荐书
2014/06/16 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
旷课检讨书范文
2015/01/27 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android