美文网首页
前端实习生面试题(二)--CSS

前端实习生面试题(二)--CSS

作者: 嘻哈圣 | 来源:发表于2018-08-30 15:30 被阅读0次


    目录

    1. 介绍一下盒子模型

    2. box-sizing属性 

    3. CSS选择器的权重的概念 

    4. 介绍一下BFC 

    5. 介绍一下块级元素和内联元素的区别 

    5.    常见兼容问题 

    6.为什么要初始化css样式 

    7. 如何清除浮动(方法,优缺点,清除方法的原理) 

    8.如何水平垂直居中 

    9.  两列布局 

    10. 三列布局 

    11.栅格布局如何实现 

    12. css选择器有哪些? 

    13. Css哪些属性可以继承 

    14. Css新增伪类有哪些 

    15. px,em,rem区别 

    16. position的属性值 

    17. position:absolute与fixed的共同点和不同点 

    18. display的属性值(常用) 

    19.图片的alt和title属性有什么区别 

    20.超链接在新窗口打开应该添加什么属性 

    21.   display:none, visibility: hidden的区别 

    22.   让一个元素隐藏,有哪些css属性可以做到 

    23.   margin和padding的使用场景 

    24.   link和@import区别 

    25.css3新特性 

    1.介绍一下盒子模型

    CSS盒模型:网页设计中css技术所使用的一种思维模型。

    CSS盒模型组成:外边距(margin),边框(border),内边距(paddimg),内容(content)

    CSS盒模型分类:标准W3C盒子模型,IE盒子模型

    区别:二者的区别在于height和width的计算。

    标准W3C盒子模型:height=content  , width=content   

     IE盒子模型:height=content+padding+border, width=content+padding+border

    2.box-sizing属性

    属性主要用来控制元素盒模型的解析模式。默认值是content-box。

    content-box:让元素维持W3C的标准盒模型。元素的宽度/高度由border + padding + content的宽度/高度决定,设置width/height属性指的是content部分的宽/高

    border-box:让元素维持IE传统盒模型(IE6以下版本和IE6~7的怪异模式)。设置width/height属性指的是border + padding + content

    3.CSS选择器的权重的概念

    权重是指某一因素相对于某件事物的重要程度

    首先可以

    从css代码存放位置看权重优先级:即 内嵌样式>内部样式表>外联样式表>用户设置>浏览器默认

    从样式选择器看权重优先级:

    即!important>内联样式>ID选择器>类,伪类和属性选择器>标签选择器

    4.介绍一下BFC

    在css渲染中,bfc是按照块级盒子布局的,容器里面的子元素不会影响到外部元素。

    当float的值不是none,

    position的值不是relative和static,

    display的值不是table-cell,table-caption,inline-block中的任何一个,

    overflow的值不为visiable时可触发bfc。

    主要解决的问题:解决父元素高度塌陷,解决垂直方向上兄弟元素的margin重叠。

    5. 介绍一下块级元素和内联元素的区别

    块级元素:

    总是在新的一行上开始

    高度、行高以及内外边距都可以控制

    宽度默认是它容器的100%,除非设置一个值

    它可以容纳内联元素和其他块级元素

    内联元素:

    和其他元素都在一行

    高度,宽度以及顶部和底部外边距都不可控制

    宽度就是它的文字或图片的高度,不可改变

    内联元素只能容纳文本或其他内联元素

    常见的块级元素:divh1~h6,dl,ul,ol,p,table

    常见的内联元素:a,span ,select,strong,textarea, img,input

    替换元素:浏览器根据元素的标签和属性,来决定元素显示的具体内容,且替换元素一般都有内在尺寸input,img,select,textarea,

    非替换元素:直接将内容告诉浏览器,并将其显示出来。

    5. 常见兼容问题

    (1)png24位的图片在ie6浏览器上出现背景

    解决方案:做成PNG8

    (2)浏览器默认的margin和padding不同

    解决方案:全局margin:0;padding:0

    (3)IE6双边距问题,如果设置浮动,又设置了左或右边距,margin值会加倍

    解决方案:在float的标签样式控制中加入_display:inline,将其转换为行内元素

    (4)chrome中文界面下会默认将小于12px的文本强制按照12px显示

    解决方案:可通过加入css属性-webkit-text-size-adjust:none解决

    (5)超链接访问过后hover样式不出现,被点击访问过的超链接样式不在具有hover和active了

    解决方案:改变css属性的排列顺序即L-V-H-A

    (6)上下margin重合

    解决方案:同时采用margin-top或margin-bottom

    (7)html5,css3的新增标签和属性,低版本ie不兼容

    6.为什么要初始化css样式

    因为不同浏览器的默认样式不同,没有统一的规定,但是要兼容各个浏览器,必须要初始化css样式,如果不初始化css样式,就会造成页面展示效果出现差异

    当然,初始化样式会对SEO(搜索引擎优化)有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。

    7.如何清除浮动(方法,优缺点,清除方法的原理)

    (1) 添加额外标签

    通俗易懂,但是添加很多无意义的标签,后期维护难

    (2)父元素设置overflow:hidden

    实质触发BFC,溢出的内容会被隐藏

    (3)父元素设置浮动

    与父元素相邻的元素布局会收到影响

    (4)父元素设置display:table

    结构语义化正确,代码少,但是盒模型属性改变

    (5)使用伪元素

    .removefloat:before,.removefloat:after {

    content:"";

    display:table;

    }

    .removefloat:after { clear:both; }For IE 6/7 (trigger hasLayout)

     .removefloat { zoom:1; }

    8. 如何水平垂直居中

    水平居中:margin:0 auto;

    水平垂直居中:

    (1)子元素通过设置position:absolute;top:50%;left:50%;

    transform: translate(-50%,-50%);或者减去高度和宽度的一半

    (2)flex布局 display:flex;justify-content:center;align-items:center;

    9.两列布局

    (1)浮动float+margin-left /浮动float+bfc(overflow:hidden)

    左侧定宽

    .content{width: 100%;  height: 500px;  border: 1px solid #000; }

    .left{  background:#fcc;   width: 200px;  float: left;   }

        .right{ background: #f66;  margin-left: 210px;}或者overflow:hidden

    (2)绝对定位

    左侧定宽,右侧设置left:左侧宽度,right:0;可自适应

    .content{  position: relative;  width: 100%;  height: 500px;  border: 1px solid #000; }

        .left{ background:#fcc;  width: 200px;  position: absolute; }

        .right{ background: #f66; position: absolute; left: 210px; }

    (3)flex布局(左/右侧定宽)

    .content{  width: 100%;  height: 500px; border: 1px solid #000; display:flex; }

        .left{ background:#fcc;  width: 200px;  margin-right:10px; }

        .right{ background: #f66;  flex:1; }

    10.三列布局

    (1)绝对定位法-左右两侧绝对定位,中间margin指定左右外边距

    三个div顺序可以随意改变,但是当浏览器缩小,中间部分会压缩

    (2)自身浮动法-左右分别使用float,中间margin指定左右外边距

    中间的div必须位于最后

    (3)圣杯布局-两边定宽,中间自适应

    .bd{ padding-left:150px; padding-right:190px; overflow: hidden; }

           .left{ position: relative; background: #E79F6D; width:150px; float:left; margin-left:-100%; left:-150px; }

            .main{  background: #D6D6D6;  width:100%; float:left; }

            .right{ position: relative; background: #77BBDD; width:190px; float:left; margin-left:-190px; right:-190px; }

    (4)flex布局 父元素flex,左右两侧定宽,中间flex

    11. 栅格布局如何实现

    12. css选择器有哪些?

    (1)id选择器(# myid)

    (2)类选择器(.myclassname)

    (3)标签选择器(div, h1, p)

    (4)相邻选择器(h1 + p)

    (5)子选择器(ul > li)

    (6)后代选择器(li a)

    (7)通配符选择器( * )

    (8)属性选择器(a[rel = "external"])

    (9)伪类选择器(a: hover, li:nth-child)

    从样式选择器看权重优先级:

    即!important>内联样式>ID选择器>类,伪类和属性选择器>标签选择器

    13. Css哪些属性可以继承

    font-size,font-family,color,text-indent(首行缩进)

    14. Css新增伪类有哪些

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

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

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

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

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

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

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

    15. px,em,rem区别

    相同点:rem,px和em都是长度单位;

    异同点:px的值是固定的,指定是多少就是多少,计算比较容易。

    rem,em的值不是固定的,并且em会继承父级元素的字体大小,rem会继承根元素的字体大小,如果将根元素直接设置为10px,则可以方便计算。

    16. position的属性值

    (1)absolute 生成绝对定位的元素,相对于 static 定位以外的第一个祖先元素进行定位。

    (2)fixed 生成固定定位的元素,相对于浏览器窗口进行定位(老IE不支持)。

    (3)relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。

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

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

    17. position:absolute与fixed的共同点和不同点

    A:共同点:

    (1)改变行内元素的呈现方式,display被置为inline-block;

    (2)让元素脱离普通流,不占据空间;

    (3)默认会覆盖到非定位元素上

    B不同点:

      absolute的”根元素“是可以设置的,而fixed的”根元素“固定为浏览器窗口。

    当你滚动网页,fixed元素与浏览器窗口之间的距离是不变的。

    18. display的属性值(常用)

    (1)block 块状元素

    (2)inline 行内元素

    (3)inline-block行内元素,但内容像块状元素一样显示

    (4)list-item 块状元素,并添加样式列表标记(像ul一样,前面添加黑点)

    19. 图片的alt和title属性有什么区别

    title无论是文字链接还是图片上,鼠标放上去的时候,会弹出一段说明,这就是title

    alt 则是当图片不存在或载入出错时,该文字则出现,代替该图片

    20. 超链接在新窗口打开应该添加什么属性

    target="_blank“     _self表示“相同窗口”。点击链接后,地址栏不变;_top表示整页窗口;   _parent表示父窗口。

    21. display:none, visibility: hidden的区别

    display:none,元素会变得不可见,并且不会再占用文档的空间。

    visibility:hidden元素会变得不可见,依旧会占用文档的空间。

    22. 让一个元素隐藏,有哪些css属性可以做到

    1.display:none

    2.visibility:hidden

    3.opacity:0效果和visibility:hidden一样,但是可以被transition和animate。

    23. margin和padding的使用场景

    何时应当使用margin:

        (1)需要在border外侧添加空白时,

        (2)空白处不需要有背景(色)时,

        (3)上下相连的两个盒子之间的空白需要相互抵消时,比如15px+20px的margin,将得到20px的空白(注意地方见第三点)。

        何时应当使用padding

        (1)需要在border内侧添加空白时(往往是文字与边框距离的设置),

        (2)空白处需要背景(色)时,

        (3)上下相连的两个盒子之间的空白希望等于两者之和时,比如15px+20px的padding,将得到35px的空白。

        margin使用时应该注意的地方

        margin在垂直方向上相邻的值相同时会发生叠加,水平方向上相邻的值会相加。margin取负值时,在垂直方向上,两个元素的边界仍然会重叠。但是,此时一个为正值,一个为负值,并不是取其中较大的值,而是用正边界减去负边界的绝对值,也就是说,把正的边界值和负的边界值相加。

    24. link和@import区别

    (1) link属于HTML标签,而@import是CSS提供的;

    (2) 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;

       import只在IE5以上才能识别,而link是HTML标签,无兼容问题;

    25.css3 新特性

    (1)圆角(border-radius),阴影(box-shadow)

    (2)文字加特效(text-shadow),线性渐变(gradient),变换(transform)

    旋转rotate   缩放 scale   定位 translate  倾斜 skew

    (3)新增伪类::selection

    (4)媒体查询

    当前html字符编码

    浏览器兼容模式

    设置视口

    相关文章

      网友评论

          本文标题:前端实习生面试题(二)--CSS

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