柵格布局的理解


前兩天有朋友去面試,問到了一個對柵格化布局的理解

首先柵格化布局已經存在很久了,他們也常常會被綁定到bootstrap之類的框架上。那我們如果不需要接入整個框架,做一個自己的柵格化的布局又是怎么做的呢?

柵格化布局中需要的內容:

container 容器 :目的是設置整個柵格化布局的寬度,通常一般這個寬度設置為100%,但是或許你想為屏幕較大的媒體設置一個最大的寬度(max-width)如果box-sizing的值不是border-box,給寬度是百分比的元素設置一個固定的padding值是一個痛苦的事情。好在設置為border-box后,方便了太多。

container{width:100%;

box-sizing:border-box;

}

row 行:行元素的目的是防止他的內部的列column元素溢出到別的行,為了實現這個目的,我們需要clearfix;來清除浮動

.row:bofore,.row:after{

content:“”,

display:table;

clear:both;

}

column列:列是柵格系統縱向排布依據,常用的PC端是12列,移動端是6列。列數越多縱向排布內容就可以越細致,但是版面內容就會變的更稠密,內容更碎。

Float inline-block display:table display:flex 這些css中所有的定位的方法.以float為例;當所有的列都是空的話,他們會疊加起來.為了避免這個,我們將會給列設置float屬性再設置最小的高度1px

[class*='col-']{

    float:left;

    min-height:1px;

}

列的寬度:為了得到一個列的寬度我們需要容器(container)的寬度/列的總數;以container的寬度是100%,列的寬度就是100%/6=16.6%

[class*='col-']{

    float:left;

    min-height:1px;

   width:16.6%;

}

然后呢

.col-1{

width:16.6%

}

.col-2{

width:33.33%

}

....

.col-6{

100%

}

注意:(這里敲黑板)我們現在是6列為例,自己的項目自己設定的列的總數,自己設置)

每一列的間距

如果box-sizing的值不是border-box,給寬度是百分比的元素設置一個固定的padding值會有問題,但是box-sizing設置后,說明摒棄了ie8的瀏覽器.

container-wrap{

box-sizing:border-box;

}

[class*='col-']{

    float:left;

    min-height:1px;

   width:16.6%;

  padding:10px;

}

 

這樣一個簡單的柵格化的布局就好了

整體的代碼貼出啦

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
list-style: none;
}
.container-wrap{
width:100%;
box-sizing: border-box;
min-width:1200px;
}
.row:bofore,.row:after{
content:"";
display: table;
clear:both;
}
[class*='col-']{
float:left;
min-height:1px;
width:16.6%
padding:10px;
}
.col-1{
width:16.6%;
}
.col-2{
width:33.3%;
}
.col-3{
width:50%;
}
.outline,.outline *{
outline: 1px solid blue;
}
</style>
</head>
<body>
<div class="container-wrap outline">
<ul class="row">
<li class="col-1">col-1</li>
<li class="col-1">col-1</li>
<li class="col-1">col-1</li>
<li class="col-1">col-1</li>
<li class="col-1">col-1</li>
<li class="col-1">col-1</li>
</ul>
<ul class="row">
<li class="col-2">col-2</li>
<li class="col-2">col-2</li>
<li class="col-2">col-2</li>
</ul>
<ul class="row">
<li class="col-3">col-3</li>
<li class="col-3">col-3</li>
</ul>
</div>
</body>
</html>

形成的效果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM