zoukankan      html  css  js  c++  java
  • CSS常见面试问题

    *属性值的简写形式

    ①如果给出两个属性值,前者表示上下的属性,后者表示左右的属性。
    ②如果给出三个属性值,前者表示上的属性,中间数值表示左右的属性,后者表示下的属性。
    ③如果给出四个属性值,则表示上、右、下、左的属性。即顺时针排序。

    * 请问 "resetting" 和 "normalizing" CSS 之间的区别?你会如何选择,为什么?

    resetting:直接重置所有格式,没有任何前提性质的。normalizing:重置部分格式的。

    所以建议在设置的时候使用 normalizing进行重置,避免造成所有数据丢失。resetting 这个需要谨慎使用
    * 请解释浮动 (Floats) 及其工作原理。

    float即为浮动,在CSS中的作用是使元素脱离正常的文档流并使其移动到其父元素的“最左边”或“最右边”。下面解释下这个定义中的几个名词的概念:

    • 文档流:在html中文档流即为元素从上至下排列的顺序。
    • 脱离文档流:元素从正常的排列顺序被抽离。
    • 最左边/最右边:上述的移动到父元素最左和最右是指元素往左或往右移动直到碰到另一个浮动元素或父元素内容区的边界(不包括padding)。


    * 描述`z-index`和叠加上下文是如何形成的。
    * 请描述 BFC(Block Formatting Context) 及其如何工作。
    * 列举不同的清除浮动的技巧,并指出它们各自适用的使用场景。

    方法一:使用带clear属性的空元素

    在浮动元素后使用一个空元素如<div class="clear"></div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用<br class="clear" />或<hr class="clear" />来进行清理。

    方法二:使用CSS的overflow属性

    给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。

    在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。

    方法三:给浮动的元素的容器添加浮动

    给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使其整体浮动,影响布局,不推荐使用。

    方法四:使用邻接元素处理

    什么都不做,给浮动元素后面的元素添加clear属性。

    方法五:使用CSS的:after伪元素

    结合 :after 伪元素(注意这不是伪类,而是伪元素,代表一个元素之后最近的元素)和 IEhack ,可以完美兼容当前主流的各大浏览器,这里的 IEhack 指的是触发 hasLayout。

    给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动


    * 请解释 CSS sprites,以及你要如何在页面或网站中实现它。

    CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置。
    * 你最喜欢的图片替换方法是什么,你如何选择使用。
    * 你会如何解决特定浏览器的样式问题?
    * 如何为有功能限制的浏览器提供网页?
    * 你会使用哪些技术和处理方法?
    * 有哪些的隐藏内容的方法 (如果同时还要保证屏幕阅读器可用呢)?
    * 你用过栅格系统 (grid system) 吗?如果使用过,你最喜欢哪种?
    * 你用过媒体查询,或针对移动端的布局/CSS 吗?
    * 你熟悉 SVG 样式的书写吗?
    * 如何优化网页的打印样式?
    * 在书写高效 CSS 时会有哪些问题需要考虑?
    * 使用 CSS 预处理器的优缺点有哪些?
    * 请描述你曾经使用过的 CSS 预处理器的优缺点。
    * 如果设计中使用了非标准的字体,你该如何去实现?
    * 请解释浏览器是如何判断元素是否匹配某个 CSS 选择器?
    * 请描述伪元素 (pseudo-elements) 及其用途。
    * 请解释你对盒模型的理解,以及如何在 CSS 中告诉浏览器使用不同的盒模型来渲染你的布局。
    * 请解释 ```* { box-sizing: border-box; }``` 的作用, 并且说明使用它有什么好处?

    box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box。

    content-box,border和padding不计算入width之内

    padding-box,padding计算入width内

    border-box,border和padding计算入width之内


    * 请罗列出你所知道的 display 属性的全部值
    * 请解释 inline 和 inline-block 的区别?

    总体概念

    1. block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素)。block元素通常被现实为独立的一块,会单独换一行;inline元素则前后不会产生换行,一系列inline元素都在一行内显示,直到该行排满。
    2. 大体来说HTML元素各有其自身的布局级别(block元素还是inline元素):
      • 常见的块级元素有 DIV, FORM, TABLE, P, PRE, H1~H6, DL, OL, UL 等。
      • 常见的内联元素有 SPAN, A, STRONG, EM, LABEL, INPUT, SELECT, TEXTAREA, IMG, BR 等。
    3. block元素可以包含block元素和inline元素;但inline元素只能包含inline元素。要注意的是这个是个大概的说法,每个特定的元素能包含的元素也是特定的,所以具体到个别元素上,这条规律是不适用的。比如 P 元素,只能包含inline元素,而不能包含block元素。
    4. 一般来说,可以通过display:inline和display:block的设置,改变元素的布局级别。

    block,inline和inlinke-block细节对比

    • display:block
      1. block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
      2. block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。
      3. block元素可以设置margin和padding属性。
    • display:inline
      1. inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
      2. inline元素设置width,height属性无效。
      3. inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
    • display:inline-block
      1. 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。

    补充说明

    • 一般我们会用display:block,display:inline或者display:inline-block来调整元素的布局级别,其实display的参数远远不止这三种,仅仅是比较常用而已。
    • IE(低版本IE)本来是不支持inline-block的,所以在IE中对内联元素使用display:inline-block,理论上IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表象。


    * 请解释 relative、fixed、absolute 和 static 元素的区别

    1、static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。

    2、relative:生成相对定位的元素,通过top,bottom,left,right的设置相对于其正常位置进行定位。可通过z-index进行层次分级。

    3、absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。可通过z-index进行层次分级。

    4、fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。可通过z-index进行层次分级。


    * CSS 中字母 'C' 的意思是叠层 (Cascading)。请问在确定样式的过程中优先级是如何决定的 (请举例)?如何有效使用此系统?
    * 你在开发或生产环境中使用过哪些 CSS 框架?你觉得应该如何改善他们?
    * 请问你有尝试过 CSS Flexbox 或者 Grid 标准规格吗?
    * 为什么响应式设计 (responsive design) 和自适应设计 (adaptive design) 不同?
    * 你有兼容 retina 屏幕的经历吗?如果有,在什么地方使用了何种技术?
    * 请问为何要使用 `translate()` 而非 *absolute positioning*,或反之的理由?为什么?

  • 相关阅读:
    python set
    python中%d %2d %02d %-2d% %.2d的区别
    python dict(字典)
    python 300本电子书合集
    python tuple元组
    python end用法
    python 找出第二大值
    GPU大百科全书 第二章 凝固生命的光栅化
    GPU大百科全书 第一章:美女 方程与几何
    Notepad++中调试用心lua程序
  • 原文地址:https://www.cnblogs.com/xiewei1412125225/p/5532833.html
Copyright © 2011-2022 走看看