LayUI的栅格系统到底怎么用?手把手教你实现一个响应式官网首页
2026/4/30 5:23:29 网站建设 项目流程

LayUI栅格系统实战:从零构建响应式官网首页

1. 认识LayUI栅格系统

LayUI的栅格系统是其核心布局方案,采用12等分设计理念,完美适配PC、平板和手机等不同终端。这套系统通过简单的CSS类组合就能实现复杂的响应式布局,无需编写繁琐的媒体查询代码。

核心类名解析

  • layui-container:固定宽度容器(两侧留白)
  • layui-fluid:100%宽度流体容器
  • layui-row:定义行(必须包含在容器内)
  • layui-col-*:定义列的基础类

响应式断点对应类前缀:

layui-col-xs-* <!-- 超小屏幕(手机) --> layui-col-sm-* <!-- 小屏幕(平板) --> layui-col-md-* <!-- 中等屏幕(桌面) --> layui-col-lg-* <!-- 大型屏幕 -->

提示:数字1-12代表所占列数,如layui-col-md-6表示在中等屏幕占6/12(即50%宽度)

2. 项目环境搭建

2.1 基础HTML结构

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>企业官网首页</title> <link rel="stylesheet" href="layui/css/layui.css"> <style> /* 自定义样式区 */ .header{ height: 60px; background: #393D49; } .banner{ height: 400px; background: #009688; } .footer{ height: 100px; background: #2F4056; } </style> </head> <body> <!-- 页面内容将在这里插入 --> <script src="layui/layui.js"></script> <script> layui.use(['element'], function(){ var element = layui.element; // 其他JS逻辑 }); </script> </body> </html>

2.2 文件目录结构

project/ ├── index.html └── layui/ ├── css/ │ └── layui.css ├── font/ └── layui.js

3. 首页核心模块实现

3.1 顶部导航栏

响应式方案

  • 大屏:Logo左 + 导航菜单右
  • 小屏:折叠菜单(汉堡按钮)
<div class="layui-header header"> <div class="layui-container"> <div class="layui-row"> <!-- Logo区域 --> <div class="layui-col-md3 layui-col-sm6 layui-col-xs6"> <div class="logo" style="line-height: 60px; color: #fff;"> <i class="layui-icon layui-icon-face-smile"></i> 企业Logo </div> </div> <!-- 导航菜单 --> <div class="layui-col-md9 layui-col-sm6 layui-col-xs6"> <ul class="layui-nav layui-layout-right"> <li class="layui-nav-item layui-this"><a href="">首页</a></li> <li class="layui-nav-item"><a href="">产品</a></li> <li class="layui-nav-item"><a href="">服务</a></li> <li class="layui-nav-item"><a href="">关于我们</a></li> </ul> </div> </div> </div> </div>

3.2 轮播图区域

多设备适配策略

  • PC端:固定高度
  • 移动端:按比例缩放
<div class="banner"> <div class="layui-carousel" id="mainBanner"> <div carousel-item> <div>轮播项1</div> <div>轮播项2</div> <div>轮播项3</div> </div> </div> </div> <script> layui.use('carousel', function(){ var carousel = layui.carousel; carousel.render({ elem: '#mainBanner', width: '100%', height: '400px', arrow: 'hover' }); }); </script>

3.3 产品展示区

栅格布局技巧

<div class="layui-container" style="padding: 30px 0;"> <div class="layui-row layui-col-space15"> <!-- 产品项 - 大屏4列,平板2列,手机1列 --> <div class="layui-col-md3 layui-col-sm6 layui-col-xs12"> <div class="product-item" style="background: #fff; padding: 20px;"> <h3>产品名称</h3> <p>产品描述内容...</p> </div> </div> <!-- 重复3个相同结构 --> </div> </div>

间距控制方案对比

方法代码示例适用场景
列间距layui-col-space15等距 gutter
内边距style="padding: 15px;"自定义间距
外边距style="margin-bottom: 15px;"单项控制

3.4 新闻资讯区

混合布局实现

<div class="layui-container"> <div class="layui-row"> <!-- 左侧新闻列表(大屏2/3,平板全宽) --> <div class="layui-col-md8 layui-col-sm12"> <div class="news-list"> <!-- 新闻条目结构 --> </div> </div> <!-- 右侧侧边栏(大屏1/3,平板全宽) --> <div class="layui-col-md4 layui-col-sm12"> <div class="sidebar"> <!-- 侧边栏内容 --> </div> </div> </div> </div>

4. 高级布局技巧

4.1 列偏移应用

实现内容区域居中效果:

<div class="layui-container"> <div class="layui-row"> <div class="layui-col-md8 layui-col-md-offset2"> <div class="centered-content"> <!-- 居中内容 --> </div> </div> </div> </div>

4.2 响应式显示控制

设备特定显示/隐藏

<div class="layui-show-md">仅在中等及以上屏幕显示</div> <div class="layui-hide-xs">在手机端隐藏</div>

4.3 嵌套栅格系统

复杂布局解决方案:

<div class="layui-container"> <div class="layui-row"> <div class="layui-col-md6"> <div class="layui-row"> <div class="layui-col-md6">内层栅格1</div> <div class="layui-col-md6">内层栅格2</div> </div> </div> <div class="layui-col-md6">右侧内容</div> </div> </div>

5. 移动端优化实践

5.1 视口配置关键点

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

5.2 触摸事件优化

// 为移动端元素添加active状态 document.addEventListener('touchstart', function(){}, false);

5.3 典型移动端布局调整

/* 手机端特定样式 */ @media screen and (max-width: 768px) { .product-item { margin-bottom: 15px; } }

6. 完整首页代码示例

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <title>企业官网</title> <link rel="stylesheet" href="layui/css/layui.css"> <style> /* 主色调 */ :root { --main-color: #009688; --dark-color: #393D49; } /* 全局样式 */ body { font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; } .section { padding: 50px 0; } .section-title { text-align: center; margin-bottom: 40px; font-size: 28px; color: var(--dark-color); } /* 响应式调整 */ @media (max-width: 768px) { .section { padding: 30px 0; } .section-title { font-size: 22px; } } </style> </head> <body> <!-- 顶部导航 --> <div class="layui-header" style="background: var(--dark-color);"> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md3 layui-col-sm12"> <div class="logo" style="line-height: 60px; color: #fff;"> <i class="layui-icon layui-icon-face-smile"></i> 企业Logo </div> </div> <div class="layui-col-md9 layui-col-sm12"> <ul class="layui-nav layui-layout-right"> <!-- 导航项 --> </ul> </div> </div> </div> </div> <!-- 轮播图 --> <div class="layui-carousel" id="mainBanner"> <div carousel-item> <div style="background: url('1.jpg') center/cover; height: 500px;"></div> <div style="background: url('2.jpg') center/cover; height: 500px;"></div> </div> </div> <!-- 产品展示 --> <div class="section" style="background: #f2f2f2;"> <div class="layui-container"> <h2 class="section-title">我们的产品</h2> <div class="layui-row layui-col-space20"> <!-- 产品项循环 --> <div class="layui-col-md3 layui-col-sm6 layui-col-xs12"> <div style="background: #fff; padding: 20px; border-radius: 4px;"> <h3>产品名称</h3> <p>产品描述内容...</p> </div> </div> </div> </div> </div> <!-- 页脚 --> <div style="background: var(--dark-color); color: #fff; padding: 30px 0;"> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md4 layui-col-sm12"> <h3>关于我们</h3> <p>公司简介内容...</p> </div> <div class="layui-col-md4 layui-col-sm12"> <h3>联系方式</h3> <p>电话:xxx-xxxxxxx</p> </div> <div class="layui-col-md4 layui-col-sm12"> <h3>快速链接</h3> <div class="layui-row"> <div class="layui-col-xs6"> <a href="#" style="color: #fff;">首页</a> </div> <!-- 其他链接 --> </div> </div> </div> </div> </div> <script src="layui/layui.js"></script> <script> layui.use(['carousel', 'element'], function(){ var carousel = layui.carousel; var element = layui.element; // 轮播图初始化 carousel.render({ elem: '#mainBanner', width: '100%', height: '500px', arrow: 'hover', anim: 'fade' }); // 响应式调整 function handleResize() { if(window.innerWidth < 768) { // 手机端调整 } } window.addEventListener('resize', handleResize); handleResize(); }); </script> </body> </html>

7. 常见问题解决方案

7.1 内容溢出处理

/* 强制换行 */ .break-word { word-wrap: break-word; overflow-wrap: break-word; } /* 横向滚动 */ .scroll-x { overflow-x: auto; white-space: nowrap; }

7.2 高度不一致的对齐方案

// 使用jQuery统一设置等高 $(document).ready(function(){ var maxHeight = 0; $('.product-item').each(function(){ if($(this).height() > maxHeight) { maxHeight = $(this).height(); } }).height(maxHeight); });

7.3 性能优化建议

  1. 图片懒加载
<img class="lazy">layui.use('laytpl', function(){ // 实现懒加载逻辑 });
  1. CSS动画优化
/* 启用GPU加速 */ .animate-item { transform: translateZ(0); will-change: transform; }
  1. 组件按需加载
layui.config({ base: 'modules/' }).use(['layer', 'form'], function(){ // 只加载需要的模块 });

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询