盒模型
如上图所示,这是一个盒模型中含有的属性:
在W3C标准下:盒模型中的width属性只包含content;
在IE浏览器下:盒模型中的width = content + padding + border;
content-box: 让元素维持W3C的标准盒模型;
border-box: 让元素维持IE传统盒模型;(推荐使用这种模式)
运用实例如下:
See the Pen box-sizing by Shirley (@Four27) on CodePen.
水平垂直居中
水平居中
行内元素
|
|
块级元素
1、独自占一行,有宽度和高度。
html:
|
|
css:
|
|
2、子元素有浮动
(1)
html
|
|
css
|
|
(2)
html
|
|
css
|
|
3、父容器子容器不清楚宽高
(1)老版flex
布局
html
|
|
css
|
|
(2)新版本flex
html同上
css
|
|
4、使用css3中新增的transform属性
|
|
|
|
5、利用margin-left(原理与上面的方法一样)
|
|
6、使用绝对定位和margin:0 auto
|
|
垂直居中
单行文本
|
|
多行文本
(原理都是利用表格来实现)
(1)直接使用表格
html
|
|
css
|
|
(2)利用display: table-cell
,让标签元素以表格单元格形式呈现
html
|
|
css
|
|
水平垂直居中
行内元素
(1)单行文本
html
|
|
css
|
|
(2)多行文本(直接使用table)
html
|
|
css
|
|
(3)多行文本(利用display: table-cell
,让标签元素以表格单元格形式呈现)
html
|
|
css
|
|
块元素
(1)flex新版
|
|
|
|
(2)flex老版
|
|
(3)table
|
|
(4) relative + absolute + top&left + transform
|
|
(5)relative + absolute + top&left + margin
|
|
(6)relative + absolute + top&left&right&bottom + margin
|
|
position中的所有属性值
|
|
static
默认值,没有定位,元素出现在正常的流中。此时top
、right
、bottom
、left
、z-index
属性无效。
|
|
absolute
绝对定位的元素使用left
、top
这些属性,是相对于其最接近的一个具有定位属性(即不为static定位)的父元素进行绝对定位,如果没有这样的元素就相对于body。
|
|
relative
相对定位,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置。
|
|
fixed
固定定位,不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素的位置。元素的位置在屏幕滚动时不会改变。
|
|
sticky
粘性定位时相对定位与固定定位的混合,元素在跨越阈值前为相对定位,之后为固定定位。
实现左边定宽右边自适应效果
html
|
|
main/css
|
|
(1)左边浮动,右边设置margin值
|
|
(2)左右均浮动,右边用calc计算宽度
|
|
(3)左边position:absolute,右边设置padding/margin
|
|
(4)父级元素:flex,右边子元素:flex:1
|
|
(5)父级元素:table,两个子集:table-cell
|
|
(6)利用grid
|
|
上述实现的效果图如下:
See the Pen qVmZBw by Shirley (@Four27) on CodePen.
三列布局
即两边固定,中间自适应的布局方式:
html
|
|
css
|
|
(1)流体布局
|
|
缺点:主要内容无法最先加载,当内容过多会影响用户体验。
(2)BFC三栏布局
|
|
缺点:主要内容无法最先加载,当内容过多会影响用户体验。
(3)绝对定位布局
实现了优先加载主要内容
html
|
|
css
|
|
(4)flex布局
html同上
css
|
|
(5)table布局
html
|
|
css
|
|
上述布局效果如下:
See the Pen qVmZBw by Shirley (@Four27) on CodePen.
BFC详解
(可以结合分享的连接,这里的笔记是从哪里获取的)
BFC即块级格式化上下文,它是页面上的一个独立渲染区域。BFC里的子元素不会在布局上影响到外面的元素。
BFC布局规则
(1)BFC中的box会在垂直方向上,一个接一个地放置。
(2)BFC垂直方向上的距离由margin决定,属于同一个BFC的两个相邻的box垂直margin会发生重叠。
(3)计算BFC的高度时,浮动元素也参与计算。
(4)每个元素margin-box的左边与包含块border-box的左边相接触。
(5)BFC的区域不会与float-box重叠。
哪些元素生成BFC
- 根元素
- float不为none
- position为inline-block,table-cell
- overflow不为visible
BFC的作用
1、两栏布局:利用BFC的区域不会与float-box重叠来设置自适应栏;
2、清除浮动:利用BFC在计算高度时包含了浮动元素高度。将父元素设置为BFC:overflow:hidden;
3、消除上下margin重合的问题:利用BFC中两个元素垂直方向上的margin值会发生重叠这一特点,将元素分不到不同的BFC中。
清除浮动元素
为什么要清除浮动?
当存在浮动时:
|
|
如上图所示:父元素存在塌陷,由于子元素的浮动,使得父元素的高变为0。高度和margin以及背景属性都失效了,但是padding
值不会受影响。
清除css浮动
(1)添加新元素,应用clear:both
|
|
优点:代码少,简单,浏览器兼容性好。
缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。
(2) 父元素定义overflow: auto;
或者overflow:hidden
|
|
(3)使用css的:after
伪元素
伪元素,代表元素之后最近的一个元素
|
|
用css画的基本图形
|
|
圆形
|
|
椭圆
|
|
解释:这里的border-radius
是定义的横竖方向上的半径。
等腰锐角三角形
|
|
原理:
css中的boder
其实是以等腰梯形的样式分布的:
|
|
当某一边的border不存在时,它是这样的:
当将width和height均设为0时:
|
|
等腰直角
|
|
等腰梯形
|
|
六角星
|
|
css选择器
(后面的知识点都是牛客网上css部分题的整理)
选择器类型
基础选择器:
|
|
组合选择器
|
|
属性选择器
|
|
伪类
|
|
伪元素
|
|
优先级
(1)同类型,同级别的样式后者先于前者
(2)ID > 类样式 > 标签 > *
(3)内联样式 > ID选择器 > 伪类 > 属性选择器 > 类选择器 > 标签选择器 > 通用选择器(*)
(4)近的 > 远的 (内联样式 > 内嵌样式 > 外联样式)
内联样式:内嵌在元素中,span
内部样式:在页面中的样式,写在中的样式
外部样式:单独存在一个css文件中,通过link引入或import导入的样式
有一个例外,当外部样式置于内部样式之后时,外部样式优先级高于内部样式。
(5) !import权重最高,比inline style还要高。
常见display属性
|
|
link和@import的区别
(1)link属于HTML标签,@import由css提供
(2)页面被加载时,link会自动加载。而@import引用的css会等到页面被夹在完之后再加载。
(3)link无兼容性问题。
(4)link样式的权重高于@import
为什么要初始化浏览器的样式
不同浏览器对有些标签的默认值是不同的,如果不初始化,会出现在不同浏览器上显示不同的情况。
最简单的初始化方法:
|
|
对css中刻度的认识
|
|