加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
lyear_ui_grid.html 50.90 KB
一键复制 编辑 原始数据 按行查看 历史
笔下光年 提交于 2020-09-23 20:31 . 提交页面
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011
<!DOCTYPE html>
<html lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui">
<meta name="keywords" content="LightYear,LightYearAdmin,光年,后台模板,后台管理系统,光年HTML模板">
<meta name="description" content="Light Year Admin V4是一个基于Bootstrap v4.4.1的后台管理系统的HTML模板。">
<meta name="author" content="yinq">
<title>格栅 - 光年(Light Year Admin V4)后台管理系统模板</title>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<link rel="stylesheet" type="text/css" href="css/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/animate.min.css">
<link rel="stylesheet" type="text/css" href="css/style.min.css">
</head>
<body>
<!--页面loading-->
<div id="lyear-preloader" class="loading">
<div class="ctn-preloader">
<div class="round_spinner">
<div class="spinner"></div>
<img src="images/loading-logo.png" alt="">
</div>
</div>
</div>
<!--页面loading end-->
<div class="lyear-layout-web">
<div class="lyear-layout-container">
<!--左侧导航-->
<aside class="lyear-layout-sidebar">
<!-- logo -->
<div id="logo" class="sidebar-header">
<a href="index.html"><img src="images/logo-sidebar.png" title="LightYear" alt="LightYear" /></a>
</div>
<div class="lyear-layout-sidebar-info lyear-scroll">
<nav class="sidebar-main">
<ul class="nav-drawer">
<li class="nav-item"> <a href="index.html"><i class="mdi mdi-home"></i> <span>后台首页</span></a> </li>
<li class="nav-item nav-item-has-subnav active open">
<a href="javascript:void(0)"><i class="mdi mdi-palette"></i> <span>UI 元素</span></a>
<ul class="nav nav-subnav">
<li> <a href="lyear_ui_typography.html">排版</a> </li>
<li class="active"> <a href="lyear_ui_grid.html">栅格</a> </li>
<li> <a href="lyear_ui_icon.html">图标</a> </li>
<li> <a href="lyear_ui_alerts.html">警告框</a> </li>
<li> <a href="lyear_ui_buttons.html">按钮</a> </li>
<li> <a href="lyear_ui_button_group.html">按钮组</a> </li>
<li> <a href="lyear_ui_cards.html">卡片</a> </li>
<li> <a href="lyear_ui_tables.html">表格</a> </li>
<li> <a href="lyear_ui_modal.html">模态框</a> </li>
<li> <a href="lyear_ui_dropdown.html">下拉菜单</a> </li>
<li> <a href="lyear_ui_tooltips.html">工具提示</a> </li>
<li> <a href="lyear_ui_tabs.html">标签页</a> </li>
<li> <a href="lyear_ui_pagination.html">分页</a> </li>
<li> <a href="lyear_ui_popovers.html">POP提示</a> </li>
<li> <a href="lyear_ui_images.html">图片</a> </li>
<li> <a href="lyear_ui_badges.html">徽章</a> </li>
<li> <a href="lyear_ui_progress.html">进度条</a> </li>
<li> <a href="lyear_ui_list_group.html">列表组</a> </li>
<li> <a href="lyear_ui_media_object.html">媒体对象</a> </li>
<li> <a href="lyear_ui_navbar.html">导航栏</a> </li>
<li> <a href="lyear_ui_scrollspy.html">滚动监听</a> </li>
<li> <a href="lyear_ui_spinners.html">加载状态</a> </li>
<li> <a href="lyear_ui_toasts.html">消息弹窗</a> </li>
<li> <a href="lyear_ui_timeline.html">时光轴</a> </li>
<li> <a href="lyear_ui_other.html">其他</a> </li>
</ul>
</li>
<li class="nav-item nav-item-has-subnav">
<a href="javascript:void(0)"><i class="mdi mdi-format-align-justify"></i> <span>表单</span></a>
<ul class="nav nav-subnav">
<li> <a href="lyear_forms_elements.html">基本元素</a> </li>
<li> <a href="lyear_forms_input_group.html">输入框组</a> </li>
<li> <a href="lyear_forms_radio.html">单选框</a> </li>
<li> <a href="lyear_forms_checkbox.html">复选框</a> </li>
<li> <a href="lyear_forms_switches.html">开关</a> </li>
<li> <a href="lyear_forms_range.html">范围选择</a> </li>
</ul>
</li>
<li class="nav-item nav-item-has-subnav">
<a href="javascript:void(0)"><i class="mdi mdi-tools"></i> <span>工具类</span></a>
<ul class="nav nav-subnav">
<li> <a href="lyear_utilities_borders.html">边框</a> </li>
<li> <a href="lyear_utilities_colors.html">颜色</a> </li>
<li> <a href="lyear_utilities_display.html">显示属性</a> </li>
<li> <a href="lyear_utilities_flex.html">弹性布局</a> </li>
<li> <a href="lyear_utilities_float.html">浮动</a> </li>
<li> <a href="lyear_utilities_sizing.html">尺寸</a> </li>
<li> <a href="lyear_utilities_spacing.html">间隔</a> </li>
<li> <a href="lyear_utilities_stretched_link.html">延伸链接</a> </li>
<li> <a href="lyear_utilities_text.html">文本</a> </li>
<li> <a href="lyear_utilities_other.html">其他</a> </li>
</ul>
</li>
<li class="nav-item nav-item-has-subnav">
<a href="javascript:void(0)"><i class="mdi mdi-file-outline"></i> <span>示例页面</span></a>
<ul class="nav nav-subnav">
<li> <a href="lyear_pages_doc.html">文档列表</a> </li>
<li> <a href="lyear_pages_gallery.html">图库列表</a> </li>
<li> <a href="lyear_pages_config.html">网站配置</a> </li>
<li> <a href="lyear_pages_rabc.html">设置权限</a> </li>
<li> <a href="lyear_pages_add_doc.html">新增文档</a> </li>
<li> <a href="lyear_pages_guide.html">表单向导</a> </li>
<li> <a href="lyear_pages_data_table.html">表格插件</a> </li>
<li> <a href="lyear_pages_login_1.html" target="_blank">登录页面1</a> </li>
<li> <a href="lyear_pages_login_2.html" target="_blank">登录页面2</a> </li>
<li> <a href="lyear_pages_login_3.html" target="_blank">登录页面3</a> </li>
<li> <a href="lyear_pages_login_4.html" target="_blank">登录页面4</a> </li>
<li> <a href="lyear_pages_error.html" target="_blank">错误页面</a> </li>
</ul>
</li>
<li class="nav-item nav-item-has-subnav">
<a href="javascript:void(0)"><i class="mdi mdi-language-javascript"></i> <span>JS 插件</span></a>
<ul class="nav nav-subnav">
<li> <a href="lyear_js_datepicker.html">日期选取器</a> </li>
<li> <a href="lyear_js_colorpicker.html">选色器</a> </li>
<li> <a href="lyear_js_chartjs.html">Chart.js</a> </li>
<li> <a href="lyear_js_jconfirm.html">对话框</a> </li>
<li> <a href="lyear_js_tags_input.html">标签插件</a> </li>
<li> <a href="lyear_js_notify.html">通知消息</a> </li>
<li> <a href="lyear_js_maxlength.html">长度判断</a> </li>
<li> <a href="lyear_js_select.html">下拉选择</a> </li>
<li> <a href="lyear_js_fullcalendar.html">日程插件</a> </li>
<li> <a href="lyear_js_loading.html">loading插件</a> </li>
</ul>
</li>
<li class="nav-item nav-item-has-subnav">
<a href="javascript:void(0)"><i class="mdi mdi-menu"></i> <span>多级菜单</span></a>
<ul class="nav nav-subnav">
<li> <a href="#!">一级菜单</a> </li>
<li class="nav-item nav-item-has-subnav">
<a href="#!">一级菜单</a>
<ul class="nav nav-subnav">
<li> <a href="#!">二级菜单</a> </li>
<li class="nav-item nav-item-has-subnav">
<a href="#!">二级菜单</a>
<ul class="nav nav-subnav">
<li> <a href="#!">三级菜单</a> </li>
<li> <a href="#!">三级菜单</a> </li>
</ul>
</li>
</ul>
</li>
<li> <a href="#!">一级菜单</a> </li>
</ul>
</li>
</ul>
</nav>
<div class="sidebar-footer">
<p class="copyright">Copyright &copy; 2019. <a target="_blank" href="http://lyear.itshubao.com">IT书包</a> All rights reserved.</p>
</div>
</div>
</aside>
<!--End 左侧导航-->
<!--头部信息-->
<header class="lyear-layout-header">
<nav class="navbar">
<div class="navbar-left">
<div class="lyear-aside-toggler">
<span class="lyear-toggler-bar"></span>
<span class="lyear-toggler-bar"></span>
<span class="lyear-toggler-bar"></span>
</div>
</div>
<ul class="navbar-right d-flex align-items-center">
<li class="dropdown dropdown-notice">
<span data-toggle="dropdown" class="icon-item">
<i class="mdi mdi-bell-outline"></i>
<span class="badge badge-danger">10</span>
</span>
<div class="dropdown-menu dropdown-menu-right">
<div class="lyear-notifications">
<div class="lyear-notifications-title clearfix" data-stopPropagation="true"><a href="#!" class="float-right">查看全部</a>你有 10 条未读消息</div>
<div class="lyear-notifications-info lyear-scroll">
<a href="#!" class="dropdown-item" title="树莓派销量猛增,疫情期间居家工作学习、医疗领域都需要它">树莓派销量猛增,疫情期间居家工作学习、医疗领域都需要它</a>
<a href="#!" class="dropdown-item" title="GNOME 用户体验团队将为 GNOME Shell 提供更多改进">GNOME 用户体验团队将为 GNOME Shell 提供更多改进</a>
<a href="#!" class="dropdown-item" title="Linux On iPhone 即将面世,支持 iOS 的双启动">Linux On iPhone 即将面世,支持 iOS 的双启动</a>
<a href="#!" class="dropdown-item" title="GitHub 私有仓库完全免费面向团队提供">GitHub 私有仓库完全免费面向团队提供</a>
<a href="#!" class="dropdown-item" title="Wasmtime 为 WebAssembly 增加 Go 语言绑定">Wasmtime 为 WebAssembly 增加 Go 语言绑定</a>
<a href="#!" class="dropdown-item" title="红帽借“订阅”成开源一哥,首创者 Cormier 升任总裁">红帽借“订阅”成开源一哥,首创者 Cormier 升任总裁</a>
<a href="#!" class="dropdown-item" title="Zend 宣布推出两项 PHP 新产品">Zend 宣布推出两项 PHP 新产品</a>
</div>
</div>
</div>
</li>
<!--切换主题配色-->
<li class="dropdown dropdown-skin">
<span data-toggle="dropdown" class="icon-item"><i class="mdi mdi-palette"></i></span>
<ul class="dropdown-menu dropdown-menu-right" data-stopPropagation="true">
<li class="drop-title"><p>主题</p></li>
<li class="drop-skin-li clearfix">
<span class="inverse">
<input type="radio" name="site_theme" value="default" id="site_theme_1" checked>
<label for="site_theme_1"></label>
</span>
<span>
<input type="radio" name="site_theme" value="dark" id="site_theme_2">
<label for="site_theme_2"></label>
</span>
<span>
<input type="radio" name="site_theme" value="translucent" id="site_theme_3">
<label for="site_theme_3"></label>
</span>
</li>
<li class="drop-title"><p>LOGO</p></li>
<li class="drop-skin-li clearfix">
<span class="inverse">
<input type="radio" name="logo_bg" value="default" id="logo_bg_1" checked>
<label for="logo_bg_1"></label>
</span>
<span>
<input type="radio" name="logo_bg" value="color_2" id="logo_bg_2">
<label for="logo_bg_2"></label>
</span>
<span>
<input type="radio" name="logo_bg" value="color_3" id="logo_bg_3">
<label for="logo_bg_3"></label>
</span>
<span>
<input type="radio" name="logo_bg" value="color_4" id="logo_bg_4">
<label for="logo_bg_4"></label>
</span>
<span>
<input type="radio" name="logo_bg" value="color_5" id="logo_bg_5">
<label for="logo_bg_5"></label>
</span>
<span>
<input type="radio" name="logo_bg" value="color_6" id="logo_bg_6">
<label for="logo_bg_6"></label>
</span>
<span>
<input type="radio" name="logo_bg" value="color_7" id="logo_bg_7">
<label for="logo_bg_7"></label>
</span>
<span>
<input type="radio" name="logo_bg" value="color_8" id="logo_bg_8">
<label for="logo_bg_8"></label>
</span>
</li>
<li class="drop-title"><p>头部</p></li>
<li class="drop-skin-li clearfix">
<span class="inverse">
<input type="radio" name="header_bg" value="default" id="header_bg_1" checked>
<label for="header_bg_1"></label>
</span>
<span>
<input type="radio" name="header_bg" value="color_2" id="header_bg_2">
<label for="header_bg_2"></label>
</span>
<span>
<input type="radio" name="header_bg" value="color_3" id="header_bg_3">
<label for="header_bg_3"></label>
</span>
<span>
<input type="radio" name="header_bg" value="color_4" id="header_bg_4">
<label for="header_bg_4"></label>
</span>
<span>
<input type="radio" name="header_bg" value="color_5" id="header_bg_5">
<label for="header_bg_5"></label>
</span>
<span>
<input type="radio" name="header_bg" value="color_6" id="header_bg_6">
<label for="header_bg_6"></label>
</span>
<span>
<input type="radio" name="header_bg" value="color_7" id="header_bg_7">
<label for="header_bg_7"></label>
</span>
<span>
<input type="radio" name="header_bg" value="color_8" id="header_bg_8">
<label for="header_bg_8"></label>
</span>
</li>
<li class="drop-title"><p>侧边栏</p></li>
<li class="drop-skin-li clearfix">
<span class="inverse">
<input type="radio" name="sidebar_bg" value="default" id="sidebar_bg_1" checked>
<label for="sidebar_bg_1"></label>
</span>
<span>
<input type="radio" name="sidebar_bg" value="color_2" id="sidebar_bg_2">
<label for="sidebar_bg_2"></label>
</span>
<span>
<input type="radio" name="sidebar_bg" value="color_3" id="sidebar_bg_3">
<label for="sidebar_bg_3"></label>
</span>
<span>
<input type="radio" name="sidebar_bg" value="color_4" id="sidebar_bg_4">
<label for="sidebar_bg_4"></label>
</span>
<span>
<input type="radio" name="sidebar_bg" value="color_5" id="sidebar_bg_5">
<label for="sidebar_bg_5"></label>
</span>
<span>
<input type="radio" name="sidebar_bg" value="color_6" id="sidebar_bg_6">
<label for="sidebar_bg_6"></label>
</span>
<span>
<input type="radio" name="sidebar_bg" value="color_7" id="sidebar_bg_7">
<label for="sidebar_bg_7"></label>
</span>
<span>
<input type="radio" name="sidebar_bg" value="color_8" id="sidebar_bg_8">
<label for="sidebar_bg_8"></label>
</span>
</li>
</ul>
</li>
<!--切换主题配色-->
<li class="dropdown dropdown-profile">
<a href="javascript:void(0)" data-toggle="dropdown" class="dropdown-toggle">
<img class="img-avatar img-avatar-48 m-r-10" src="images/users/avatar.jpg" alt="笔下光年" />
<span>笔下光年</span>
</a>
<ul class="dropdown-menu dropdown-menu-right">
<li>
<a class="dropdown-item" href="lyear_pages_profile.html"><i class="mdi mdi-account"></i> 个人信息</a>
</li>
<li>
<a class="dropdown-item" href="lyear_pages_edit_pwd.html"><i class="mdi mdi-lock-outline"></i> 修改密码</a>
</li>
<li>
<a class="dropdown-item" href="javascript:void(0)"><i class="mdi mdi-delete"></i> 清空缓存</a>
</li>
<li class="dropdown-divider"></li>
<li>
<a class="dropdown-item" href="lyear_pages_login_1.html"><i class="mdi mdi-logout-variant"></i> 退出登录</a>
</li>
</ul>
</li>
</ul>
</nav>
</header>
<!--End 头部信息-->
<!--页面主要内容-->
<main class="lyear-layout-content">
<div class="container-fluid p-t-15">
<div class="row">
<div class="col-lg-12">
<div class="card">
<header class="card-header"><div class="card-title">格栅</div></header>
<div class="card-body">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th class="text-center">
超小屏幕<br>
<small>&lt;576px</small>
</th>
<th class="text-center">
小屏幕<br>
<small>≥576px</small>
</th>
<th class="text-center">
中等屏幕<br>
<small>≥768px</small>
</th>
<th class="text-center">
大屏幕<br>
<small>≥992px</small>
</th>
<th class="text-center">
超大屏幕<br>
<small>≥1200px</small>
</th>
</tr>
</thead>
<tbody>
<tr>
<th class="text-nowrap" scope="row">最大容器宽度 <code>.container</code></th>
<td>None (自动)</td>
<td>540px</td>
<td>720px</td>
<td>960px</td>
<td>1140px</td>
</tr>
<tr>
<th class="text-nowrap" scope="row">类前缀</th>
<td><code>.col-</code></td>
<td><code>.col-sm-</code></td>
<td><code>.col-md-</code></td>
<td><code>.col-lg-</code></td>
<td><code>.col-xl-</code></td>
</tr>
<tr>
<th class="text-nowrap" scope="row">列(column)数</th>
<td colspan="5">12</td>
</tr>
<tr>
<th class="text-nowrap" scope="row">列间隙</th>
<td colspan="5">30px (每列两侧各15px)</td>
</tr>
<tr>
<th class="text-nowrap" scope="row">可嵌套性</th>
<td colspan="5">Yes</td>
</tr>
<tr>
<th class="text-nowrap" scope="row">可排序性</th>
<td colspan="5">Yes</td>
</tr>
</tbody>
</table>
<h5>自动布局列</h5>
<p>利用栅格断点特性进行排版,可以简化列的大小,而不需要批定显式的列宽,如强制写为:<code>.col-sm-6</code></p>
<h6>等宽布局</h6>
<div class="border-example-row">
<div class="container">
<div class="row">
<div class="col">
1 of 2
</div>
<div class="col">
2 of 2
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col">
2 of 3
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;1 of 2&lt;/div&gt;
&lt;div class="col"&gt;2 of 2&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;1 of 3&lt;/div&gt;
&lt;div class="col"&gt;2 of 3&lt;/div&gt;
&lt;div class="col"&gt;3 of 3&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<p>等宽列可以分成多行,但是有一个<a href="https://github.com/philipwalton/flexbugs#11-min-and-max-size-declarations-are-ignored-when-wrapping-flex-items" target="_blank">Safari旧版浏览器的flexbox错误</a>,阻止它在没有显示 <code>flex-basis</code><code>border</code>(影响到边框效果)。Bootstrap非官方的一个实例,已经介绍了<a href="https://output.jsbin.com/micohor" target="_blank">两种解决方法</a>,但如果是最新safri浏览器下,则不需要这样做。</p>
<p>下面是等宽列两行的处理方法,引用 <code>w-100</code> 进行切割分行:</p>
<div class="border-example-row">
<div class="container">
<div class="row">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="w-100"></div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;Column&lt;/div&gt;
&lt;div class="col"&gt;Column&lt;/div&gt;
&lt;div class="w-100"&gt;&lt;/div&gt;
&lt;div class="col"&gt;Column&lt;/div&gt;
&lt;div class="col"&gt;Column&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>设置一列宽度</h6>
<p>在Flexbox的布局上,拥有很多现代特征,比如自动布局和列宽处理。你可以在一行多列的情况下,特别指定一列并进行宽度定义,同时其它列自动调整大小,可以使用预定义的栅格类(如下所示),从而实行栅格宽或行宽的优化处理。注意在这种民琣上,无论中心定义列的宽度如何,其他列都将调整大小。</p>
<div class="border-example-row">
<div class="container">
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-6">
2 of 3 (更宽-12格中占6格,其它6格另外两列平分)
</div>
<div class="col">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-5">
2 of 3 (更宽-12格中占5格,其它7格另外两列平分-不论奇偶都能达成)
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;1 of 3&lt;/div&gt;
&lt;div class="col-6"&gt;2 of 3 (更宽-12格中占6格,其它6格另外两列平分)&lt;/div&gt;
&lt;div class="col"&gt;3 of 3&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;1 of 3&lt;/div&gt;
&lt;div class="col-5"&gt;2 of 3 (更宽-12格中占5格,其它7格另外两列平分-不论奇偶都能达成)&lt;/div&gt;
&lt;div class="col"&gt;3 of 3&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>可变宽度的弹性空间</h6>
<p>使用 <code>col-{breakpoint}-auto</code> 断点方法,可以实现根据其内容的自然宽度来对列进行大小调整。</p>
<div class="border-example-row">
<div class="container">
<div class="row justify-content-md-center">
<div class="col col-lg-2">1 of 3</div>
<div class="col-md-auto">Variable width content</div>
<div class="col col-lg-2">3 of 3</div>
</div>
<div class="row">
<div class="col">1 of 3</div>
<div class="col-md-auto">Variable width content</div>
<div class="col col-lg-2">3 of 3</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row justify-content-md-center"&gt;
&lt;div class="col col-lg-2"&gt;1 of 3&lt;/div&gt;
&lt;div class="col-md-auto"&gt;Variable width content&lt;/div&gt;
&lt;div class="col col-lg-2"&gt;3 of 3&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;1 of 3&lt;/div&gt;
&lt;div class="col-md-auto"&gt;Variable width content&lt;/div&gt;
&lt;div class="col col-lg-2"&gt;3 of 3&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>等宽多行</h6>
<div class="border-example-row">
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="w-100"></div>
<div class="col">col</div>
<div class="col">col</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;div class="w-100"&gt;&lt;/div&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;/div&gt;</pre>
<h5>响应式的class选择器</h5>
<p>Bootstrap的栅格系统包括五种宽带预定义,用于构建复杂的响应布局,你可以根据需要定义在特小 <code>.col</code>、小 <code>.col-sm-*</code>、中 <code>.col-md-*</code>、大 <code>.col-lg-*</code>、特大 <code>.col-xl-*</code> 五种屏幕(设备)下的样式。</p>
<h6>覆盖所有设备</h6>
<p>如果要一次性定义从最小设备到最大设备相同的网格系统布局表现,请使用 <code>.col</code><code>.col-*</code> 类。后者是用于指定特定大小的(如 <code>.col-6</code> ),否则使用 <code>.col</code> 就可以了。</p>
<div class="border-example-row">
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
</div>
<div class="row">
<div class="col-8">col-8</div>
<div class="col-4">col-4</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;div class="col"&gt;col&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-8"&gt;col-8&lt;/div&gt;
&lt;div class="col-4"&gt;col-4&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>水平堆砌</h6>
<p>使用单一的.col-sm-*类方法,可以创建一个基本的网格系统,此时如果没有指定其它媒体查询断点宽度,这个栅格系统是成立的,而且会随着屏幕变窄成为超小屏幕.col-后,自动成为每列一行、水平堆砌。改变网页屏幕宽度你可以在下面列子看到效果:</p>
<div class="border-example-row">
<div class="row">
<div class="col-sm-8">col-sm-8</div>
<div class="col-sm-4">col-sm-4</div>
</div>
<div class="row">
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-sm-8"&gt;col-sm-8&lt;/div&gt;
&lt;div class="col-sm-4"&gt;col-sm-4&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-sm"&gt;col-sm&lt;/div&gt;
&lt;div class="col-sm"&gt;col-sm&lt;/div&gt;
&lt;div class="col-sm"&gt;col-sm&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>混合布局</h6>
<div class="border-example-row">
<!-- 定义在超小屏幕下1列全宽、1列半宽,而其它场景以8:4比例并行排列 -->
<div class="row">
<div class="col-12 col-md-8">.col-12 .col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
<div class="col-6">.col-6</div>
<div class="col-6">.col-6</div>
</div>
</div>
<pre>&lt;!-- 定义在超小屏幕下1列全宽、1列半宽,而其它场景以8:4比例并行排列 --&gt;
&lt;div class="row"&gt;
&lt;div class="col-12 col-md-8"&gt;.col-12 .col-md-8&lt;/div&gt;
&lt;div class="col-6 col-md-4"&gt;.col-6 .col-md-4&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop --&gt;
&lt;div class="row"&gt;
&lt;div class="col-6 col-md-4"&gt;.col-6 .col-md-4&lt;/div&gt;
&lt;div class="col-6 col-md-4"&gt;.col-6 .col-md-4&lt;/div&gt;
&lt;div class="col-6 col-md-4"&gt;.col-6 .col-md-4&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Columns are always 50% wide, on mobile and desktop --&gt;
&lt;div class="row"&gt;
&lt;div class="col-6"&gt;.col-6&lt;/div&gt;
&lt;div class="col-6"&gt;.col-6&lt;/div&gt;
&lt;/div&gt;</pre>
<h5>对齐</h5>
<p>flexbox布局可以轻松的实现DIV空间布局的垂直、水平对齐。</p>
<h6>垂直对齐示例</h6>
<div class="border-example-row border-example-row-flex-cols">
<div class="container">
<div class="row align-items-start">
<div class="col">One of three columns</div>
<div class="col">One of three columns</div>
<div class="col">One of three columns</div>
</div>
<div class="row align-items-center">
<div class="col">One of three columns</div>
<div class="col">One of three columns</div>
<div class="col">One of three columns</div>
</div>
<div class="row align-items-end">
<div class="col">One of three columns</div>
<div class="col">One of three columns</div>
<div class="col">One of three columns</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row align-items-start"&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row align-items-center"&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row align-items-end"&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;div class="col"&gt;One of three columns&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<div class="border-example-row border-example-row-flex-cols">
<div class="container">
<div class="row">
<div class="col align-self-start">
One of three columns
</div>
<div class="col align-self-center">
One of three columns
</div>
<div class="col align-self-end">
One of three columns
</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row"&gt;
&lt;div class="col align-self-start"&gt;
One of three columns
&lt;/div&gt;
&lt;div class="col align-self-center"&gt;
One of three columns
&lt;/div&gt;
&lt;div class="col align-self-end"&gt;
One of three columns
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>水平对齐示例</h6>
<div class="border-example-row">
<div class="container">
<div class="row justify-content-start">
<div class="col-4">One of two columns</div>
<div class="col-4">One of two columns</div>
</div>
<div class="row justify-content-center">
<div class="col-4">One of two columns</div>
<div class="col-4">One of two columns</div>
</div>
<div class="row justify-content-end">
<div class="col-4">One of two columns</div>
<div class="col-4">One of two columns</div>
</div>
<div class="row justify-content-around">
<div class="col-4">One of two columns</div>
<div class="col-4">One of two columns</div>
</div>
<div class="row justify-content-between">
<div class="col-4">One of two columns</div>
<div class="col-4">One of two columns</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row justify-content-start"&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row justify-content-center"&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row justify-content-end"&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row justify-content-around"&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row justify-content-between"&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;div class="col-4"&gt;One of two columns&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>间隙沟槽(gutters)清除</h6>
<p>BootStrap默认的栅格和列间有间隙沟槽,一般是左右-15px的 <code>margin</code><code>padding</code> 处理,您可以使用 <code>.no-gutters</code> 类来消除它,这将影响到 <code>.row</code> 行、列平行间隙及所有子列。</p>
<p>如果你需要无边缝设计(edge-to-edge design),则请在父DIV中放弃 <code>.container</code><code>.container-fluid</code> 容器。</p>
<pre>.no-gutters {
margin-right: 0;
margin-left: 0;
&gt; .col,
&gt; [class*="col-"] {
padding-right: 0;
padding-left: 0;
}
}</pre>
<div class="border-example-row">
<div class="row no-gutters">
<div class="col-12 col-sm-6 col-md-8">.col-12 .col-sm-6 .col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
</div>
<pre>&lt;div class="row no-gutters"&gt;
&lt;div class="col-12 col-sm-6 col-md-8"&gt;.col-12 .col-sm-6 .col-md-8&lt;/div&gt;
&lt;div class="col-6 col-md-4"&gt;.col-6 .col-md-4&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>列换行</h6>
<p>如果在一行内子DIV定义的栅格总数超过12列,BootStrap会在保留列完整的前提下,将无法平行布局的多余列,重置到下一行,并占用一个完整的新行。</p>
<div class="border-example-row">
<div class="row">
<div class="col-9">.col-9</div>
<div class="col-4">.col-4<br>Since 9 + 4 = 13 &gt; 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
<div class="col-6">.col-6<br>Subsequent columns continue along the new line.</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-9"&gt;.col-9&lt;/div&gt;
&lt;div class="col-4"&gt;.col-4&lt;br&gt;Since 9 + 4 = 13 &gt; 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.&lt;/div&gt;
&lt;div class="col-6"&gt;.col-6&lt;br&gt;Subsequent columns continue along the new line.&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>换行</h6>
<p>一般换行推荐使用添加多个 <code>.row</code> 来达成,否则你可以使用系统提供的 <code>.w-100</code> 方法处理,其思路是强行插入一个 <code>width:100%</code> 的DIV进行隔离切断(前文有两处提到,这是Flexbox流式布局的一个Hack,目前没有更好的方案)。</p>
<div class="border-example-row">
<div class="row">
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="w-100"></div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-6 col-sm-3"&gt;.col-6 .col-sm-3&lt;/div&gt;
&lt;div class="col-6 col-sm-3"&gt;.col-6 .col-sm-3&lt;/div&gt;
&lt;div class="w-100"&gt;&lt;/div&gt;
&lt;div class="col-6 col-sm-3"&gt;.col-6 .col-sm-3&lt;/div&gt;
&lt;div class="col-6 col-sm-3"&gt;.col-6 .col-sm-3&lt;/div&gt;
&lt;/div&gt;</pre>
<p>也可以结合响应式实用程序来换行(切割)。</p>
<div class="border-example-row">
<div class="row">
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<div class="w-100 d-none d-md-block"></div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-6 col-sm-4"&gt;.col-6 .col-sm-4&lt;/div&gt;
&lt;div class="col-6 col-sm-4"&gt;.col-6 .col-sm-4&lt;/div&gt;
&lt;div class="w-100 d-none d-md-block"&gt;&lt;/div&gt;
&lt;div class="col-6 col-sm-4"&gt;.col-6 .col-sm-4&lt;/div&gt;
&lt;div class="col-6 col-sm-4"&gt;.col-6 .col-sm-4&lt;/div&gt;
&lt;/div&gt;</pre>
<h5>重排序</h5>
<h6>Class顺序重定义</h6>
<p>使用 <code>.order-* class</code> 选择符,可以对DIV空间进行 可视化排序,系统提供了 <code>.order-1</code><code>.order-12</code> 12个级别的顺序,在五种浏览器和设备宽度上都能生效。</p>
<div class="border-example-row">
<div class="container">
<div class="row">
<div class="col">1号空间-未定义序号,位置不变。</div>
<div class="col order-12">2号空间-排最后。</div>
<div class="col order-1">3号空间-放第1但受1号空间不变影响居第2位。 </div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;1号空间-未定义序号,位置不变。&lt;/div&gt;
&lt;div class="col order-12"&gt;2号空间-排最后。&lt;/div&gt;
&lt;div class="col order-1"&gt;3号空间-放第1但受1号空间不变影响居第2位。&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
还有响应的.order first,它们分别通过应用order:-1。
<p>还可以使用 <code>.order-first</code><code>.order-last</code> 类,快速更改一个顺序到最前面,同时其它元素也相应的获得了 <code>order: -1</code><code>order: 13(order: $columns + 1)</code> 来更改元素的顺序,这个属性也可以与 <code>.order-*</code> 混合使用。</p>
<div class="border-example-row">
<div class="container">
<div class="row">
<div class="col">1号空间-未定义顺序。</div>
<div class="col">2号空间-未定义顺序。</div>
<div class="col order-first">3号空间-优先排序,占第1位。</div>
</div>
</div>
</div>
<pre>&lt;div class="container"&gt;
&lt;div class="row"&gt;
&lt;div class="col"&gt;1号空间-未定义顺序。&lt;/div&gt;
&lt;div class="col"&gt;2号空间-未定义顺序。&lt;/div&gt;
&lt;div class="col order-first"&gt;3号空间-优先排序,占第1位。&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<h5>列偏移</h5>
<p>您可以通过两种方式偏移网格列:响应式的 <code>.offset-</code> 网格类和<a href="https://getbootstrap.com/docs/4.0/utilities/spacing/" target="_blank">边距实用程序</a>。网格类的大小与列匹配,而边距对于偏移宽度可变的快速布局更有用。</p>
<h6>class偏移选择器</h6>
<p>使用 <code>.offset-md-*</code> 类将列向右移动。这些类将列的左边距增加 <code>*</code> 列。例如:<code>.offset-md-4</code><code>.col-md-4</code> 向右偏移四列。</p>
<div class="border-example-row">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div>
</div>
<div class="row">
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
</div>
<div class="row">
<div class="col-md-6 offset-md-3">.col-md-6 .offset-md-3</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-md-4"&gt;.col-md-4&lt;/div&gt;
&lt;div class="col-md-4 offset-md-4"&gt;.col-md-4 .offset-md-4&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-3 offset-md-3"&gt;.col-md-3 .offset-md-3&lt;/div&gt;
&lt;div class="col-md-3 offset-md-3"&gt;.col-md-3 .offset-md-3&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-6 offset-md-3"&gt;.col-md-6 .offset-md-3&lt;/div&gt;
&lt;/div&gt;</pre>
<p>除了在响应断点处清除列,您可能需要重置偏移量,下面的栅格示例展示了这一点:</p>
<div class="border-example-row">
<div class="row">
<div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
<div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-5 col-lg-6">.col.col-sm-6.col-md-5.col-lg-6</div>
<div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-sm-5 col-md-6"&gt;.col-sm-5 .col-md-6&lt;/div&gt;
&lt;div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0"&gt;.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-sm-6 col-md-5 col-lg-6"&gt;.col.col-sm-6.col-md-5.col-lg-6&lt;/div&gt;
&lt;div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0"&gt;.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0&lt;/div&gt;
&lt;/div&gt;</pre>
<h6>Margin边距布局</h6>
<p>在BootStrap V4中,你可以使用 <code>.ml-auto</code><code>.mr-auto</code> 来强制隔离两边的距离,实现类水平隔离的效果。</p>
<div class="border-example-row">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 ml-auto">.col-md-4 .ml-auto</div>
</div>
<div class="row">
<div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
<div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
</div>
<div class="row">
<div class="col-auto mr-auto">.col-auto .mr-auto</div>
<div class="col-auto">.col-auto</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-md-4"&gt;.col-md-4&lt;/div&gt;
&lt;div class="col-md-4 ml-auto"&gt;.col-md-4 .ml-auto&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-3 ml-md-auto"&gt;.col-md-3 .ml-md-auto&lt;/div&gt;
&lt;div class="col-md-3 ml-md-auto"&gt;.col-md-3 .ml-md-auto&lt;/div&gt;
&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-auto mr-auto"&gt;.col-auto .mr-auto&lt;/div&gt;
&lt;div class="col-auto"&gt;.col-auto&lt;/div&gt;
&lt;/div&gt;</pre>
<h5>列嵌套</h5>
<p>若要使用默认网格嵌套内容,请在现有的 <code>.col-sm-*</code> 列中添加新的 <code>.row</code><code>.col-sm-*</code> 列集。嵌套行应包含一组总计不超过12个的列(不要求使用所有12个可用列)。</p>
<div class="border-example-row">
<div class="row">
<div class="col-sm-9">
Level 1: .col-sm-9
<div class="row">
<div class="col-8 col-sm-6">Level 2: .col-8 .col-sm-6</div>
<div class="col-4 col-sm-6">Level 2: .col-4 .col-sm-6</div>
</div>
</div>
</div>
</div>
<pre>&lt;div class="row"&gt;
&lt;div class="col-sm-9"&gt;
Level 1: .col-sm-9
&lt;div class="row"&gt;
&lt;div class="col-8 col-sm-6"&gt;Level 2: .col-8 .col-sm-6&lt;/div&gt;
&lt;div class="col-4 col-sm-6"&gt;Level 2: .col-4 .col-sm-6&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
</div>
</div>
</div>
</div>
</div>
</main>
<!--End 页面主要内容-->
</div>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/popper.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/perfect-scrollbar.min.js"></script>
<script type="text/javascript" src="js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="js/main.min.js"></script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化