1.什么是HTML语义化?

HTML语义化就是使用HTML语义化标签。 语义化标签就是拥有语义的标签。 语义元素清楚地向浏览器和开发者描述其意义。 例如:div、span都是没有语义的标签,无法通过标签确定信息。

基本上都是围绕着几个主要的标签,像标题(H1~H6)、列表(li)、强调(strong em)等等

根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。

2.语义化的HTML结构到底有什么好处?

我们知道HTML5新增的标签,比如<header>和<footer>,html正在朝着更加健壮的语义化的HTML结构发展,xhtml2在这点上没html5先进,这也是xhtml2死亡的一个原因,这一点也说明了语义化的HTML结构是html的发展趋势。

  1. 为了在没有CSS的情况下,页面也能呈现出很好地内容结构、代码结构:为了裸奔时好看;

  2. 用户体验:例如title、alt用于解释名词或解释图片信息、label标签的活用;

  3. 有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;

  4. 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;

  5. 便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化

3.什么是清除浮动

在了解什么是浮动之前我们先了解一下html元素在普通流排列方式。在普通流中,元素是按照它在 HTML 中的出现的先后顺序自上而下依次排列布局的,在排列过程中所有的行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为一整行。如果没有特殊样式指定,所有元素默认都是按照普通流方式排列布局,即普通流中元素的位置由该元素在 HTML 文档中的位置决定的。

浮动使元素脱离文档普通流,漂浮在普通流之上的。浮动元素依然按照其在普通流的位置上出现,然后尽可能的根据设置的浮动方向向左或者向右浮动,直到浮动元素的外边缘遇到包含框或者另一个浮动元素为止,且允许文本和内联元素环绕它。浮动会产生块级框(相当于设置了display:block),而不管该元素本身是什么。
就如上图的显示的div1,div2,div3就是按照普通流排列布局方式呈现的,而后面的div4,div5,div6中的div5的布局方式就不一样了,因为我给div5设置了向左浮动。此时div5脱离普通流,漂浮在普通流之上,所以导致原来div5在普通流中的位置空了出来,div6自动补上去(普通流(div6)表现的和浮动元素不存在一样)。
浮动导致元素已不在普通流中,所以在排列布局的时候文档中的普通流表现的和浮动元素不存在一样,当浮动元素的高度超出包含框的时候,会出现包含框不会自动撑高来包裹浮动元素,即所谓的“高度塌陷”。如下图所示

4.css垂直居中实现

有六种方法

1:使用绝对定位 + transform,给子元素添加如下样式
父子元素都不确定宽高的情况也适用。如果子元素的宽高确定的话,translate中的值也可以设置为子元素宽高的一半,即transform: translate(-100px, -100px);

.work {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
}
2:使用绝对定位 + margin,给子元素添加如下样式
这种方式适合子元素宽高确定的情况,给margin-top设置百分比的大小将不生效,即margin-top: -50%;不能达到垂直居中的效果

.work1 {
      position: absolute;
      top: 50%;
      left: 50%;
      margin-top: -100px;
      margin-left: -100px;
}
3:使用绝对定位 + margin: auto,给子元素添加如下样式
父子元素宽高都未知时也适用。

.work2 {
      position: absolute;
      top: 0;
      bottom: 0;
      right: 0;
      left: 0;
      margin:auto;
}
4.父元素使用flex布局,并设置相关的属性值为center
这种方式要求父元素的高度是确定的,百分比形式的高度将不能生效。

.par-work {
    height: 100vh;
    display:flex;
    justify-content:center;
    align-items:center;
}
5:使用table-cell实现

这种方式需要父元素的宽高都是确定的,才能保证子元素在父元素中垂直水平都居中。

.par-work2 {
    height: 500px;
    width: 500px;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
.son-work2 {
    display: inline-block;
}
6:使用grid布局
这种方式适用于父元素高度确定的情况

.par-work3 {
    display: grid;
    height: 500px;
}
.son-work3 {
    align-self: center; /*设置单元格内容的垂直位置*/
    justify-self: center; /*设置单元格内容的水平位置*/
}
绝对定位和相对定位

相对定位及其用法
顾名思义相对定位的意思是相对于该控件相对于之前的位置进行偏。相对定位的css样式代码是这样的:position:relative;前面的单词代表了相对定位的属性,后面的单词代表了相对定位的属性值。倘若我们不设置定位类型,那么它的默认值是这样的:position:static;下面我们来举个例子:
css部分:

.d1{
            height: 300;
            width: 300px;
            padding: 50px;
            border: 1px solid black;
            
        }
1
2
3
4
5
6
7
html部分:

<div class="d1">
        <div class="d2"></div>
    </div>
1
2
3
运行后我们会发现:黄色小方块距离边框有一段距离,这就假设了这个小方块相对于原文档流的位置,现在我们来看相对定位对它是怎样的影响,我们在css中加入以下相对布局代码:

.d2{
            width: 50px;
            height: 50px;
            background-color:yellow;
            position: relative;
            left: 20px;
        }
1
2
3
4
5
6
7
运行后我们会发现,黄色小方块相对于自己原来的位置向左偏移了20px,而不是相对与d1左边框进行的偏移,这就是相对定位。

绝对定位及其用法
绝对定位的意思是相对于该控件相对于整个浏览器的位置进行偏。绝对定位的css样式代码是这样的:position:absolute;前面的单词代表了绝对定位的属性,后面的单词代表了绝对定位的属性值。它还有另一个属性值:position: fixed;他俩的区别很简单:1、没有滚动条的情况下没有差异
2、在有滚动条的情况下,fixed定位不会随滚动条移动而移动,而absolute则会随滚动条移动,我们平常在浏览网页是那“挥之不去”的小广告就是用的这种定位。倘若我们不设置定位类型,那么它的默认值是这样的:position:static;
下面我们来举个例子:
css部分:

.d1{
            height: 300;
            width: 300px;
            padding: 50px;
            border: 1px solid black;
            
        }
1
2
3
4
5
6
7
html部分:

<div class="d1">
        <div class="d2"></div>
    </div>
1
2
3
运行后我们会发现:黄色小方块距离边框有一段距离,这就假设了这个小方块相对于原文档流的位置,现在我们来看绝对定位对它是怎样的影响,我们在css中加入以下代码:

.d2{
            width: 50px;
            height: 50px;
            background-color:yellow;
            position: absolute;
            left: 20px;
        }
1
2
3
4
5
6
7
运行后我们会发现,黄色小方块相对于自己原来的位置向左偏移了20px,而不是相对与d1左边框进行的偏移,这就是绝对定位。
5. 二者的区别
简单来说相对定位是根据自己原来的位置进行定位,绝对定位是根据整个浏览器进行定位,固定定位于绝对定位一样不过固定定位不随着屏幕的滚动而滚动。

5.说说盒子模型

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)、边框(border)、内边距(padding)、实际内容(content)四个属性,分为标准模型和IE模型,标准模型的宽度不包括内边距,IE模型的宽度要包括内边距。

content:即实际内容,显示文本和图像;
border:即边框,围绕元素内容的内边距的一条或多条线,由粗细、样式、颜色三部分组成;
padding:即内边距,清除内容周围的区域,内边距是透明的,取值不能为负,受盒子的background属性影响;
margin:即外边距,在元素外创建格外的空白,空白通常指不能放其他元素的区域。

6.DOCTYPE(⽂档类型) 的作⽤
DOCTYPE是HTML5的文档类型声明,它的目的是告诉浏览器(解析器)应该以什么样(html或xhtml)的文档类型定义来解析文档,不同的渲染模式会影响浏览器对 CSS 代码甚⾄ JavaScript 脚本的解析。它必须声明在HTML⽂档的第⼀⾏。

浏览器渲染页面的两种模式:

CSS1Compat:标准模式(Strick mode),默认模式,浏览器使用W3C的标准解析渲染页面。在标准模式中,浏览器以其支持的最
高标准呈现页面。
BackCompat:怪异模式(混杂模式)(Quick mode),浏览器使用自己的怪异模式解析渲染页面。在怪异模式中,页面以一种比较宽松
的向后兼容的方式显示。
块级元素和行内元素
行内元素
一个行内元素只占据它对应标签的边框所包含的空间
常见的行内元素有:

b, big, i, small, tt
abbr, acronym, cite, code, dfn, em, kbd, strong, samp, var
a, bdo, br, img, map, object, q, script, span, sub, sup
button, input, label, select, textarea
块级元素
块级元素占据其父元素(容器)的整个空间
块级元素可以包含行内元素和其他块级元素

h1, h2, h3, h4, h5, h6
*footer, *header , *hgroup, *aside, *article, *section
*vedio, *audio
div, p, form, table, pre, hr, blockquote, noscript
ul, ol, li
区别
换行

每个块级盒子都会换行;内联盒子不会产生换行

默认宽高

块级盒子默认宽度为父容器宽度的100%,默认高度取决于内容本身;

内联盒子默认宽高由内容本身决定

设置宽高

块级盒子可以直接设置 width,height;

内联盒子直接设置不起作用,需要设置 display: block 或 display: inline-block 变为块级盒子后,再设置宽高

注意:inline-block 存在空隙问题,这是因为当处理行内元素排版时,浏览器会处理元素间的空白符(如空格,回车),解决办法主要有:

牺牲可读性,将它们写在一行
父元素中将字号置 0,在子元素上重置字号
使用浮动或绝对定位,隐式将生效的 display 值变为 block,因此还需要解决由浮动带来的高度坍塌或绝对定位后再调整位置
内外边距及边框

块级盒子设置内外边距,边框大小后,水平垂直方向都被应用,且能将其他元素按预期推开;内联元素设置这些属性后,水平垂直方向都被应用,但是只有水平方向会按预期将元素推开

包含的元素

块级元素可以包含块级元素和行内元素;

行内元素中最好只包含行内元素,如包含块级元素,父行内元素并不会包含子块级元素

内联盒子默认宽高由内容本身决定

HTML-CSS-JavaScript(经典面试题)相关推荐

  1. 50道 JavaScript 经典面试题汇总篇

    web前端教程 用大白话,来讲编程 有很多小伙伴都跟我提过,为什么之前<经典面试题>系列不像<趣味ES6>和<vue基础系列>一样,来个汇总篇呗,免得想看的话要一道 ...

  2. 20道JavaScript经典面试题

    该篇文章整理了一些前端经典面试题,附带详解,涉及到JavaScript多方面知识点,满满都是干货-建议收藏阅读 前言 如果这篇文章有帮助到你,❤️关注+点赞❤️鼓励一下作者,文章公众号首发,关注 前端 ...

  3. php基础面试选择题,php面试之javascript经典面试题

    兄弟连php面试频道整理了javascript的10个面试题.快来测试一下你是否已经全部掌握JavaScript核心技能,在面试中你一定可以用得到. 1介绍js的基本数据类型 Undefined.Nu ...

  4. JavaScript经典面试题 —— 解决循环打印问题

    循环打印问题是面试中经典的题目,一般会给出代码,让我们解释原因,并给出若干解决方案. 1. 题目分析 以下代码运行后会打印什么? 答案:6 6 6 6 6 for (var i = 1; i < ...

  5. HTML+CSS+javascript+jQuery面试题(31)

    1.$()是什么? $符号是jQuery框架对外暴露的全局变量,是window对象的属性 $()代表jQuery核心函数,可接收一个函数.字符串.DOM元素. $(function(){});//推荐 ...

  6. 前端javascript经典面试题集合(2020年最新)

    1. call和apply的区别是什么,哪个性能更好一些 fn.call(obj, 10, 20, 30) fn.apply(obj, [10, 20, 30]) call性能要比apply性能好一点 ...

  7. Web前端面试之JavaScript典型面试题及答案

    JavaScript是Web前端三要素之一,是互联网上最流行的脚本语言.一个合格的Web前端工程师一定要掌握JavaScript,而企业在招聘前端人员时也会考察其对JavaScript的掌握.接下来就 ...

  8. 前端CSS经典面试题总结

    前端CSS经典面试题总结 2.1 介绍一 下 CSS 的盒子模型? 2.2 css 选择器优先级? 2.3 垂直居中几种方式? 2.4 简明说一下 CSS link 与 @import 的区别和用法? ...

  9. Web前端经典面试题-JavaScript

    Web前端经典面试题-JavaScript 看看银行卡余额,看看工资条,看看房价,动力就来了,大二狗,加油~~ JavaScript 原型链.类.继承.作用域.闭包.js运行机制/单线程.js数据类型 ...

  10. 经典面试题:CSS定位知识及小盒子套大盒子的方法

    一.页面布局 1.1页面布局分类 css网页布局的本质:就是在网页中排列盒子(标签) css网页布局分为3种机制:普通流.浮动.定位 普通流:就是从上到下,从左到右的排布 浮动:本质是让块元素横向排列 ...

最新文章

  1. dom4j通过xpath查询xml
  2. HDU 1848 Fibonacci again and again(博弈)
  3. eclipse neon_在自定义Java 9映像上运行Eclipse Neon
  4. [转]ASP中ActiveX控件的内嵌及调用
  5. 2.2基本算法之递归和自调用函数_一文学会递归解题
  6. 自然语言处理之基于biLSTM的pytorch立场检测实现
  7. nginx的高级配置(1)——为某个虚拟主机添加用户验证
  8. TDtree冲刺第四天
  9. Wine 2.10 发布,Windows 应用兼容层
  10. Java script生成apk_Android 命令行编译、打包生成apk文件
  11. VS2015 error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
  12. 错误解决办法:2006:MySQL server has gone away
  13. 本人亲测,实用安装Oracle VM VirtualBox教程
  14. 【高等数学】微分与全微分的几何意义的不同
  15. 线段树1——神奇的数据结构
  16. Yocto系列讲解[理论篇]27 - BitBake全过程(5)
  17. 利用C语言绘制操作系统图像界面
  18. 女子打扮时尚穿短裙 被8岁儿子指责像二奶
  19. 军犬舆情每日热点:LIGO发现最大黑洞;智能锁广告侮辱拆弹战士
  20. 2020Java就业前景好吗?

热门文章

  1. AutoCAD DxfCode组码值类型(一)
  2. TIA V16 + KepServerEx搭建OPC 通讯试验
  3. 智慧旅游海内外现况详情及发展对策
  4. Pano2VR如何制作全景图?全景图如何添加热点?
  5. Android反编译工具jadx详细使用方法以及混淆和加固的对比
  6. 最小卡片迷你服务器 Quantum Mini Linux Development Kit
  7. 【软件】Tecnomatiox系列软件简介
  8. 雷蛇灵刃定制版Win10系统不稳定及处理方案
  9. bios设置计算机用户,电脑security设置图解
  10. 菜鸟高飞尽之CSS-CSS样式表