有哪些CSS面试题?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
标准模型由四部分组成:
模型区分:
标准表型指的是设置box-sizing为content-box的盒子模型,一般width,height指的是content的宽高。IE盒模型指的是box-sizing为border-box的盒子。宽高的计算是content+padding+border;
可继承的样式: 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;
}
最好不要使用绝对定位,因为他对整体的布局影响相当的大
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。