css基础

1. Css概念

​ CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表)

​ Css是用来美化html标签的,相当于页面化妆

(1)内嵌样式书写
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		样式
	<style>
</head>
(2)外联样式书写
<link rel="stylesheet" href="样式文件位置">
(3)行内样式
<h1 style="font-size:30px;color:red">Hello World<h1>
(4)三种写法特点:

​ ★内嵌式写法,样式只作用于当前文件,没有真正实现结构表现分离。

​ ★外链式写法,作用范围是当前站点,谁调用谁生效,范围广,真正实现结构表现分离。

​ ★行内样式表,作用范围仅限于当前标签,范围小,结构表现混在一起。 (不推荐使用)

2. 标签分类(显示方式)
(1)块元素

​ 典型代表:Div h1-h6 p ul li

​ 特点:

​ ★独占一行

​ ★可以设置宽高

​ ★ 嵌套(包含)下,子块元素宽度(没有定义情况下)和父块元素宽度默认一致

(2)行内元素

​ 典型代表:span a strong em del ins

​ 特点:

​ ★在一行上显示

​ ★不能直接设置宽高

​ ★元素的宽和高就是内容撑开的宽高

(3)行内块元素(内联元素)

​ 典型代表:input img

​ 特点:

​ ★在一行上显示

​ ★可以设置宽高

(4)块元素、行内元素

​ ◆块元素转行内元素

div,p{
	display:inline;
}

​ ◆行内元素转块元素

span{
	display:block;
}

​ ◆块和行内元素转行内块元素

div,a,span,strong{
	display: inline-block;
	width: 200px;
	height: 200px;
	background-color: yellow;
	text-align:center;
}
3. CSS 三大特性
(1)层叠性

​ 当多个样式作用于同一个(同一类)标签时,样式发生了冲突,总是执行后边的代码(后边代码层叠前边的代码)。和标签调用选择器的顺序没有关系。

(2)继承性

​ 继承性发生的前提是包含(嵌套关系)

​ ★文字颜色可以继承

        ★文字大小可以继承

        ★字体可以继续

         ★字体粗细可以继承

​ ★文字风格可以继承

         ★行高可以继承

​ 总结:文字的所有属性都可以继承

​ ◆特殊情况:

​ h系列不能继承文字大小

​ a标签不能继承文字颜色

(3)优先级

默认样式<标签选择器<类选择器<id选择器<行内样式<!important

         0                 1              10               100            1000        1000以上

​ ◆优先级特点

​ ★继承的权重为0

​ ★权重会叠加

4. 选择器
(1)写法

​ 选择器是一个选择谁(标签)的过程

​ 选择器 {属性:值; 属性:值;}

属性 解释
Width:20px;
Height:20px;
Background-color:red; 背景颜色
font-size:24px; 文字大小
text-align:left | center| right 内容的水平对齐方式
text-indent:2em; 首行缩进
Color:red; 文字颜色
(2)基础选择器

​ ◆标签选择器

​ 写法:标签{属性:值;}

​ 特点:标签选择器定义之后,会将页面所有的元素都执行这个标签样式(div、a、p 之类的)

​ 颜色的显示方式

​ ◎直接写颜色的名称

​ ◎十六进制显示颜色

​ 0-9 a-f

​ #000000; 前2为代表红色,中间2位代表绿色,后边2位代表蓝色。

​ ◎rgb

color: rgb(120,120,120);

​ a代表alpha 不透明度 值 0-1

color: rgb(102,217,239,0.5);

​ ◆类选择器(重点)

​ 写法:**.自定义类名{属性:值; 属性:值;}**

​ 特点: 谁调用,谁生效。

       一个标签可以调用多个类选择器。

​ 多个标签可以调用同一个类选择器。

​ ★类选择器命名规则

      不能用纯数字或者数字开头来定义类名

      不能使用特殊符号或者特殊符号开头(_)来定义类名

      不建议使用汉字来定义类名

         不推荐使用属性或者属性的值来定义类名

​ ◆ID选择器

​ 写法 :**#自定义名称{属性:值;}**

​ 特点: 一个ID选择器在一个页面只能调用一次。如果使用2次或者2次以上,不符合w3c规范,JS调用会出问题。

         一个标签只能调用一个ID选择器。

​ 一个标签可以同时调用类选择器和ID选择器

​ ◆通配符选择器

​ 写法:***{属性:值;}**

​ 特点:给所有的标签都使用相同的样式。

​ ★不推荐使用,增加浏览器和服务器负担。

(3)复合选择器

​ 概念:两个或者两个以上的基础选择器通过不同的方式连接在一起。

​ ◆交集选择器:

​ 写法:标签+类(ID)选择器{属性:值;}

​ ◆后代选择器(重点)

​ 写法:选择器+空格+选择器{属性:值;}

​ 后代选择器首选要满足包含(嵌套)关系。

​ 父集元素在前边,子集元素在后边。

​ 特点:无限制隔代。

       只要能代表标签,标签、类选择器、ID选择器自由组合

​ ◆子代选择器

​ 写法:选择器>选择器{属性:值;}

​ 选中直接下一代元素

​ ◆并集选择器

​ 写法:选择器+,+选择器+,选择器{属性:值;}

5. 文本元素
(1)属性
font-size:16px;  文字大小
Font-weight: 700;	   值从100-900,文字粗细,不推荐使用font-weight:bold;
Font-family:微软雅黑;  文本的字体
Font-style: normal | italic;      normal 默认值  italic  斜体
line-height: 行高
(2)文本属性连写
font: font-style font-weight  font-size/line-height  font-family;

​ ◆注意:font:后边写属性的值,一定按照书写顺序,文本属性连写文字大小和字体为必写项

(3)文字的表达方式

​ ◆直接写中文名称

div{
	font-family: 微软雅黑;
	font-size: 60px;
}

​ ◆写字体的英文名称

div{
	font-family: microsoft yahei;
	font-size: 60px;
}

​ ◆unicode 编码

字体名称 英文名称 Unicode 编码
宋体 SimSun \5B8B\4F53
新宋体 NSimSun \65B0\5B88\4F53
黑体 SimHei \9ED1\4F53
微软雅黑 microsoft yahei \5FAE\8F6F\96C5\9ED1
楷体_GB2312 KaiTi_GB2312 \6977\4F53_GB2312
隶书 LiSu \96B6\4E66
幼圆 YouYuan \5E7C\5706
华文细黑 STXihei \534E\6587\7EC6\9ED1
细明体 MingLiU \7EC6\660E\4F53
新细明体 PMingLiU \65B0\7EC6\660E\4F53
6. 链接伪类

​ 写法:a:link{属性:值;} a{属性:值} 效果是一样的

a:link{属性:值;}       链接默认状态	 
a:visited{属性:值;}     链接访问之后的状态 
a:hover{属性:值;}      鼠标放到链接上显示的状态  	a:active{属性:值;}      链接激活的状态
:focus{属性:值;}     获取焦点
文本修饰
text-decoration: none  |  underline  |   line-through
7. 背景属性
background-color 背景颜色
background-image 背景图片
background-attachment	背景是否滚动	scroll| fixed
background-repeat	repeat(默认)|	no-repeat|	repeat-x| repeat-y	背景平铺
background-position	left|	right|	center|	top|	bottom	背景定位

​ ★方位值只写一个的时候,另外一个值默认居中

background-position: right;

​ ★写2个方位值的时候,顺序没有要求

background-position: right bottom;

​ ★写2个具体值的时候,第一个值代表水平方向,第二个值代表垂直方向

background-position:210px 30px;

​ ★背景属性连写

background:red url('1.png') no-repeat 30px 40px scroll;

​ ★连写的时候没有顺序要求,url为必写项

8. 行高

​ ◆浏览器默认文字大小:16px

​ ◆行高:

​ 是基线与基线之间的距离

​ 行高=文字高度+上下边距

​ 一行文字行高和父元素高度一致的时候,垂直居中显示。

行高的单位
行高单位 文字大小
20px 20px 20px
2em 20px 40px
150% 20px 30px
2 20px 40px

​ 总结:单位除了像素以为,行高都是与文字大小乘积

行高单位 父元素文字大小 子元素文字大小 行高
40px 20px 30px 40px
2em 20px 30px 40px
150% 20px 30px 30px
2 20px 30px 60px

​ 总结:不带单位时,行高是和子元素文字大小相乘,em和%的行高是和父元素文字大小相乘。行高以像素为单位,就是定义的行高值

​ ◆推荐行高使用像素为单位

9. 盒子模型
(1)边框 border
border-top-style: solid(实线) dotted(点线)	dashed(虚线)
border-top-color: green;  边框颜色
border-top-width: 10px;  边框粗细

​ ◆边框属性的连写

​ 特点:没有顺序要求,线型为必写项

border-top: red solid 5px;

​ ◆四个边框值相同的写法

​ 特点:没有顺序要求,线型为必写项

border: 12px solid red;

​ ◆边框合并

border-collapse: collapse;
(2)获取焦点
.username:focus{
	background: red;
}

label for id 获取光标焦点

<label for="username">用户名:</label>
<input type="text" class="username" id="username">
(3)内边距

Padding-left | right | top | bottom

.box{
	Padding-left: 20px;
	Padding-right: 20px;
	Padding-top: 20px;
	Padding-bottom: 20px;
}

​ ◆padding连写

padding: 20px; 上右下左内边距都是20px

padding: 20px 30px; 上下20px 左右30px

padding: 20px 30px 40px; 上内边距为20px 左右内边距为30px 下内边距为40

padding: 20px 30px 40px 50px; 上20px 右30px 下40px 左 50px

​ ◆内边距撑大盒子的问题

​ 影响盒子宽度的因素

​ 内边距影响盒子的宽度

​ 边框影响盒子的宽度

盒子的宽度=定义的宽度+边框宽度+左右内边距

​ ◆继承的盒子一般不会被撑大

​ 包含(嵌套)的盒子,如果子盒子没有定义宽度,给子盒子设置左右内边距,一般不会撑大盒子

(4)外边距

margin-left | right | top | bottom

.box{
	margin-left: 20px;
	margin-right: 20px;
	margin-top: 20px;
	margin-bottom: 20px;
}

​ ◆外边距连写

margin: 20px; 上下左右外边距20PX

margin: 20px 30px; 上下20px 左右30px

margin: 20px 30px 40px; 上20px 左右30px 下 40px

margin: 20px 30px 40px 50px; 上20px 右30px 下40px 左50px

​ ◆垂直方向外边距合并

​ 两个盒子垂直一个设置上外边距,一个设置下外边距,取的设置较大的值。

​ ◆嵌套的盒子外边距塌陷

​ 解决方法:

​ 给父盒子加border

overflow:hidden; bfc

http://www.w3cplus.com/css/understanding-bfc-and-margin-collapse.html

(5)行内元素可以定义左右的内外边距,上下会被忽略掉

​ 行内块可以定义内外边距

10. 文档流(标准流)

​ 元素自上而下,自左而右,块元素独占一行,行内元素在一行上显示,碰到父集元素的边框换行

11. 浮动布局

float: left | right

​ 特点:

​ ★元素浮动之后不占据原来的位置(脱标)

​ ★浮动的盒子在一行上显示

​ ★行内元素浮动之后转换为行内块元素。(不推荐使用,转行内元素最好使用display: inline-block;)

浮动的作用

​ ◆文本绕图

​ ◆制作导航

​ ◆网页布局

12. 清除浮动

​ 当父盒子没有定义高度,嵌套的盒子浮动之后,下边的元素发生位置错误。

​ ◆清除浮动不是不用浮动,清除浮动产生的不利影响。

​ ◆清除浮动的方法

clear: left | right | both

​ 工作里用的最多的是 clear:both;

​ ★额外标签法

​ 在最后一个浮动元素后添加标签

<div class="main">
	<div class="abc"></div>
	<div style="clear:both"></div>
</div>

​ ★给父集元素使用 overflow:hidden; bfc

         如果有内容出了盒子,不能使用这个方法
.main{
	background: green;
	margin: 10px 0;
	overflow: hidden;
}

​ ★伪元素清除浮动 推荐使用

.clearfix:after{
	content: ".";
	display: block;
	height: 0;
	line-height: 0;
	visibility: hidden;
	clear: both;
}
<div class="main clearfix">
	<div class="abc"></div>
	<div class="content">
		<div class="content-top"></div>
		<div class="content-bot"></div>
	</div>
</div>
13. CSS 初始化

​ 腾讯:

body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select{margin:0;padding:0} 
body{font:12px"宋体","Arial Narrow",HELVETICA;background:#fff;-webkit-text-size-adjust:100%;} 
a{color:#2d374b;text-decoration:none} 
a:hover{color:#cd0200;text-decoration:underline} 
em{font-style:normal} 
li{list-style:none} 
img{border:0;vertical-align:middle} 
table{border-collapse:collapse;border-spacing:0} 
p{word-wrap:break-word}

​ 新浪:

body,ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div{margin:0;padding:0;border:0;} 
body{background:#fff;color:#333;font-size:12px; margin-top:5px;font-family:"SimSun","宋体","Arial Narrow";}
ul,ol{list-style-type:none;} 
select,input,img,select{vertical-align:middle;}
a{text-decoration:none;} 
a:link{color:#009;} 
a:visited{color:#800080;} 
a:hover,a:active,a:focus{color:#c00;text-decoration:underline;}

​ 淘宝:

body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; } 
body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; } 
h1, h2, h3, h4, h5, h6{ font-size:100%; } 
address, cite, dfn, em, var { font-style:normal; } 
code, kbd, pre, samp { font-family:couriernew, courier, monospace; } 
small{ font-size:12px; } 
ul, ol { list-style:none; } 
a { text-decoration:none; } 
a:hover { text-decoration:underline; } 
sup { vertical-align:text-top; } 
sub{ vertical-align:text-bottom; } 
legend { color:#000; } 
fieldset, img { border:0; }
button, input, select, textarea { font-size:100%; } 
table { border-collapse:collapse; border-spacing:0; }
14. Overflow
overflow: visible;		默认值。内容不会被修剪,会呈现在元素框之外
overflow: hidden;		内容会被修剪,并且其余内容是不可见的
overflow: scroll;		内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容
overflow: auto;			如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容
15. 定位

​ 定位方向: left | right | top | bottom

​ ◆静态定位

​ 默认值,就是文档流

position:static;

​ ◆绝对定位

Position:absolute;

​ 特点:

​ ★元素使用绝对定位之后不占据原来的位置(脱标)

​ ★元素使用绝对定位,位置是从浏览器出发

​ ★嵌套的盒子,父盒子没有使用定位,子盒子绝对定位,子盒子位置是从浏览器出发

​ ★嵌套的盒子,父盒子使用定位,子盒子绝对定位,子盒子位置是从父元素位置出发

​ ★给行内元素使用绝对定位之后,转换为行内块。(不推荐使用,推荐使用display:inline-block;)

​ ◆相对定位

Position: relative;

​ 特点:

​ ★位置从自身出发

​ ★还占据原来的位置

​ ★子绝父相(父元素相对定位,子元素绝对定位)

​ ★嵌套的盒子,父元素相对定位,子元素绝对定位,子元素从父元素出发设置自身位置

​ ★不能将行内元素转成行内块

​ ◆固定定位

Position:fixed;

​ 特点:

​ ★位置从浏览器出发

​ ★不占据原来的位置(脱标)

​ ★会转化为行内块(不推荐,推荐使用 **display:inline-block;**)

定位的盒子居中显示

​ ★margin: 0 auto; 只能让标准流的盒子居中对齐。

​ ★定位的盒子居中:先左右走父元素盒子的一半50%,在向左走子盒子的一半(margin-left: 负值;)

.content{
	position: absolute;
	lbottom: 0;
	left: 50%;
	margin-left: -480px;
}
<div class="main">
	<div class="content"></div>
</div>
16. 标签包含规范

​ ◆div可以包含所有的标签

​ ◆p标签不能包含div h1等标签

​ ◆h1可以包含p,div等标签

​ ◆行内元素尽量包含行内元素,行内元素不要包含块元素

17. 规避脱标流

​ ◆尽量使用标准流

​ ◆标准流解决不了的使用浮动

​ ◆浮动解决不了的使用定位

18. 图片和文字垂直居中对齐

vertical-aligninline-block 最敏感。默认属性是: vertical-align:baseline;

描述
baseline 默认。元素放置在父元素的基线上
sub 垂直对齐文本的下标
super 垂直对齐文本的上标
top 把元素的顶端与行中最高元素的顶端对齐
text-top 把元素的顶端与父元素字体的顶端齐
middle 把此元素放置在父元素的中部
bottom 把元素的顶端与行中最低的元素的顶端对齐
text-bottom 把元素的底端与父元素字体的底端对齐
length
% 使用”line-height”属性的百分比值来排列此元素。允许使用负值
inherit 规定应该从父元素继承 vertical-align 属性的值
19. CSS 可见性
overflow: hidden;   溢出隐藏    
visibility: hidden;   隐藏元素    隐藏之后还占据原来的位置。
display: none;      隐藏元素    隐藏之后不占据原来的位置。
Display: block;     元素可见
Display: none;  和display:block  常配合js使用
20. CSS 内容移除

​ ◆使用text-indent:-5000em;

a{
	display: inline-block;
	text-indent: -5000em;
}

​ ◆将元素高度设置为0,使用内边距将盒子撑开,给盒子使用 overflow:hidden; 将文字隐藏

.box{
    width:300px;
    height:0;
    padding-top:100px;
    background: red;
    overflow: hidden;
}

css基础
https://everysunday.github.io/2022/02/24/css基础/
作者
T-River
发布于
2022年2月24日
许可协议