当前位置:首页 > 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">

动态表格渲染

实现数据驱动表格渲染:

js实现layui

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开发场景。实际项目中可根据需求扩展验证规则、动画效果等模块。

标签: jslayui
分享给朋友:

相关文章

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…