zoukankan      html  css  js  c++  java
  • html前端上机面试题

    需求:    演示效果如下

    1.完成所有的布局样式和排版

    2.使用js完成所有的功能包括以下

    3.完成标签的增加和删除

    4.完成标签和内容的对应显示

    5.完成标签和内容的修改

    相关布局样式:

    html

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <title>js面向对象 动态添加标签页</title>
     8     <link rel="stylesheet" href="./index.css">
     9     <link rel="stylesheet" href="./css/iconfont.css">
    10 </head>
    11 
    12 <body>
    13     <main>
    14         <h4>js面向对象 动态添加标签页</h4>
    15         <h6>css所用时间:30分钟到40分钟 -------js完成时间是根据看视频</h6>
    16         <div class="tabsbox" id="tab">
    17             <!--tab标签  -->
    18             <nav class="fisrstnav">
    19                 <ul>
    20                     <li class="liactive"><span>测试1</span><span class="iconfont icon-guanbi "></span></li>
    21                     <li><span>测试2</span> <span class="iconfont icon-guanbi "></span></li>
    22                     <li><span>测试3</span><span class="iconfont icon-guanbi "></span></li>
    23                 </ul>
    24                 <div class="tabadd">
    25                     <span>+</span>
    26                 </div>
    27             </nav>
    28             <!-- tab内容 -->
    29             <div class="tabscon">
    30                 <section class="conactive">测试1</section>
    31                 <section>测试2</section>
    32                 <section>测试3</section>
    33             </div>
    34         </div>
    35 
    36 
    37     </main>
    38     <!--页面最下面使用js  -->
    39     <script src="./js/tab.js"></script>
    40 </body>
    41 
    42 </html>
    View Code

    完成需要的css和js

     答案:

    css:

      1 body,
      2 ul {
      3     list-style: none;
      4     /*清除列表默认样式*/
      5     padding: 0;
      6     /*清除padding*/
      7     margin: 0;
      8 }
      9 
     10 main {
     11     position: relative;
     12 }
     13 
     14 /*标题样式*/
     15 h4 {
     16     margin: 50px 10px auto;
     17     font-size: 24px;
     18     text-align: center;
     19 
     20 }
     21 
     22 h6 {
     23     font-size: 15px;
     24     text-align: center;
     25 }
     26 
     27 /*设置外边框*/
     28 .tabsbox {
     29     margin: 0 auto;
     30     width: 70%;
     31     height: 410px;
     32     border: 1px solid #FFE0D5;
     33 }
     34 
     35 /*设置头部区域*/
     36 .fisrstnav {
     37     border-bottom: 1px solid #E9E0EB;
     38     height: 50px;
     39 }
     40 
     41 ul {
     42     float: left;
     43 }
     44 
     45 li {
     46     position: relative;
     47     text-align: center;
     48     line-height: 50px;
     49     width: 110px;
     50     height: 50px;
     51     float: left;
     52     border-right: 1px solid #E9E0EB;
     53     list-style-type: none;
     54 }
     55 
     56 /*设置加号按钮区域*/
     57 .tabadd {
     58     float: right;
     59     line-height: 22px;
     60     text-align: center;
     61     margin-top: 10px;
     62     margin-right: 10px;
     63     width: 22px;
     64     height: 22px;
     65     border: 1px solid #E9E0EB;
     66 }
     67 
     68 /*设置内容区域*/
     69 .tabscon {
     70     margin: 33px;
     71 }
     72 
     73 /*先设置隐藏*/
     74 section {
     75     display: none;
     76 }
     77 
     78 /*在设置显示*/
     79 .conactive {
     80     display: block;
     81 }
     82 
     83 
     84 /**
     85 组件激活样式
     86 */
     87 .liactive {
     88     border-bottom: 1px solid white;
     89 }
     90 
     91 /*设置外部引入*/
     92 .iconfont {
     93     position: absolute;
     94     top: 0;
     95     right: 0;
     96     width: 20px;
     97     height: 20px;
     98     line-height: 20px;
     99     background: black;
    100     color: white;
    101     font-size: 1px !important;
    102     border-radius: 0 0 0 30px;
    103 }
    View Code

    js:

      1 var that;
      2 
      3 class Tab {
      4     constructor(id) {
      5         // 获取元素
      6         that = this;
      7         this.main = document.querySelector(id)
      8         // 获取加号
      9         this.add = this.main.querySelector(".tabadd");
     10         // 获取li的父元素
     11         this.ul = this.main.querySelector(".fisrstnav ul:first-child")
     12         // 获取内容的父元素
     13         this.asection = this.main.querySelector('.tabscon')
     14         this.init()
     15     }
     16     // 获取所有的li元素
     17     updateNode() {
     18         // 获取li标签
     19         this.lis = this.main.querySelectorAll('li')
     20         // 获取内容标签
     21         this.sections = this.main.querySelectorAll('section')
     22         // 获取删除按钮
     23         this.remove = this.main.querySelectorAll('.icon-guanbi');
     24         this.spans = this.main.querySelectorAll('.fisrstnav li span:first-child')
     25     }
     26     init() {
     27         this.updateNode()
     28         // 帮定添加事件
     29         this.add.onclick = this.addTab;
     30         // init 初始化操作让相关的元素绑定
     31         for (var i = 0; i < this.lis.length; i++) {
     32             this.lis[i].index = i;
     33             // 给每一个li添加一个事件
     34             this.lis[i].onclick = this.toggleTab;
     35             // 添加删除按钮事件
     36             this.remove[i].onclick = this.removeTab;
     37             // 添加spsn事件
     38             this.spans[i].ondblclick = this.editTab;
     39             // 内容标签
     40             this.sections[i].ondblclick = this.ediSect;
     41 
     42         }
     43     }
     44     // 1。切换gongn
     45     toggleTab() {
     46         // 先清除样式
     47         that.clearClass()
     48         // 然后添加样式
     49         this.className = 'liactive';
     50         that.sections[this.index].className = "conactive"
     51     }
     52     // 添加功能
     53     addTab() {
     54         // 先清除样式
     55         that.clearClass()
     56         // 生成随机数
     57         var random = Math.random()
     58         //   创建li元素和section元素
     59         var li = '    <li class="liactive"><span>新增</span><span class="iconfont icon-guanbi "></span></li>';
     60         var section = '  <section class="conactive">测试' + random + '</section>'
     61         //   追加到对应的位置
     62         that.ul.insertAdjacentHTML('beforeend', li)
     63         that.asection.insertAdjacentHTML('beforeend', section)
     64         that.init()
     65 
     66     }
     67     // 删除功能
     68     removeTab(e) {
     69         e.stopPropagation(); //防止冒泡
     70         var index = this.parentNode.index
     71         // 根据索引删除对应的li 和asection remove()方法可以直接删除对应的元素
     72         that.lis[index].remove()
     73         that.sections[index].remove()
     74         that.init()
     75         // 删除后直接进入前一个
     76         index--;
     77         // 直接不用手动点击实现点击事件
     78         that.lis[index] && that.lis[index].click();
     79         that.sections[index] && that.sections[index].click();
     80     }
     81     // 修改标签
     82     editTab() {
     83         // 先获取框中的文字
     84         var str = this.innerHTML;
     85         // 双击禁止选中文字
     86         window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
     87         //   添加一个文本框
     88         this.innerHTML = '     <input type="text" style="70px ;">'
     89         var input = this.children[0];
     90         input.value = str
     91         input.select();
     92         // 离开文本框在复制回去
     93         input.onblur = function () {
     94             this.parentNode.innerHTML = this.value
     95         }
     96 
     97 
     98     }
     99     // 清除样式
    100     clearClass() {
    101         for (var i = 0; i < this.lis.length; i++) {
    102             this.lis[i].className = ''
    103             this.sections[i].className = ''
    104         }
    105     }
    106     // 修改内容
    107     ediSect() {
    108         // 先获取框中的文字
    109         var str = this.innerHTML;
    110         // 双击禁止选中文字
    111         window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
    112         //   添加一个文本框
    113         this.innerHTML = '     <input type="text" style="900px;   height: 270px;">'
    114         var input = this.children[0];
    115         input.value = str
    116         input.select();
    117         // 离开文本框在复制回去
    118         input.onblur = function () {
    119             this.parentNode.innerHTML = this.value
    120         }
    121     }
    122 }
    123 new Tab('#tab')
    View Code
    已有的事,后必在有,已行的事,后必在行。
  • 相关阅读:
    染色法判定二分图
    Kruskal算法求最小生成树
    Prim算法求最小生成树
    Floyd算法求多源最短路
    spfa判断负环
    java 线程的使用
    java IO基础
    数据库 EXISTS与NOT EXISTS
    数据库 何为相关查询和不相关查询?
    数据库的基础知识
  • 原文地址:https://www.cnblogs.com/feilongkenguokui/p/13658944.html
Copyright © 2011-2022 走看看