Rumah >hujung hadapan web >tutorial css >CSS面试题(参考)
标准模型由四部分组成:
模型区分:
标准表型指的是设置box-sizing为content-box的盒子模型,一般width,height指的是content的宽高。IE盒模型指的是box-sizing为border-box的盒子。宽高的计算是content+padding+border;
专题推荐:2020年CSS面试题汇总(最新)
可继承的样式: font-size font-family color
不可继承的样式: border padding margin height width
优先级为:
transition-property:width transition-duration:1s transition-timing-function:linear transition-delay:2s
animation:动画名称,一个周期花费时间,云顶曲线(默认ease),动画延迟(默认0),动画播放次数(默认1),是否反向播放动画(默认normal),是否暂停动画(默认running)
transform: 使用于2D或3D转换的元素 transform-origin: 装换元素的位置(围绕哪个点进行装换).默认(x,y,z);
选择器
阴影
box-shadow: 水平阴影的位置 垂直阴影的位置 模糊距离 阴影的大小 阴影的颜色 阴影开始的方向(默认是从里向外,设置inset就是从外往里)
border-image: 设置图片路径 设置边框背景图的分割方式 设置或检索对象的边框厚度 设置或检索对象的边框背景图向外扩展 设置边框图片的平铺方式
border-radius: n1 n2 n3 n4; /* n1-n4 四个值得顺序是左上角,右上角,右下角,左下角 */
box-reflect: 方向[above-上|below-下|right-右|left-左],偏移量,遮罩图片
word-break:normal(默认使用浏览器默认的换行规则)|break-all(允许在单词内换行)|keep-all(只能在半角空格或连字符处换行)
overflow: hidden; white-space: nowrap; text-overflow:ellipsis;
overflow:hiden; text-overflow:ellipsis;用省略号"..."隐藏超出范围的文本 display:-webkit-box; //将对象作为弹性伸缩盒子模型显示 -webkit-line-clamp:2; //用来限制在一个块元素显示的文本的行数 -webkit-box-orient:vertical;设置弹性盒对象的子元素的排列方式
text-shadow: 水平阴影 垂直阴影 模糊阴影 阴影颜色
rgba(rgb颜色值,a为透明度)
线性渐变和径向渐变
filter: 滤镜效果(透明度)
弹性布局就是flex布局
-栅格布局
栅格化布局。就是grid
一个用于页面布局的全新css3功能,flexbox可以把列表放在同一个方向(从上到下排列,从左到右),并且列表能延伸到占用可用的空间,较为复杂的布局还可以嵌套一个伸缩容器(flex container)来实现。采用flex布局的元素,成为flex容器。常规布局是基于块和内联流方向,而flex布局是基于flex布局flex-flow流可以很方便的用来做居中,能对不同屏幕大小自适应,在布局上有了比以前更加灵活的空间
移动端
.scale{ position: relative; border:none; } .scale:after{ content: ''; position: absolute; bottom: 0; background: #000; width: 100%; height: 1px; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); -webkit-transform-origin: 0 0; transform-origin: 0 0; }
.wrapper{ position:relative; overflow:hidden; }
webkit-over-flow-scrolling:touch;
清浮动是为了清除使用浮动元素产生的影响。浮动的元素,高度会塌陷,而高度的塌陷使页面后面的布局不能正常显示
.clear{clear:both}
.clearfix{ zoom:1; } .clear:after{ content:'.'; height:0; clear:both; display:block; visibility:hidden; }
margin是用来隔开元素与元素的间距;padding是用来隔开元素与内容的间隔。margin是用来布局分开元素,使元素与元素互不相干;padding用于元素与内容之间的间隔,让内容与元素之间有一段间距
外边距合并指的是,当两个垂直外边距相遇时,他们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中较大者
示例:
<p class="md-warp"> <span class="md-main"></span> </p> .md-warp{ width: 400px; height: 300px; max-width: 100%; border: 1px solid #000; } .md-main{ display: block; width: 100px; height: 100px; background: #f00; }
水平居中
.md-main{ margin: 0 auto }
.md-wrap{ position:relative; } .md-main{ position:absolute; left:50%; margin-left:-50px }
有些时候元素宽度不是固定的,依然可以使用定位法实现水平居中用到css3中的transform属性中的translate
.md-warp{ position: relative; } // 注意此时md-main不设置width为100px .md-main{ position: absolute; left: 50%; -webkit-transform: translate(-50%,0); -ms-transform: translate(-50%,0); -o-transform: translate(-50%,0); transform: translate(-50%,0); }
直接使用text-align:center即可
垂直居中
和水平居中类似,只是把left:50%换成top:50%,副边距和transform属性进行对应更改即可
优点:能在各个浏览器下工作,结构简单明了,不需要增加额外的标签
.md-warp{ position: relative; } .md-main{ position: absolute; /* 核心 */ top: 50%; margin-top: -50px; }
不确定高度的时候
.md-warp{ position: relative; } .md-main{ position: absolute; top: 50%; // 注意此时md-main不设置height为100px -webkit-transform: translate(0,-50%); -ms-transform: translate(0,-50%); -o-transform: translate(0,-50%); transform: translate(0,-50%); }
需要满足两个条件:
p{ width: 400px; height: 300px; border: 1px solid #000; } span{ line-height: 300px; }
视窗单位的解决办法
让元素在视窗中居中,使用vh实现
.md-warp{ position: relative; } .md-main{ position: absolute; margin: 50vh auto 0; transform: translateY(-50%); }
Flexbox的解决方案
完成这项工作只需要两个样式,在需要水平垂直居中的父元素中设置display:flex和在水平存执居中的元素设置margin:auto
.md-wrap{ display:flex } .md-main{ display:auto }
Flexbox的实现文本的水平垂直居中同样很简单
.md-warp{ display:flex; } .md-main{ display: flex; align-items: center; justify-content: center; margin: auto; }
绝对垂直居中
.md-wrap{ position: relative; } .md-main{ position:absolute; top:0' right:0 bottom:0; left:0; margin:auto; }
最好不要使用绝对定位,因为他对整体的布局影响相当的大
相关教程推荐:CSS视频教程
Atas ialah kandungan terperinci CSS面试题(参考). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!