美文网首页饥人谷技术博客
前端新手常见问题(六)-CSS常见样式2

前端新手常见问题(六)-CSS常见样式2

作者: 我要认真学前端 | 来源:发表于2017-04-07 20:46 被阅读0次

    text-align: center的作用是什么,作用在什么元素上?能让什么元素水平居中

    1、当作用于块级元素时,块级元素内的行内元素水平居中。
    2、当作用于行内元素时,如span,会使其内的文字在span的内容范围内居中。

    IE 盒模型和W3C盒模型有什么区别?

    对于两种模型这里有一张图:
    W3C盒模型和IE盒模型

    可以看到IE的盒模型与W3C盒模型的区别在与width的计算,这说明什么问题呢?我们在设置样式的时候经常会用到margin和padding还有width,对于下面html文件:从上图可以看到 IE 盒子模型的范围也包括 margin、border、padding、content,和标准 W3C 盒子模型不同的是:IE 盒子模型的 content 部分包含了 border 和 pading。

    *{ box-sizing: border-box;}的作用是什么?

    box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box。
    content-box,border和padding不计算入width之内,就是告诉浏览器采用w3c标准盒模型
    padding-box,padding计算入width内
    border-box,border和padding计算入width之内,其实就是“IE盒模型”

    line-height: 2和line-height: 200%有什么区别?

    一、区别

    区别体现在子元素继承时,如下:
    父元素设置line-height:2会直接继承给子元素,子元素根据自己的font-size再去计算子元素自己的line-height。
    父元素设置line-height:200%是计算好了line-height值,然后把这个计算值给子元素继承,子元素继承拿到的就是最终的值了。此时子元素设置font-size就对其line-height无影响了。

    二、举例

    比如父元素设置属性:font- size:14px;line-height:2,child设置font-size:26px;
    那么父元素:line-height = 14px * 2 = 28px,子元素:line-height = 26px * 2 = 52px。
    父元素设置属性:font-size:14px;line-height:200%,child设置font-size:26px;
    那么父元素:line-height = 14px * 200% = 28px,子元素:line-height = 父元素的line-height = 28px。

    inline-block有什么特性?如何去除缝隙?高度不一样的inline-block元素如何顶端对齐?

    首先说一下block,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和inline-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

    简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。

    CSS sprite 是什么?

    CSS Sprites是一种网页图片应用处理方式,就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位。

    其优点在于:

    减少网页的http请求,提高性能,这也是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;
    减少图片的字节:多张图片合并成1张图片的字节小于多张图片的字节总和;
    减少了命名困扰:只需对一张集合的图片命名,不需要对每一个小元素进行命名提高制作效率;
    更换风格方便:只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变,维护起来更加方便。

    诚然CSS Sprites是如此的强大,但是也存在一些不可忽视的缺点:

    图片合成比较麻烦;
    背景设置时,需要得到每一个背景单元的精确位置,;
    维护合成图片时,最好只是往下加图片,而不要更改已有图片。

    让一个元素"看不见"有几种方式?有什么区别?

    1、display:none
    将元素设置为display:none后,元素在页面上将彻底消失,元素本来占有的空间就会被其他元素占有,也就是说它会导致浏览器的重排和重绘。
    2、visibility:hidden
    设置元素的visibility为hidden也是一种常用的隐藏元素的方法,和display:none的区别在于,元素在页面消失后,其占据的空间依旧会保留着,所以它只会导致浏览器重绘而不会重排。
    3、opacity:0
    这种方法和visibility:hidden的一个共同点是元素隐藏后依旧占据着空间,但我们都知道,设置透明度为0后,元素只是隐身了,它依旧存在页面中。
    4、background-color: rgba(0,0,0,0.2) ; 只是背景色透明

    相关文章

      网友评论

        本文标题:前端新手常见问题(六)-CSS常见样式2

        本文链接:https://www.haomeiwen.com/subject/yfnhattx.html