HTML+CSS面试整理

对canvans了解多少

  • Canvas,它是画布

  • Canvas元素用于在网页上绘制2D图形和图像

Canvas使用的场景有:1,动画;2,H5游戏;3,图表。

说一说样式优先级的规则是什么?

!important>行内>id选择器>class、伪类、属性>伪元素、标签>通配符

页面导入样式时,使用 link 和@import 有什么区别?

  • link 属于 XHTML 标签,除了加载 CSS 外,还能用于定义 RSS, 定义 rel 连接属性等作用;而@import 是 CSS 提供的,只能用于加载 CSS;

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

  • import 是 CSS2.1 提出的,只在 IE5 以上才能被识别,而 link 是 XHTML 标签,无兼容问题;

  • link 支持使用 js 控制 DOM 去改变样式,而@import 不支持;

    HTML5变化

    新的语义化元素

    header footer nav main article section

    删除了一些纯样式的标签

    哪些元素可以自闭合?

    • 表单元素 input

    • img

    • br, hr

    • meta, link

      浮动

      从三个方面回答:1、浮动的作用:常用于图片,可以实现文字环绕图片。2、浮动的特点:脱离文档流,容易造成盒子塌陷,影响其他元素的排列。3、解决塌陷问题:流行用法:父元素中添加overflow:hidden、给父元素添加高度、建立空白标签

      添加clear、或者在父级添加伪元素::after{content:'',clear:both,display:table}。

      水平垂直居中的方法

      方法一:利用定位

      .parent {
                  width: 500px;
                  height: 500px;
                  background-color: blanchedalmond;
                  /* 父盒子开启相对定位 */
                  position: relative;
              }
      .child {
              width: 200px;
              height: 200px;
              background-color: aqua;
              /* 父盒子开启绝对定位 */
              position: absolute;
       
              top: 50%;
              /* 相当于父盒子上边界走父盒子高度的50% */
              left: 50%;
              /*相对于父盒子左边界走父盒子宽度的50%*/
              margin-top: -100px;
              /*向上走回自身高度的一半*/
              margin-left: -100px;
              }

方法二 :利用margin:auto

  • ​
    ​
    - [ ] > 1.    /* 父盒子设置相对定位 */
      >            .parent {
      >                width: 500px;
      >                height: 500px;
      >                border: 1px solid #000;
      >                position: relative;
      >            }
      >            /* 子盒子设置绝对定位,将top,left,right,bottom设置为0 设置margin为auto  通过计算所得,能实现垂直居中。 */
      >            .child {
      >                width: 100px;
      >                height: 100px;
      >                border: 1px solid #999;
      >                position: absolute;
      >                margin: auto;
      >                top: 0;
      >                left: 0;
      >                right: 0;
      >                bottom: 0;
      >            }

方法三:利用display:table-cell

.parent { width: 500px; height: 500px; background-color: blanchedalmond; /* 会使元素表现的类似一个表格中的单元格td,利用这个特性可以实现文字的垂直居中效果 */ display: table-cell; / vertical-align 用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。/ vertical-align: middle; / text-align运用在块级元素中,使其中的文本对齐。事实上这句话的意思是运用在块级元素中text-align会使其包含行内元素对齐。/ text-align: center; } .child { width: 200px; height: 200px; background-color: aqua; display: inline-block; }

方法四:利用display:flex

    .parent {
            width: 500px;
            height: 500px;
            background-color: blanchedalmond;
            display: flex;
            /* 主轴居中 */
            justify-content: center;
            /* 从轴居中 */
            align-items: center;
        }
   .child {
        width: 200px;
        height: 200px;
        background-color: aqua;
    }

方法五:计算父盒子与子盒子的空间距离(这跟方法一是一个道理)

  .parent {
            width: 500px;
            height: 500px;
            background-color: blanchedalmond;
            /*父盒子添加边边框,防止外边距塌陷*/
            border: 1px solid transparent;
        }
        .child {
            width: 200px;
            height: 200px;
            background-color: aqua;
            margin-top: 150px;
            margin-left: 150px;
​
​

方法六: 利用transform(变换)实现居中

.parent {
        width: 500px;
        height: 500px;
        background-color: blanchedalmond;
        position: relative;
    }
 
    .child {
        width: 200px;
        height: 200px;
        background-color: aqua;
        position: absolute;
        margin: auto;
        top: 50%;
        left: 50%;
        /* translate中的%百分比相对的是自身的 也就是向左向上走自身的%50来实现居中效果 */
        transform: translate(-50%, -50%);
        }

Flex布局

flex-direction:是沿着主轴的排列布局,默认是水平向右

  1. row:默认水平向右

  2. row-reverse:水平向左

  3. column:垂直向下

  4. column-reverse:垂直向上

flex-wrap:伸缩盒子是否卷起

nowrap:不卷起,挤在一行 wrap:卷起,多出来的开始排列在第二行 wrap-reverse:wrap反方向卷起

justify-content

如何分配主轴上的空白空间

可选值

flex-start 元素按照主轴起边排列

flex-end 元素按照主轴终边排列

center 元素居中排列

space-around 空白分布到元素两侧

space-between 空白分布到元素中间

space-evenly 空白分布到元素单侧

align-items :

元素在辅轴上如何对齐

元素间的关系

可选值:

stretch 默认值,将元素的长度设置为相同的值

flex-start 元素不会拉伸,沿着辅轴起边对齐

flex-end 沿着辅轴的终边对齐

center 居中对齐

baseline 基线对齐

align-content 辅轴空白空间的分布

可选值

flex-start 元素按照主轴起边排列

flex-end 元素按照主轴终边排列

center 元素居中排列

space-around 空白分布到元素两侧

space-between 空白分布到元素中间

space-evenly 空白分布到元素单侧 */

两栏布局:即左侧固定 + 右侧自适应布局

 

三栏布局的实现方式

1、利用浮动

<div class="wrapper">
    <div class="left"></div>
    <div class="right"></div>
    <div class="center"></div>
</div>
.left {
  float: left;
  width: 300px;
  height: 400px;
  background-color: limegreen;
}
​
.right {
  float: right;
  width: 200px;
  height: 400px;
  background-color: yellowgreen;
}
​
.center {
  height: 400px;
  margin: 0 200px 0 300px;
  background-color: tomato;
}
​
​

2.绝对定位

.wrapper {
  position: relative;
}
​
.left {
  position: absolute;
  left: 0;
  top: 0;
​
  width: 300px;
  height: 500px;
​
  background-color: lightgreen;
}
​
.right {
  position: absolute;
  right: 0;
  top: 0;
​
  width: 200px;
  height: 500px;
​
  background-color: lightskyblue;
}
​
.center {
  height: 500px;
  margin: 0 200px 0 300px;
  background-color: tomato;
}

3、利用 flex 布局

.wrapper {
  display: flex;
  height: 500px;
}
​
.center {
  order: 1;
  flex-grow: 1;
  background-color: tomato;
}
​
.left {
  width: 300px;
  height: 500px;
  background-color: lightgreen;
}
​
.right {
  order: 2;
  width: 200px;
  height: 500px;
  background-color: lightskyblue;
}

4.圣杯布局**

 

 

5.双飞翼布局

 

 

圣杯布局和双飞翼布局达到的效果基本相同,都是侧边两栏宽度固定,中间栏宽度自适应。

主要的不同之处就是在解决中间部分被挡住的问题时,采取的解决办法不一样。

圣杯布局是在父元素上设置了padding-left和padding-right,在给左右两边的内容设置position为relative,

通过左移和右移来使得左右两边的内容得以很好的展现,

而双飞翼则是在center这个div中再加了一个div来放置内容,在给这个新的div设置margin-left和margin-right 。

BFC

1.定义:块级格式化上下文,独立渲染区域,不会影响边界外的元素

2.形成条件:a.float b.position c.overflow d.display

  1. 布局规则:a.区域内box从上到下排列 b.垂直方向由margin决定 c.同一bfc内box会外边距重叠 d.bfc不会与float重叠 e.bfc计算高度,也会计算float元素

  2. 4.解决问题:a.清除浮动 b.外边距重叠 c.高度塌陷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值