面试中常见的css样式问题

276 阅读7分钟

1、position中常见的属性有哪些?它们之间的区别是什么?

  • position属性是对于元素位置设置的属性;
  • position有属性有static、absolute、relative、fixed、sticky;
 static:默认值。没有定位。
 relative:相对定位,不会脱离文档流;但是可以使用z-index进行层级分级。
 absolute:绝对定位,会脱离文档流;选取其最近的父级定位元素,如果父级position为static,absolute元素将以body坐标原点进行定位,可以通过z-index进行层级分级。
 fixed:固定定位元素,相对于浏览器窗口进行定位。
 sticky:粘性定位,定位基于用户滚动位置;它的行为就像 position:relative;而当页面滚动超出目标区域时它的表现就像 position:fixed;,它会固定在目标位置。

2、如何实现双边框

方法一、
	background:green;
	border:5px solid red;
	outline:5px solid black;
方法二、
	background:green;
	box-shadow:0 0 0 5px red,0 0 0 10px black;
说明:特点:box-shadow:几乎可以在任何属性上创建阴影
box-shadow: offset-x offset-y blur spread color position
box-shadow有六个参数 
1.offset-x 阴影在x轴的距离。正数向右偏移,负数向左偏移。
2.offset-y 阴影在y轴的距离。正数向下偏移,负数向上偏移。
3.blur 模糊的尺度, 
4.spread 阴影的扩展。
(前四个都是以px 等距离单位为单位的数值)
5.color 阴影的颜色。可以是任何合法的颜色表示法表示的数据。
6.position 阴影的位置,两种取值 
(1、outset 不用设置 默认就是外部阴影
(2、inset 阴影位于内部

3、css文本溢出隐藏

overflow:hidden   超出的文本隐藏
text-overflow:ellipsis    文本溢出用省略号显示
white-space:nowrap   溢出不换行---只能显示一行
display:-webkit-box   将对象作为弹性伸缩盒子模型显示
-webkit-box-orient:vertical    从上到下垂直排列的子元素,设置伸缩盒子子元素排列方式
-weblit-line-clamp:2  不是css规范的属性,需要组合上面的两个属性,表示显示的行数
css 第二行溢出隐藏的css格式
overflow:hidden; 
text-overflow:ellipsis;
display:-webkit-box; 
-webkit-box-orient:vertical;
-webkit-line-clamp:2; 

4、谈谈你对css盒模型的认识、标准模型和IE模型的区别

1)基本概念:标准模型+IE模型 区别在计算宽度和高度不同
标准模型:width/height是指内容的宽度和高度
IE模型:width/height内容的宽度或是高度+padding+border
2) CSS如何设置这两种模型:
box-sizing:content-box;标准模型--浏览器默认
box-sizing:border-box;IE模型

5、css优先级算法如何计算

同权重: 内联样式表(标签内部)>嵌入样式表(当前文件中)> 外部样式表(外部文件中)。
!important >  id > class > tag
 important 比 内联优先级高

6、BFC边距重叠解决方案?

BFC:块级格式化上下文
原理:BFC的渲染规则:
1)在BFC这个元素的垂直方向的边距会发生重叠
2)BFC的区域不会与浮动元素的区域重叠
3)BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素 
4)计算BFC高度的时候,浮动元素也会参与计算
6) 如何创建BFC:float不为none  、position:不为static和relative   、overflow:auto/hidden  
7) BFC的应用:在子元素外层加一个块级元素overflow:hidden(浮动布局)
注意:BFC元素即使是float也会参与计算

7、css3新增的属性以及用法

 1、box-shadow  阴影效果
 2、border-color   为边框设置多种颜色
 3、border-image   图片边框
 4、text-shadow 文本阴影
 5、text-overflow  文本截断
 6、word-warp  自动换行
 7、border-radius   圆角边框
 8、opacity       透明度
 9、box-sizing  控制盒模型的组成模式
 10、resize       元素缩放
 11、outline       外边框
 12、background-size     指定背景图片尺寸
 13、background-origin 指定背景图片从哪里开始显示
 14、background-clip指定背景图片从什么位置开始裁剪
 15、background     为一个元素指定多个背景
 16、hsl   通过色调、饱和度、亮度来指定颜色值
 17、hsla  在hsl的基础上增加透明度的设置
 18、rgba   基于rgb设置颜色,a 设置透明度

8、水平居中

1)margin:0 auto;   
满足元素定宽
元素为块级作用域或是行内元素设置display:block
margin-left或margin-right 为auto
2)定位法
满足元素定宽
元素绝对定位,并且设置left:50%
元素的负左边距margin-left为宽度的一半若元素的宽度未知则可设置transform:translateX(-50%)
3)对于单行文字直接使用text-aligin:center

9、清除浮动

1、父级添加overflow属性
.fahter{
width: 400px;
border: 1px solid deeppink;
overflow: hidden;
}
优点:代码简洁
缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素

2、使用after伪元素清除浮动(推荐使用)
.clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
content: "";
display: block;
height: 0;
clear:both;
visibility: hidden;
}
.clearfix{
*zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
}
<div class="fahter clearfix">
<div class="big">big</div>
<div class="small">small</div>
<!--<div class="clear">额外标签法</div>-->
</div>
<div class="footer"></div>
优点:符合闭合浮动思想,结构语义化正确
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout。

3、使用before和after双伪元素清除浮动
.clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
content: "";
display: block;
height: 0;
clear:both;
visibility: hidden;
}
.clearfix{
*zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
}

<body>
<div class="fahter clearfix">
<div class="big">big</div>
<div class="small">small</div>
<!--<div class="clear">额外标签法</div>-->
</div>
<div class="footer"></div>
</body>
优点:符合闭合浮动思想,结构语义化正确
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.

10、页面导入样式时,使用link和@import有什么区别

link链接方式:

<head>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

@import导入方式:

<style> 
@import url(style.css); 
</style>

区别:

1、link属于XHTML标签,除了加载CSS外,还能用于定义RSS,定义rel连接属性等作用;
2、而@import是CSS提供的,只能用于加载CSS;页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
3、import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;

11、怎么让chrome支持小于12px的字

谷歌浏览器Chrome是Webkit的内核,有一个 -webkit-text-size-adjust 的私有 CSS 属性,通过它即可实现字体大小不随终端设备或浏览器影响。CSS样式定义如下:
-webkit-text-size-adjust:none;
但是在最新版的谷歌里。已经不在支持这个属性啦,需要通过css3的transform来解决,方法如下:
<p>我是一个小于12px字</p>
p{
        font-size: 9px;
        -webkit-transform:scale(0.8);
       -o-transform: scale(1);
    }

12、行内元素和块级元素的区别

块级元素的特点:
1、独占一行
2、高度,行高以及外边距和内边距都可控制
3、它可以容纳内联元素和其他块元素
行内元素的特点:
1、和其他元素都在一行上;
2、设置高度和宽度无效;
3、设置margin只有左右有效,上下无效
4、设置padding 只有左右padding有效,上下则无效。注意元素范围是增大了,但是对元素周围的内容是没影响的。

13、px,em,rem,vw 有什么区别?

px:像素具体的尺寸单位,像我们平时用的米、厘米。
em和rem的尺寸是相对的
em:相对于它的父级font-size倍数;
rem相对于根元素及html font-size倍数;