HTML+CSS阶段知识点梳理

目录

一、简单的网页结构

二、常用标签 

三、列表 

四、CSS引入方式

五、常用选择器 

1、标签(元素)选择器

2、id选择器

3、class选择器

4、通配选择器

5、复合选择器

6、关系选择器

7、属性选择器

8、伪类选择器

9、a元素的伪类

10、伪元素选择器

11、继承

12、选择器的权重

六、元素之间的转换 

七、字体 

字体的样式

字体的分类

字体的其他样式 

八、盒子模型 

1、什么是盒模型

2、影响盒模型大小

3、设置内边距

4、外边距

5、布局

 6、外边距的重叠

7、元素的盒模型

九、浮动

    设置浮动特点

解决高度塌陷的方法

清除浮动 

十、定位

1、开启定位

 2、开启定位后,元素具有特点

开启绝对定位

  开启固定

  开启粘滞定位


一、简单的网页结构

<!DOCTYPE html>

文档声明  告诉浏览器我们写的代码是按照html文档类型来写的,浏览器在编译代码时,也要按照html规范来编译,防止出现怪异模式

<html></html>

 html根标签  一个页面就一个根标签 所有的内容都要写在根标签里面,开始标签和结束标签中间

   <head>   </head>

head标签  帮助浏览器编译代码,里面的内容,用户一般看不到 

 <body> </body>

body标签 是书写网页主体内容,用户看到的所有内容, 文字,图片,音视频等等都写在body

 <!-- chinese lorem  假文 
        jw+数字
        -->
        有作洪锐领,招承如。

        <!-- lorem+数字 -->
        Lorem ipsum dolor sit amet.

 <title></title>

 title标签:网站的标题  

       可以帮助推广部门进行网站推广,非常重要,一般具体内容都是推广部门来定的

 

   <meta/> 

meta标签是根据其配置的属性和属性值来确定功能, 设置一些元信息

属性和属性值写在开始标签和自标签内部的

            charset属性="charset属性值"

            charset属性  设置字符集

             utf-8      字符集的类型-万国码

                            gb、gbk等

 编码:将汉字图片音视频等等转成二进制的过程

 解码:将二进制又转成汉字图片音视频等

  乱码:编码和解码参考的标准不统一,就会出现乱码

 

二、常用标签 

1、标题标签

    h1-h6

默认样式:字体加粗,从h1-h6,字体是逐步放小,行与行之间的间距比较大,独占一行

语义:表示一个标题

           可以帮助推广部门做推广

           其中h1的语义最重,一般情况下一个页面就一个h1

           常用的是h1-h3

<h1>   一级标题 </h1>

<h2>   二级标题 </h2>

<h3>   三级标题 </h3>

<h4>   四级标题 </h4>

<h5>   五级标题 </h5>

<h6>   六级标题 </h6>

2、段落标签 p

默认样式:行与行之间有间隔,独占一行

语义:表示一个段落

注意:p中间一般只放文本或者图片

3、强调标签

strong   文本加粗强调

em         文本倾斜强调

4、center

语义:使内容居中

默认样式:会独占一行

5、br  强制换行

6、hr  分割线

7、del  删除线     不会独占一行

8、div  没有任何语义的标签,会独占一行

9、span 没有任何语义的标签   不会独占一行

能够用有语义标签的时候一定要用对应的标签

 

三、列表 

将一组一组数据列在一起

1、有序列表

用ol创建   li表示每个列表项

默认样式:默认加项目符号123,列表项前面有一定间距

2、无序列表

用ul创建,li表示每个列表项

默认样式:加项目符号黑心圆,列表项前面有一定间距

3、定义列表

用dl创建,dt表示下定义,dd表示具体内容

注意:1、常用的ul,ol,在实际开发过程中,不会特别区分有序或者无序

           2、ul li;ol  li;dl  dt dd;是相对固定的结构,里面一般情况下不嵌套其他子元素

               3、ul ol li dl dt dd 都是块元素

                4、ul ol 有一个属性 type属性,可以更改项目符号

                ol type 属性

                        可选值:1  默认

                                        A 、a、I、i

                ul type 属性

                        可选值: disc  黑心圆

                                square  实心方块

                                 circle    空心的圆

                5、列表可以相互嵌套使用

                6、列表的默认样式一般情况下,是不需要,后期写样式之前需要去除

四、CSS引入方式

第一种方式:内联样式/行内样式

写在开始标签或者自结束标签内部,写一个style属性,将css样式写在属性值

可以写多组样式,但一定要用;隔开

优点是有针对性

缺点:

1、html结构和css样式耦合了,不好看

2、不好修改

3、使用js不好修改,后期维护也不行

不建议使用

第二种方式:内部样式表

写在head标签内,写一个style标签,在style标签内,通过选择器,选中对应的内容

在{  } 内设置css样式,可以写多组样式,用 ; 隔开

优点: 方便修改

缺点:1、css样式还是写在html文件内部,会导致代码量很多

           2、不方便复用

第三种方式:外部样式表

在html文件的外面新建一个.css文件,在css文件内,选中对应的内容,写css样式

通过在html文件head标签写link标签,引入对应的css文件

或在style标签内,@import  url ( 文件名 .css );

推荐使用

五、常用选择器 

1、标签(元素)选择器

作用:通过对应的标签名选中内容

语法:标签名 {    }

注意:会波及其他的同标签名的内容

2、id选择器

作用:通过id属性值,选中对应的内容

语法:#id属性值 {  }

注意:id属性值不能以数字,汉字开头,而且id属性值不能复用

3、class选择器

作用:通过对应class属性值选中内容,跟id选择器很像,不同的是class属性值可重复使用

       语法:.class属性值

       注意:最常用的选择器

4、通配选择器

作用:选中页面中所有的标签

语法:*{   }

5、复合选择器

1、交集选择器

作用: 同时符合选择器1选择器2···对应的内容

         语法: 选择器1选择器2····{}

         注意:如果选择器中有标签选择器,那么标签选择器必须放在第一位

2、并集选择器(群组选择器)

在选择器1或者选择器2或者····里面的内容

       语法:选择器1,选择器2,····{}  

6、关系选择器

1、子元素选择器

作用:通过指定的父元素找到指定的子元素

语法:父元素 > 子元素 {  }

2、后代元素选择器

作用:通过指定的祖先元素找到指定的后代元素

语法:祖先元素  后代元素 {  }

3、选择下一个兄弟(紧挨着我的)

作用:通过指定的兄弟找到紧挨弟弟

语法: 兄 + 弟 { }

4、选中指定元素下所有的兄弟

语法:兄 ~ 弟{   }

7、属性选择器

语法:[属性名]{} 选择含有指定属性的元素

                           [属性名=属性值]{} 选择含有指定属性和属性值的元素

                           [属性名^=属性值]{} 选择指定属性以指定属性值开头的元素  

                           [属性名$=属性值]{} 选择属性值以指定值结尾的元素

                           [属性名*=属性值]{} 选择属性值含有某值的元素

8、伪类选择器

:first-child      第一个元素

:last-child       最后一个元素

:nth-of-child    选中第几个元素

特殊实参值

2n / even    偶数

2n+1  / odd   奇数

是按照所有子元素的排列顺序

:first-of-type       第一个元素

:last-of-type         最后一个元素

:nth-of-type( )  选中第几个元素

特殊实参值

2n / even    偶数

2n+1  / odd   奇数

是按照同类型的子元素排序

9、a元素的伪类

1、:link  用来表示未访问过的链接(正常链接)

2、:visited 用来表示访问过的链接

 由于隐私的原因,所以visited只能改颜色

注意::link,:visited  是超链接独有的

3、:hover 用来表示鼠标移入的状态

4、:active  鼠标点击后的状态

:hover :active 适用所有的标签

10、伪元素选择器

伪元素,表示页面中一些特殊的并不真实存在的元素(元素的位置)

          ::first-letter  表示第一个字母

          ::first-line  表示第一行

          ::selection  选中的内容

          ::before  元素的开始位置

          ::after   元素的结束位置

               before和after必须要结合content使用

11、继承

 /* 共同的祖先元素,设置统一的字体大小 */

      body{

        /* 字体的颜色、字体的大小、行高、字体 */

      }

    

   样式的继承(继承祖先的资产)

            定义:为一个元素设置的样式,同时也会应用到它的后代元素上

            优势:方便我们开发,讲一些通用的样式统一设置到共同的祖先元素上,

                  子元素的样式都可以获取到样式

            注意:并不是所有的样式都会被继承,比如:背景相关的,布局相关等不会被继承

          

12、选择器的权重

样式冲突  通过不同的选择器选中同一个元素,进行一样的样式设定

         发生样式冲突时,应用哪一个样式由选择器的权重(优先级)决定

器的权重:

内联样式          1000

id选择器 100

类选择器(包括伪类选择器) 10

标签选择器 1

通配选择器 0

继承的样式 没有权重

注意:      1、当选择器的权重相同的时候,谁靠下就使用谁

2、多个选择器共同使用,则最终权重是多个选择器权重相加

3、如果选择器是并集选,则选择器的权重是各算各的

4、选择器的权重再累加,也不会超过它的上一级

5、!important  权重最高   写在属性值的后面,中间用空格隔开  后面是分号

慎用:

一般情况在修改框架样式的时候使用

确认是否是选择器权重问题bug的时候

如果设置样式没有生效,要么是没选中,要么是权重的问题,可以用!important来做区分

六、元素之间的转换 

display样式名

可选值:

block    将元素转成块元素

inline   将元素转成行内元素

inline-block  将元素转成行内块元素

none   将元素隐藏

flex  弹性盒子

table  表格

注意:最好不要经常转换

设置外边距     margin:0;

设置内边距     padding:0;

去除项目符号   list-style:none;

去掉下划线      text-decoration:none;

七、字体 

字体的样式

1:color   设置字体颜色,也可以设置其他颜色

2:font-size

3:font-family可以指定文字的字体

4:@font-face

<style>

      /* 自定义字体 */

      @font-face {

        /* 字体名字 */

        font-family: 'yangyang';

        /* 字体引入路径 */

        src: url(./字体/ZCOOLKuaiLe-Regular.ttf);

      }

      .p1 {

        color: #f00;

        font-size: 2em;

        /* 设计师会给具体的字体类型 */

        font-family: 'yangyang';

      }

字体的分类

在网页中将字体分成5大类:

          serif  ['serif](衬线字体)

          sans-serif(非衬线字体)

          monospace (等宽字体)

          cursive ['kə:siv](草书字体)

          fantasy  ['fæntəsi](虚幻字体)

可以将字体设置为这些大的分类,当设置为大的分类以后,

浏览器会自动选择指定的字体并应用样式

一般会将字体的大分类,指定为font-family中的最后一个字体 ,用来兜底

字体的其他样式 

设置一个文字大小

设置一个字体

设置文字斜体

font-style: ;

   可选值:

    normal 文本正常显示

    italic  文字斜体  常用

    oblique 文字斜体

设置文字的加粗

font-weight: ;

  可选值:

   normal  文本正常显示

   bolder 文字加粗

bold   文字加粗

100-900   设置文字粗细效果,100最细  900最粗

设置一个小型大写字母

font-variant: ;

  可选值:

     small-caps  

 normal  

font简写

 font: italic bolder 40px monospace;

 必写:字体大小,字体

 顺序要求:字体大小必须倒数第二位

   字体必须倒数第一位

 

八、盒子模型 

1、什么是盒模型

将一个内容放在页面合适的位置,需要考虑到这个内容大小,位置,形状,就相当于,买一个家具

    css将所有内容的形状统一成矩形,然后只需要考虑内容大小

2、影响盒模型大小

影响盒模型大小:内容区,内边距,边框

 1、内容区  用来放具体内容

            默认情况下

            width: 设置内容区的宽度;

            height: 设置内容区的高度;

2:边框(border)元素设置边框

      边框属于盒子边缘,边框里面属于盒子内部,出了边框都是盒子的外部

        设置边框必须指定三个样式

 1、  border-width:;

        4个值  上  右  下  左

        3个值   上  左右   下

        2个值  上下  左右

        1个值  上下左右

    2、 可以单独设置某一边的宽度

       border-xxx-width:;   top  right  bottom  left

     3、 border-width:; 选写的   有默认值:1.5px左右

1、 border-style: ;

            可选值:

                   none  默认值,没有样式

                  solid  实线

                  dashed  虚线

                  double  双线

                  dotted  圆点虚线

         2、单独设置某一边的边框样式

         border-XXX-style: ;  top  right  bottom  left

         3、border-style:;也可跟多个值,规则跟border-width一样

 

 

 1、 border-color:;  也可跟多个值,规则跟border-width一样

      2、单独设置某一边的边框样式

         border-XXX-color: ;  top  right  bottom  left

      3、自定义小箭头

        border-color:transparent red  transparent transparent;

 border简写

   1、 border: 10px solid blue;

   2、可以单独设置某一边的边框

     border-xxx    top  right  bottom  left

   3 、border:solid;  

   4、border-XXX: none;  top  right  bottom  left

3、设置内边距

        1、padding:10px;  指的是盒子的内容区与盒子边框之间的距离

        2、padding:; 也可跟多个值,规则跟border-width一样

        3、单独设置一边内边距

        padding-xxx:  ;    top  right bottom left  

4、外边距

 margin  用来控制元素与元素之间的距离

       1、 margin-top:;  正值元素向下移动 负值元素向上

        margin-left: ;正值元素向右移动,负值元素向左

        margin-bottom: ;元素自己不动,正值挤着下面的元素向下,负值下面的元素向上

        margin-right:  对于块元素,不生效

      2、 margin:; 可以跟多个值,规则跟border-width一样

5、布局

1、水平布局

 过渡约束

  浏览器的一种规则,元素水平方向七个值数值相加,要等于其父元素内容区宽度,

  如果不等于,浏览器会进行强制调整,这个过程就叫过度约束

  怎么调整:

    1、七个值当中没有auto,就调整margin-right

      0+0+0+100+0+0+500=600

    2、如果有auto,margin-left,width,margin-right可以被设置为auto

    1个auto  谁是auto调整谁

        margin-left为auto,width,margin-right为固定值

        margin-right为auto,width,margin-left为固定值

        width为auto,margin-left,margin-left为固定值

        0+0+0+auto+0+0+0=600

    2个auto

      margin-left,width为auto,margin-right为固定值  调整width

      width,margin-right为auto,margin-left为固定值  调整width

    **** margin-left,margin-right为auto,width为固定值  同时调整margin-left,margin-right

     

    3个auto

    margin-left,width,margin-right为auto  调整的width

    总结:如果width为auto,就只调整width

2、垂直布局 

 overflow: ;

          可选值:

                  visible  默认值,文本正常显示

                  hidden  裁剪多余

                  auto  根据需要出现滚动条

                  scroll 双滚动条

        overflow-x:;  

        overflow-y:;  

       

 6、外边距的重叠

垂直外边距的重叠

    -兄弟元素

    两者正值的话,谁大听谁的

    一正一负,两者相加

    两者负值的话,谁小听谁的

  一般情况,兄弟元素的外边距重叠问题不需要特殊解决

    -父子元素

    如果父子元素的垂直外边距相邻了,则子元素的外边距会传递给父元素

     从而会影响到整个页面的布局,必须要处理

    解决方案:

      1、用透明边框隔开两者的外边距

      2、overflow: 非visible的值;(可以开启元素的BFC属性)

7、元素的盒模型

行内元素的盒模型

      1: 不能设置width和height,被内容撑开

      2: 可以设置padding,但垂直方向padding不会影响页面的布局,不会挤别人

      3: 可以设置边框,但是垂直的边框不会影响到页面的布局,不会挤别人

      4: 可以设置水平方向的外边距,水平方向的相邻外边距不会重叠,而是求和,但不支持垂直外边距

九、浮动

浮动 :就是使用float样式,使元素脱离文档流

 可选值:

          none  默认值,不设置浮动

          left  向左浮动

          right  向右浮动

    设置浮动特点

     1、一旦元素设置了浮动,元素就会脱离文档流,它原来在文档流得位置,

       就会被它下面的元素挤上来

      2、如果浮动元素它上面的元素不浮动,则浮动元素无法上移

      3、浮动元素也不会超过它前面浮动元素

      4、浮动元素不会超出它的父元素

浮动特点二:

      当浮动元素遇到了文字,浮动元素不会覆盖文字,

      文字会环绕在浮动元素的周围,从而有文字环绕图片的效果

    这也是设置浮动最开始的想要的效果

浮动特点三:

当元素设置浮动以后,会完全脱离文档流,元素脱离文档流后,

  元素原来在文档流得特点,就都没有了,也就是说不再区分块,行内,行内块

解决高度塌陷的方法

一般情况下,我们是不给父元素设置高度的,让其内部的子元素自动撑开父元素的高度,这样父元素的高度就可以随着子元素高度的变化而变化 ,然而子元素若设置浮动,就会脱离文档流,也就撑不开父元素的高度, 从而导致父元素的高度丢失,影响整个页面布局,这就叫高度塌陷。

解决方案一、给父元素设置自己的高度

    但不推荐使用

高度塌陷解决方案二:

      页面元素中的隐含属性:Block Formatting Context 即块格式化上下文,简称BFC

        当开启元素的BFC以后,元素会变成一个独立的布局区域,不会在布局上影响到外面的元素

        BFC 理解为一个封闭的大箱子,箱子内部的元素不会影响到外部。

开启BFC后,元素将会具有如下的特性:

      1.父元素的垂直外边距不会和子元素重叠

      2.开启BFC的元素不会被浮动元素所覆盖

      3.开启BFC的元素可以包含浮动的子元素(可解决高度塌陷)

     

      如何开启元素的BFC

      1.设置元素浮动(不推荐)

        - 使用这种方式开启,虽然可以撑开父元素,但是会导致父元素的宽度丢失

          而且使用这种方式也会导致下边的元素上移,不能解决问题

      2.设置元素为inline-block(不推荐)

        - 可以解决问题,但是会导致宽度丢失,不推荐使用这种方式

      3.将元素的overflow设置为一个非visible的值

      4.设置元素绝对定位(暂时没学习)

         元素也会脱离文档流,虽然可以撑开父元素,但是会导致父元素的宽度丢失

          而且使用这种方式也会导致下边的元素上移,不能解决问题

               

      推荐方式:将overflow设置为hidden是副作用最小的开启BFC的方式。

 

  解决高度塌陷方案三:

            可以在浮动元素下面添加一个空白的块元素,由于这个块元素没有浮动,还在文档流中

            可以给这个块元素设置清除浮动,让其撑开父元素的高度

          缺点是页面多了一个空白的结构

  解决高度塌陷方案四:

  可以通过after伪类向元素的最后添加一个空白的块元素,然后对其清除浮动,

  这样做和添加一个div的原理一样,可以达到一个相同的效果,

  而且不会在页面中添加多余的div,这是我们最推荐使用的方式,几乎没有副作用

完善 

   /* 
      解决父子外边距重叠
      解决高度塌陷 
      */
      .clearfix::before,
      .clearfix::after {
        content: "";
        display: table;
        clear: both;
      }

清除浮动 

clear可以用来清除其他浮动元素对当前元素的影响

      可选值:

        none,默认值,不清除浮动

        left,清除左侧浮动元素对当前元素的影响

        right,清除右侧浮动元素对当前元素的影响

        both,清除两侧浮动元素对当前元素的影响,清除对他影响最大的那个元素的浮动

十、定位

1、开启定位

       position样式设置定位

        可选值:

          static  默认值,不开启定位

          relative  开启相对定位

          absolute  开启绝对定位

          fixed     开启固定定位

          sticky    开启粘滞定位  

 2、开启定位后,元素具有特点

       position: relative;  开启相对定位

          1、元素位置不发生变化,不会脱离文档流

          2、开启定位后,元素需要配合偏移量去改变元素的位置

          3、相对定位原点是其原来在文档流中的位置

          4、开启相对定位后,元素的层级变高了

 

开启绝对定位

      position: absolute;

      1、元素会脱离文档流,也就是不会区分块元素,行内元素,行内块元素

      2、元素的位置没有发生改变,需要配合偏移量使用

      3、绝对定位的原点是参照其包含块来定位的,

          一般情况,会给其父元素设置相对定位,叫“父相子绝”,但根据项目需要

      4、开启绝对定位,元素的层级也会提高

 包含块

      1、没有定位的时候,包含块就是其父元素

      2、有定位的时候,包含块就是离它最近的,开启定位的祖先元素,

      如果其祖先元素,都没有开启定位,那包含块就是根元素(html)

  开启固定

      position: fixed;

      1、开启固定定位,会使元素脱离文档流,就不会区分块元素,行内元素,行内块元素

      2、开启固定定位,元素不会随着滚动条的滚动而滚动

      3、也是配合偏移量移动元素,元素的原点是浏览器的视口(html根标签)

      4、元素的层级也会提高

      5、常用的场景

          顶部导航,侧边导航,广告···

  开启粘滞定位

    position: sticky;

    1、元素不会脱离文档流

    2、元素的位置没有发生改变,也是配合偏移量使用

      一般情况是配合top使用,

      元素在没有到top值的时候,元素是随着滚动条的滚动而滚动,

      当到达设置的top值后,元素就固定了,不会随着滚动条滚动而滚动

    3、粘滞原点也是参考浏览视口

    4、层级也会提高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值