常见的盒子模型
标准盒模型(content-box)
怪异盒模型(IE盒模型)
IE盒模型和怪异盒模型的区别
- 标准盒模型的width = content-box;标准盒模型的宽度指的是内容宽度,不包括padding和border的宽度。
- IE盒模型的width = border-box;IE盒模型的宽度包括padding和border。
利用css画出三角形以及梯形以及其余图形
css画其余图形
#div{
width:20px;
height:20px;
margin:0 auto;
border-top:100px solid red;
border-bottom:100px solid green;
border-left:100px solid black;
border-right:100px solid yellow;
}
复制代码
#div{
width:0px;
height:0px;
margin:0 auto;
border:100px solid;
border-color:red green yello black;
}
复制代码
css画三角形
#div{
width:0px;
height:0px;
margin:0 auto;
border:100px solid;
border-color:transparent transparent yellow transparent;
}
复制代码
css画梯形
width:60px;
margin:0 auto;
border:100px solid;
border-color:transparent transparent yellow transparent;
}
复制代码
css画圆
width:100px;
height:100px;
margin:0 auto;
border-radius:100%;
background:red;
}
复制代码
css画扇形
#div{
width:0px;
height:0px;
border:100px solid;
border-color:transparent transparent yellow transparent;
border-radius:100%;
}
复制代码
CSS选择器
CSS1和CSS2选择器
- 类选择器(.class):选择全部类名为class的元素
- ID选择器(#main):选择全部ID为main的元素
- 通配符选择器(*):选择全部元素
- 元素选择器(p):选择全部p元素;
- 分组选择器(div,p):选择全部的div和p元素
- 子代选择器(div>p):选择父元素为div的全部p元素
- 相邻兄弟选择器(div+p):紧邻在div的p元素,必须是兄弟关系
- (div p ):选择在div内部的全部p元素
- 属性选择器
[target]
:选择带有target属性的全部元素
[src = imgUrl]
:选择带有src属性且等于imgUrl的全部元素
[class ~=hello ]
:选择带有class属性,且属性值等于hello的全部元素
[class |= h]
:选择带有class属性且值以h开头的全部元素
- a连接选择器
- a:link:未被访问的全部a连接
- a:visited:已经被访问的全部a连接
- a:active:被选择的a连接
:hover
:鼠标移上的元素
:fous
:鼠标的点击焦点
p:before
:在每一个p元素里面的最前加入内容
p:after
:在每一个p元素里面的最后面加入内容
CSS常见属性概括
overflow有哪些属性值,分别表明什么意思
- overflow:visible(默认)。内容不会被修剪,超出内容会呈如今元素外
- overflow:hidden;内容被修剪,超出部分隐藏。
- overflow:auto;若是内容超出,则出现滚动条,若是没有超出则不出现滚动条
- overflow:scroll,内容超不超出都会出现滚动条
CSS3常见知识概括
##calc函数css
- calc函数是c3新增的新功能,可使用calc计算border、margin、padding、font-size、等属性设置动态值。
- 须要注意的是:
- 运算符先后都须要保留一个空格
- calc函数支持 + - * / 运算
#div{
width:calc( (100% - 10px) * 2 )
}
复制代码
伪类和伪元素
伪类:伪类的意义是经过选择器找到不能被常规css选择器获取的元素;li中的第一个元素,first-child。以及获取不存在Dom树中的信息,好比a标签中的link,hover等等。简单理解只有一个:的大部分都是伪类
- 经常使用的伪类
p:first-of-type
:第一个p元素。
p:last-of-type
:最后一个p元素。
nth-child(n)
:第n个元素。
nth-last-child(n)
:从后面数第n个元素。
a:link
未被访问的a连接
a:visited
已经被访问的a连接
a:active
被选中的a连接
伪元素
- 伪元素:用于建立一些不在Dom树中的元素,并为其添加样式,例如咱们能够经过:before来在一个元素前增长一些文本。
- 建立的伪元素
::before
在元素的前面插入内容,配合content使用
- 注意:一、第一个子元素
- 二、建立的的行内元素
- 支持css样式
::after
在元素的最后main插入内容,配置content使用,注意和::before同样。
::first-line
选中块级元素的第一行文本
::first-letter
选中块级元素的文本的首字母设置特殊样式;注意只能是块级元素
::selection
定义被选中的部分,通常用于文本选中修改颜色背景色等等。
CSS3经常使用的新增属性
- border-radius:圆角
- box-shadow:h-shadow(水平阴影) v-shadow(垂直阴影) bulr(模糊距离) color(颜色) 盒子阴影
- border-image:url()图片地址 left top定位 no-repeat不覆盖
- 多张图片组合用逗号分隔
- text-show:h-shadow(水平阴影) v-shadow(垂直阴影) bulr(模糊距离) color(颜色) 文本阴影同上
- 文本超出部分以省略号的形式展现:
- white-space:nowrap超出文本不换行 // wrap换行
- overflow:hidden 超出部分隐藏
- text-overflow:ellipsis文本超出以省略号的形式展现 ///clip直接隐藏
- 非中日韩文本的换行:word-break
- word-break:keep-all以-拆分换行
- word-break:break-all直接拆分换行
- 全部文本换行word-wrap:break-word
CSS3,transform转换
- transform2D转换:
- transform:translate(x,y)从当前位置顶部沿X轴和Y轴移动
- tansform: rotate(30deg)从当前位置的中心旋转30°
- transform: skew(x,y)从当前位置沿X轴和Y轴倾斜
- transform:scale(x,y)x轴的缩放放大,y轴的缩放放大
- transform3D转换
- transform:translate3d(x,y,z),
- transform:rotate3d(x,y,z,angle)x,y,z的值是0到1;angle为角度
CSS3过渡 transition
- transition all 2s ease 0s
- 第一个参数表示:须要过渡的属性,默认all,全部属性都过渡;基本上全部属性都能过渡,除了float、渐变。
- 第二个参数:过渡时间
- 第三个参数:缓冲描述;ease逐渐变慢、linear匀速、ease-in先慢后快、ease-out先快后慢、ease-in-out先慢后快再慢。
- 第四个参数:延迟时间。
- 执行单个transform转换
.box{
width:100px;
height:100px;
background:red;
transition:width 2s,height 2s,transform 2s;
}
.box:hover{
width:200px;
height:200px;
transform:rotate(180deg);
}
复制代码
.box{
width:100px;
height:100px;
background:red;
transition:width 2s,height 2s,all 2s;
}
.box:hover{
width:200px;
height:200px;
transform:rotate(180deg) translate(100px,100px)
}
复制代码
CSS3动画 animation
- @keyframes建立动画;再经过animation来执行动画
- animation属性
animation-name
:动画属性
animation-duration
:动画持续时长
animation-timing-function
:定义动画的速率;ease、ease-in、linear、ease-in-out、ease-out等等
animation-delay
:延迟时间
animation-interation-count
:播放次数;infinite无限次
animation-fill-mode
:forwards停留在最后一帧、backwards停留在第一帧、both轮流
.box {
width:100px;
height:100px;
background:red;
animation:rotate 1s infinite linear;
}
@keyframes rotate {
0% {
color:aqua;
}
50% {
color:bisque;
}
100% {
background:yellow;
}
}
复制代码
- infinite无限次循环播放
- linear 开始到结束的速度一致
animation和transition有什么区别,animation如何停留在最后一帧
- transition通常用来过渡,没有时间轴概念,经过事件触发,没中间状态,只有开始和结束。过渡的开销比较小,通常用于简单的页面交互。
- animation通常是作动效的,有时间轴概念(帧可控),能够重复触发,有中间状态。
CSS3flex布局
- flex布局后其全部的子元素都会自动变成flex项目;子元素的float、clear、vertical-align属性都会失效。
- 块级元素display:flex;行内元素则为display:inline-flex;
flex的属性介绍
flex容器属性
- flex-direction设置主轴的方向
- row(默认值):主轴的方向为水平方向,起点在左边
- row-reverse:主轴的方向为水平方向,起点在右边
- column:主轴的方向为垂直方向,起点在上沿
- column-reverse:主轴的方向为垂直方向,起点在下沿
- flex-wrap设置在轴线上的项目若是排不下如何换行
- nowrap(默认):不换行
- wrap:换行,第一行在上方
- wrap-reverse:换行,第一行在下方
- flex-flow是flex-direction和flex-wrap的简写形式;默认值为row nowrap
- justify-content属性决定了主轴的对齐方式;下面假设flex-direction:row;
- flex-start:左对齐
- center:居中
- flex-end:右对齐
- space-between:两端对齐,项目之间的间隔相等
- space-around:每一个项目之间的间隔相等,因此两个项目之间的间隔是最左、右边的两倍
- align-items属性决定交叉轴上的对齐方式;假设交叉轴为垂直方向
- flex-start:上对齐
- center:居中对齐
- flex-end:下对齐
- baseline:项目的第一行文字的基线对齐
- stretch(默认):若是项目未设置高度或者设为auto,将占满整个容器的高度
- align-content属性决定了多跟项目轴线的对齐方式,意思就是项目换行产生的多跟水平轴线,顾必须有flex-wrap:wrap属性,才能生效,若是只有一根轴线该属性不生效。
- flex-start: 上对齐
- center:居中对齐
- flex-end:下对齐
- space-between:上下两端对齐,项目间隔相等
- space-around:项目之间的间隔相等,最上、下的两个项目是其余间隔的二分之一
- space-evenly:全部项目的间隔相等。
项目属性
- order:默认0;用整数值来定义排列顺序,数值小的排在前面,能够为负值。
- 默认值order:0时
- 将中间的一个或者某些移到最前面的方法
- flex-grow属性定义的是项目的放大比例,默认值为0;即若是由剩余控件也不放大。
- 若是flex-grow为1,项目将等分剩余空间;若是其中一个项目为2,其余都为1,则这个项目比其余的项目占据的空间多一倍 。
- flex-shrink定义了项目的缩小比例;默认值为1。值必须是正值
- flex-basis属性定义了项目占据的主轴空间;默认值是auto,即项目原本的大小
- 它能够设为和width或者height同样的值,好比200px
- flex 属性是flex-grow、flex-shrink、flex-basis的简写,默认值是0 1 auto;后两个属性可写
- flex属性有两个快捷值,auto(1 1 auto)、none(0 0 auto)
- align-self属性容许单个项目与其余项目不同的对齐方式;可覆盖align-items属性,默认值为auto表明继承父元素的align-items属性
- auto:继承父级的align-items,若是没有父级值则为stretch(占满整个容器的高度)
- flex-start:上对齐
- flex-and;下对齐
- center:居中对齐
- baseline:项目的第一行文字基线对齐
- stretch:占满整个容器的高度
CSS媒体查询
- 在css中直接写入
@media screen(媒体类型) and (min-width:100px)(媒体功能){ .hello{ color:red } }
- 媒体类型
- all适用于全部设备
- screen 适用于电脑屏幕、平板电脑、智能手机
- speech 适用于屏幕阅读器等发声设备
- 媒体功能
- max-width 设置输出设备最大页面可见宽度
- min-width 定义设备最小的可见宽度
- width 定义输出设备页面的最大可视宽度
- min-height定义设备页面的最小高度
- max-height 定义设备的页面的最大高度
- 经过link引入媒体查询定义的样式
<link rel="stylesheet" media="screen and|not|only (max-width:300px)" href="mystylesheet.css">
css常见面试题总结
文本超过隐藏,并以省略号的方式展现
- white-space:nowrap 超出文本不换行
- overflow:hidden 超出部分隐藏
- text-overflow:ellipsis
块级元素水平垂直居中
定宽高
- 子元素用绝对定位,设置宽高,top:50%;left:50%;再利用margin:-宽度一半 0 0 -高度一半
.father{
width: 400px;
height: 400px;
background: red;
position: relative;
}
.son{
width: 200px;
height: 200px;
position: absolute;
top: 50%;
left: 50%;
margin: -100px 0 0 100px;
}
复制代码
未知宽高
- 定位实现;子元素设置绝对定位,上左各50%,tranform tranlate -50%。
.father{
width: 400px;
height: 400px;
background: red;
position: relative;
}
.son{
position: absolute;
top: 50%;
left: 50%;
tranform: translate(-50%, -50%);
background: yellow;
}
复制代码
- flex布局实现;父级元素
display:flex;justify-content:center;align-items:center
.father{
width: 400px;
height: 400px;
background: red;
diapaly: flex;
justify-content: center;
align-item: center;
}
复制代码
- 模拟表格实现;父级
display:table-cell;text-align:center;vertical-align:center
;子元素设置display:inline-block
.father{
width: 400px;
height: 400px;
background: red;
diapaly: teble-cell;
text-align: center;
vertical-align: center;
}
.son{
display: inline-block;
}
复制代码
两边宽度固定,中间自适应的三栏布局
.left{
width: 200px;
height: 100%;
background: red;
position: absolute;
top: 0;
left: 0;
}
.content{
width: calc(100% - 200px - 200px);
position: absolute;
height: 100%;
background: yellow;
left: 200px;
top: 0;
}
.right{
width: 200px;
height: 100%;
background: aqua;
position: absolute;
right: 0;
top: 0;
}
复制代码
.main{
overflow: hidden;
padding: 0 200px;
}
.left{
float: left;
width: 200px;
height: 100vh;
margin-left: -200px;
background: red;
}
.content{
float: left;
width: 100%;
height: 100vh;
background: yellow;
}
.right{
float: left;
width: 200px;
height: 100vh;
margin-right: -200px;
background: aqua;
}
复制代码
CSS box-sizing属性决定了用哪一种盒子模型的解析模式
- box-sizing = content-box标准盒模型 --默认
- box-sizing = border-box IE盒模型
css有哪些选择器;哪些属性能够继承
- css选择器有:id选择器、类选择器、组合选择器(div,p)、子代选择器(ul>li)、伪类选择器(:hover,li:neh-child(2))、属性选择器([src = imgUrl])、通配符选择器、标签选择器(div p span)
- 可继承的属性
- font-size、font-family、color
- 不可继承的属性
- width、height、padding、border
CSS优先级怎么计算的
- 元素选择符:1 通配符
*
;div.hello 类名为div的标签
- 类选择器:10
- ID选择器:100
- 元素的标签:1000
- !important声明的样式优先级最高
- 若是优先级相同,则选择最后的样式
- 继承获得的样式的优先级最低
dispaly有哪些值,都有什么做用
- dispaly:none;隐藏元素,而且不保留元素的现实空间。
- display:inline; 将元素定义为行内元素;行内元素不可定义宽高;宽高是内容撑开的宽高
- dispaly:inline-block;将元素定位为行内块元素;使得这个元素能够设置宽高。可是注意行内块元素不支持margin:auto;margin只支持块级元素。
- display:block;将元素定义为块级元素;元素继承父级宽度;独占一行
常见的兼容性问题
- 不一样浏览器的标签默认的margin和padding不一样;能够用
*{margin:0;padding:0}
来取消margin、padding不一样的问题
为何要初始化css样式
- 由于浏览器兼容问题,不一样浏览器对有些标签的默认值是不一样的,若是没有对css初始化会出现浏览器之间的页面差别
display:none和visibility有什么区别
- display:none;不显示其元素,在文档中不保留分配的空间;(回流+重绘)
- visibility:none;不显示其元素,在文档中保留分配的空间(重绘)
页面的回流和重绘
- 回流:元素因规模尺寸、布局的改变须要从新构建页面时,称为回流。回流必然伴随着重绘
- 重绘:更新元素的属性,并且这些属性只影响元素的颜色,外观等称为重绘。重绘不必定有回流,例如改变颜色
说说你对BFC的理解
BFC的布局规则
- 内部的box盒子会在垂直方向,一层一层的接着放置
- box盒子垂直方向的距离由margin决定,属于同一个BFC元素的相邻盒子的margin会发生重叠。
- 每一个盒子的margin-left都与它的父元素的border相接触,及时存在浮动也同样;
- 不存在浮动
- 存在浮动
- BFC区域不会与float盒子发生重叠。
- BFC在页面上就是一个独立的容器,他里面的元素不会影响到外部的元素,反之如此。
- 计算BFC的高度时,浮动元素也参与计算。
如何建立BFC元素
- float值不等于none;
- display的值等于inline-block、table-cell、flex、inline-flex
- position的值不等于static、relative
- overflow的值不等于visible
BFC的做用
- 避免同一个BFC元素的margin重叠
- 自适应两栏布局:左浮动,右边加个overflow:hidden
- 清除浮动;利用BFC计算高度时会将浮动的高度也进行计算。
为何会出现浮动,清除浮动的方式有哪些
- 浮动是由于给一个元素设置浮动后,他将脱离文档流,影响父级高度的计算。
- 清除浮动的方式
- 给父级设置一个固定的高度
- 在最后一个浮动的元素加空div,并添加clear:both
- 在父级元素添加overflow:hidden
块级元素、行内元素、空(void)元素有哪些
- 块级元素:p、div、ul、li、header、footer等等。
- 行内元素:span、img、input、a
- void元素:hr、br
link和@import的区别
- link属于HTML标签,而@import是css提供的,页面被加载时,link会同时加载,而@import引用的css会等到页面加载完再加载
- @import只在IE5以上才能被识别,而link是HTML标签,没有兼容性问题。
- link的权重高于@import
让元素隐藏的方法
- visibility:hidden;//元素隐藏,可是不会改变布局,绑定的事件不能触发。
- display:none;/元素隐藏,而且页面布局会改变
- opcity:0;//元素隐藏,布局不会改变,绑定的事件仍然能够触发
- z-index:-100;//将元素置于其余元素之下
行内块元素之间的空白怎么解决