css学习总结

发布于:2023-01-16 ⋅ 阅读:(497) ⋅ 点赞:(0)

css学习总结

一、css简介

  1. 定义

    ​ CSS:层叠样式表(Cascading Style Sheets)用于渲染HTML元素标签的样式,美化网页的一门

  2. 作用

    ​ 使用CSS设置样式,可以让展示数据的HTML代码和设置样式的CSS代码进行分离,可以增强网页的展示能力。

  3. css规则

    ​ CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明。

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

  4. css三大特性

    • CSS层叠性:是浏览器处理冲突的一个特性。
    • CSS继承性:子元素可以继承父元素的样式。
    • CSS优先级:!important>行内样式>id选择器>类选择器>标签选择器>通配符>继承
  5. html里引入css的三种方式

​ (1)通过标签上的style属性为当前元素设置CSS样式。

​ 例如:<div style="border:1px solid red;background:pink"></div>

​ (2)通过head标签内部的style标签,书写CSS代码来引入CSS样式。

​ 例如:

​ (3)通过外部样式表 (link链接),当CSS代码特别多的时候,可以将CSS代码统一写在一个独立的文件中,文件的后缀名为.css,在HTML文件中引入CSS文件即可。

​ 例如:<link rel="stylesheet" href="css/demo.css"/>

二、css基础语法

  1. css元素分类

    块级元素特点:

    每个块级元素都会独自占据一行

    高度,行高、外边距以及内边距都可以控制。

    宽度默认是容器的100%

    可以容纳内联元素和其他块元素。

    常见的块元素<h1>~<h6> 、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的块元素。

    行内元素特点:

    行内元素(内联元素)不占有独立的区域,仅仅靠自身的字体大小和图像尺寸来支撑结构,和相邻行内元素在一行上。

    高、宽无效,但水平方向的padding和margin可以设置,垂直方向的无效。

    默认宽度就是它本身内容的宽度。

    行内元素只能容纳文本或则其他行内元素。(a特殊)

    常见的行内元素<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>标签最典型的行内元素。

    行内块级元素特点:

    和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。
    默认宽度就是它本身内容的宽度。
    高度,行高、外边距以及内边距都可以控制。

    三种元素显示模式转换:

    块转行内:display:inline;

    行内转块:display:block;

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

    元素之间的嵌套:

    行内元素只能包含行内元素
    块级元素可以包含所有的行内元素和部分块级元素。
    p标签,h标签都不能包含块级元素

  2. 元素的显示与隐藏

    display:使段落生出行内框。格式:display:属性值;

    display属性值 描述
    none 此元素不会被显示。元素被隐藏之后,不占用原来的位置
    block 此元素将显示为块级元素,此元素前后会带有换行符。
    inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
    inline-block 行内块元素。(CSS2.1 新增的值)
    list-item 此元素会作为列表显示。
    run-in 此元素会根据上下文作为块级元素或内联元素显示。
    compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
    marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
    table 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
    inline-table 此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
    table-row-group 此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
    table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
    table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
    table-row 此元素会作为一个表格行显示(类似 <tr>)。
    table-column 此元素会作为一个单元格列显示(类似 <col>
    table-cell 此元素会作为一个表格单元格显示(类似 <td><th>
    table-caption 此元素会作为一个表格标题显示(类似 <caption>
    inherit 规定应该从父元素继承 display 属性的值。

    visibility :属性规定元素是否可见。格式:visibility:属性值;

    visibility属性值 描述
    visible 默认值。元素是可见的。
    hidden 元素是不可见的。元素隐藏之后,占原来的位置
    collapse 当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局。被行或列占据的空间会留给其他内容使用。如果此值被用在其他的元素上,会呈现为 “hidden”。
    inherit 规定应该从父元素继承 visibility 属性的值。

    overflow:设置溢出元素是否可见。格式:overflow:属性值;

    overflow属性值 描述
    hidden 溢出部分隐藏
    visible 溢出可见——也就是默认不设置的状态
    scroll 溢出部分隐藏,但是存在滑动条,滑动可见,无论是否溢出都有滑动条
    auto 溢出部分隐藏,溢出才有滑动条
  3. css选择器

    • 通用选择器:*{CSS属性}

    • 标签选择器:元素名称{CSS属性}

    • class类选择器:.class值{CSS属性}

    • ID选择器:#id值{CSS属性}

    • 后代选择器:父选择器 后代元素选择器{CSS属性}

    • 子元素选择器:父选择器>子选择器{CSS属性}

    • 分组选择器:选择器1,选择器2,……选择器n{CSS属性}

    • 属性选择器:选择器[属性条件]{CSS属性}

    • 相邻兄弟选择器:大哥~小弟{CSS属性}

    • 伪元素选择器:选择器:状态{CSS属性}

      伪元素:在页面上不存在的元素,但可以通过css添加上去。每个元素都有自己的伪元素

      例如: :after 在…之后,:before 在…之前。

  4. CSS常用属性

    (1)边框border属性及属性值描述

    边框样式 border-style: dotted;(点线) dashed;(虚线) solid; double;(双线) groove;(槽线) ridge;(脊状) inset;(凹陷) outset;
    边框宽度 border-width:数值 ;
    边框颜色 border-color: top值 right值 bottom值 left值;

    圆角边框 border-radius:数值;

    边框间隙去掉 border-collapse: collapse;

    简写 border: width style color;

    (2)文本text属性及属性值描述

    元素字母 text-transform: capitalize | uppercase | lowercase | none;

    文本修饰 text-decoration: underline;(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁)none(默认值) 通常我们使用这个属性将a标签的默认下划线取消
    文本排列 text-align: justify | left | right | center;
    首行缩进 text-indent: 数值 | inherit;
    文本阴影 text-shadow:数值;

    文本行高 line-height:数值;两行文本之间基线的距离就是做行高。

    文字间距 letter-spacing:水平位置 垂直位置 模糊距离 阴影颜色;

    单词间距 word-spacing:数值;

    空格 white-space: pre(保留) | nowrap(不换行) | normal;

    (3)字体font属性及属性值描述

    颜色属性 color: 数值;
    字号大小 font-size: 数值;
    字体样式 font-family: “Courier New”;
    字体风格 font-style: oblique;(偏斜体) italic;(斜体) normal;(正常)
    字体粗细 font-weight: bold;(粗体) lighter;(细体) normal;(正常)
    字体变型 font-variant: small-caps;(小型大写字母) normal;(正常)

    (4)背景background属性及属性值描述

    背景 background: transparent; /透视背景*/
    背景颜色 background-color: 数值;
    背景图片 background-image: url() | none;
    重复背景 background-repeat: inherit该属性继承父元素| no-repeat不平铺 | repeat平铺 | repeat-x沿x轴平铺 | repeat-y沿y轴平铺;

    背景滚动 background-attachment: fixed背景固定 | scroll背景随内容滚动;
    背景位置 background-position:数值 | top | bottom | left | right | center;

    背景透明 background: rgba(0,0,0,0.3);

    背景渐变 background: linear-gradient(angle,color1,color2);angle为角度,color1为起点结点,color2为结束点结点。CSS3 渐变也支持透明度(transparency),可用于创建减弱变淡的效果。使用 rgba() 函数来定义颜色结点。

    简写 background:背景颜色 | 背景图象 | 背景重复 | 背景附件 | 背景位置 ;

    (5)列表 list-style样式及属性值描述

    列表类型 list-style-type: disc实心圆| circle空心圆 | square实心方框 | decimal阿拉伯数字 | lower-roman大写罗马数字 | upper-roman小写罗马数字 | lower-alpha小写英文 | upper-alpha大写英文 | none不编号;

    列表位置 list-style-position: outside | inside;
    列表图像 list-style-image: URL;
    简写 list-style:目录样式类型 | 目录样式位置 | url;

    (6)链接a样式及属性值描述

    a /所有超链接/
    a:link /超链接文字格式/
    a:visited /浏览过的链接文字格式/
    a:active /按下链接的格式/
    a:hover /鼠标转到链接/

    (7)光标属性及属性值描述

    光标形状 cursor:hand链接手指 | crosshair十字体 | text文字型 | wait漏斗 | move 十字箭头, 朝右| help加一问号 | e-resize | nw-resize箭头朝左上 | w-resize箭头朝左 | s-resize | se-resize 箭头斜右下| sw-resize箭头斜左下;

    (8)透明度设置

    opacity:不透明度 opacity:0.5; 取值在0-1之间的小数。

三、css三大模块——盒子模型、浮动,定位

  1. 网页布局的本质

    ​ 用css来摆放盒子,把盒子放置在对应的位置。

    ​ css中3种定位布局方式:标准流,浮动,定位

  2. 盒子模型

    ​ 所谓盒子模型,在HTML里,所有页面元素都可以看成一个一个的框(盒子),这些元素与元素之间的距离,元素的边框,元素与元素之间的距离都会影响元素的位置和元素本身的宽和高。

    • margin(外边距) - 盒子与盒子之间距离
    • border(边框) - 围绕在内边距和内容外的边框。
    • padding(内边距) - 盒子的内容与边框之间的距离。
    • content(内容) - 盒子的内容,显示文本和图像。
  3. 标准流

    标准流指元素排版布局,默认自动从左到右、从上往下的排列方式。

    ​ 排列布局等级:块级元素(独占一行)、行内元素(可与其他元素并列)、行内块元素(不自动换行,可识别宽高)。注意:三者可通过display属性相互转换

  4. 浮动

    ​ 浮动指设置了浮动属性float的元素会脱离标准流的控制。最早用来做文字环绕效果,给图片添加浮动。格式:float:属性值;注意:浮动脱离标准流的控制,不占有原来位置,只有左右浮动。

    ​ 清除浮动主要是为了解决父元素在不设定高度的情况下,子元素因为浮动而引起的父元素内部高度为0的问题。格式:clear:属性值;

    ​ 因浮动而造成父级边框塌陷问题解决方式:

    法一:设置父元素边框

    法二:浮动元素后加一个空的div

    法三:设置overflow:hidden超出部分隐藏,注意:下拉框场景避免使用

    法四:使用after伪元素清除浮动,:after 方式为空元素的升级版,好处是不用单独加标签了

  5. 定位

    ​ 元素的定位属性主要包括定位模式边偏移两个部分。

    边偏移属性设置,语法格式:选择器{边偏移属性:数值;}

    边偏移属性 描述
    top 顶端偏移量,定义元素相对于其父元素上边线的距离
    bottom 底部偏移量,定义元素相对于其父元素下边线的距离
    left 左侧偏移量,定义元素相对于其父元素左边线的距离
    right 右侧偏移量,定义元素相对于其父元素右边线的距离

    定位模式设置,语法格式:选择器{position:属性值;}

    position属性值 描述
    static 自动定位(默认定位方式)不脱标
    relative 相对定位,相对于其原文档流的位置进行定位,不脱标
    absolute 绝对定位,相对于其上一个已经定位的父元素进行定位,脱标
    fixed 固定定位,相对于浏览器窗口进行定位,脱标
    sticky 粘性定位,相对定位与固定定位结合体,不脱标

    定位口诀:子绝父相

    1、因为子级是绝对定位,不会占有位置, 可以放到父盒子里面的任何一个地方。

    2、父盒子布局时,需要占有位置,因此父亲只能是 相对定位.

    这就是子绝父相的由来。

    定位叠放次序属性设置

    格式:z-index:数值;

    1、z-index的默认属性值是0,取值越大,定位元素在层叠元素中越居上。
    2、如果取值相同,则根据书写顺序,后来居上。
    3、后面数字一定不能加单位。
    4、只有相对定位,绝对定位,固定定位有此属性,其余标准流,浮动,静态定位都无此属性,亦不可指定此属性。

    定位模式转换

    ​ 跟浮动一样,元素添加了 绝对定位和固定定位之后, 元素模式也会发生转换, 都转换为 行内块模式,

四、css精灵图

  1. 精灵图本质

    ​ CSS 精灵图本质就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的"background-image",“background-repeat”,"background-position"的组合进行背景定位,background-position可以用数字精确地定位出背景图片的位置。

  2. 精灵图优缺点

    优点:

    ​ 减少HTTP请求数,提高页面加载速度;

    ​ 增加图片信息重复度,提高压缩比,减少图片大小;

    ​ 解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名。

    ​ 更换风格方便,只需在一张或几张图片上修改颜色或样式即可实现。

    缺点:

    ​ 在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂。

    ​ 图片合并麻烦;

    ​ 维护麻烦,修改一个图片可能需要从新布局整个图片,样式。

    ​ 精灵图不能随意改变大小和颜色。

  3. 精灵图基本用法

    1、工具:PS、HBuilder/VS Code
    2、素材:任意一张精灵图都行。打开ps导入精灵图
    3、测量字母的大小及坐标。

    (1)通过矩形选框工具,测量字母的大小,并将div的大小设置为字母的大小。
    (2)打开窗口菜单栏中的信息,可以查询字母width、height、x轴和y轴的信息。
    (3)将鼠标光标移动到字母的左上角位置,通过右侧的信息面板测出x和y的值。

    4、在css中编写style样式,通过background-position定位到字母所在的位置。

    总结:雪碧图的使用步骤:

    1、先确定好使用的图标

    2、测量图标的大小

    3、根据测量的结果,创建一个元素

    4、将雪碧图设置为元素的背景

    5、设置一个偏移量以显示正确的图片