尺寸大小的测量:
颜色的测量:
文字信息的获取:
⚠️CSS 盒模型的注意点:
块级盒子的特性:
内联盒子的特性:
清除浮动: 清除浮动的作用是使浮动元素的兄弟元素不受浮动的影响
// html
<div class="box1"></div>
<div class="box2"></div>
// css
.box1 {
width: 100px;
height:100px;
background: red;
float: left;
}
.box2 {
width: 200px;
height:200px;
background: skyblue;
// 清除浮动:
// 如果是左浮动可以使用 clear: left;
// 如果是右浮动可以使用 clear: right;
// 如果是想将左右浮动都清楚可以使用 clear: both;
clear: both;
}
// 原理是使用空标签 + clear: both; 只不过是通过 ::after 伪类的形式添加
// html
<div class="box1 clearfix">
<div class="box2"></div>
</div>
// css
.box1 {
width: 200px;
border: 1px solid #333;
}
.box2 {
width: 100px;
height: 100px;
background: skyblue;
float: left;
}
/* 清除浮动 */
.clearfix::after {
content: "",
display: block; // 将 ::after 添加的盒子变成块级盒子
clear: both; // clear 属性清除浮动只能针对块级盒子,对行内盒子不起作用
}
⚠️浮动特性注意点:
⚠️定位特性注意点:
display-outside(外部值):
display-inside(内部值):
display-listitem(列表值):
display-internal(属性值):
display-box(显示值):
display-legacy(混合值):
display-global(全局值):
BFC 的生成条件:
BFC 的应用:
清除标签默认样式:
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
npm install normalize.css
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}
书写模式:
逻辑属性:
// html
<div class="box">
<div>1</div>
<div>2</div>
</div>
// css
/**
* 示例1:
* 当项目1扩展比例为1,项目2扩展比例为1时,总比例值大于等于1
* 项目1所占空间 = 200 * 1/(1 + 1) + 200 = 300
* 项目2所占空间 = 200 * 1/(1 + 1) + 100 = 200
**/
/**
* 示例2:
* 当项目1扩展比例为 3,项目2扩展比例为 2 时,总比例值大于等于1
* 项目1所占空间 = 200 + (500 - 200 - 100) * 3/(2 + 3) = 320
* 项目2所占空间 = 100 + (500 - 200 - 100) * 2/(2 + 3) = 180
**/
/**
* 示例3:
* 当项目1扩展比例为 0.3,项目2扩展比例为 0.8 时,总比例值大于等于1
* 项目1所占空间 = 200 + (500 - 200 - 100) * 0.3/(0.3 + 0.8) = 254.55
* 项目2所占空间 = 100 + (500 - 200 - 100) * 0.8/(0.3 + 0.8) = 245.45
**/
/**
* 示例4:
* 当项目1扩展比例为 0.3,项目2扩展比例为 0.7 时,总比例值大于等于1
* 项目1所占空间 = 200 + (500 - 200 - 100) * 0.3/(0.3 + 0.7) = 260
* 项目2所占空间 = 100 + (500 - 200 - 100) * 0.7/(0.3 + 0.7) = 240
**/
/**
* 示例5:
* 当项目1扩展比例为 0.3,项目2扩展比例为 0.4 时,总比例值小于1
* 项目1所占空间 = 200 + (500 - 200 - 100) * 0.3 = 260
* 项目2所占空间 = 100 + (500 - 200 - 100) * 0.4 = 180
**/
.box {
width: 500px;
height: 300px;
border: 1px solid red;
}
.box div:nth-of-type(1) {
width: 200px;
height: 100px;
border: 1px solid green;
flex-grow: 1;
}
.box div:nth-of-type(2) {
width: 100px;
height: 100px;
border: 1px solid green;
flex-grow: 1;
}
// html
<div class="main">
<div>1</div>
<div>2</div>
</div>
// css
/**
* 多个项目示例1:
* 当项目1收缩比例为2,项目2扩展比例为3时,即总比例大于1
* 项目1所占空间 = 400 - ((400 * 2)/(400*2 + 300*3)) * (400 + 300 -500) = 305.88
* 项目2所占空间 = 300 - ((300 * 3)/(400*2 + 300*3)) * (400 + 300 -500) = 194.12
**/
/**
* 多个项目示例2:
* 当项目1收缩比例为2,项目2扩展比例为 0.3时,即总比例大于1
* 项目1所占空间 = 400 - ((400 * 2)/(400*2 + 300*0.3)) * (400 + 300 -500) = 220.23
* 项目2所占空间 = 300 - ((300 * 0.3)/(400*2 + 300*0.3)) * (400 + 300 -500) = 279.77
**/
/**
* 多个项目示例3:
* 当项目1收缩比例为0.3,项目2扩展比例为 0.7时,即总比例等于1
* 项目1所占空间 = 400 - ((400 * 0.3)/(400*0.3 + 300*0.7)) * (400 + 300 -500) = 327.27
* 项目2所占空间 = 300 - ((300 * 0.7)/(400*0.3 + 300*0.7)) * (400 + 300 -500) = 172.73
**/
/**
* 多个项目示例4:
* 当项目1收缩比例为0.3,项目2扩展比例为 0.1时,即总比例小于1
* 项目1所占空间 = 400 - ((400 * 0.3)/(400*0.3 + 300*0.1)) * ((0.3 + 0.1) * (400 + 300 -500)) = 336
* 项目2所占空间 = 300 - ((300 * 0.1)/(400*0.3 + 300*0.1)) * ((0.3 + 0.1) * (400 + 300 -500)) = 284
**/
.main {
width: 500px;
height: 300px;
background-color: skyblue;
display: flex;
}
.main div:nth-of-type(1) {
width: 400px;
height: 100px;
background-color: red;
flex-shrink: 0.3;
}
.main div:nth-of-type(2) {
width: 300px;
height: 100px;
background-color: green;
flex-shrink: 0.1;
}
容器和项目:
行和列:
单元格:
间隙:
网格线:
区域:
// html
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
</div>
// css
.container {
width: 500px;
height: 300px;
background: skyblue;
display: grid;
// 定义行 3行,第一行宽度 100px,第二行宽度 100px,第三行宽度 100px
grid-template-rows: 100px 100px 100px;
// 定义列 3列,第一列宽度 100px,第二列宽度 200px,第二列宽度 200px
grid-tempalte-columns: 100px 200px 200px;
}
.container div {
background: red;
}
// html
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
// css
.container {
width: 300px;
height: 300px;
background: skyblue;
display: grid;
// 定义列 3列,三列均分容器宽度,每列占三分之一宽度
grid-tempalte-rows: 1fr 1fr 1fr;
// 定义行 3行,三行均分容器宽度,每行占三分之一高度
grid-template-columns: 1fr 1fr 1fr;
// 例如:将第一行的第一列及第二列合并,将第三行的第一列、第二列及第三列合并,
grid-template-areas:
"a1 a1 a2"
"a3 a4 a5"
"a6 a6 a6";
}
.container div {
background: green;
border: 1px solid #000;
box-sizing: border-box;
}
.container div:nth-of-type(1) {
// 表示第一个值1所在div容器占 a1 区域
grid-area: a1;
}
.container div:nth-of-type(2) {
// 表示第一个值2所在div容器占 a2 区域
grid-area: a2;
}
.container div:nth-of-type(3) {
// 表示第一个值3所在div容器占 a3 区域
grid-area: a3;
}
.container div:nth-of-type(4) {
// 表示第一个值4所在div容器占 a4 区域
grid-area: a4;
}
.container div:nth-of-type(5) {
// 表示第一个值5所在div容器占 a5 区域
grid-area: a5;
}
.container div:nth-of-type(6) {
// 表示第一个值6所在div容器占 a6 区域
grid-area: a6;
}
grid-template:
"命名11 命名12 ... 命名1n" 第一行的高度
"命名21 命名22 ... 命名2n" 第二行的高度
"......"
"命名m1 命名m2 ... 命名mn" 第m行的高度
/ 第一列的宽度 第二列的宽度 ... 第n列的宽度 ;
grid-tempalte-rows: 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr;
grid-template-areas:
"a1 a1 a2"
"a3 a4 a5"
"a6 a6 a6";
// 缩写为
grid-template:
"a1 a1 a2" 1fr
"a3 a4 a5" 1fr
"a6 a6 a6" 1fr
/ 1fr 1fr 1fr;
// css
.container {
width: 300px;
height: 300px;
background: skyblue;
display: grid;
grid-template-rows: 1fr 1fr 1fr;
grid-tempalte-columns: 1fr 1fr 1fr;
/* grid-row-gap: 20px;
grid-column-gap: 10px; */
/* row-gap: 20px;
column-gap: 10px; */
/* grid-gap: 20px 10px; */
gap: 20px 10px;
}
// 示例1:
grid-template-columns: 100px 100px 100px;
// 等价于
grid-template-columns: repeat(3, 100px);
// 示例2:
grid-template-columns: 150px 100px 100px;
// 等价于
grid-template-columns: 150px repeat(2, 100px);
// 示例3:
grid-template-columns: 100px minmax(100px, 1fr) 100px;
// 示例4:
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
// html
<div class="container">
<div>1</div>
</div>
// css
.container {
width: 300px;
height: 300px;
background: skyblue;
display: grid;
grid-template-rows: 1fr 1fr 1fr;
grid-tempalte-columns: 1fr 1fr 1fr;
}
.container div:nth-of-type(1) {
background: red;
grid-row-start: 2; // 垂直方向第2条水平网格线开始
grid-row-end: 4; // 垂直方向第4条水平网格线结束
grid-column-start: 2; // 水平方向第2条垂直网格线开始
grid-column-end: 3; // 水平方向第3条垂直网格线结束
}
// html
<div class="container">
<div>1</div>
</div>
// css
.container {
width: 300px;
height: 300px;
background: skyblue;
display: grid;
grid-template-rows: 1fr 1fr 1fr;
grid-tempalte-columns: 1fr 1fr 1fr;
}
.container div:nth-of-type(1) {
background: red;
grid-row-start: 2; // 垂直方向第2条水平网格线开始
grid-row-end: span 2; // 表示占据两行,即从第2条水平网格线开始到第4条水平网格线结束
grid-column-start: 2; // 水平方向第2条垂直网格线开始
grid-column-end: span 1; // 表示占据一列,即从第2条垂直网格线开始到第3条垂直网格线结束
}
// html
<div class="container">
<div>1</div>
</div>
// css
.container {
width: 300px;
height: 300px;
background: skyblue;
display: grid;
grid-template-rows: [row1] 1fr [row2] 1fr [row3] 1fr [row4];
grid-tempalte-columns: [col1] 1fr [col2] 1fr [col3] 1fr [col4];
}
.container div:nth-of-type(1) {
background: red;
grid-row-start: row2; // 垂直方向第2条水平网格线开始
grid-row-end: span 2; // 表示占据两行,即从第2条水平网格线开始到第4条水平网格线结束
grid-column-start: col2; // 水平方向第2条垂直网格线开始
grid-column-end: span 1; // 表示占据一列,即从第2条垂直网格线开始到第3条垂直网格线结束
}
// html
<div class="container">
<div>1</div>
</div>
// css
.container {
width: 300px;
height: 300px;
background: skyblue;
display: grid;
grid-template-rows: [row1] 1fr [row2] 1fr [row3] 1fr [row4];
grid-tempalte-columns: [col1] 1fr [col2] 1fr [col3] 1fr [col4];
}
.container div:nth-of-type(1) {
width: 50px;
height: 50px;
background: purple;
grid-row-start: row2; // 垂直方向第2条水平网格线开始
grid-row-end: span 2; // 表示占据两行,即从第2条水平网格线开始到第4条水平网格线结束
grid-column-start: col2; // 水平方向第2条垂直网格线开始
grid-column-end: span 1; // 表示占据一列,即从第2条垂直网格线开始到第3条垂直网格线结束
justify-self: center;
align-self: center;
}
分辨率:
物理像素(physical pixel):
CSS 像素:
设备像素比(dpr):
标清屏和高清屏:
缩放:
PPI/DPI:
视口宽度设置:
// 一般这样写
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,maximum-scale=1,minimum-scale=1">
// 下面这些是分开写
<meta name="viewport" content="initial-scale=1">
<meta name="viewport" content="width=device-width">
<meta name="viewport" content="maximum-scale=1,minimum-scale=1">
JS 中获取视口宽度:
console.log(window.innerWidth);
console.log(document.documentElement.clientWidth);
console.log(document.documentElement.getBoundingClientRect().width);
var viewWidth = window.innerWidth || document.documentElement.clientWidth || document.documentElement.getBoundingClientRect().width;
JS 中获取设备像素比 dpr:
console.log(window.devicePixelRatio);
font-size: 12px;
width: 5em; // 相当于宽为 5 x 12 = 60px
height: 6em; // 相当于高为 6 x 12 = 72px
html {
font-size: 12px;
}
.box {
width: 1rem; // 相当于宽为 1 x 12 = 12px
}
html {
font-size: 16px;
}
.box {
width: 2rem; // 相当于宽为 2 x 16 = 32px
}
px to rem 插件的安装:
px to rem 插件的使用:
⚠️注意:PS 中量取的数值,是物理像素,CSS 中设置的是逻辑像素,所以需要对量取的值进行除以 2
npm install -D postcss-px2rem
// vue.config.js
const px2rem = require('postcss-px2rem')
const postcss = px2rem({
remUnit: 100
})
module.exports = {
publicPath: "./",
css: {
loaderOptions: {
postcss: {
plugins: [
postcss
]
}
}
}
}
<script>
// 这里的 100 表示 1rem = 100px
// baseSize 设置与 vue.config.js 中的 remUnit 值保持一致
const baseSize = 100
function setRem() {
// 相对于 1920px 像素,获得一个缩放比例
const scale = document.documentElement.clientWidth / 1920
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
window.onresize = function () {
setRem()
}
</script>
⚠️注意:px to rem 和 px-to-vw 两个插件不能同时使用,在使用某一个之前需要将另一个禁用
@media 媒体类型 {}
// 大于等于 200px
@media (min-width: 200px) {}
// 垂直
@media (orientation: portrait) {}
// 水平
@media (orientation: portrait) {}
// and
@media (min-width: 200px) and (max-width: 300px) {}
// not
@media not screen and (min-width: 200px) {}
// or
@media (max-width: 200px), (min-width:500px) {}
// a.css
// b.css
<link rel="stylesheet" href="./css/a.css" media="(max-width: 200px)">
<link rel="stylesheet" href="./css/b.css" media="(min-width: 500px)">
/**
* 移动端 => PC端
**/
@media (min-width: 576px) {}
@media (min-width: 768px) {}
@media (min-width: 992px) {}
@media (min-width: 1200px) {}
/**
* PC端 => 移动端
**/
@media (max-width: 1200px) {}
@media (max-width: 992px) {}
@media (max-width: 768px) {}
@media (max-width: 576px) {}
.font-size {
font-size: 12px;
}
@media (min-width: 576px) {
.font-sm-size {
font-size: 13px;
}
}
@media (min-width: 768px) {
.font-md-size {
font-size: 14px;
}
}
@media (min-width: 992px) {
.font-lg-size {
font-size: 16px;
}
}
@media (min-width: 1200px) {
.font-xl-size {
font-size: 18px;
}
}
@media (min-width: 1400px) {
.font-xxl-size {
font-size: 20px;
}
}
// html
<div class="row">
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
<div class="col-xxl-3 col-lg-4 col-sm-6">col</div>
</div>
// css
.row {
background: #ddd;
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-template-rows: 30px;
grid-auto-rows: 30px;
}
.row div {
background: #aaa;
border: 1px solid #000;
grid-area: auto/auto/auto/12;
}
.row .col-1 {
grid-area: auto/auto/auto/1;
}
.row .col-2 {
grid-area: auto/auto/auto/2;
}
.row .col-3 {
grid-area: auto/auto/auto/3;
}
.row .col-4 {
grid-area: auto/auto/auto/4;
}
.row .col-5 {
grid-area: auto/auto/auto/5;
}
.row .col-6 {
grid-area: auto/auto/auto/6;
}
.row .col-7 {
grid-area: auto/auto/auto/7;
}
.row .col-8 {
grid-area: auto/auto/auto/8;
}
.row .col-9 {
grid-area: auto/auto/auto/9;
}
.row .col-10 {
grid-area: auto/auto/auto/10;
}
.row .col-11 {
grid-area: auto/auto/auto/11;
}
.row .col-12 {
grid-area: auto/auto/auto/12;
}
@media (min-width: 576px) {
.row .col-sm-1 {
grid-area: auto/auto/auto/1;
}
.row .col-sm-2 {
grid-area: auto/auto/auto/2;
}
.row .col-sm-3 {
grid-area: auto/auto/auto/3;
}
.row .col-sm-4 {
grid-area: auto/auto/auto/4;
}
.row .col-sm-5 {
grid-area: auto/auto/auto/5;
}
.row .col-sm-6 {
grid-area: auto/auto/auto/6;
}
.row .col-sm-7 {
grid-area: auto/auto/auto/7;
}
.row .col-sm-8 {
grid-area: auto/auto/auto/8;
}
.row .col-sm-9 {
grid-area: auto/auto/auto/9;
}
.row .col-sm-10 {
grid-area: auto/auto/auto/10;
}
.row .col-sm-11 {
grid-area: auto/auto/auto/11;
}
.row .col-sm-12 {
grid-area: auto/auto/auto/12;
}
}
@media (min-width: 768px) {
.row .col-md-1 {
grid-area: auto/auto/auto/1;
}
.row .col-md-2 {
grid-area: auto/auto/auto/2;
}
.row .col-md-3 {
grid-area: auto/auto/auto/3;
}
.row .col-md-4 {
grid-area: auto/auto/auto/4;
}
.row .col-md-5 {
grid-area: auto/auto/auto/5;
}
.row .col-md-6 {
grid-area: auto/auto/auto/6;
}
.row .col-md-7 {
grid-area: auto/auto/auto/7;
}
.row .col-md-8 {
grid-area: auto/auto/auto/8;
}
.row .col-md-9 {
grid-area: auto/auto/auto/9;
}
.row .col-md-10 {
grid-area: auto/auto/auto/10;
}
.row .col-md-11 {
grid-area: auto/auto/auto/11;
}
.row .col-md-12 {
grid-area: auto/auto/auto/12;
}
}
@media (min-width: 992px) {
.row .col-lg-1 {
grid-area: auto/auto/auto/1;
}
.row .col-lg-2 {
grid-area: auto/auto/auto/2;
}
.row .col-lg-3 {
grid-area: auto/auto/auto/3;
}
.row .col-lg-4 {
grid-area: auto/auto/auto/4;
}
.row .col-lg-5 {
grid-area: auto/auto/auto/5;
}
.row .col-lg-6 {
grid-area: auto/auto/auto/6;
}
.row .col-lg-7 {
grid-area: auto/auto/auto/7;
}
.row .col-lg-8 {
grid-area: auto/auto/auto/8;
}
.row .col-lg-9 {
grid-area: auto/auto/auto/9;
}
.row .col-lg-10 {
grid-area: auto/auto/auto/10;
}
.row .col-lg-11 {
grid-area: auto/auto/auto/11;
}
.row .col-lg-12 {
grid-area: auto/auto/auto/12;
}
}
@media (min-width:1200px) {
.row .col-xl-1 {
grid-area: auto/auto/auto/1;
}
.row .col-xl-2 {
grid-area: auto/auto/auto/2;
}
.row .col-xl-3 {
grid-area: auto/auto/auto/3;
}
.row .col-xl-4 {
grid-area: auto/auto/auto/4;
}
.row .col-xl-5 {
grid-area: auto/auto/auto/5;
}
.row .col-xl-6 {
grid-area: auto/auto/auto/6;
}
.row .col-xl-7 {
grid-area: auto/auto/auto/7;
}
.row .col-xl-8 {
grid-area: auto/auto/auto/8;
}
.row .col-xl-9 {
grid-area: auto/auto/auto/9;
}
.row .col-xl-10 {
grid-area: auto/auto/auto/10;
}
.row .col-xl-11 {
grid-area: auto/auto/auto/11;
}
.row .col-xl-12 {
grid-area: auto/auto/auto/12;
}
}
@media (min-width: 1400px) {
.row .col-xxl-1 {
grid-area: auto/auto/auto/1;
}
.row .col-xxl-2 {
grid-area: auto/auto/auto/2;
}
.row .col-xxl-3 {
grid-area: auto/auto/auto/3;
}
.row .col-xxl-4 {
grid-area: auto/auto/auto/4;
}
.row .col-xxl-5 {
grid-area: auto/auto/auto/5;
}
.row .col-xxl-6 {
grid-area: auto/auto/auto/6;
}
.row .col-xxl-7 {
grid-area: auto/auto/auto/7;
}
.row .col-xxl-8 {
grid-area: auto/auto/auto/8;
}
.row .col-xxl-9 {
grid-area: auto/auto/auto/9;
}
.row .col-xxl-10 {
grid-area: auto/auto/auto/10;
}
.row .col-xxl-11 {
grid-area: auto/auto/auto/11;
}
.row .col-xxl-12 {
grid-area: auto/auto/auto/12;
}
}