zoukankan      html  css  js  c++  java
  • 前端基础面试题(1)

    今天在某公司面试,做了笔试题,发现并没有理解题目要考什么,总结一下。

    1.一个200*200的div在不同分辨率的屏幕上下左右居中,用css实现。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>一个200*200的div在不同分辨率的屏幕上下左右居中,用css实现。</title>
     6         <style>
     7             *{
     8                 margin:0;
     9                 padding: 0;
    10             }
    11             /*
    12              * 只是考察了一个定位而已。
    13              */
    14             .box{
    15                 width: 200px;
    16                 height: 200px;
    17                 position: absolute;
    18                 top: calc(50% - 100px);
    19                 left:calc(50% - 100px);
    20                 border: 1px solid red;
    21             }
    22         </style>
    23     </head>
    24     <body>
    25         <div class="box"></div>
    26     </body>
    27 </html>

    2.写一个左中右布局,占满屏幕,其中左右两块固定宽200,中间自适应宽,要求先加载中间块,写出结构及样式。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <style>
     7             div{
     8                 height:50px;
     9             }
    10             .mid{
    11                 background: red;
    12                 float: left;
    13                 width: calc(100% - 400px);
    14                 margin-left: 200px;
    15                 
    16             }
    17             .left,.right{
    18                     background: blue;
    19                     width: 200px;
    20                     float: left;
    21             }
    22             .left{
    23                 position: absolute;
    24             }
    25         </style>
    26     </head>
    27     <body>
    28         <!--
    29             写一个左中右布局,占满屏幕,其中左右两块固定宽200,中间自适应宽,要求先加载中间块,写出结构及样式。
    30         -->
    31         
    32         <div class="mid"></div>
    33         <div class="left"></div>
    34         <div class="right"></div>
    35     </body>
    36 </html>

    3.清除浮动的几种方式:

    参考地址:http://www.cnblogs.com/AnotherLife/p/5800751.html,这里讲的很详细。

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>清除浮动的几种方式</title>
      6         <style>
      7             /*基础样式*/
      8             *{
      9                 margin: 0;
     10                 padding: 0;
     11             }
     12             .box{
     13                 width: 100%;
     14                 /*height: 200px;*/
     15                 border: 1px solid red;
     16                 margin-top: 200px;
     17                 /*padding-top: 25px;*/
     18             }
     19             .s1,.s2,.s3{
     20                 width: 150px;
     21                 height: 150px;
     22                 float: left;
     23                 border:1px solid blue;
     24             }
     25             
     26             
     27             /*添加空div*/
     28             .clearfloat1{
     29                 clear:both;
     30             }
     31             
     32             /*父级添加伪元素*/
     33             .clearfloat2:after{
     34                 display: block;
     35                 content: '';
     36                 clear:both;
     37                 height: 0;
     38                 visibility: hidden;
     39             }
     40             .clearfloat2{
     41                 zoom: 1;
     42             }
     43             
     44             .clearfloat3{
     45                 overflow: hidden;
     46             }
     47         </style>
     48     </head>
     49     <body>
     50         <!--为什么要清除浮动?-->
     51         <!--当浮动元素组的父元素没有高度的时候:
     52             浮动元素的浮动:
     53             1.不会撑开父盒子;
     54             2.在谷歌,火狐,新版IE上,margin,padding不受影响。
     55             好像,就这一个副作用。但是会影响周边元素的布局。
     56         -->
     57         
     58         <!--
     59             几个方法:
     60              1.高度固定的时候,手动给父盒子添加高度。
     61              2.添加一个空div,clear:both;
     62              3.伪元素,clear:both;zoom:1;
     63              4.父级设置overflow:hidden
     64              ...
     65              
     66             比较:
     67               兼容性和性能最好的是伪元素清除浮动。
     68               
     69               我比较常用的是overflow:hidden;
     70              使用overflow:hidden的时候,父级必须设置宽度。
     71               
     72         -->
     73         
     74         <!--浮动的时候-->
     75         <div class="box">
     76             
     77             <div class="s1">浮动了 </div>
     78             <div class="s2"></div>
     79             <div class="s3"></div>
     80         </div>
     81         
     82        
     83             
     84         <!--添加空div-->
     85           <div class="box">
     86             <div class="s1">添加空div</div>
     87             <div class="s2"></div>
     88             <div class="s3"></div>
     89             <div class="clearfloat1"></div>
     90         </div>
     91         
     92         <!--伪元素清除-->
     93           <div class="box clearfloat2">
     94             <div class="s1">伪元素清除</div>
     95             <div class="s2"></div>
     96             <div class="s3"></div>
     97         </div>
     98         
     99          <!--父级设置overflow:hidden-->
    100           <div class="box clearfloat3">
    101             <div class="s1">父级设置overflow:hidden</div>
    102             <div class="s2"></div>
    103             <div class="s3"></div>
    104         </div>
    105     </body>
    106 </html>

    4.css Sprites 如何使用。(这个东西知道有这么回事,但是一次也没用过,参考百度搜索)

     1  CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,
     2              再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,
     3              background-position可以用数字精确的定位出背景图片的位置。
     4              
     5              
     6              优点
     7                 1.利用CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这也是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;
     8                 2.CSS Sprites能减少图片的字节,曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和。
     9                 3.解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名,从而提高了网页的制作效率。
    10                 4.更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变。维护起来更加方便。
    11             缺点    :
    12                 1.在图片合并的时候,你要把多张图片有序的合理的合并成一张图片,还要留好足够的空间,防止板块内出现不必要的背景;
    13                     这些还好,最痛苦的是在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂;
    14                 2.CSS Sprites在开发的时候比较麻烦,你要通过photoshop或其他工具测量计算每一个背景单元的精确位置,这是针线活,
    15                     没什么难度,但是很繁琐;幸好腾讯的鬼哥用ADOBE AIR开发了一个CSS Sprites 样式生成工具,虽然还有一些使用上的不灵活,
    16                     但是已经比photoshop测量来的方便多了,而且样式直接生成,复制,拷贝就OK!
    17                 3.CSS Sprites在维护的时候比较麻烦,如果页面背景有少许改动,一般就要改这张合并的图片,无需改的地方最好不要动,
    18                     这样避免改动更多的css,如果在原来的地方放不下,又只能(最好)往下加图片,这样图片的字节就增加了,还要改动css。
    19                 4.CSS Sprites非常值得学习和应用,特别是页面有一堆icon(图标)。总之很多时候大家要权衡一下利弊,再决定是不是应用CSS Sprites。

    5.如何用原生js给按钮绑定两个onclick事件。

    思路: 两个事件就是要做两件事,可以在同一个onclick里写入这两件事。我觉得这不是考察的点,
     除此之外,onclick事件也能触发的方式就是事件冒泡机制。所以可以给父元素绑定一个onclick,通过addEventListener监听冒泡过来的事件。

    6.拖拽会用到哪些事件:

    1                *     dragstart  :拖拽开始
    2                *     dragenter  :鼠标进入
    3                *     dragover:      鼠标进入之后触发
    4                *     dragleave    拖拽离开
    5                *     drag      拖拽的元素身上持续触发
    6                *     drop     鼠标释放拖拽目标
    7                *     dragend  鼠标释放拖拽目标时,在拖拽元素上触发。
    8                *    

    7.列举jquery选择器

      id,class,element,*,属性选择器,索引选择器(:eq(2)),  first, 偶数个元素(:even),奇数个元素(:odd)

    8.js中的定时器有哪些?区别及用法:

       区别就是 一个单纯延迟,一个循环延迟。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <style>
     7               
     8               /*
     9                * 8.js中的定时器有哪些?区别及用法:
    10                * 
    11                *   setTimeout
    12                *   setInterval
    13                *   注意他们的返回值是number类型的,从1开始,依次+1,即使清除了,也不重置。 
    14                *   另外他们并不精确,受限于异步,不能精确到1ms。
    15                * 
    16                */
    17         </style>
    18     </head>
    19     <body>
    20         <script>
    21             var s = setTimeout(()=>{alert(1)},3000);
    22             console.log(s)
    23             var s2 = setTimeout(()=>{clearTimeout(s)},6000);
    24             console.log(s2)
    25             var s3 = setTimeout(()=>{
    26                 var s4 = setTimeout(
    27                     ()=>{
    28                         alert(4);
    29                         console.log(s4)
    30                     },10000)
    31             },6000);
    32             console.log(typeof s3)
    33             
    34         </script>
    35     </body>
    36 </html>
  • 相关阅读:
    竞赛图和哈密顿回路
    Hall 定理
    Vim 和 Gdb 学习笔记
    AT4996 [AGC034F] RNG and XOR(FWT)
    UOJ310 黎明前的巧克力(fwt)
    AT5202 [AGC038E] Gachapon(min-max)
    AT2289 [ARC067D] Yakiniku Restaurants(水题)
    拉格朗日插值
    [CSP-SJX2019]散步(模拟)
    Leetcode547 朋友圈 图的DFS与unionFind算法
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/7231807.html
Copyright © 2011-2022 走看看