本文已参与「新人创作礼」活动,一起开启掘金创作之路。
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>仿bootstrap栅格布局</title>
<style>
/*1*/
* {
/*1start 盒子大小计算方式。被定义的元素的内边距和边框不再会增加它的宽度,
不加入的话排版会有问题 */
box-sizing: border-box;
-moz-box-sizing: border-box;
/* Firefox浏览器特有属性 针对火狐起作用 */
-webkit-box-sizing: border-box;
/*1end*/
}
/*2设置容器 目的:随着屏幕增大,container宽度变大*/
/*移动优先 默认Extra small <576px 超小设备*/
/*默认针对超小设备*/
.container {
width: 100%;
/* 2.1 设置padding确保内容左右留白*/
padding-right: 15px;
padding-left: 15px;
/*2.2 start 设置为水平居中*/
margin-right: auto;
margin-left: auto;
/*2end*/
}
/*针对 Small 平板 ≥576px*/
@media screen and (min-width: 576px) {
.container {
max-width: 540px;
}
}
/*针对 Medium 桌面显示器 ≥768px*/
@media screen and (min-width: 768px) {
.container {
max-width: 720px;
}
}
/*针对 Large 大桌面显示器 ≥992px*/
@media screen and (min-width: 992px) {
.container {
max-width: 960px;
}
}
/*Extra large 超大桌面显示器 ≥992px*/
@media screen and (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
/*3设置行 弹性布局容器 采用flex布局*/
.row {
/*3.1start 负值margin为了抵消container的padding,因为col有留白*/
margin-right: -15px;
margin-left: -15px;
/*3.1end*/
/*3.2 弹性布局容器*/
display: flex;
/*3.3 换行结构 列宽超过 换行显示*/
flex-wrap: wrap;
}
/*4 设置列 针对所有设备*/
/*4.1设置列内边距15px*/
.row div {
padding: 15px;
}
/*4.2 设置等分列 样式*/
.col {
flex: 1;
}
/*4.3 设置列的跨度(列)*/
.col-1 {
/* 设置flex行为*/
/* flex: flex-grow, flex-shrink, flex-basis*/
/* flex-grow: 项目的放大比例,默认为0,即如果存在剩余空间,也不放大*/
/* flex-shrink: 项目的缩小比例,默认为1,如果空间不足,则该项目缩小,若为0,则不缩小.*/
/* flex-basis: <length> | auto; 默认为auto,即项目本来大小,可设置长度*/
flex: 0 0 8.33333333%;
/* 父级元素宽度百分比*/
max-width: 8.33333333%;
}
.col-2 {
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-4 {
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-5 {
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-7 {
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-8 {
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-10 {
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-11 {
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-12 {
flex: 0 0 100%;
max-width: 100%;
}
/*4.4 针对不同的设备写列的样式(宽度) 小屏幕显示为2列 平板显示3列 在大屏幕显示为多列6*/
/*针对 Small 平板 ≥576px*/
@media screen and (min-width: 576px) {
.col-sm-1 {
flex: 0 0 8.33333333%;
/* 父级元素宽度百分比*/
max-width: 8.33333333%;
}
.col-sm-2 {
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-sm-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-sm-4 {
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-sm-5 {
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-sm-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-sm-7 {
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-sm-8 {
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-sm-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-sm-10 {
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-sm-11 {
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-sm-12 {
flex: 0 0 100%;
max-width: 100%;
}
}
/*针对 Medium 桌面显示器 ≥768px*/
@media screen and (min-width: 768px) {
.col-md-1 {
flex: 0 0 8.33333333%;
/* 父级元素宽度百分比*/
max-width: 8.33333333%;
}
.col-md-2 {
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-md-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-md-4 {
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-md-5 {
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-md-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-md-7 {
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-md-8 {
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-md-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-md-10 {
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-md-11 {
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-md-12 {
flex: 0 0 100%;
max-width: 100%;
}
}
/*针对 Large 大桌面显示器 ≥992px*/
@media screen and (min-width: 992px) {
.col-lg-1 {
flex: 0 0 8.33333333%;
/* 父级元素宽度百分比*/
max-width: 8.33333333%;
}
.col-lg-2 {
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-lg-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-lg-4 {
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-lg-5 {
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-lg-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-lg-7 {
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-lg-8 {
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-lg-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-lg-10 {
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-lg-11 {
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-lg-12 {
flex: 0 0 100%;
max-width: 100%;
}
}
/*Extra large 超大桌面显示器 ≥992px*/
@media screen and (min-width: 1200px) {
.col-xl-1 {
flex: 0 0 8.33333333%;
/* 父级元素宽度百分比*/
max-width: 8.33333333%;
}
.col-xl-2 {
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-xl-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-xl-4 {
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-xl-5 {
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-xl-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-xl-7 {
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-xl-8 {
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-xl-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-xl-10 {
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-xl-11 {
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-xl-12 {
flex: 0 0 100%;
max-width: 100%;
}
}
/**为了看效果 后面完成后要删掉*/
.container {
background: #0000FF;
}
.row {
background: #FF7F50;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-6 col-sm-4 col-md-1 col-xl-3" style="background: #8FBC8F;">1</div>
<div class="col-6 col-sm-4 col-md-3 col-xl-1" style="background: darkolivegreen;">2</div>
<div class="col-6 col-sm-4 col-md-1 col-xl-4" style="background: #8FBC8F;">3</div>
<div class="col-6 col-sm-4 col-md-4 col-xl-1" style="background: darkolivegreen;">4</div>
<div class="col-6 col-sm-4 col-md-2 col-xl-2" style="background: #8FBC8F;">5</div>
<div class="col-6 col-sm-4 col-md-1 col-xl-1" style="background: darkolivegreen;">6</div>
</div>
<div class="row">
<div class="col-3" style="background: sandybrown;">1</div>
<div class="col-5" style="background: blue;">2</div>
<div class="col-4" style="background: sandybrown;">3</div>
</div>
</div>
</body>