CSS面试题

1.有哪些方式可以对一个DOM设置它的CSS样式?

外部样式表。引入一个外部CSS文件;

内部样式表。将CSS代码放在<head>标签内部;

内联样式,将CSS样式直接定义在HTML元素内部;

2.CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器的可视范围内?

最基本的:

设置display属性为none,或者设置visiblity为hidden

技巧性:

设置高度为0, 设置透明度为0,设置z-index位置在-1000

3.超链接访问过后hover样式就不出现的问题时什么?如何解决?

被点击访问过的超链接样式不再具有hover和active了,解决方式是改变CSS属性的排列顺序:L-V-H-A(linked, visited, hover, active)。

4.什么是Css Hack?ie6,7,8的hack分别是什么?

针对不同的浏览器写不同的CSS Code的过程,就是CSS Hack。实例如下:

#test{
            width: 300px;
            height: 300px;

            background-color: blue;
            background-color: red\9; /*  all ie */
            background-color: yellow\0; /* ie8 */
            +background-color: pink; /* ie7 */
            _background-color: orange; /* ie6  */
            :root #test{
                background: purple\9; /* ie9 */
            }

            @media all and {min-width: 0px} #test{background-color: black\0;} /* opera */
            @media screen and {-webkit-min-device-pixel-ratio: 0 } {#test {background-color: gray}} /* chrome and safari */
        }

@media可以针对不同的媒体类型定义不同的样式。特别是如果你需要设计响应式的页面,@media是非常有用的。当你重置浏览器大小的过程中,页面也会根据浏览器宽度和高度重新渲染页面。

5.行内元素和块级元素的具体区别是什么?行内元素的padding和margin可设置吗?

块级元素(block)特性:

总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示。

width、height、padding(内边距)、margin(外边距)都可控制。

内联元素(inline)特性:

宽度、高度、内边距的padding-top/padding-bottom和外边距的margin-top、margin-bottom都不可改变(也就是padding和margin的left和right是可以设置的)。

这里还有其他问题。浏览器还有默认的天生inline-block元素(拥有内在尺寸,可设置高宽,但不会自动换行),有哪些元素是天生inline-block元素?

它们是<input>、<img>、<button>、<textare>、<label> 。

6.rgba()和opacity的透明效果有什么区别?

rgba()和opacity都能实现透明效果,但最大的不同是opacity作用于元素,以及元素内的所有内容的透明度,而rgba()只作用于元素的颜色或起背景色。设置rgba透明的元素的子元素不会继承透明效果。

7.CSS中可以让文字在垂直和水平方向重叠的两个属性分别是什么?

垂直方向:line-height。设置成比字体高度还小就可以让两行重叠

水平方向:letter-spacing。设置为负值即可实现重叠。

8.如何垂直居中一个浮动元素?

下面代码分别实现了已知元素高度、未知元素高度、图片的垂直居中方法。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>垂直居中一个浮动元素</title>
    <style type="text/css">
        #div1 {
            background-color:#6699ff;
            width: 200px;
            height: 200px;

            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -100px;
            margin-left: -100px;
        }

        #div2{
            width: 200px;
            height: 200px;
            background-color: #6699ff;

            margin: auto;
            position: absolute;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
        }

        #container{
            width: 600px;
            height: 600px;
            background: hotpink;

            display: table-cell;
            text-align: center;
            vertical-align: middle;
        }
    </style>
</head>
<body>
    <div style="background:hotpink; width: 600px; height: 600px; position: relative;">
        <div id="div1">
            方法一:已知元素的高宽
        </div>
    </div>
    <br>
    <div style="background:hotpink; width: 600px; height: 600px; position: relative;">
        <div id="div2">
            方法二:未知元素的高宽
        </div>
    </div>
    <br>
    <div id="container">
        <img width="200px" height="200px" src="assets/images/mug.jpg">
    </div>
</body>
</html>

9.px和em的区别

px和em都是长度单位,区别是,px的值是固定的,指定是多少就是多少,计算比较容易。em的值不是固定的,并且em会继承父级元素的字体大小。

浏览器的默认字体高度都是16px。所以未经调整的浏览器都符合:1em=16px。那么12px=0.75em, 10px = 0.625em。

10.描述一个“reset”的css文件并如何使用它。知道normalize.css吗?你了解他们的不同之处吗?

重置样式非常多,凡是一个前端开发人员肯定会有一个常用的重置css文件并知道如何使用它们。他们是盲目的在做还是知道为什么这么做呢?原因是不同的浏览器对一些元素有不同的的默认样式,如果你不处理,在不同浏览器下回存在必要的风险,或者更有戏剧性发生。

你可能会用Normalize来代替你的重置样式文件。它没有重置所有的样式风格,但仅提供一套合理的默认样式值。既能够让众多浏览器达到一致和合理,但不扰乱其他的东西(如粗体的标题)。

11.Sass、Less是什么?大家为什么要使用他们?

他们是CSS预处理器。他是CSS上的一种抽象层。它们是一种特殊的语法、语言编译成CSS。

例如Less是一种动态样式语言。将CSS赋予了动态语言的特性,如变量,继承,运算,函数。Less即可以在客户端上运行(支持IE6+,Webkit,Firefox),也可以在服务端运行(借助Node.js)。

Sass变量必须是$开始,而Less变量必须使用@符号开始。

为什么要使用它们?

结构清晰,便于扩展。

可以方便地屏蔽浏览器私有语法差异。这个不用多说,封装对浏览器语法差异的重复处理,减少无异议的机械劳动。

可以轻松实现多重继承。

完全兼容CSS代码,可以方便地应用到老项目中。Less只是在CSS语法上做了扩展,所以老的CSS代码也可以与Less代码一同编译。

12.display:none和visiblity:hidden的区别是什么?

display:隐藏对应元素但不挤占该元素原来的空间。

visiblity: 隐藏对应的元素并且挤占该元素原来的空间。

即是,使用CSS display:none属性后,HTML元素(对象)的宽度、高度等各种属性都将“丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置任然存在。

13.知道css有个content属性吗?有什么用?有什么应用?

知道。CSS的content属性专门应用在before/after伪元素上,用来插入生成内容。

最常见的应用是利用伪类清除浮动:

CSS Code复制内容到剪贴板
//一种常见利用伪类清除浮动的代码
 .clearfix:after {
    content:".";       //这里利用到了content属性
    display:block;
    height:0;
    visibility:hidden;
    clear:both; }   

.clearfix {
    *zoom:1;
}

after伪元素通过content在元素的后面生成一个点的块级元素,再利用clear: both清除浮动。

14.盒子模型在不同浏览器上的区别

盒子模型是CSS中一个重要的概念,理解了盒子模型才能更好的排版。盒子模型有两种,分别是IE盒子模型和标准W3C盒子模型。它们对盒子模型的解释各不相同,先看看我们熟知的标准盒子模型:

从上图可以看到标准的w3c盒子模型的范围包括margin、border、padding、content,并且content部分不包含其他部分。

在来看下IE盒子模型:

从上图可以看到IE盒子模型的范围也包括margin、border、padding、content,和标准w3c盒子模型不同的是:ie盒子模型的content部分包含了border和padding。

例如:

一个盒子的margin为20px,border为1px,padding为10px,content的宽为200px、高为50px,加入用标准盒子模型解释,那么这个盒子需要占据的位置为:

宽:20*2 + 1 * 2 + 10* 2 + 200 = 262px, 高:20 * 2 + 1 * 2 + 10 * 2 + 50 = 112px。

盒子的实际大小为:宽1*2 + 10 * 2 + 200 = 222px,高1* 2 + 10 * 2 + 50 = 72px。

假如用IE盒子模型,那么盒子需要占据的位置为:

宽:20 * 2 + 200 = 240px,高:20 * 2 + 50 = 70px。

盒子的实际大小:宽200px,高50px。

一般推荐使用W3C盒子模型,怎样才算是选择了标准W3C盒子模型呢?就是在网页上加DOCKTYPE申明。如果不加,那么各个浏览器会根据自己的行为去理解网页。

CSS3增加了box-sizing属性,值包括content-box|border-box|inherit。

在我们的重置样式文件中一般也会重置这个属性,把box-sizing设置成border-box方便于排版。

时间: 2024-10-24 23:46:02

CSS面试题的相关文章

有趣的css面试题(一)

在微信公众号上看到一些有趣的CSS面试题,在此做一下记录.css是前端的基础,但是或许很多人都会忽视其一些属性和样式效果的实现,在此我也不例外,从这些面试题里,可以再次看到css强大的功能,以及从面试题的思考中改善编程思维.回到正题,先看题目一: 下面这个图形,只使用一个标签,可以有多少种方式. 左边竖条.png 先对这个div做一个初始的样式. div{ position:relative; width:200px; height:60px; background:#ddd;} 法一:添加bo

CSS面试题&amp;知识点汇总

问题&答案 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? 有两种, IE 盒子模型.W3C 盒子模型: 盒模型: 内容(content).填充(padding).边界(margin). 边框(border): 区 别: IE的content部分把 border 和 padding计算了进去; 参考资料 前端开发面试题 2019寒冬中的深圳前端面试分享(附笔试题). Web前端常见面试题汇总 结束语 下多少种,收多少苗.流多少汗,吃多少饭!人不患无位,患所以立.不患莫己知,求

html和css面试题

21.如何居中div,如何居中一个浮动元素? 给div设置一个宽度,然后添加margin:0 auto属性 div{ width:200px; margin:0 auto; } 居中一个浮动元素 确定容器的宽高 宽500 高 300 的层 设置层的外边距 .div { Width:500px ; height:300px;//高度可以不设 Margin: -150px 0 0 -250px; position:relative;相对定位 //方便看效果 left:50%; top:50%; }

记一道css面试题 : 三栏布局两边宽度固定,中间宽度自适应,并且布局随屏幕大小改变。

前几天面试时有道css题没做出来,回来好好学习一番后把其记录下来. 题目是这样的:左中右三栏布局,左右两栏宽度固定,左右两栏的宽度为200像素,中间栏宽度自适应.当屏幕小于600px时,3栏会分别占用一行.像这样 当屏幕大于600px时,是这样 我做出来用了css3的@media,如果不用这个,好吧,水平有限想不出来... 下面是代码: <!DOCTYPE> <html> <head> <style> body{ margin: 0 ; padding: 0

html和css面试题总结

1.对WEB标准以及W3C的理解与认识 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所访问.内容能被更广泛的设备所访问.更少的代码和组件,容易维护.改版方便,不需要变动页面内容.提供打印版本而不需要复制内容.提高网站易用性; 2.xhtml和html有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言 最主要的不同: XHTML 元素必须被正确地嵌套. XHTML

最基础的CSS面试题

1.Doctype作用是什么?严格模式与混杂模式分别是如何触发这两种模式的,区分它们有何意义? (1)<!DOCTYPE>声明位于文档中的最前面,处于<html>标签之前.告知浏览器的解析器,用什么文档类型规范来解析这个文档. (2)严格模式的排版和JavaScript运作模式是以该浏览器支持的最高标准运行. (3)在混杂模式中,页面以宽松的向后兼容的方式显示.模拟老式浏览器的行为以防止站点无法工作. (4)DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现. 2. 行内元素

淘宝网前端开发面试题(一)--HTML &amp; CSS 面试题

转载请注明文章来源http://www.cnblogs.com/muqiangwei/p/5569783.html 1.DOCTYPE? 严格模式不混杂模式-如何触发这两种模式,区分它们有何意义? 分析: DOCTYPE(是DOCument TYPE的缩写,即文档类型)是一组机器可读的规则,它们指示(X)HTML文档中允许有什么,不允许有什么.DOCTYPE正是用来告诉浏览器使用哪种DTD,一般放在(X)HTML文档开头表示声明,用以告诉别人这个文档的类型风格. 触发:根据不同的DTD触发,如果

css面试题总结(转)

转自此网页http://www.cnblogs.com/YangqinCao/p/5721810.html. 1.两栏布局,左边栏宽度固定,适应父元素高度变化 首先分析两栏布局, 两栏布局两种常见方法, .left{ width:200px; float:left; } .main{ margin-left:200px; } .left{ width:200px; position:absolute; top:0; left:0; } .main{ margin-left:200px; }  对

css面试试题小结

行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效.告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现.link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用:而@import是CSS提供的,只能用于加载CSS.link写在html页面中,@import写在CSS页面中页面被加载的时,link会同