1.什么是CSS预处理器
答案:CSS预处理器(CSS Preprocessor)为CSS增加编程特性,通过编译器将使用新语法的文件输出为一个普通的CSS文件,解决CSS难以服用、代码冗余、可维护性低的问题。
常用的预处理器由Less,Sass和Stylus.
2.CSS预处理器有哪些优缺点?
优点:
(1)用变量存储多次引用的信息(如颜色值、字体、边距等),只需要修改一个地方,就能让所有引用之处都随之改变。
(2)新语法中的混合(mixin)能够重用一段样式代码,可用混合将自动截取或列表中的小箭头样式组织在一起,需要这段代码的选择器只需简单引入即可。
(3)内置丰富的函数,可处理颜色、字符串、数字和选择器等,也可自定义函数,适应特定需求。
(4)可像javascript那样使用数***算,条件判断和循环。
(5)选择器可嵌套选择器,沿着嵌套的选择器链向上组合形成最终的选择器,嵌套的形式模拟出了HTML的层级结构,同时形成了命名空间,选择器之间的关系更明显,增强可读性。
(6)导入规则可让各部分代码保持独立,模块化管理,各个导入的文件最终被编译生成一个CSS文件
缺点:
(1)通过编译生成CSS文件,降低了对CSS文件的控制力,如果书写不当,编译出的CSS文件将会巨大而复杂。
(2)调试难度增加,在浏览器中调试的是编译后的CSS文件,并不是编译前的源码
(3)带来了一定的学习成本,新人需要学习预处理器的语法规则
3.什么是外边距塌陷?
答案:外边距塌陷(margin collapsing)也称为外边距合并,是指两个在正常流中相邻(兄弟或父子)的块级元素的外边距,组合在一起变成单个外边距,不过只有上下外边距才会有塌陷,左右外边距不会出现这种问题。当出现外边距塌陷时,元素的外边距可以用正数或负数来指点,使用不同的组合会改变外边距的计算方式:1.两个都是正数,取较大的2.两个都是负数,取绝对值较大的值3.一正一负,去两个值相加的和
4.dispaly:none与visibility:hidden都可隐藏元素,两者有什么区别?
答案:将CSS属性定义为none后,相当于元素没有了后代元素,在正常流中不占用任何空间,元素的真实尺寸将会丢失,还会导致浏览器的重排和重绘,而如果是visibility:hidden后,在正常流中还是会占用空间,仍具有元素的真实尺寸,只是会导致浏览器重绘
5.下列那个选项无法赋给content属性()【单选题】
a.content:123
b.content:"\6211"
c.content:no-open-quote
d.content:no-close-quote
答案:A,content属性不能用数字表示
6.链接有4种状态,包括未访问(:link)、已访问(:visited)、激活(:active)和悬停(:hover),声音的顺序是怎么样的?
答案:推荐使用LVHA的顺序,通常这4个状态会使用同一个源声明,也不会单独地给某个状态标记重要性,4个状态的特殊性也相同,因此影响权重的只有在样式表中所处的位置了。
7.什么是calc()函数,是什么有什么用?
答案:calc()是CSS的一个函数,只有一个数学表达式参数,这个函数可以处理加减乘除等数***算,并且在表达式中可混用不同的单位。
8.执行下面的代码,经计算后,p元素的真实行高是多少?
div { font-size:18px; line-height:14px; } div p { line-height:50%; }答案行高参照的元素自身的字体大小,p元素没有定义字体,需要从父元素div中继承过来,继承过来的值是18px,乘以50%,答案为9px;
9.CSS中background:transparent与opacity:0有什么区别?
答案:CSS中,transparent关键字相当于rgba(0,0,0,0),作为background的属性值,仅仅是将元素的背景设置为透明,元素中的内容还能显示,而opacity会把元素和内容当成一个整体,当定义为0是,两者都会透明。