Html css常见面试题

一、CSS

    1.说一下CSS的盒模型。

        在HTML页面中的所有元素都可以看成是一个盒子

        盒子的组成:内容content、内边距padding、边框border、外边距margin

        盒模型的类型:

            标准盒模型

                margin + border + padding + content

            IE盒模型

                margin + content(border + padding)

       控制盒模型的模式box-sizing:content-box(默认值,标准盒模型)、border-boxIE盒模型);

    2.CSS选择器的优先级?

        CSS的特性:继承性、层叠性、优先级

        优先级:写CSS样式的时候,会给同一个元素添加多个样式,此时谁的权重高就显示谁的样式

        标签、类/伪类/属性、全局选择器、行内样式、id、!important

        !important > 行内样式 > id > 类/伪类/属性 > 标签 > 全局选择器

                内联式 (style=””)> 嵌入式(<style></style>) > 外部式(import)

       属性选择器:input[type=password]

       伪类选择器:a:hover {color:blue }

      选择器详细:https://www.cnblogs.com/ssjd/p/12894389.html

    3.隐藏元素的方法有哪些?

        display:none;元素在页面上消失,不占据空间

        opacity:0;设置了元素的透明度为0,元素不可见,占据空间位置

        visibility:hidden;让元素消失,占据空间位置,一种不可见的状态

        position:absolute;

        clip-path

    4.px和rem的区别是什么?

        px是像素,显示器上给我们呈现画面的像素,每个像素的大小是一样,绝对单位长度

        rem,相对单位,相对于html根节点的font-size的值,直接给html节点的font-size:62.5%;

            1rem = 10px; (16px*62.5%=10px)

              

 5.重绘重排有什么区别?

        重排(回流):布局引擎会根据所有的样式计算出盒模型在页面上的位置和大小

        重绘:计算好盒模型的位置、大小和其他一些属性之后,浏览器就会根据每个盒模型的特性进行绘制

        浏览器的渲染机制

        DOM大小、位置进行修改后,浏览器需要重新计算元素的这些几何属性,就叫重排

        DOM样式进行修改,比如colorbackground-color,浏览器不需要重新计算几何属性的时候,直接绘制了该元素的新样式,那么这里就只触发了重绘

6、positon

absolute生成绝对定位的元素,相对于 static 定位以外的第一个有定位的父元素进行定位。

元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。

fixed生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。

relative生成相对定位的元素,相对于其正常位置进行定位。

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

inherit 规定应该从父元素继承 position 属性的值。

7、 css3 flex

Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。

注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效

8.清除浮动的方法

clear:both

overflow:hidden

clearfix

6.让一个元素水平垂直居中的方式有哪些?

  1.定位+margin   2.定位+transform   3.flex布局

  4.grid布局        5.table布局

(详细如下

1.flex

父元素 display: flex;justify-content: center;(水平居中)align-items: center;(垂直居中)

2.flex+auto  

父元素display: flex;(弹性盒子)

子元素margin: auto;(上下左右居中)

3.position+auto

父元素position: relative

子元素position: absolute;top:0;right:0;bottom:0;left:0;margin:auto;

4.position + translate 支持不知道宽高 支持ie9及以上

父元素position: relative;

子元素position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);

5.position+calc( )

父元素position: relative;

子元素position: absolute;top: calc(50% – 50px);left: calc(50% – 50px);)

7.CSS的哪些属性哪些可以继承?哪些不可以继承?

 CSS的三大特性:继承、层叠、优先级

  子元素可以继承父类元素的样式

        1.字体的一些属性:font

        2.文本的一些属性:line-height

        3.元素的可见性:visibility:hidden

        4.表格布局的属性:border-spacing

        5.列表的属性:list-style

        6.页面样式属性:page

        7.声音的样式属性

 8.有没有用过预处理器?

    预处理语言增加了变量、函数、混入等强大的功能

   SASS  LESS

9.画三角形 

.triangle {
      width: 0;
      height: 0;
      border-color: transparent transparent red transparent;
      border-width: 0 60px 60px 60px;
      border-style: solid;
    }

二、HTML5 CSS3

    1.语义化的理解。

        1)在写HTML页面结构时所用的标签有意义

        头部用head  主体用main  底部用foot…

          2)怎么判断页面是否语义化了?

            把CSS去掉,如果能够清晰的看出来页面结构内联式 style=””> 嵌入式(<style></style>) > 外部式(import),显示内容较为正常

          3)为什么要选择语义化?

            1.让HTML结构更加清晰明了

            2.方便团队协作,利于开发

            3.有利于爬虫和SEO

            4.能够让浏览器更好的去解析代码

            5.给用户带来良好的体验

    2.H5C3有哪些新特性?

        H5的新特性:

            1.语义化的标签

            2.新增音频视频

            3.画布canvas

            4.数据存储localstorage sessionstorage

            5.增加了表单控件 email url search…

            6.拖拽释放API

        CSS3的新特性:

            1.新增选择器:属性选择器、伪类选择器、伪元素选择器

            2.增加了媒体查询

            3.文字阴影

            4.边框

            5.盒子模型box-sizing

            6.渐变

            7.过度

            8.自定义动画

            9.背景的属性

            10.2D和3D

               11.Flex:弹性布局           

3.rem是如何做适配的?

        rem是相对长度,相对于根元素(html)的font-size属性来计算大小,通常来做移动端的适配

        rem是根据根元素font-size计算值的倍数

        比如html上的font-size:16px,给div设置宽为1.5rem,1.2rem = 16px*1.2 = 19.2px.

   4.解决了哪些移动端的兼容问题?

        1.当设置样式overflow:scroll/auto时,IOS上的华东会卡顿

            -webkit-overflow-scrolling:touch;

        2.在安卓环境下placeholder文字设置行高时会偏上

            input有placeholder属性的时候不要设置行高

        3.移动端字体小于12px时异常显示

            应该先把在整体放大一倍,然后再用transform进行缩小

        4.ios下input按钮设置了disabled属性为true显示异常

            input[typy=button]{opcity:1 }

        5.安卓手机下取消语音输入按钮

            input::-webkit-input-speech-button{ display:none }

        6.IOS下取消input输入框在输入引文首字母默认大写

            <input autocapitalize=’off’ autocorrect=’off’/>

        7.禁用IOS和安卓用户选中文字

            添加全局CSS样式:-webkit-user-select:none

        8.禁止IOS弹出各种窗口  webkit-touch-callout:none

        9.禁止IOS识别长串数字为电话

            添加meta属性 <meta conten=’telephone=no’ name=’format-detection’>