CSS复习回顾

CSS

美化网页, 布局页面

CSS规则由两部分组成:选择器以及一条或多条声明

选择器分类

分为基础选择器复合选择器


基础选择器

标签选择器

HTML标签名称作为选择器

标签名 {
    
    
    属性1: 属性值1;
    属性2: 属性值2;
    属性3: 属性值3;
}
类选择器

用于差异化选择不同的标签,一个或某几个

.类名 {
    
    
    属性1: 属性值1;
    属性2: 属性值2;
    属性3: 属性值3;
}
多类名

一个标签可以指定多个类名

<div class="red head">亚瑟王</div>
id选择器

HTML中用id属性设置id选择器,CSS中id选择器以 “#” 来定义.

#id名 {
    
    
    属性1: 属性值1;
    属性2: 属性值2;
    属性3: 属性值3;
}
通配符选择器

使用 “*” 定义,表示选取页面中的所有元素

 * {
    
    
	属性1: 属性值1;
    属性2: 属性值2;
    属性3: 属性值3;
        }

复合选择器

可以更准确,更高效地选择目标元素

后代选择器(包含选择器)

写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔

ol li{
    
    
           color: red;
       }

元素1 元素2{
    
    
           样式说明
       }
子代选择器(亲儿子选择器)

只能选择作为某元素的最近一级子元素,就是选择亲儿子元素

 元素1>元素2 {
    
    
		样式说明
       }
并集选择器

可以选择多组标签,同时为他们定义相同的样式. 用于集体声明

 元素1,元素2 {
    
    
		样式说明
       }
伪类选择器
链接伪类选择器
  1. 为确保生效,必须安照LVHA的循序声明:link:visited:hover:active。
  2. 因为a链接在浏览器中具有默认样式,需要给链接单独指定样式
属性 说明
a:link 选择所有未被访问的链接
a:visited 选择所有已被访问的链接
a:hover 选择鼠标指针位于其上的链接
a:active 选择活动链接(鼠标按下未弹起的链接)
focus伪类选择器

用于选取获得焦点的表单元素,用于光标视觉提示

input:focus{
    
    
		样式说明
      }

CSS字体属性

font属性可以定义大小,粗细,和文字样式

font-family(字体)

font-family: “微软雅黑”;

多个字体设置的话,会提高适配性

font-size(大小)

font-size: 24px;

font-weight(字体粗细)

font-weight: bold;

参数

  • normal(正常字体)等于400
  • bold(粗体)等于700
  • bolder(特粗体)
  • lighter(细体)

font-style(文字样式)

p {
    
    
	font-style: normal;
}

字体复合属性

可以把这些文字属性综合来写,节约代码

 body{
    
    
           font: font-style font-weight font-size/line-height font-family;
       }
  • 必须按上述语法格式中的顺序书写,不能更换顺序,各个属性间用空格隔开。
  • 不需要设置的属性可以省略,但必须保留font-sizefont-family,否则不起作用

text-align(文本对齐)

用于设置元素内文本内容的水平对齐方式

text-align: center;
属性值 解释
left 左对齐(默认值)
right 右对齐
center 居中对齐

text-decoration(装饰文本)

text-decoration: underline;
属性值 描述
none 默认。无装饰线
underline 下划线。链接自带下划线,可以设置none去掉下划线
overline 上划线
line-through 删除线

text-indent(文本缩进)

文本首行缩进

 	text-indent: 20px;
	text-indent: 2em;

em是相对单位,一个em就是当前元素font-size一个文字的大小,如果没有设置大小,则会按照父元素的一个文字大小

line-height(行间距)

行高,控制文字行与行之间的距离

line-height: 20px;

上间距+文本高度+下间距=行间距

文字行高测量:文字底部到文字底部


CSS引入方式

  1. 行内样式表(行内式)
  2. 内部样式表(嵌入式)
  3. 外部样式表(链接式)

行内样式表(行内式引入)

在元素标签内部的style属性中设置CSS样式,用于修改简单样式

<div style="color: steelblue; font-size: 20px;">雷霆嘎巴,欧青辣少</div>

内部样式表

就是在HTML内部写样式,单独写到style标签内部.

外部样式表

适用于样式比较多的情况,样式单独写到CSS文件中,之后把CSS文件引入到HTML页面中使用

CSS引入:

<link rel="stylesheet" href="CSS文件路径">

CSS元素显示模式

一般分为块元素行内元素

块元素

<h1>-<h6>,<p>,<div>,<ul>,<ol>,<li>

  1. 独占一行
  2. 高度,宽度,外边距以及内边距都可以控制
  3. 宽度默认是容器的100%
  4. 一个容器及盒子,里面可以放行内元素或者块级元素
  5. 文字类标签,里面不能放块级元素

行内元素

<a>,<strong>,<b>,<em>,<i>,<del>,<s>,<ins>,<u>,<span>

  1. 相邻的行内元素在一行上,一行可以显示多个
  2. 高,宽直接直接设置无效
  3. 默认宽度就是它本身内容的宽度
  4. 行内元素只能容纳文本或者其他行内元素
  5. 链接里不能再放链接,禁止套娃

行内块元素

<img>,<input>,<td>

  1. 和相邻元素在一行上,但是之间有空白缝隙,一行可以显示多个
  2. 默认宽度就是它本身内容的宽度
  3. 高度,行高,外边距以及内边距都可以控制

元素显示模式转换

display: block; 转换为块级元素
display: inline; 转换为行内元素
display: inline-block;  转换为行内块

单行文字垂直居中(利用行高)

使文字行高等于盒子的高度,就可以让文字在当前盒子中垂直居中

div{
    
    
width: 200px;
height: 40px;
background-color: pink;
line-height: 40px;
        }
<div>文字居中</div>

在这里插入图片描述

CSS背景

背景颜色,背景图片,背景平铺,背景图片位置,背景图像固定

background-color(背景颜色)

默认为transparent(透明)

background-image(背景图片)

便于控制位置,url文件导向

background-repeat(背景平铺)

  • repeat
  • no-repeat
  • repeat-x 沿着x轴平铺
  • repeat-y 沿着y轴平铺

background-position(背景图片位置)

background-position: x y ;

可以使用方位名词或者精确单位

参数是方位名词时

  • 如果指定的两个值都是方位名词,则这两个值的前后顺序无关
  • 如果只有一个方位名词,另一个值省略,则第二个默认居中对齐

参数是精确单位时

  • 第一个肯定是x坐标,第二个肯定是y坐标
  • 如果只有一个数值,那么这个数值就是x坐标,另一个默认垂直居中

参数如果是混合单位时

  • 如果两个值是精确单位和方位名词混用时,则第一个是x坐标,第二个是y坐标

background-attachment(背景图像固定,背景附着)

用于设置背景图像是否固定或者随着页面的其余部分滚动

可以制作视差滚动的效果

参数

  • scroll 背景图像随着对象内容滚动
  • fixed 背景图像固定

背景属性复合写法

background: black url() no-repeat center top fixed;

背景色半透明(alpha)

 background: rgba(0, 0, 0, 0.3);

最后一个参数是alpha透明度,取值范围在0-1之间

如果是一个盒子半透明的话,是盒子背景半透明,盒子里面的内容不受影响


CSS三大特性

  • 层叠性
  • 继承性
  • 优先级

层叠性

相同选择器给设置同样的样式,此时一个样式就会**覆盖(层叠)**另一个冲突的样式。

这个特性主要解决样式冲突的问题,样式冲突,就近原则

继承性

子标签会继承父标签的某些样式,比如文本颜色和字号

子承父业

适当使用继承可以简化代码,降低CSS样式的复杂性

行高的继承
 body {
    
    
            color: pink;
            font: 12px/1.5 '微软雅黑';
       }
<div>粉红色的回忆</div>
   <p>粉红色的回忆</p>
  • 行高可以跟单位也可以不跟单位
  • 子元素没有设置行高,就会继承父元素的行高
  • 子元素的行高会根据自己的文字大小自动调整行高

优先级

当同一个元素指定多个选择器,就会有优先级的产生

  • 选择器相同,则执行层叠性
  • 选择器不同,则根据选择器权重执行

选择器权重表

选择器 选择器权重
继承或者* 0,0,0,0
元素选择器 0,0,0,1
类选择器,伪类选择器 0,0,1,0
ID选择器 0,1,0,0
行内样式 style=“ ” 1,0,0,0
! important 重要的 无穷大
  • 权重是有4组数字组成,但不会有进位
  • 继承的权重为0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是0
权重叠加:复合选择器,需要计算权重
  • div ul li -----> 0,0,0,3
  • .nav ul li -----> 0,0,1,2
  • a:hover -----> 0,0,1,1

CSS盒子模型

页面布局三大核心,盒子模型,浮动和定位

盒子模型

  • border 边框
  • content 内容
  • padding 内边框
  • margin 外边距
边框(border)

可以设置元素的边框,边框宽度(粗细),边框样式,边框颜色

属性 作用
border-width 定义边框粗细,单位PX
border-style 边框的样式(solid 实线边框 dashed 虚线边框 dotted 点线边框)
border-color 边框颜色

可以设置单独边框的样式

  • border-top
  • border-bottom
  • border-right
  • border-left
表格的细线边框(border-collapse)

控制浏览器绘制表格边框的方式,可以控制相邻单元格的边框

border-collapse:collapse 表示相邻边框合并在一起

边框影响盒子实际大小

边框弧额外增加盒子实际大小

所以测量盒子大小时,不量边框

内边距(padding)

用于设置内边距,即边框与内容之间的距离

可以设置单独内边距

  • padding-top
  • padding-bottom
  • padding-right
  • padding-left

简写属性

值的个数 表达意思
padding:5px; 1个值,代表上下左右都有5px边距
padding:5px 10px; 2个值,代表上下内边距是5px,左右内边距是10px
padding:5px 10px 20px 3个值,代表上内边距5px,左右内边距10px,下内边距20px
padding:5px 10px 20px 30px 4个值,代表上是5px,右是10px,下是20px,左是30px。顺序为顺时针

盒子指定padding后

  1. 内容和边框有了距离,添加了内边距
  2. padding影响盒子实际大小,如果盒子本身已经有了宽度和高度,再指定内边框,盒子会变大
  3. 为了保证盒子和效果图大小保持一致,则让width/height减去多出来的内边距大小即可

盒子本身没有指定width/height属性,则此时padding不会撑开盒子大小

外边距(margin)

用于设置外边距,即控制盒子和盒子之间的距离

  • margin-left
  • margin-right
  • margin-top
  • margin-bottom

简化写法和padding一样

典型应用——让块级盒子水平居中
  1. 盒子必须指定了宽度(width)
  2. 盒子左右的外边框都设置为auto
.header{
    
    
          width: 960px; margin: 0 auto;
       }

行内元素或者行内块元素水平居中给其父元素添加text-align:center即可

外边距合并

使用margin定义块元素的垂直外边框时,可能会出现外边距的合并

嵌套块元素垂直外边距的塌陷

对于两个嵌套关系的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值

解决方案

  1. 为父元素定义上边框
  2. 为父元素定义上内边框
  3. 为父元素添加overflow:hidden
清除内外边距

网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。

* {
    
    
         margin: 0; 清除内边距
         padding: 0;  清除外边距
      }

注意:行内元素为了兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但转换为块级和行内块元素就ok了


布局为什么用不同的盒子

标签都有语义,合理的地方用合理的标签。比如标题就用h,大量文字段落就用p

什么时候用margin或padding

大部分情况都可以混用,各有优缺点,但根据实际情况,总有更简单的方法实现

Supongo que te gusta

Origin blog.csdn.net/qq_43479203/article/details/106849277
Recomendado
Clasificación