html及css总结
html及css总结
常见浏览器及内核
浏览器:IE、谷歌、火狐、苹果、欧朋
内核:Trident、Blink、Gecko、Webkit、Blink
b和strong(i和em)标签的区别
b标签为一个实体标签,被包围的字符设为粗体
strong标签更加有语义化(推荐使用)
i标签为倾斜
em标签更有强调意义的倾斜
引入css的方式有几种
(1)内嵌式
1 | 通过<style></style>来书写CSS代码。 |
(2)外联式
1 | 通过<link>标记来引入外部的CSS文件(.css)。 |
(3)行内样式
1 | 通过style的属性来书写CSS代码。 |
单行文本水平垂直居中如何实现
1、水平居中
1 | text-align:center; 控制单行文字水平居中 |
2、垂直居中
1 | 设置行高,line-height:与元素高度相等的值 |
选择器优先级如何计算
选择器优先级与权值相关
基础选择器的权值:通配符选择器(0)、标签选择器(1)、class选择器(10)、id选择器(100)
复合选择器的权值是所有的单一选择器权值的累加
权值越大,优先级越高;权值相同,后写的会覆盖先写的
继承样式没有权值,权值比0小,子元素设置样式会覆盖继承样式
行间样式权值为1000,优于id选择器
!important优于行间样式
那些css属性可以继承
1、字体系列属性
font-family:字体系列
font-weight:字体的粗细
font-size:字体的大小
font-style:字体的风格
line-height:行高
2、文本系列属性
text-indent:文本缩进
text-align:文本水平对齐
color:文本颜色
3、 list-style属性
margin 存在问题
重叠问题
问题:两格兄弟元素同时设置margin-top和margin-bottom,会重叠,取最大值。
解决方案;
- 避免同时使用,只需要一方使用
- 给其中一个盒子套一个大盒子包起来,给大盒子设置overflow:hidden;形成私有区域
塌陷问题
问题:父元素的第一个子元素设置margin-top会传递给父元素
解决方案:
- 避免使用margin-top
- 给父元素设置
- podding-top:1px
- border-top:1px solid red;
- overflow:hidden;私有区域
浮动产生的问题?清除浮动的方案?
浮动元素引起的问题:
浮动元素脱离文档流之后在文档流中不占位,父元素的高度无法被撑开,影响与父元素同级的元素
清楚浮动的方法:
(1)给父级元素加高度(不推荐使用,它只适合高度固定的布局,一般父盒子都是为由内容撑起来)
(2)在浮动元素的结尾处添加空div标签clear:both。具体做法:添加一个div标签并定义一个clear的类名,给clear类名添加样式clear:both,将该div标签放到父元素内容结束前的位置(缺点:会多加CSS和HTML标签)。
(3)给父级元素定义 overflow:hidden(推荐使用,缺点:不能和position配合使用,因为超出的尺寸的会被隐藏)
(4)给父级div定义伪类:after和zoom(推荐使用)
1 | 清除浮动代码*/ .clearfix:after{content:"";display:block;clear:both;visibility:hidden;height:0} .clearfix{zoom:1} |
然后父级元素添加clearfix类名即可
(5)给父级元素添加浮动(缺点:会产生新的浮动问题)
BFC规则特性,及解决的问题?
BFC规则
我的理解是:只有块级元素参与,BFC是指块级元素在页面中如何排列,如何渲染,并且与内部元素无关-
内部的标签会在垂直方向上一个接一个的放置
垂直方向上的距离由margin决定,属于同一个BFC的两个相邻标签的margin会发生重叠
每个标签的左外边距与包含块的左边界相接触(从左向右),即使浮动标签也是如此。
BFC的区域不会与float的标签区域重叠
计算BFC的高度时,浮动子标签也参与计算
BFC就是页面上的一个隔离的独立容器,容器里面的子标签不会影响到外面标签,反之亦然
BFC解决的问题
解决外边距折叠
特性的第②条:垂直方向上的距离由margin决定。在常规文档流中,两个兄弟盒子之间的垂直距离是由他们的外边距所决定的,但不是他们的两个外边距之和,而是以较大的为准。特性的第⑥条:bfc就是页面上的一个独立容器,容器里面的子标签不会影响外面标签,同样外面的标签不会影响到BFC内的标签。所以可以让其中的一个标签处于一个BFC中
自适应两栏或三栏布局
左边固定宽度,右边不设宽,因此右边的宽度自适应,随浏览器窗口大小的变化而变化。
左右两边固定宽度,中间不设宽,因此中间的宽度自适应,随浏览器的大小变化而变化。
浮动的标签会覆盖正常标签根据第④条规则,BFC的区域不会与float的标签区域重叠,
所以我们只需要创建一个BFC,它就会自动缩小,以不被浮动的标签遮盖,就能够实现右侧栏自适应。
防止字体环绕
浮动的盒子会遮盖下面的盒子,但是下面盒子里的文字是不会被遮盖的,文字反而还会环绕浮动的盒子。
清除浮动
利用overflow:hidden清除浮动,因为浮动的盒子无法撑出处于标准文档流的父盒子的height。根据特性第⑤条。计算BFC的高度时,浮动子标签也参与计算。
图片间隙问题,如何解决
方法 1:将图片显示为块:解决下方间隙
1 | img{ |
方法 2:改变图片的 vertical-align :解决下方间隙
1 | img{ |
除了 middle值,还可以设置为 top| bottom 等
方法 3:设置图片父级标签的 font-size:0;line-height:0; 水平间隙,图片下方间隙都能解决
1 | .imgwrap{ |
圣杯布局、双飞翼布局的实现原理
- 圣杯布局
- HTML结构中,先主体内容后侧边
- 两侧宽度固定,中间宽度设置100%
- 两侧盒子和中间盒分别加浮动
- 将左侧盒子拉到最左边,将右侧盒子拉到最右边
- 通过左、中、右盒子的父级盒将中间内容露出来
- 分别还原左侧盒子和右侧盒子
- 双飞翼布局
- HTML结构中,先主体结构后侧边
- 两侧宽度固定,中间宽度设置100%
- 两侧盒子和中间盒分别加浮动
- 将左侧盒子拉到最左边,将右侧盒子拉到最右边
- 在主体结构盒的子盒上设置margin值,将中间内容露出来
精灵图的原理及优缺点?
英文叫法 css sprites,通常被解释为“CSS 图像拼合”或“CSS 贴图定位”;其实就
是把网页中一些背景图片整合到一张图片文件中,再利用 CSS “background-image”,
“background- repeat”,“background-position”的组合进行背景定位,background-position 用数字能精确的定位出背景图片的位置。适用于一般小图标,不适合大背景大布局背景
优点:
(1)减少网页的 http 请求,从而大大的提高页面的性能
(2)图片命名上的困扰
(3)更换风格方便
缺点:
(1)必须要限定容器大小符合背景图元素位置,需要计算
html5的新特性
新增语义化的标签
新增表单元素和表单属性
新增网页上绘制图形的canvas元素
新增多媒体相关的video和audio
对本地离线存储的更好支持
处理HTML5新标签的浏览器兼容问题
HTML5新标签对IE低版本浏览器的影响及兼容情况处理方案:
1 | 方案一:使用javascript新增元素的方法解决 |
由于创建出来的元素是内联元素,所以需要转换成块级,宽度和高度才能生效。
1 | header,footer{ display:block;} |
方案二:使用封装好的插件html5shiv.js解决兼容性问题。
1 | <!--[if lt IE 9]> |
上面这段代码仅会在IE浏览器下运行。
响应式设计?响应式设计的基本原理?响应式优缺点?
页面的设计与开发应当根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相应的响应和调整。
响应式布局可以根据屏幕的大小自动的调整页面的展现方式,以及布局。响应式布局是根据设备屏幕宽度不同适当调整标签显示布局,在每种设备屏幕宽度的设备下呈现的界面是不同的。
响应式网站的优点:
减少工作量 网站、设计、代码、内容都 只需要一份,多出来的工作量只是JS脚本、CSS样式做一些改变
节省时间
每个设备都能得到正确的设计
响应式网站的缺点:
会加载更多的样式和脚本资源
设计比较难精确定位和控制
老版本浏览器兼容不好
CSS盒模型
盒模型又称框模型(Box Model),包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。
元素框的总宽度 = 元素(element)的width + padding的左边距和右边距的值 + margin的左边距和右边距的值 + border的左右宽度;
元素框的总高度 = 元素(element)的height + padding的上下边距的值 + margin的上下边距的值 + border的上下宽度。
简单来说
就是每一个标签所占的位置就是盒模型
盒模型的计算:
宽高+matgin+padding+border
使用定位实现盒子水平垂直居中的代码
一、定位+margin负值,盒子有宽高
1 | .father{ position:relative;} |
二、定位+margin:auto,盒子有宽高
1 | .father{ position:relative;} |
less
LESS是一种动态语言,属于CSS预处理语言的一种,它扩展了 CSS 语言,使 CSS 更易维护和扩展,可以更便捷的进行 Web 开发,使css的编写有编程思想。
Less 包含一套自定义的语法,用户根据这些语法定义自己的样式规则,最终会通过解析器,编译生成对应的 CSS 文件,只有在被编译成css后才能够被浏览器识别使用。
好处:
结构清晰,便于扩展,易维护。
可以方便地屏蔽浏览器私有语法差异。
可以轻松实现多重继承。
完全兼容 CSS 代码,可以方便地应用到老项目中。
支持内联元素宽高
1 | display:block\inline-block |
css三大特性
- 层叠性:通过相同的选择器选中同一个标签,给该标签设置同一个样式,其中一个会覆盖掉另一个
- 继承性:给父元素设置样式后,子元素能够应用上父元素的样式 :以font-(font-size、font-family、font-weight、font-style) line-(line-height) text-(text-align、text-decoration、text-indent、text-shadow) 开头的样式 以及 color 是可以继承的
- 优先级:
- 优先级计算方式:多个基本选择器的权重相加
- !important 1000 > id 100 > class 10 > 标签 1 > * 0
- 权重一样,选中的标签一致,遵循就近原则
- 权重不同,选中的标签一致,优先使用权重大的样式
- 选中不同的标签,遵循继承来的样式优先级没有自己本身优先级高
- !important 优先级高于行间样式,但还是得遵循继承来的样式优先级没有自己本身优先级高
BFC
BFC:英文:Block Formatting Context,全称”块级格式化上下文”,BFC:只有块级元素参与的,BFC是指块级元素在页面中如何排列,如何渲染,并且与内部元素无关
BFC特性
- 内部标签在垂直方向上一个接一个的放置
- 迟滞方向上的距离是由margin决定,属于同一个BFC的两个相邻标签的margin会发生重叠
- 每个标签的左外边距会与包含块的左边距相接触(从左到右),浮动元素也是如此
- BFC区域不会与浮动区域发生重叠
- 计算BFC区域的高度时,浮动子元素也参与计算
- BFC就是页面中的一个隔离的独立容器,容器里面的字标签不会影响外面的标签,反之亦然。
BFC的生成
1 | 根目录 |
BFC解决问题
兄弟元素的外边距塌陷问题
产生原因:BFC特性(2)
解决方法:让他们处于不同的BFC区域,给其中一个兄弟元素套一个盒子,给父元素设置overflow:hidden
两|三栏自适应
产生原因:浮动会脱离文档流,但是不脱离文本流,所以左侧盒子浮动之后,右侧盒子中的文字会环绕在左侧盒子的周围
解决问题:根据特性(4),可以让右侧盒子处于一个新的BFC区域就不会与浮动区域发生重叠
放止文字环绕
文字环绕产生的原因:图片浮动会脱离文档流,但是不脱离文本流,左侧盒子中的文字会环绕在图片的周围
解决问题:根据特性(4),可以让左侧盒子处于一个新的BFC区域就不会与浮动区域发生重叠
清浮动:给父元素添加
overflow:hidden
清浮动时,根据特性(5),让父元素在BFC区域中,那么计算高度时浮动子元素也会参与计算
css预处理 less
- less 包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件,只有在被编译后才能够被浏览器识别使用。
- 好处
- 结构清晰,便于扩展
- 可以方便地平布浏览器私有语法差异
- 可以轻松实现多重继承
- 完全兼容css代码,可以方便的用到老项目中
- 编译工具:
- Visual Studio Code 插件 easyless
- less语法
- 注释:
- 多行注释 /* comment */ ,会保留到编译后的文件。
- 单行注释 // comment,只保留在less源文件中,编译后被省略。
- @import “导入文件的地址”;(.css 后缀名不能省略,引入 .less 文件可以省略扩展名)
- 变量
- 定义:@变量名:值;
- 使用:
- 变量以@开头,变量名与变量值之间用【冒号】分隔 width: @变量名;
- 如果变量需要镶嵌在字符串之中,就必须需要写在@{}之中 border-@{dir}:1px solid red;
- 嵌套: 选择器嵌套,在嵌套的代码块内,使用&引用父元素
- 继承: &:extend(.box1);
- 运算:任何数字、颜色或者变量都可以参与运算;在运算中以()进行优先级计算
- 注释: