超全的Html及css必备知识点整理!

214 阅读15分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

本文整理了Html以及css中非常重要的知识点,包括了一些基础用法以及新特性、另外也对前端优化知识做了总结,希望能够帮助大家更好学习基础内容。

1.white-space:空白空间的处理

normal:默认值 多余空白空间会被浏览器忽略只留一个
pre:空白会被浏览器保留
pre-wrap:会保留一部分空白空间 可以进行换行
pre-line:合并空白空间 会保留换行符
***nowrap:文本不会换行 直到碰到br强制换行
//文本换行
word-wrap:break-word;首先把长单词换到下一行进行显示,如果在一行还是有超出,单词内断句
word-break:break-all;不会把长单词换到下一行,直接在单词内进行断句

2.overflow:内容溢出

visible:默认值 内容不会被裁剪 会在元素外边显示
hidden:内容会被裁剪 超出的看不到
scroll:内容会被裁剪 浏览器显示滚动条 可以进行查看
auto:内容别裁剪 浏览器显示滚动条 可以进行查看
text-overflow:文本溢出显示符号
clip:不显示省略号
ellipsis:会显示省略号

3.各元素类型的特点:

(1)s级元素的特点:

  • 块状元素,在页面中以矩形区域显示
  • 块级元素,能直接添加宽高
  • 块级元素,在页面中显示,独占一行(默认占满父元素的所有宽度),从上往下排列
  • 块级元素,一般作为内容或者其他元素的容器

(2)内联元素的特点:

  • 内联元素,不能设置宽高,由内容撑开,最小显示单位为矩形
  • 内联元素,在一行内,从左往右排列
  • 内联元素支持盒模型的规则,但是个别不能进行正确的显示(margin-top/margin-bottom)

(3)可变元素

根据布局流规则,生成块或者内联

4.常见元素

块级元素:

    div -最常用的块级元素
    dl - 和dt-dd 搭配使用的块级元素
    form - 交互表单
    h1 -h6- 大标题
    hr - 水平分隔线
    ol – 有序列表
    p - 段落
    ul - 无序列表
    li
    fieldset - 表单字段集
    colgroup-col - 表单列分组元素
    table-tr-td  表格及行-单元格

内联元素:

    a –超链接(锚点)                               
    b - 粗体(不推荐) 
    br - 换行                             
    i - 斜体
    em - 强调                             
    **img - 图片                         
    **input - 输入框               
    label - 表单标签                  
    span - 常用内联容器,定义文本内区块
    strong - 粗体强调
    sub - 下标   
    sup - 上标
    textarea - 多行文本输入框
    u - 下划线
    select - 项目选择  

5.图片默认多的三像素的下间距

    display:block;
    vertical-align:middle;

6.position的属性值:

(1)static静态定位

position的默认值 默认的文档流
不会识别top bottom left right

(2)absolute绝对定位

a.如果父元素或者父元素没有设置参考 以整个文档作为参考
b.脱离文档流,不占据页面空间
c.参照物:有定位的(除默认值 static外)的父级元素
d.一般与父元素relative相对定位一起使用

(3)relative 相对定位

a.参照物为元素本身的位置
b.始终占据页面 不会脱离文档流

(4)fixed 固定定位

a.参照物:浏览器窗口
b.脱离文档流,不占据页面空间

(5)sticky 粘性定位

relative和fixed结合体
如果没有达到临界值,按照relative来执行
如果达到了临界值 按照fixed执行

7.在浏览器窗口进行水平垂直居中:

方式1:


        position:fixed;
	top:0;
	bottom:0;
	left:0;
	right:0;
	margin:auto;

方式2:

        position:fixed;
	top:50%;
	left:50%;
	margin-top:元素高度的一半;
	margin-left:元素宽度的一半;

方式3:

位移实现水平居中:

        div{
            width:500px;
            height:500px;
            background:tomato;
            /* 参照物 */
            position:relative;
        }
        p{
            width:100px;
            height:100px;
            background:#d2d;
            position:absolute;
            top:50%;
            left:50%;
            /* margin-top:-50px;
            margin-left:-50px; */
            
            /* 百分比指的是元素本身宽高的大小 */
            transform:translate(-50%,-50%);
        }

8.子元素在父元素进行水平垂直居中

        父元素:position:relative;
        子元素:position:absolute;
                top:0;
                bottom:0;
                left:0;
                right:0;
                margin:auto;

9.宽高自适应:

(1)宽度自适应:

块级元素不设置宽度或者宽度完成100% 当前元素随父元素的变化而变化

(2)高度自适应:

a.当height不去设置高度,或者设置为height:auto;
当前元素由内容撑开
b.min-height:80px;
如果超出最小高度 由内容撑开自适应
如果内容非常少 或者根本没有内容 容器保持min-height设置的最小高度
例:
pm: 内容足够多的时候 要去撑开
内容足够少的时候,要有最小高度
最小高度的设置

10.全屏页面:

让子元素跟随父元素高度变化
父元素必须有高度 给子元素设置height100%;
固定设置:
htmlbody{
height100%;
}

11.高度塌陷:

高度塌陷出现的场景: 如果子元素浮动了,父元素没有设置高度,父元素就会出现高度塌陷

解决高度塌陷的问题:
    (1)给父元素设置固定的高度
    (2)给父元素设置overflow:hidden;
        原理:overflow:hidden;触发了BFC
        BFC:规定浮动元素也参与高度的计算
        弊端:overflow:hidden;溢出隐藏,会对定位元素有影响


    (3)在浮动元素后面添加一个空标签
       给空标签设置css样式:  clear:left/right/ *both;
       弊端:会出现很多无意义的标签,代码冗余

    (4)万能清除法  
        高度塌陷的父元素:after{
            content:"";
            display:block;
            clear:both;
            height:0;
            overflow:hidden;
            visibility:hidden;  //隐藏 
        }

        项目中的使用:
        reset.css里面去定义:
             .clear:after{
                content:"";
                display:block;
                clear:both;
                height:0;
                overflow:hidden;
                visibility:hidden;  //隐藏 
             }
        然后再html中的使用
            <div  class="clear"></div>
 备注:display:none;与visibility:hidden;的区别 
    display:none;            隐藏元素,不占据空间
    visibility:hidden;       隐藏元素,占据空间

12.BFC

BFC:块级格式化上下文
    BFC(Block formatting context)直译为“块级格式化上下文”。
    它是一个独立的渲染区域,只有Block-level box(块)参与,
    它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

BFC布局规则:
    一、内部的Box会在垂直方向,一个接一个地放置。
    二、Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠(按照最大margin值设置)
    三、每个元素的margin box的左边, 与包含块border box的左边相接触
    四、BFC的区域不会与float box重叠。
    五、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
    六、计算BFC的高度时,浮动元素也参与计算
触发BFC:
    根元素(html)
    float属性不为none
    position为absolute或fixed
    display为inline-block, table-cell, table-caption, **flex, inline-flex
    overflow不为visible

13.浏览器前缀

css3:
     很多的css3属性:还是预览版,没有形成最终版,造成很多属性在不同浏览器有兼容问题
     浏览器为了兼容这些属性,每个浏览器厂商提供了自己浏览器的语法规则,一般需要添加浏览器前缀
     
主流浏览器:谷歌 ie 火狐 欧鹏
浏览器前缀:
    谷歌     -webkit-    谷歌浏览器
    ie       -ms-        ie浏览器
    火狐     -moz-      火狐浏览器
    欧鹏     -o-        欧鹏浏览器
浏览器内核
   谷歌旧版本    Webkit        -webkit-
       IE            Trident      -ms-
      火狐          Gecko         -moz-
      欧鹏          Blink         -o-
      谷歌          Blink 

css3事件:

pointer-events:none;   禁止一些事件的触发
pointer-events:none;   穿透蒙层

14.H5新特性

(1)H5语义化标签

 重要:
 section元素  表示页面中的一个区块,偏向区域的划分
 article元素    表示一块与上下文无关的独立的内容,倾向内容的展示
 aside元素     表示在article之外的,与article内容相关的辅助信息 
 header元素  表示页面中一个内容区块或整个页面的标题
 footer元素   表示页面中一个内容区块或整个页面的脚注
 nav元素        表示页面中导航链接部分
 figure元素    表示一段独立的内容,使用 figcaption元素为其添加标题(第一个或最后一个子元素的位置)
 main元素     表示页面中的主要的内容

 拓展:
 hgroup标题的一个分组
 mark定义高亮显示的文本(span),内容的高亮显示,默认有黄色背景,是内联元素
 time时间
 dialog标记定义一个类似微信的对话框(会话框) 

(2)多媒体标签

   视频:<video></video>
         src:            资源路径
         controls    添加默认的控件   
         autoplay   自动播放
         loop          循环播放
         muted      静音
         poster       视频正在加载时显示的图像

    音频:<audio></audio>
        src:             资源路径
         controls    添加默认的控件   
         autoplay   自动播放
         loop          循环播放
         muted       静音

    <source>标签:定义媒介资源
    type:视频类型   video/ogg  video/mp4  video/avi  video/webm
         音频类型:  audio/mpeg    audio/ogg   

(3)表单 input

 新增type类型:
        Type=“email”      限制用户必须输入email类型,验证@
        Type=“url”           限制用户必须输入url类型,验证的http
        Type=“range”      产生一个滑动条表单
        Type=“number”    验证用户输入是否数字number类型
        Type=“search”      产生一个搜索意义的表单
        Type=“color”        生成一个颜色选择的表单
        Type=“time”         限制用户必须输入时间类型
        Type=“month”     限制用户必须输入月类型
        Type=“week”        限制用户必须输入周类型
        Type=“datetime-local”        选取本地时间
        type=”date”

 新增表单属性
       重要:
***autocomplete="off/on"
***placeholder="提示文字"
***required 检测是否为空
        拓展:
        min                最小字段
        max               最大字段
        step               步幅 ,确定一个法定值。 -3 0 3 6 9
        autofocus      自动聚焦。一个页面只能有一个。
        pattern          属性值是一个正则表达式。
        novalidate     取消验证
        multiple         选择(上传)多个文件
        list                 必须结合datalist标签,绑定datalist  id名称。

15.css3变化

   (1)例子:变形 过渡 文本阴影 渐变
   (2)渐进增强:针对低版本浏览器进行构建页面,保证最近本功能
            然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
   (3)优雅降级: 针对高版本的设备进行项目的开发,功能/体验都很好
    项目完成后,向下兼容
   (4)渐进增强与优雅降级的区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,
   而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。
   降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

16.响应式布局

响应式网页:
    为了适应不同的设备(pc / 平板端/手机端)、分辨率
响应式网页优势:
    一个项目能适应不同的设备,比较灵活
    从显示来说:相对而言用户的体验感还可以
    能解决多设备显示适配问题
响应式的缺点:
         开发比较高:
         前端多套css代码
         产品的原型图需要多个
         ui设计图也要多个
         后端
         数据
         代码冗余

17.图片整合(精灵图、css sprites、css精灵、雪碧图)

把网站里面的小图标有规则的整合在一起,利用   background-position 改变背景图的位置,每个图标应用。
优点:
(1)CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这是CSS Sprites最大的优点,
    也是其被广泛传播和应用的主要原因;
(2)CSS Sprites能减少图片的字节;
(3)CSS Sprites解决了网页设计师在图片命名上的困扰,只需对一张集合的图片命名,
    不需要对每一个小图片进行命名,从而提高了网页制作效率。
(4)CSS Sprites只需要修改一张或少张图片的颜色或样式来改变整个网页的风格。

缺点:
(1)图片合并麻烦:图片合并时,需要把多张图片有序的合理的合并成一张图片,并留好足够的空间防止版块出现不必要的背景。
(2)图片适应性差:在高分辨的屏幕下自适应页面,若图片不够宽会出现背景断裂。
(3)图片定位繁琐:开发时需要通过工具测量计算每个背景单元的精确位置。
(4)可维护性差:页面背景需要少许改动,可能要修改部分或整张已合并的图片,
    进而要改动css。在避免改动图片的前提下,又只能(最好)往下追加图片,但这样增加了图片字节。

18.前端优化

(1)页面主题优化
实事求是的写下自己网站的名字,网站的名字要合理,最好包含网站的主要内容。
(2)页面头部优化
<meta name="keywords"   content="" />向搜索引擎说明你的网页的关键词;
<meta name="description"    content=""/>告诉搜索引擎你的站点的主要内容;
说明:
1、“描述”部分应该用近乎描述的语言写下一段介绍你网站的文字,在这其中,你应该适当的对你网站的特色内容加以重复以求突出;
2、“关键字”部分应该列出你认为合适的,能突出网站内容的关键字就可以了,关键字不要设置太多,可设置10---8个,搜索引擎只会浏览靠前的几个关键字。
(3)超链接优化
1、采用纯文本链接,少用,最好是别用Flash动画设置链接,因为搜索引擎无法识别Flash上的文字.
2、按规范书写超链接,这个title属性,它既可以起到提示访客的作用,也可以让搜索引擎知道它要去哪里.
3、最好别使用图片热点链接,理由和第一点差不多
(4)图片优化
图片优化并不是修改图片的大小、颜色,而是你应该为每个标签加上alt属性,alt属性的作用是当图片无法显示时以文字作为替代显示出来,而对于SEO来说,它可以令搜索引擎有机会索引你网站上的图片,对于一些确实没什么意义的图片,最好也不要省略alt,而应该留空,即 alt=""。
(5)PageRank(pr值,友情链接
PR值是Google提出的一个重要参数,它标明了某个网站的重要程度,那么pr值是如何确定的呢?
目前普通的解释为:假如有ABC三个网站,彼此互作友情链接,那么当一个访客通过A上的友情链接来到B时,Google就认为A为B投了“一票”,同理,如果有人从C访问B,那么B又得一票,如果全世界的网站上都有B的友情链接,B就是世界上最重要的网站了!

19. ie经典的bug:

   1)图片有边框BUG
        当图片加<a href=“#”></a>在IE上会出现边框
        Hack:给图片加border:0;或者border:0    none;


        2)图片间隙
        div中的图片间隙BUG
        描述:在div中插入图片时,图片会将div下方撑大大约三像素。
        hack1:将</div>与<img>写在一行上;
        hack2:将<img>转为块状元素,给<img>添加声明:display:block;


        3)  双倍浮向(双倍边距)(只有IE6出现)
        描述:当Ie6及更低版本浏览器在解析浮动元素时,会错误地把浮向边边界(margin)加倍显示。
        hack:给浮动元素添加声明:display:inline;


        4)默认高度(IE6、IE7)
        描述:在IE6及以下版本中,部分块元素拥有默认高度(在16px左右;)
        hack1:给元素添加声明:font-size:0;
        hack2:给元素添加声明:overflow:hidden;


非ie的bug:
    5)表单元素对齐不一致
        描述:表单元素行高对齐方式不一致
        hack:给表单元素添加声明:float:left;


        6)按钮元素默认大小不一

        描述:各浏览器中按钮元素大小不一致
        hack1: 统一大小/(用a标记模拟)
        hack2:input外边套一个标签,在这个标签里写按钮的样式,把input的边框去掉。
        hack3:如果这个按钮是一个图片,直接把图片作为按钮的背景图即可。


        8)鼠标指针bug
        描述:cursor属性的hand属性值只有IE9以下浏览器识别,其它浏览器不识别该声明,cursor属性的pointer属性值IE6.0以上版本及其它内核浏览器都识别该声明。
        hack:    如统一某元素鼠标指针形状为手型,
        应添加声明:cursor:pointer


        cursor:         ;
        auto默认
        crosshair加号
        text文本
        wait等待
        help帮助
        progress过程
        inherit继承
        move移动
        ne-resize向上或向右移动
        pointer手形



        9)透明属性
        兼容其他浏览器写法:opacity:value;(value的取值范围0-1;
            例:opacity:0.5;)
        IE浏览器写法:filter:alpha(opacity=value);取值范围 1-100(整数)

20.伪类选择器

​ a:link {} 未访问

​ a:visited{} 已访问

​ a:hover{} 悬停

​ a:active{} 点击

​ 注:选择符的顺序不能更改

21.选择符的权重

!important(一般不用)>内联样式(1000)>id选择符(0100)> (伪)类选择符 (0010)> 标签选择符 (1)>通配符(<1)

后代选择符的权重为父元素的权重加子元素的权重

群组选择符:本身选择符的权重

注:当权重相同时 采取就近原则

22.css层叠性

含义:值得就是样式的优先级,当有冲突时,优先显示优先级高的。

1.开发者样式>读者样式>浏览器样式

2.id选择符>(伪)类选择符>类型选择符

3.当权重相同时,显示后面定义的样式