您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

经典面试题

其实面试有时候并不像大家想象的那样问一些很基础的问题,比如:

这样问的话效率会比较低,而优秀的面试题只需要一道,就可以考察上述所有的这些问题。

即使候选者对上面这些问题全部都对答如流,也不一定能够灵活的运用这些知识。
而这道面试题不仅考察了候选人的基础,更考察了候选者对基础知识的灵活运用,来看看这道面试题:

要求如下:

具体实现如下:

<!DOCTYPE html>
<html lang="en">
<head>
  < charset="UTF-8">
  < name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 清除认样式 */
    * { padding: ; margin: ; }

    /* 全屏 */
    html, body { height:  }

    body {
      /* 网格布局 */
      display: grid;

      /* 子元素居中 */
      place-items: center;
    }

    /* 父元素 */
    ul {
      width: px;
      
      /* 清除认样式 */
      list-style: none;

      /* 设置为flex布局 */
      display: flex;

      /* 设置换行 */
      flex-flow: wrap;
    }

    /* 子元素 */
    li {
      /* 为网格布局 */
      display: grid;

      /* 子元素水平垂直居中 */
      place-items: center;

      /* 宽高都是100像素 */
      width: px;
      height: px;

      /* 设置盒模型 */
      @R_759_2@-sizing: border-@R_759_2@;

      /* 设置两像素的边框 */
      border: px solid black;

      /* 负边距 */
      margin: -px   -px;
    }

    /* 第1、4、7个子元素 */
    li:nth-child(3n+1) {
      /* 取消左负边距 */
      margin-left: 
    }

    /* 前三个子元素 */
    li:first-child, li:nth-child(2), li:nth-child(3) {
      /* 取消上负边距 */
      margin-top: 
    }

    /* 当鼠标经过时 */
    li:hover {
      /* 红色字体 */
      color: red;

      /* 红色边框 */
      border: px solid;

      /* 调高层级 */
      z-index: ;
    }
  </style>
</head>
<body>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
  </ul>
  <script>
    // 选择ul元素
    const ul = document.getElementsByTagName('ul')[]

    // 监听ul元素的点击事件
    ul.addEventListener('click', e => alert(e.target.innerText))
  </script>
</body>
</html>
li {
	margin: -px   -px;
}
ul {
	/* 设置为flex布局 */
    display: flex;

    /* 设置换行 */
    flex-flow: wrap;
} 
li {
	  /* 网格布局 */
	  display: grid;

	  /* 子元素居中 */
	  place-items: center;
}
li:hover {
      /* 红色字体 */
      color: red;

      /* 红色边框 */
      border: px solid;
}

可以看到定义红色边框的时候并没有写红色(red或#f00),那是因为如果你不写的话,认是currentColor,这个关键字代表的就是你当前的color值。
有些同学可能会觉得纳闷:这单词这么长,还不如直接写个red多方便啊,其实这个单词相当于变量,指向color值,而别忘了color是可以继承的!
如果在外层元素中定义了颜色,里面的子元素都可以继承,用JS来控制的话只需要外层DOM元素然后它的color样式即可,currentColor能做的事情很多,这里为了不跑题就先不展开讲,有兴趣的同学可以去搜一下。

li {
	/* 设置盒模型 */
    @R_759_2@-sizing: border-@R_759_2@;
}

如果不写这个的话,每个格子的边框也会计算在内,最终会超过父元素的三分之一,导致提前换行。
大家可以在案例中去掉这个,感受一下没有了它会发生什么样的后果。

li:hover {
	z-index: ;
}

如果没有这个,在鼠标经过时边框的样式会产生错乱。

/* 第1、4、7个子元素 */
li:nth-child(3n+1) {
	xxx: xxx;
}

/* 前三个子元素 */
li:first-child, li:nth-child(2), li:nth-child(3) {
  xxx: xxx;
}
// 监听ul元素的点击事件
ul.addEventListener('click', e => alert(e.target.innerText))

怎么样,没想到就这一道九宫格居然能考察出这么多的基础知识吧?
同学们课下一定要好好练习一下这道题,亲手敲一遍,看看能不能在不参照案例的情况实现这个。


联系我
置顶