css面试题

1.介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?

标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin

低版本IE盒子模型:宽度=内容宽度(content+border+padding)+ margin

2.box-sizing属性?

用来控制元素的盒子模型的解析模式,默认为content-box

context-box:W3C的标准盒子模型,设置元素的 height/width 属性指的是content部分的高/宽

border-box:IE传统盒子模型。设置元素的height/width属性指的是border + padding + content部分的高/宽

3 CSS选择器有哪些?哪些属性可以继承?

CSS选择符:id选择器(#myid)、类选择器(.myclassname)、标签选择器(div, h1, p)、相邻选择器(h1 + p)、子选择器(ul > li)、后代选择器(li a)、通配符选择器(*)、属性选择器(a[rel=”external”])、伪类选择器(a:hover, li:nth-child)

可继承的属性:font-size, font-family, color

不可继承的样式:border, padding, margin, width, height

优先级(就近原则):!important > [ id > class > tag ]

!important 比内联优先级高

4.CSS优先级算法如何计算?

元素选择符: 1

class选择符: 10

id选择符:100

元素标签:1000

!important声明的样式优先级最高,如果冲突再进行计算。

如果优先级相同,则选择最后出现的样式。

继承得到的样式的优先级最低。

5.CSS3新增伪类有那些?

p:first-of-type 选择属于其父元素的首个元素

p:last-of-type 选择属于其父元素的最后元素

p:only-of-type 选择属于其父元素唯一的元素

p:only-child 选择属于其父元素的唯一子元素

p:nth-child(2) 选择属于其父元素的第二个子元素

:enabled :disabled 表单控件的禁用状态。

:checked 单选框或复选框被选中。

6.display有哪些值?说明他们的作用?

inline(默认)–内联

none–隐藏

block–块显示

table–表格显示

list-item–项目列表

inline-block

7.position的值?

static(默认):按照正常文档流进行排列;

relative(相对定位):不脱离文档流,参考自身静态位置通过 top, bottom, left, right 定位;

absolute(绝对定位):参考距其最近一个不为static的父级元素通过top, bottom, left, right 定位;

fixed(固定定位):所固定的参照对像是可视窗口。

8.常见的兼容性问题?

不同浏览器的标签默认的margin和padding不一样。*{margin:0;padding:0;}

IE6双边距bug:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大。hack:display:inline;将其转化为行内属性。

渐进识别的方式,从总体中逐渐排除局部。首先,巧妙的使用“9”这一标记,将IE浏览器从所有情况中分离出来。接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。

9.前端页面由哪三层构成,分别是什么?作用是什么?

结构层 Html 表示层 CSS 行为层 js

10.清除浮动的几种方式,各自的优缺点

1.使用空标签清除浮动clear:both(缺点,增加无意义的标签,让人感觉很不爽)

2.使用overflow:auto(使用zoom:1用于兼容IE,缺点:内部宽高超过父级div时,会出现滚动条)

3.是用afert伪元素清除浮动(IE8以上和非IE浏览器才支持,目前:大型网站都有使用,如:腾迅,网易,新浪等等)

11.position的值, relative和absolute定位原点是?

*absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

*fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。

*relative:生成相对定位的元素,相对于其正常位置进行定位。

static 默认值。没有定位,元素出现在正常的流中

(忽略 top, bottom, left, right z-index 声明)。

inherit 规定从父元素继承 position 属性的值。

12.display:inline-block 什么时候会显示间隙?

移除空格、使用margin负值、使用font-size:0、letter-spacing、word-spacing

13.display:none和visibility:hidden的区别?

display:none  隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,

就当他从来不存在。

visibility:hidden  隐藏对应的元素,但是在文档布局中仍保留原来的空间。

14.CSS中link 和@import的区别是?

A:(1) link属于HTML标签,而@import是CSS提供的; (2) 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;(3) import只在IE5以上才能识别,而link是HTML标签,无兼容问题; (4) link方式的样式的权重 高于@import的权重.

15.经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?

* png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.

* 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。

* IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。

浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;}

这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——display:inline;将其转化为行内属性。(这个符号只有ie6会识别)

渐进识别的方式,从总体中逐渐排除局部。

首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。

接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。

css

      .bb{undefined

          background-color:#f1ee18;/*所有识别*/

          .background-color:#00deff\9; /*IE6、7、8识别*/

          +background-color:#a200ff;/*IE6、7识别*/

          _background-color:#1e0bd1;/*IE6识别*/

      }

IE下,可以使用获取常规属性的方法来获取自定义属性,

也可以使用getAttribute()获取自定义属性;

Firefox下,只能使用getAttribute()获取自定义属性。

解决方法:统一通过getAttribute()获取自定义属性。

IE下,even对象有x,y属性,但是没有pageX,pageY属性;

Firefox下,event对象有pageX,pageY属性,但是没有x,y属性。

解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。

Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,

可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。

超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺序:

L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}

16.li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?

行框的排列会受到中间空白(回车\空格)等的影响,因为空格也属于字符,这些空白也会被应用样式,占据空间,所以会有间隔,把字符大小设为0,就没有空格了。

17.position:fixed;在android下无效怎么处理?

fixed的元素是相对整个页面固定位置的,你在屏幕上滑动只是在移动这个所谓的viewport,原来的网页还好好的在那,fixed的内容也没有变过位置,

所以说并不是iOS不支持fixed,只是fixed的元素不是相对手机屏幕固定的

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>

18.css多列等高如何实现?

利用padding-bottom|margin-bottom正负值相抵;

设置父容器设置超出隐藏(overflow:hidden),这样子父容器的高度就还是它里面的列没有设定padding-bottom时的高度

当它里面的任 一列高度增加了,则父容器的高度被撑到里面最高那列的高度

其他比这列矮的列会用它们的padding-bottom补偿这部分高度差

19.行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素

行内元素有:a b span img input select strong(强调的语气)

块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p

常见的空元素:

***行内元素***:

a - 锚点,em - 强调,strong - 粗体强调,span - 定义文本内区块,i - 斜体,img - 图片,b - 粗体,label - 表格标签,select - 项目选择,textarea - 多行文本输入框,sub - 下标,

sup - 上标,q - 短引用;

***块元素***:

div - 常用块级,dl - 定义列表,dt,dd,ul- 非排序列表,li,ol-排序表单,p-段落,h1,h2,h3,h4,h5-标题,table-表格,fieldset - form控制组,form - 表单,

***空元素***:

br-换行,hr-水平分割线;

20.对WEB标准以及W3C的理解与认识?

(1)web标准规范要求,书写标签必须闭合、标签小写、不乱嵌套,可提高搜索机器人对网页内容的搜索几率;

(2)建议使用外链css和js脚本,从而达到结构与行为、结构与表现的

分离,提高页面的渲染速度,能更快地显示页面的内容;

(3)样式与标签的分离,更合理的语义化标签,使内容能被更多的用户

所访问、内容能被更广泛的设备所访问、更少的代码和组件, 从而降低

维护成本、改版更方便;

(4)不需要变动页面内容,便可提供打印版本而不需要复制内容,提高

网站易用性;遵循w3c制定的web标准,能够使用户浏览者更方便的阅读,使网页开发者之间更好的交流。

20.xhtmlhtml有什么区别?

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言;

最主要的不同:

XHTML 元素必须被正确地嵌套。

XHTML 元素必须被关闭。

标签名必须用小写字母。

XHTML 文档必须拥有根元素。

21.Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

用于声明文档使用那种规范(html/Xhtml)一般为 严格 过度 基于框架的html文档

加入XMl声明可触发,解析方式更改为IE5.5 拥有IE5.5的bug

22..为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px);

23.标签上title与alt属性的区别是什么?

alt属性是在你的图片因为某种原因不能加载时在页面显示的提示信息,它会直接输出在原本加载图片的地方;

title属性是在你鼠标悬停在该图片上时显示一个小提示,鼠标离开就没有了,有点类似jQuery的hover,你可以自己试试,另外,HTML的绝大多数标签都支持title属性,title属性就是专门做提示信息的;

24.浏览器标准模式和怪异模式之间的区别是什么?

所谓的标准模式是指,浏览器按W3C标准解析执行代码;

怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式。

浏览器解析时到底使用标准模式还是怪异模式,与你网页中的DTD声明直接相关,DTD声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载网页并显示,忽略DTD声明,将使网页进入怪异模式(quirks mode)。

盒子模型 渲染模式的不同

使用 window.top.document.compatMode 可显示为什么模式

25.清除浮动的几种方式,各自的优缺点

1.使用空标签清除浮动 clear:both(理论上能清楚任何标签,增加无意义的标签)

2.使用overflow:hidden(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)

3.是用afert伪元素清除浮动(用于非IE浏览器)

26.什么是块级格式化上下文(BFC),如何工作?

1.规范解释

  块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域。

2.通俗解释:

BFC 是一个独立的布局环境,可以理解为一个容器,在这个容器中按照一定规则进行物品摆放,并且不会影响其它环境中的物品。

如果一个元素符合触发BFC的条件,则该元素中的布局不受外部影响。

浮动元素会创建BFC,所以浮动元素内部子元素主要受浮动元素影响,两个浮动元素之间是互不影响的。

3.创建方式:

根元素或包含根元素的元素

浮动元素 float = left | right 或 inherit(≠ none)

绝对定位元素 position = absolute 或 fixed

display = inline-block | flex | inline-flex | table-cell 或 table-caption

overflow = hidden | auto 或 scroll (≠ visible)

28.css穿透点击

CSS新属性pointer-events:字面理解是点击鼠标事件,值分别是auto和none。 当使用pointer-events:none,表示它将捕获不到任何点击,而只是让事件穿透到它的下面

29.css垂直水平居中的方法?

1.父元素没有高度

父元素增加padding:10px 0;

2.父元素有高度

在父元素上设置flex,并设置justify-content和align-items为center,使得子元素水平垂直居中,不需要设置子元素

3.定位

使用absolute+margin

子绝父相+子元素四个方向都为0+margin:auto

前提条件:子元素宽高已知

使用absolute+margin

使用margin负值进行相对移动,子绝父相+left、top+margin

前提条件:子元素宽高已知

4.translate代替margin负值

ransform中translate移动就是相对自身宽高,使用translate即可代替margin的计算

transform:translate(-50%,-50%);

5.table

table-cell+vertical-align+text-align

30.移动端实现0.5px

方案1: 伪元素+scale (兼容性最好,推荐)

实现方式:给容器设置伪元素,设置绝对定位,宽高都是200%,边框是1px,然后使用transform:scale(0.5) 让伪元素缩小原来的一半,此时伪元素的边框和容器的边缘重合。

方案2: 伪元素+背景 (适合设置一条边框,没办法展示圆角)

实现方式:给容器设置伪元素,设置绝对定位,高度1px,背景图设置线性渐变,一半有颜色一半透明,视觉上只有0.5px。

方案3: 利用阴影代替边框

特点:方便,能正常展示圆角,而且能实现0.1px等更细的边框,兼容性还行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、HTML 和 CSS 1、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 2、每个 HTML 文件...
    chang_遇见缘阅读 3,085评论 0 2
  • iframe 框架有那些优缺点? 优点iframe 能够原封不动的把嵌入的网页展现出来。如果有多个网页引用 ifr...
    蛋蛋大少爷阅读 4,123评论 0 1
  • 1、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(cont...
    长城_changcheng阅读 4,413评论 0 14
  • CSS 1、介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种,IE盒子模型、W3C...
    samamoto阅读 2,669评论 0 2
  • 来自微信公众号:前端大全 1 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:...
    R_X阅读 3,085评论 0 3

友情链接更多精彩内容