1. 盒模型:

盒模型可以说是装内容的容器,这个容器由 内容----外边距----内边距----边框组成。

盒模型又分为两种:

  1. 标准盒模型(W3C标准的盒子模型)

标准盒模型在页面中的总宽度是由= width +margin+padding+border组成

  1. 怪异盒模型(IE浏览器)

怪异盒模型在页面中的总宽度是由=width+margin组成 (因为在IE浏览器 width里面已经包含了padding、border)

标准盒模型与怪异盒模型的转换:

box-sizing:content-box; 转换为标准盒模型标准;
box-sizing:border-box; 转换为怪异盒模型标准;
box-sizing:inherit; 规定应从父元素继承box-sizing属性的值

JS怎么获取和设置box的宽高:

IE: dom.currentStyle.width/height

非IE: window.getComputedStyle(dom).width/height



2. BFC:

BFC:块级格式化上下文”的意思 通俗的讲,就是一个特殊的块,内部有自己的布局方式,不受外边元素的影响。

BFC原理(要理解,可不说):

  1. BFC内部的盒子,会在垂直方向,一个接一个地放置。垂直方向上也会发生边距重叠。
  2. 计算BFC的高度时,浮动元素也被计算在内
  3. FC的区域不会与float重叠。

如何触发BFC?

在box属性值为这些的情况下,都会让所属的box产生BFC

  1. overflow: auto/ hidden;
  2. float: left/ right;
  3. position: absolute/ fixed;

BFC中有边距重叠的问题

什么是边距重叠?

两个box如果都设置了边距,那么在垂直方向上 两个box的边距会生边距的重叠,以绝对值大的那个显示在页面上。

重叠的方式有两种

  1. 父子关系的边距重叠

父子关系,如果子元素设置了外边距,在没有把父元素变成BFC的情况下,父元素也会产生外边距

这种情况下可以给父元素添加overfow:hidden------ 这样父元素就变成BFC 不会随子元素产生外边距

  1. 同级兄弟关系的重叠:

同级元素在垂直方向上外边距会出现重叠情况,最后外边距的大小取两者绝对值大的那个

这种情况下可以添加空元素和伪类元素,设置overflow:hidden 解决外边距重叠的问题

BFC可以用来做自适应布局:

利用BFC的这一个原理就可以实现两栏布局,左边定宽,右边自适应。不会相互影响,哪怕高度不相等。

这种情况给right加overflow:hidden;使其变成BFC,消除外部left因浮动对他的影响

BFC也可以用来清除浮动:

父元素加overflow:hidden/auto,变BFC



3. 清除浮动

为什么要清除浮动?

浮动元素会脱离文档流,导致父元素塌陷;举个例子:一个橡皮筋绑了10根筷子,此时橡皮筋就被撑开;当把筷子从橡皮筋中拿出来时,橡皮筋就变回原样。这样的话,父元素的高度就会塌陷

知道的有4种方法:

  1. 给父级盒子添加overflow,触发BFC方法 达到清除浮动效果,使用overflow:hidden时,浏览器会自动检查浮动区域的高度 高度不需要加 只加上宽度就行

优点: 简单、代码少、浏览器支持好;
缺点: 在内容多而且还不能换行的情况下 超出的内容只能隐藏掉

  1. 添加额外标签法 ,谁清除浮动 在谁的后面添加空白标签

优点: 通俗易懂 不推荐使用
缺点:添加太多空白标签会影响代码的结构化差

  1. 添加after伪类清除标签, after标签属于空白标签的升级版 可以不用单独加标签 IE8以上和非IE支持after IE8以下用zoom (IE里特有属性)

优点:符合闭合浮动思想,结构语义化正确,不容易出现怪问题
缺点:IE6-7不支持:after,使用zoom

.father{border: 1px solid black;*zoom: 1;}
  1. 添加before和after双伪类标签,这种方法更加准确的清除浮动 两个合起来一起使用
 .a:after,.a:before{content: "";display: block;clear: both;}


4. 元素水平垂直居中

如何让一个元素在父元素中上下左右居中?

html

  <div id="box"><div id="x"></div></div>

  1. 父相子绝 子元素向上向左移动本身宽度和高度一半
  2. 也可以直接用css3动画效果 transform:translate(-50%,-50%) 横向-50% 纵向-50%
  3. 使用display: flex 让父盒子变成弹性盒子 子元素横向居中,纵向居中


5.两/三栏布局(圣杯/双飞翼)

1. 两栏布局,左边定宽,右边自适应

<div id="left">左边定宽</div>
<div id="right">右边自适应,前端前端前端前端前端前端前端前端前端前端</div>
 #left{float: left;width: 200px;background: green;
}
#right{overflow: hidden;background: red;
}

左边左浮动,右边加oveflow:hidden;变成BFC清除左侧浮动元素的影响


2. 三栏布局,圣杯布局、双飞翼布局:
圣杯布局、双飞翼布局 两者功能相同 , 都是实现一个两边固定 中间自适应的三栏布局 ------- 注意的是(中间都先加载出并渲染 然后两边才会加载)

样式图:

圣杯布局
html

<div id="header"></div>
<div id="container"><div id="center" class="column"></div><div id="left" class="column"></div><div id="right" class="column"></div>
</div>
<div id="footer"></div>

css

#container {padding-left: 200px; //浮动自身的宽度padding-right: 150px;
}

圣杯布局-----内容用一个大div包起来 给大div添加浮动 然后把三块内容中的center内容放在最上面 让 center 把内容先加载出来 再加载两边的 因为js是一个单线程 代码从上往下执行 左右两边内容 padding 负值 浮动本身的宽度

现在页面效果

现在页面还没有达到三栏效果 我们需要再通过定位 和margin 让左右内容回归到两边 现在圣杯布局才成型 最后我们要给页面一个最小的宽度 保证页面效果正常显示 但是我们用了定位 所以最小宽度设为 左右宽度单位+ 左盒子宽度

双飞翼布局:

双飞翼布局跟圣杯布局区别不是太大 :

  1. 布局 采用div单独包裹 center 内容区
  2. 左右两边使用margin负值来浮动
  3. 最小的宽度 用左右两边的宽度+ 自己假想的宽度(因为光用两边宽度相加 页面缩到最小的时候 会被挤占中间栏 内容被右栏覆盖 所以自己要假想一些宽度加上
    圣杯布局用定位 双飞翼布局不用定位


6.flex布局

flex 简单来说 弹性布局 用来为盒子状模型提供最大的灵活性 每一个盒子都可认为是一个flex布局

.box{display: flex;
}

行内元素也可以使用felx布局

.box{display: inline-flex;
}

Webkit 内核的浏览器,必须加上-webkit前缀。(Webkit :是一bai个开源的浏览器引擎 比如iPhone浏览器内核就是Webkit )

.box{display: -webkit-flex; /* Safari */display: flex;
}

flex 的常用属性有:

  1. flex-wrap:

如果内容过多 一行装不下 wrap可以达到换行的效果
flex-wrap:nowrap 默认 不换行
flex-wrap:wrap 换行 第一行在上方
flex-wrap:wrap-reverse 换行 第一行在下方

  1. justify-content:

属性横轴的对齐方式

  1. align-items:

属性纵轴如何对齐



7. CSS Hack

什么是CSS Hack?

  1. 针对不同的浏览器写不同的CSS,就是 CSS Hack
  2. CSS Hack常见的有三种形式:属性Hack、选择符Hack、条件注释Hack, Hack主要针对IE浏览器
  1. 属性Hack
.test{ color:#090\09; /*  For IE8+、FF */
*color:#f00; / * For IE7 * /
_color:#ff0; /*  For IE6  */ }

属性级Hack:
比如IE6能识别下划线“”和星号“”,
IE7能识别星号“”,但不能识别下划线” ”,而firefox两个都不能认识。

  1. 选择符Hack
* html .test{color:#090;} /* For IE6 and earlier */
*+html .test{color:#ff0;} /* For IE7 */
.test{color:#f00;} /* For IE8+ and not IE */

IE6能识别 *html .class{},IE7能识别 *+html .class{}

  1. 条件Hack
<!--[if IE]><p>你在非IE中将看不到我的身影</p>
<![endif]--><!--[if IE]>
<style>.test{color:red;}
</style>
<![endif]--><!--[if lt IE 9]><script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

条件注释只有在IE浏览器下才能执行,这个代码在非IE浏览下被当做注释视而不见。可以通过IE条件注释载入不同的CSS、JS、HTML和服务器代码等。

8. src与href的区别

src

src指向外部资源的位置,src的内容是页面必不可少的一部分,是引入。src指向的内容会嵌入到文档中当前标签所在的位置。常用的有:img、script、iframe。

比如

<script src="script.js"></script>

当浏览器解析到该元素时,会暂停浏览器的渲染,知道该资源加载完毕。这也是将js脚本放在底部而不是头部得原因。

href

表示超文本引用。用来建立当前元素和文档之间的链接。常用的有:link、a。

比如

<link href="reset.css" rel=”stylesheet“/>

简单来说 ----- src用于替换当前元素;href用于在当前文档和引用资源之间建立联系



9.link与import区别

场景

<head><!-- link是标签,引入外部样式表 --><link rel="stylesheet" href="./a.css"><style>/* @import 在css环境中 导入外部css */@import url('./b.css');.box{width: 100px;height: 100px;background: green;}</style>
</head>

区别:

  1. link属于html标签。@import在css中使用表示导入外部样式表;
  2. 加载页面时,link引入的CSS被同时加载,@import引入的CSS将在页面加载完毕后加载;
  3. @import只在IE5以上才能识别,而link是HTML标签,无兼容问题;
  4. link方式的样式的权重 高于@import的权重;


10.HTML5和CSS3的新特性

css3新特性增加了

  1. 选择器
  2. 背景和边框
  3. 文本效果
  4. 2D/3D 转换 — 变形(transform)、过渡(transtion)、动画(animation)

1. 选择器新增

  1. :last-child /* 选择元素最后一个孩子 */
  2. :first-child /* 选择元素第一个孩子 */
  3. :nth-child(1) /* 按照第几个孩子给它设置样式 */
  4. :checked /* 选择每个被选中的dom元素 */
  5. :disabled /* 选择每个禁用的dom元素 */

2. 背景和边框新增
(1)背景:

  1. background-size:规定背景图片的尺寸(cover:填充;100% 100%:拉伸)
  2. content-box、padding-box 或 border-box 区域

(2)边框:

  1. border-radius:圆角
  2. box-shadow / text-shadow:阴影
  3. border-image:边框图片

3. 文本效果

  1. text-shadow -------------- 向文本添加阴影
  2. text-outline ----------------- 规定文本的轮廓
  3. text-wrap -------------------- 规定文本的换行规则

4. 2D/3D 转换
变形transform

变形有-----rotate旋转、scale缩放、translate位移、skew倾斜

过渡transition

过渡transition是一个复合属性 可以同时定义transition-property 、 transition-delay

动画animation

动画的使用,首先通过@(-webkit-)keyframes 定义动画名称及动画的行为,再通过animation属性设置动画特征相关值进行调用

H5 新特性
h5新增特性:

  1. 语义化标签:header、footer、section、nav、aside、article
  2. 增强型表单:input 的多个 type
  3. 新增表单属性:placehoder、required、min 和 max

前端html面试题简约版相关推荐

  1. 前端JS面试题简约版

    1. javascript原型与原型链: 原型: js中每一个函数都有一个proto属性,而且对应的是自身的原型,被称为隐式原型 函数中除了proto属性之外还有一个prototype属性,被称为显示 ...

  2. Web前端经典面试试题(二)

    上次由于时间有限只分享了一部分的前端面试题,所以本篇继续分享前端经典面试试题 一. 栈和队列的区别? 栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的. 队列先进先出,栈先进后出. 栈 ...

  3. 前端开发面试题总结之——JAVASCRIPT(一)

    ___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...

  4. Web前端JQuery面试题(三)

    Web前端JQuery面试题(三) 1.怎么阻止冒泡过程? stopPropagation(); // 阻止冒泡过程 2.ready()方法和onload()方法的区别? onload()方法要等页面 ...

  5. js考试题 html5新特性,Web前端初级面试题总结

    Web前端初级面试题总结 发布时间:2018-11-02 11:17, 浏览次数:549 , 标签: Web Web篇: 1.常见的浏览器内核有哪些? IE:Trident内核            ...

  6. 常见的前端vue面试题

    常见的前端vue面试题 1.请讲述下VUE的MVVM的理解? MVVM 是 Model-View-ViewModel的缩写,即将数据模型与数据表现层通过数据驱动进行分离,从而只需要关系数据模型的开发, ...

  7. 2014年最新前端开发面试题

    2014年最新前端开发面试题(题目列表+答案 完整版) 转载自https://github.com/markyun/My-blog/tree/master/Front-end-Developer-Qu ...

  8. web前端兼容性面试题汇总!

    web前端兼容性面试题汇总 一.html部分 1.H5新标签在IE9以下的浏览器识别 html5shiv.js下载地址 2.ul标签内外边距问题ul标签在IE6\IE7中,有个默认的外边距,但是在IE ...

  9. 2021前端高频面试题整理,附答案

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 若川视野原意是若川的前端视野.但太长了就留下了四个字,不知道的以为关注的不是技术公众号. 今天分享一篇慕课网精英讲 ...

最新文章

  1. 企业分布式微服务云SpringCloud SpringBoot mybatis (十一)docker部署spring cloud项目
  2. 关于ipconfig中setclassid的初步认识
  3. 直线电机原理动画_每周一品 · 直线电机(Linear Motor)中的磁性材料
  4. 计算机一级及wps试题,2016计算机一级WPS考试试题及答案
  5. .Net/C# 与 J2EE/Java Web Service 互操作完整实例
  6. pwn环境搭建_pwndbg、pwntools环境搭建(Unix系统)
  7. MySQL Router 测试使用 转
  8. Qt文档阅读笔记-对Style Plugin Example实例的解析
  9. 赢得 Docker 挑战最佳实践
  10. springboot 添加 lombok 报错更新 版本号
  11. Android Problem- android.content.res.Resources$NotFoundException: String resource ID #0xa
  12. Android.mk 语法详解
  13. 收集的tracker
  14. matlab bp结果,BP-networkmatlab BP神经网络实现手写数字识别,使用 。内有测试数据及实验结果,非常适合入门 276万源代码下载- www.pudn.com...
  15. 论文:轨迹路线生成算法
  16. K8S StatefulSet方式部署elasticsearch集群 —— 筑梦之路
  17. python读xml文件生成.h头文件_PYTHON读写xml文件的方法
  18. 10个优秀的Spring Boot开源项目整理分享
  19. 偷懒的网络框架libevent、libev框架介绍
  20. ”好奇号“在火星表面漫游的证据

热门文章

  1. EditPlus汉化版安装软件
  2. Python内置类型集合set和frozenset
  3. Twitch Gamers数据集
  4. [demo] 高德地图 用户位置动态移动
  5. SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase
  6. java版Spring Cloud+Vue 前后端分离+VR全景电子商务源码
  7. python常用框架和库总结
  8. JS模糊查询indexOf方法
  9. 《UNIX 传奇》读书笔记
  10. 【报告分享】2020公众健康行为洞察报告-益普索腾讯医典(附下载)