Materialize是一款遵循谷歌Material Design设计规范的CSS框架,它提供了大量开箱即用的样式类和交互组件,能够让开发者快速构建出视觉效果出色、适配手机、平板、PC等多终端的现代网页,无需花费大量时间在基础样式调试上。

Materialize环境配置
使用Materialize前需要先引入相关资源,有两种常用的引入方式,分别是CDN引入和本地文件引入。
CDN引入方式
适合快速测试或者小型项目,直接在HTML的<head>标签中添加以下代码即可:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入Materialize CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!-- 引入Materialize JS,依赖jQuery,需先引入jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<title>Materialize示例页面</title>
</head>
<body>
<h1>Hello Materialize</h1>
</body>
</html>
本地引入方式
适合需要离线开发或者定制化修改的项目,先从Materialize官网下载源码包,解压后将css和js文件夹放到项目目录中,再修改引入路径即可。
Materialize核心特性使用
响应式网格系统
Materialize的网格系统基于12列布局,通过row和col类实现,支持不同屏幕尺寸下的列宽自适应,屏幕尺寸分为小屏(s)、中屏(m)、大屏(l)、超大屏(xl)四个档位。
网格系统常用类名格式为col 屏幕尺寸-列数,例如col s12 m6 l4表示在小屏占12列(整行),中屏占6列(半行),大屏占4列(三分之一行)。
<div class="container">
<div class="row">
<div class="col s12 m6 l4">
<p>第一列内容</p>
</div>
<div class="col s12 m6 l4">
<p>第二列内容</p>
</div>
<div class="col s12 m6 l4">
<p>第三列内容</p>
</div>
</div>
</div>
常用UI组件
Materialize内置了按钮、卡片、导航栏、表单等大量常用组件,直接添加对应类名就能使用预设样式。
按钮组件
按钮有多种样式变体,比如普通按钮、浮动按钮、禁用按钮等,通过不同类区分:
<!-- 普通蓝色按钮 --> <a class="waves-effect waves-light btn" href="#">普通按钮</a> <!-- 浮动按钮 --> <a class="btn-floating btn-large waves-effect waves-light red"><i class="material-icons">add</i></a> <!-- 禁用按钮 --> <a class="btn disabled">禁用按钮</a>
卡片组件
卡片是展示内容块的常用组件,支持添加图片、标题、正文和操作按钮:
<div class="card">
<div class="card-image">
<img src="https://picsum.photos/400/200?random=2">
<span class="card-title">卡片标题</span>
</div>
<div class="card-content">
<p>这是卡片的正文内容,可以放置相关描述信息。</p>
</div>
<div class="card-action">
<a href="#">操作链接1</a>
<a href="#">操作链接2</a>
</div>
</div>
完整现代网页示例
下面是一个使用Materialize搭建的简单个人博客首页示例,包含导航栏、轮播图、内容卡片区和页脚:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<title>个人博客首页</title>
</head>
<body>
<!-- 导航栏 -->
<nav class="blue">
<div class="nav-wrapper container">
<a href="#" class="brand-logo">我的博客</a>
<ul id="nav-mobile" class="right hide-on-med-and-down">
<li><a href="#">首页</a></li>
<li><a href="#">文章</a></li>
<li><a href="#">关于</a></li>
</ul>
</div>
</nav>
<!-- 轮播图 -->
<div class="slider">
<ul class="slides">
<li>
<img src="https://picsum.photos/1200/400?random=3">
<div class="caption center-align">
<h3>欢迎来到我的博客</h3>
<h5 class="light grey-text text-lighten-3">分享技术学习与日常记录</h5>
</div>
</li>
<li>
<img src="https://picsum.photos/1200/400?random=4">
<div class="caption left-align">
<h3>最新技术文章</h3>
<h5 class="light grey-text text-lighten-3">涵盖前端、后端开发内容</h5>
</div>
</li>
</ul>
</div>
<!-- 内容卡片区 -->
<div class="container">
<div class="row">
<div class="col s12 m6 l4">
<div class="card">
<div class="card-image">
<img src="https://picsum.photos/400/200?random=5">
</div>
<div class="card-content">
<span class="card-title">CSS框架入门</span>
<p>介绍常用CSS框架的特点和使用场景,帮助新手选择适合的框架。</p>
</div>
<div class="card-action">
<a href="#">查看详情</a>
</div>
</div>
</div>
<div class="col s12 m6 l4">
<div class="card">
<div class="card-image">
<img src="https://picsum.photos/400/200?random=6">
</div>
<div class="card-content">
<span class="card-title">JavaScript技巧</span>
<p>分享实用的JavaScript开发技巧,提升开发效率。</p>
</div>
<div class="card-action">
<a href="#">查看详情</a>
</div>
</div>
</div>
<div class="col s12 m6 l4">
<div class="card">
<div class="card-image">
<img src="https://picsum.photos/400/200?random=7">
</div>
<div class="card-content">
<span class="card-title">响应式设计</span>
<p>讲解响应式网页设计的核心原理和实现方法。</p>
</div>
<div class="card-action">
<a href="#">查看详情</a>
</div>
</div>
</div>
</div>
</div>
<!-- 页脚 -->
<footer class="page-footer blue">
<div class="container">
<div class="row">
<div class="col l6 s12">
<h5 class="white-text">关于本博客</h5>
<p class="grey-text text-lighten-4">本博客主要用于分享技术学习心得和日常开发经验。</p>
</div>
<div class="col l4 offset-l2 s12">
<h5 class="white-text">相关链接</h5>
<ul>
<li><a class="grey-text text-lighten-3" href="https://ipipp.com">技术文档</a></li>
<li><a class="grey-text text-lighten-3" href="#">联系我</a></li>
</ul>
</div>
</div>
</div>
<div class="footer-copyright">
<div class="container">
© 2024 我的博客
</div>
</div>
</footer>
<script>
// 初始化轮播图
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.slider');
var instances = M.Slider.init(elems, {indicators: true, height: 400});
});
</script>
</body>
</html>
注意事项
- Materialize的JS组件依赖jQuery,引入JS文件前必须先引入jQuery。
- 自定义样式时,尽量通过覆盖框架预设的CSS变量实现,避免直接修改框架源码,方便后续升级。
- 如果使用本地引入方式,注意文件路径的正确性,避免因路径错误导致资源加载失败。
MaterializeCSS框架现代网页设计响应式布局修改时间:2026-06-15 07:24:51