css常见面试题

一、css有哪些基本选择器,它们的权重是如何表示的

基本选择器:标签选择器(div),类选择器(.class), ID选择器(#id)

权重:!important>内联样式>ID选择器>类选择器>标签选择器

注意:当把选择器组合使用时,相应的层级权重也会递增

二、css引入方式

1、行内式:把样式写在元素的style属性内

2、内嵌式:把样式写在style标签内

3、外链式:通过link标签,引入css文件内的样式

三、link和@import的区别 

link@import
link是XHTML的标签,除了加载css文件,还可以加载模板等只能加载css文件
同步加载:页面载入时同时加载异步加载:等网页加载完后再加载css文件
是XHTML标签,没有兼容问题不支持低版本浏览器
支持js控制DOM和修改样式不支持js控制DOM和修改样式

 四、为什么清除浮动,怎么清除

原因:浮动会让父元素高度坍塌即父元素高度为0

方法一:为父元素添加高度

方法二:给父元素添加overflow:hidden

方法三:添加空元素,并设置clear:both

方法四:伪元素

clearfix:after {
        content " ";
        display:block;
        clear:both;
}

 五、position的值

说明
static默认值,没有定位,元素出现在正常的文档流中
relative相对定位,相对于自己在正常文档流中的位置定位
absolute绝对定位,让元素依据最近已定位的父元素进行定位,如果没有相对于根元素定位
fixed固定定位,相对于浏览器窗口进行定位
sticky粘性定位,根据正常文档流计算得出

 六、 position:absolute和float属性的异同

相同点:对内联元素设置float和absolute属性,可以让元素脱离文档流,并且可以设置宽高

不同点:

float仍可占据位置,不会覆盖在另一个BFC区域上,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止

absolute会覆盖文档流中的其他元素,即遮盖现象。

七、css选择器有哪些

1、标签选择器(div,span,h1)

2、类选择器(.class)

3、ID选择器(#my)

4、后代选择器(div  p)

5、子选择器(div>p)

6、相邻选择器(p+a)

7、通配符选择器(*)

8、属性选择器(button[disabled="true"])

9、伪类选择器(li:nth-child):表示一种状态

10、伪元素选择器(li::before):文档某个部分的表现

注意:伪类用单冒号:表示,伪元素用双冒号表示::

八、css有哪些样式可以继承,哪些不可以继承

可继承:font-size  font-family  color

不可继承:width  height  margin  padding  border

总结:与字体相关的样式可以继承,与尺寸相关的样式不能继承

九、css优先级 

!important>style(内联)>id>class>标签

十、为什么要初始化css 

因为浏览器的兼容问题,不同浏览器对标签的默认值不同,如果没有初始化css,会导致页面在不同浏览器出现差异

十一、让元素水平垂直居中 

方法一:flex布局

方法二:定位+margin(margin左右值为盒子的一半,前提是知道盒子的大小) 

方法三:定位+平移

方法四:定位+margin(top  bottom  left  right都为0,margin:0 auto)

十二、display有哪些值

说明
block块级元素
inline行内元素
inline-block行内块元素
none隐藏
list-item像块元素一样显示,并添加样式列表标记
table元素会作为块级表格显示
inherit从父元素继承display的值

 十三、两栏布局,左边定宽,右边自适应

方法一:flex布局

 <div>两栏布局</div>
        <div class="box">
            <div class="left"></div>
            <div class="right"></div>
        </div>

 <style>
            /* 两栏布局flex */
            .box {
                display: flex;
            }
            .box .left {
                width: 200px;
                height: 200px;
                background-color: salmon;
            }
            .box .right {
                flex: 1;
                height: 200px;
                background-color: aquamarine;
            }
 </style>

方法二:浮动

<style>

/* 浮动 */
            .box2 {
                overflow: hidden;
            }
            .box2 .left {
                float: left;
                width: 200px;
                height: 200px;
                background-color: aquamarine;
            }
            .box2 .right {
                height: 200px;
                background-color: khaki;
            }
</style>

<div class="box2">
            <div class="left"></div>
            <div class="right"></div>
</div>

十四、三栏布局,左右定宽,中间自适应 

方法一:flex布局

<style>
 .box3 {
                display: flex;
            }
            .box3 .left {
                width: 200px;
                height: 200px;
                background-color: palegreen;
            }
            .box3 .mid {
                flex: 1;
                height: 200px;
                background-color: pink;
            }
            .box3 .right {
                width: 200px;
                height: 200px;
                background-color: khaki;
            }
</style>

<div class="box3">
            <div class="left"></div>
            <div class="mid"></div>
            <div class="right"></div>
</div>

方法二:定位

<style>
.box4 {
                position: relative;
                margin-top: 50px;
            }
            .box4 .left {
                position: absolute;
                top: 0;
                left: 0;
                width: 200px;
                height: 600px;
                background-color: pink;
            }
            .box4 .mid {
                height: 600px;
                background-color: yellowgreen;
            }
            .box4 .right {
                position: absolute;
                top: 0;
                right: 0;
                width: 200px;
                height: 600px;
                background-color: skyblue;
            }
</style>
<div class="box4">
            <div class="left"></div>
            <div class="mid"></div>
            <div class="right"></div>
</div>

十五、解释一下css sprite,在页面或网站怎么使用

介绍:把一些背景图片整合到一张图片文件中,再利用css的background-image  background-repeat  background-position等进行背景定位 ,background-position可以用数字定位出背景图片的位置

优点:减少网页的http请求,提高页面性能

缺点:不好维护(例如图片位置进行修改或者内容宽高修改)

十六、隐藏元素的方法

方法说明
display:none;隐藏元素,不占据位置,不会响应元素绑定的监听事件
visibility:hidden隐藏元素,会占据位置,不会响应元素绑定的监听事件
opacity:0隐藏元素,会占据位置,会响应元素绑定的监听事件
transform:scale(0,0)将元素缩放为 0,以此来实现元素的隐藏。会占据位置,不会响应元素绑定的监听事件

 十七、行内元素可以实现浮动吗

在css中,任何元素都可以浮动

十八、描述css中content属性的作用 

介绍:content属性和::before 和 ::after 伪元素配合使用,用来插入生成的内容,可以在元素之前或者之后放置生成的内容,可插入文本,图像,引号,编号等

示例:

 .title::before {
                content: '第';
            }
  .title::after {
                content: '篇';
            }

 <h1 class="title">1</h1>

十九、如何定义高度很小的容器

因为有一个默认的行高,所以在ie6下无法定义小高度的容器

方法一:overflow:hidden

方法二: font-size:容器高度

二十、如何在图片下方设置几像素的空白间隙

定义img为块级元素

二十一、如何解决ie6双倍margin的bug 

将元素设置为行内元素

二十二、单行文本超出隐藏显示省略号,多行文本超出隐藏显示省略号 

二十三、英文单词词内断行 

word-wrap:break-word

二十四、px  rem  em  vw  vh 

px:绝对单位长度,值指定为多少就是多少

rem :相对于根元素字体大小而言

em:相对于父元素大小而言

vw:视口宽度的1%

vh:视口高度的1%

二十五、网页制作会用到那些图片格式

格式说明
jpg压缩率高,文件小
PNG支持无损压缩,色彩损失小,保真度高,文件稍大
GIF支持动画显示,但只支持256色显示,目前已经被fash大量取代

 二十六、谈谈你对BFC规范的理解

介绍:BFC块级格式化上下文,即创建新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素

特点:

决定元素如何对其内容进行布局,也决定与其他元素的关系和相互作用

二十七、 访问超链接后 hover样式就不出现的原因是什么?应该如何解决?

 因为访问过的超链接样式覆盖了原有的 hover和 active伪类选择器样式,解决方法是将CSS属性的排列顺序改为L→V→H→A(link, visited, hover, active)。

二十八、CSS中可以让文字在垂直和水平方向上重叠的两个属性是什么?

 垂直方向的属性是 line-height.水平方向的属性是 letter-spacing。

 letter- spacing可以用于消除 inline- block元素间的换行符空格间隙

二十九、浏览器标准模式和怪异模式之间的区别是什么(包斗斗传媒)

标准模式:按浏览器支持的最高标准来运行

怪异模式 :向后兼容

区别:盒子模型的渲染模式不同

可以使用 window. top document compatMode判断当前模式为何种模式结果为 Back Compat,表示怪异模式结果为 CSSICompat,表示标准模式。

三十、css中自适应的单位有哪些

  • 百分比:%

  • 相对于视口宽度的单位:ww

  • 相对于视口高度的单位:vh

  • 相对于父元素字体大小的单位:em

  • 相对于根元素字体大小的单位:rem

  • 相对于视口宽度或者高度(取决于哪个小)的单位:Vm

三十一、css中的盒模型 

介绍:分为内容、内边距、边框、外边距

分类:标准盒模型(content-box)  怪异(IE)盒模型(border-box)

区别:计算方式不同

标准盒模型:width  height只包含content,不包含border和padding

怪异盒模型:width  height包含content+padding+border

 三十二、flex布局

三十三、如果需要手写动画,你认为最小间隔是多久,为什么 

 多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms=16.7ms

三十四、有一个高度自适应的盒子,里面有两个div,一个高度为100px,如何让另一个填满剩下的高度 

方法一: 外层div使用position:relative;高度要求自适应的div使用position:absolute;top:100px;bottom:0;
left:0;right:0;

方法二:使用flex布局,设置主轴为竖轴,第二个div的flex-grow为1。

三十五、css3新特性

三十六、用纯css创建三角形的原理是什么 

介绍:把元素的宽高设为0,然后设置边框样式,将所有边框设为透明,然后再设置一边为你想要的边框颜色

示例:


{
width: 0;
height: 0;
border-top: 40px solid transparent;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
border-bottom: 40px solid #ff0000;
}
或者简写
{
width: 0;
height: 0;
border: 40px solid transparent;
border-bottom: 40px solid #ff0000;
}

 三十七、什么是响应式布局,基本原理是什么,如何兼容低版本的IE

介绍:一个网站兼容多个多个终端,而不是为每一个终端 做一个特定的版本

原理:通过媒体查询检测不同的设备屏幕尺寸做处理

兼容:页面头部必须有meta声明的viewport

<meta name=’viewport’ content=”width=device-width, initial-scale=1. maximum-scale=1,user-scalable=no”>

三十八、怎么让Chrome支持小于12px 的文字?

p{font-size:10px;-webkit-transform:scale(0.8);} //0.8是缩放比例

四十、transition和animation的异同点

 相同点:随时间改变元素的属性值

不同点:

transitionanimation
需要触发事件才能改变属性不需要触发事件就能改变属性值
时间为2帧可以是一帧一帧的

示例:

.box {
	border: 1px solid #000;
	display: block;
	width: 100px;
	height: 100px;
	background-color: #0000FF;
	-webkit-transition:width 2s, height 2s,
	background-color 2s, -webkit-transform 2s;
	transition:width 2s, height 2s, background-color 2s, transform 2s;
}
.box:hover {
	background-color: #FFCCCC;
	width:200px;
	height:200px;
	-webkit-transform:rotate(180deg);
	transform:rotate(180deg);
}

四十一、主流浏览器的内核

浏览器内核
Chrome,OperaBlink内核(基于webkit)
IEtrident内核 [‘traidnt ]
Firefoxgecko 内核 [ˈɡekəʊ]
Safairwebkit内核

 四十二、一个页面有大量图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载

1、使用精灵图

2、图片懒加载

3、图片预加载,如果为幻灯片、相册等,将当前展示图片的前一张和后一张优先下载

 四十三、opacity和rgba的异同点

相同点:实现透明度效果

不同点:

区别点opacityrgba
取值取值范围0到1,0表示完全透明,1表示不透明取值在正整数或者百分数
继承会继承父元素的opacity属性值不会继承父元素的rgba属性值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值