当前位置:首页 > JavaScript

js实现layui

2026-01-31 23:20:09JavaScript

使用原生JavaScript实现类似LayUI的功能

LayUI是一个经典的前端UI框架,以下通过原生JavaScript模拟其核心功能(如弹层、表单验证等),避免依赖库的使用。

弹层组件实现

创建基础弹层结构,通过CSS控制显示/隐藏:

function showLayer(options) {
  const { title = '提示', content = '', btn = ['确定'] } = options;
  const layerHTML = `
    <div class="layer-mask">
      <div class="layer-box">
        <div class="layer-title">${title}</div>
        <div class="layer-content">${content}</div>
        <div class="layer-footer">
          ${btn.map(text => `<button>${text}</button>`).join('')}
        </div>
      </div>
    </div>
  `;
  document.body.insertAdjacentHTML('beforeend', layerHTML);
}

// 调用示例
showLayer({
  content: '这是一个模拟弹层',
  btn: ['确认', '取消']
});

CSS样式需单独定义:

.layer-mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.5);
  z-index: 999;
}
.layer-box {
  width: 300px;
  background: white;
  border-radius: 4px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

表单验证模块

实现基础的非空验证和格式校验:

const formValidator = {
  rules: {
    required: value => value.trim() !== '',
    email: value => /^\w+@[a-z0-9]+\.[a-z]+$/i.test(value)
  },

  validate(formEl) {
    const inputs = formEl.querySelectorAll('[data-validate]');
    let isValid = true;

    inputs.forEach(input => {
      const rules = input.dataset.validate.split('|');
      for (let rule of rules) {
        if (!this.rules[rule](input.value)) {
          input.style.borderColor = 'red';
          isValid = false;
          break;
        }
      }
    });

    return isValid;
  }
};

// 使用示例
document.querySelector('form').addEventListener('submit', function(e) {
  e.preventDefault();
  if (formValidator.validate(this)) {
    // 提交逻辑
  }
});

HTML结构对应:

<input type="text" data-validate="required|email">

动态表格渲染

实现数据驱动表格渲染:

function renderTable(data, container) {
  const headers = Object.keys(data[0]);
  const headerHTML = `<tr>${headers.map(h => `<th>${h}</th>`).join('')}</tr>`;
  const bodyHTML = data.map(item => 
    `<tr>${headers.map(h => `<td>${item[h]}</td>`).join('')}</tr>`
  ).join('');

  container.innerHTML = `
    <table class="demo-table">
      <thead>${headerHTML}</thead>
      <tbody>${bodyHTML}</tbody>
    </table>
  `;
}

// 调用示例
renderTable([
  { id: 1, name: '张三' },
  { id: 2, name: '李四' }
], document.getElementById('table-container'));

注意事项

  1. CSS样式需要单独维护,建议采用BEM命名规范避免冲突
  2. 事件绑定需注意内存泄漏问题,动态元素建议使用事件委托
  3. 组件化开发可通过Class语法实现更完整的封装
  4. 对于复杂功能(如下拉选择器),需要结合DOM操作和位置计算

以上实现保留了LayUI的核心交互逻辑,但剥离了jQuery依赖,更适合现代Web开发场景。实际项目中可根据需求扩展验证规则、动画效果等模块。

js实现layui

标签: jslayui
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterv…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Ja…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 j…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统…