zoukankan      html  css  js  c++  java
  • HTML+CSS面试知识点分享(二)

    position的属性有哪些,区别是什么?


     relative:元素的定位是相对于元素自身位置进行定位,和其它元素没有关系,也不会影响其它元素

    fixed:是相对于window进行定位的,和其它元素没有关系

    absolute:浏览器会递归查找该元素的所有父元素,如果找到有一个设置了position:relative/absolute/fixed的元素,就以该元素为基准定位,没找到就以浏览器边界进行定位


     display:nonevisibility:hidden的区别?


     相同点:都可以实现元素的隐藏,点击该区域不会触发事件

    不同点:

    1. display:none不会在页面中占据空间位置,切换属性状态会触发回流

    2. visibility:hidden会占据空间,切换visibility属性不会有回流,  visibility具有继承性,如果给父元素设置这个属性,那么它的子元素也会继承


    对盒子模型的理解?


     css3中的盒模型有两种:IE盒模型 、W3C标准盒模型

    相同点:都是四个部分组成,分别 margin、padding、border、content

    不同点:

    1. W3C标准盒模型,width和height只包含了content

    2. IE盒模型,width和height包含了border、padding和content

    3.可以通过设置bix-sizing属性来改变盒子模型:box-sizeing: content-box:表示标准盒模型  box-sizeing: border-box:表示IE盒模型


     SCSS、LESS是什么? 为什么要使用它们?


    都是css预处理器,是css上的一种抽象层,原始的css写法都是静态写法概念,不具备复用性,less是一种动态样式语言,将css赋予了动态语言的特性,例如:变量,继承等

    为什么使用:

    1. 结构清晰,便于扩展

    2. 全兼容css代码,可以方便的应用到老项目中

    3. 可以屏蔽浏览器私有的语法差异,减少无意义的机械劳动

    4. 可以轻松实现多种继承


    对媒体查询的理解?


    媒体查询主要是由一套表达式组成,最终会被解析成true或者是false

    使用@media查询的时候,能针对不同的媒体类型定义不同的样式,也可以针对不同的屏幕尺寸设置不同的样式,特别是设计响应式的页面


    对Flex布局的理解


    设置Flex布局后,子元素的float、clear和vertical-align属性都会失效

    Flex布局是CSS3新增的一种布局方式,可以通过将一个元素的display属性值设置为flex从而使它成为一个flex容器,它的所有子元素都会成为它的项目。一个容器默认有两条轴:一个是水平的主轴,一个是与主轴垂直的交叉轴。可以使用flex-direction来指定主轴的方向。可以使用justify-content来指定元素在主轴上的排列方式,使用align-items来指定元素在交叉轴上的排列方式。还可以使用flex-wrap来规定当一行排列不下时的换行方式。对于容器中的项目,可以使用order属性来指定项目的排列顺序,还可以使用flex-grow来指定当排列空间有剩余的时候,项目的放大比例,还可以使用flex-shrink来指定当排列空间不足时,项目的缩小比例。


     什么是margin重叠问题?如何解决?


    计算原则: 折叠合并后外边距的计算原则如下:

    1. 如果两者都是正数,那么就去最大者

    2. 如果是一正一负,就会正值减去负值的绝对值

    3.两个都是负值时,用0减去两个中绝对值大的那个

    解决办法: 对于折叠的情况,主要有两种:兄弟之间重叠和父子之间重叠

    (1)兄弟之间重叠:

    1. 底部元素变为行内盒子:display: inline-block

    2. 底部元素设置浮动:float

    3. 底部元素的position的值为:absoulte或者fixed

    (2)父子之间重叠:

    1. 父元素加入:overflow: hidden

    2. 父元素添加透明边框:border:1px solid transparent

    3.子元素变为行内盒子:display: inline-block

    4. 子元素加入浮动属性或定位


     两栏布局的实现?


     1.利用浮动,将左边元素宽度设置为200px,并且设置向左浮动。将右边元素的margin-left设置为200px,宽度设置为auto(默认为auto,撑满整个父元素)

     2.利用浮动,左侧元素设置固定大小,并左浮动,右侧元素设置overflow: hidden; 这样右边就触发了BFC,BFC的区域不会与浮动元素发生重叠,所以两侧就不会发生重叠。

     3.利用flex布局,将左边元素设置为固定宽度200px,将右边的元素设置为flex:1

    4.利用绝对定位,将父级元素设置为相对定位。左边元素设置为absolute定位,并且宽度设置为200px。将右边元素的margin-left的值设置为200px。

    5.利用绝对定位,将父级元素设置为相对定位。左边元素宽度设置为200px,右边元素设置为绝对定位,左边定位为200px,其余方向定位为0。


     三栏布局的实现?


     1. 利用绝对定位,左右两栏设置成绝对定位,中间设置成对应大小的margin 的值

     2.利用flex布局,左右两栏设置为固定大小,中间一栏设置为flex:1

     3. 利用浮动,左右两栏设置固定大小,并设置对应方向的浮动。中间一栏设置左右两个方向的margin值,注意这种方式**,中间一栏必须放到最后:**

     4. 圣杯布局,利用浮动和负边距来实现。父级元素设置左右的 padding,三列均设置向左浮动,中间一列放在最前面,宽度设置为父级元素的宽度,因此后面两列都被挤到了下一行,通过设置 margin 负值将其移动到上一行,再利用相对定位,定位到两边。

     5.双飞翼布局,双飞翼布局相对于圣杯布局来说,左右位置的保留是通过中间列的 margin 值来实现的,而不是通过父元素的 padding 来实现的。本质上来说,也是通过浮动和外边距负值来实现的。


     水平居中和垂直居中的实现?(十六种方法)

    1. 如果是行内元素, 给其父元素设置 text-align:center,即可实现行内元素水平居中

    2.如果是块级元素, 该元素设置 margin:0 auto即可.

    3. 如果子元素包含 float:left 属性, 为了让子元素水平居中, 则可让父元素宽度设置为fit-content,并且配合margin, 作如下设置

    .parent{
           -moz-fit-content;
           -webkit-fit-content;
          fit-content;
          margin:0 auto;
    }

     4.使用flex布局,通过align-items:center和justify-content:centent设置容器的垂直和水平方向上为居中对齐,然后它的子元素也能实现水平居中和垂直居中

    .parent {
               display: flex;
               justify-content: center;
               align-items: center
            }

     5.利用绝对定位,设置四个方向值都是0,讲margin设成auto,由于宽高固定,对应方向实现平分,可以实现水平居中和垂直居中

     .parent {
               position: relative;
            }
    
     .child {
              position: absolute;
              left: 0;
              right: 0;
              top: 0;
              bottom: 0;
              margin: auto;
            }

    6.利用绝对定位,先将元素的左上角通过top:50%和left:50%定位到页面的中心,然后再通过margin负值来调整元素的中心点到页面的中心。

    .parent {
                position: relative;
            }
    
            .child {
                position: absolute;
                left: 50%;
                top: 50%;
                margin-top: -50px;
                margin-left: -50px;
            }

     对BFC的理解,如何创建BFC?

     什么是BFC

    1.Block Formatting Contexts 即块级格式化上下文,它是一个独立的渲染区域 

    2. BFC是一个独立的盒子,这个盒子里面的布局不会影响外部元素,其本身也不会受到外部元素的影响

    触发(创建)BFC的条件

    * 根元素 body

    * float属性不为none(如:left | right)

    * overflow的值不为visible(如:hidden | auto | scroll)

    * display属性值为inline-block | flex | inline-flex | table-cell | table-caption

    * position为absolute或fixed

    应用BFC

    解决margin重叠问题:BFC是一个独立的区域,外部元素和内部元素不会相互影响,将两个元素都变为BFC,就解决了margin重叠的问题

    解决高度塌陷:常用办法是给父元素设置overflow:hidden

    创建自适应两栏布局:左边宽度固定,右边宽度自适应

    BFC特点

    是独立的容器,内部的元素不会影响外部元素

    计算BFC的高度时,浮动元素也会参与计算

    内部的Box会在垂直方向,一个接一个地放置

    Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠  

  • 相关阅读:
    例6-5
    例7-1+7-2
    例6-2+6-3
    习题二(3)
    习题二(1)
    课堂作业4
    课堂作业3
    实验三 利用循环计算n个圆柱体体积。
    实验三 编写求圆面积的程序,要求当输入的半径r<=0时,提示输入错误,要求r为浮点型,r的数值是动态的由键盘输入;
    心得3
  • 原文地址:https://www.cnblogs.com/ymlo/p/15737840.html
Copyright © 2011-2022 走看看