网页是由什么组成的?即使是最基本的,也至少需要几个标题、段落和图片,也许还有一个导航栏侧边栏, 和页脚

如果这是你的页面,你不仅要有效地组织和显示这些元素 - 你也想确保他们期待在任何屏幕上不错,从台式机到移动设备和之间的所有设备。

以前,网站所有者不得不“黑”他们的CSS., 使用表格元素,在线块,浮子, 和不同的定位类型.创建一些复杂的布局也需要JavaScript。

总之,这些技术是一定程度上有效,但在电力缺乏。他们不仅缺少一些关键功能,如垂直居中,这使得它令人沮丧,让他们工作的跨浏览器。他们还提出了一个网站更加难以维护的代码。

简化网页的创建和维护,响应式布局模型被创造。最受欢迎的是Flexbox,CSS网格,以及引导,它们都得到了跨平台和浏览器的广泛支持。

在这篇文章中,我们将仔细研究每个模型,解释它们的关键差异和理想用例。

现在下载:免费HTML和CSS入门指南

你可能会认为这是太多的数学,所以我们将走过下面的每个型号。

让我们从CSS网格开始。使用CSS网格,您可以对齐组件成列和行。这使得它非常适合那些需要被分成几个部分较大的布局。换言之,这种类型的布局将具有元素需要重叠和层,而不是线性的。

下面是一个很有帮助的例子开发人员Ayush Gupta.使用CSS Grid可以实现的布局。

二维布局与CSS网格插图

来源

随着Flexbox的,您可以布置在一个容器对齐元素,即使你不知道这些元素的大小或者大小可能会改变。这是因为柔性容器灵活:它扩大柔性元素来填充空间时,它的使用和收缩时他们以防止溢出时,它不是。

下面是另一个有用的插图由开发人员Ayush Gupta.显示了Flexbox可能的布局。

与flexbox图的一维布局

来源

在一个CSS技巧文章,创始人Chris Coyier发表了重要说明。与Flexbox一样,CSS网格可用于创建一维布局(通常是)。FlexBox也可用于创建二维布局。因此,说主要区别是CSS网格专门用于二维布局,而FlexBox是一个不正确的。这只是CSS网格允许您以FlexBox未使用的方式创建2D布局。

使用FlexBox,您可以创建多线Flex容器。您只需将Flex-Wrap属性应用于容器的值“包装”。这样,如果您的物品太大而在特定视口上的一行中显示出来,它们将包裹在另一行而不是缩小以适合一行。

这将在一定意义上创建的行和列。但包裹柔性物品如何在一排排队将是独立的,他们是如何列队前一行上。那是因为你无法控制,其中柔性元素,比如你可以在CSS电网告终。挠性元件简单地寸沿单个轴,然后相应地包裹。布局看起来更像砖比格作为一个结果。

下面是与Flexbox将建成布局的侧方比较和一个与CSS网格建立了演出这种效果。

Flexbox的VS CSS网格布局比较图

来源

在进行下一个比较之前,了解这些布局模型并不是相互排斥的,这一点很重要。你可以在CSS Grid容器中使用Flexbox容器来组合它们。但是请注意,您不能在Flexbox容器中使用CSS Grid Container。

FlexBox与Bootstrap.

要启动此比较,重要的是要理解Bootstrap 4的网格系统是用FlexBox构建的。仅使用Flexbox独通的Bootstrap是编写实际代码的过程。使用Bootstrap,您只能使用Grid使用网格HTML..对于Flexbox,您必须使用HTML和CSS。下面让我们仔细看看每个过程。

Bootstrap提供了一个12列系统,5个默认的响应层,Sass变量和mixin,以及几十个预定义类。这意味着你可以使用它的移动优先的flexbox网格来构建独特而复杂的布局,而不必从头开始构建它们——这也意味着你需要理解它独特的语法。

让我们从列系统开始。Bootstrap具有12个列系统,这意味着单个水平块上最多可以有12个网格列。您可以超过12,他们刚刚开始包装而不是在单个轴上显示,无论视口如何。

大多数网站所有者不需要超过12列或甚至接近12。在这种情况下,您只需要添加多达12个,以便在单个水平块上显示它们。这意味着如果我想创建两个列,其中一个是另一列的大小,我将使用类.col-4和.col-8。

现在,假设我想创建等宽的列,水平显示,直到它们达到特定的屏幕宽度,然后自动堆叠在彼此之上。在这种情况下,我需要使用响应式网格断点。

下面列出了Bootstrap 4网格系统的5个默认响应层。请注意,以像素列出的值是断点,在该断点处,列将自动堆叠在其他列之上。

类前缀 设备尺寸 马克斯容器宽度
.col- 超小型设备 小于576px
.COL-SM- 小型设备 等于或大于576px
.COL-MD- 介质的设备 等于或大于768px
.col-lg - 大型设备 等于或大于992px
.col-xl - 超大型设备 等于或大于1200像素

由于塔系统和响应层级一起工作,你会经常看到一些和定义.COL类的前缀。我们会看到,在下面的例子。

引导栅格示例

比方说,我想创建六个相等宽度列是堆放在彼此的顶部在手机上或者是小于576px宽屏幕。要做到,我会用.COL-SM-2级。

将此类应用于六个

元素,然后我将连续包裹这些,如下所示。

< div class = "行" >

。Col-Sm-2

。col-sm-2

。Col-Sm-2

。col-sm-2

。Col-Sm-2

。col-sm-2

< / div >

< / div >

你会看到我加了一些内联CSS样式更清楚地看到前端上的每个单独列。结果:

响应引导例如列

来源

现在,我们将通过Flexbox的构建网格的例子,这样您对每个过程进行比较。

Flexbox的网格示例

假设我想创建一个具有六列的Flexbox网格,如上面的那样。在页面的主体部分中,我只需创建六个

元素并将它们与.flex-container类中的
元素一起包装。这是HTML:

1

2 < div > < / div >

3

4

5

6

< / div >

然后我将CSS添加到我页面的头部。

使用CSS选择器。flex-container,我将通过设置display属性flex使容器变得灵活。然后我可以指定容器的高度以及背景颜色, 如下所示。

.flex容器{

显示:flex;

身高:250px;

背景颜色:灰色;

}

为了设置容器内伸缩项的样式,我使用选择器.flex-container > div,然后我可以设置每个项目的背景颜色、宽度、边距和字体大小。我也可以用text-align属性设置字体的排列在每个项目中和行高属性中,设置Font将显示Font Fint容器顶部的距离。这是CSS:

.flex容器> DIV {

background - color: # f1f1f1;

宽度:100像素;

边缘:10px;

text-align:中心;

行高:60像素;

字体大小:48 px;

}

结果:

Flexbox容器示例来源

如果我希望弹性物品填满整个容器,无论如何视口更改大小,然后我可以简单地在我的CSS中添加flex-basis属性。让我们将它设置为1 1 150px,以便项目从150像素的伸缩基础上增长和收缩。这是新的CSS:

.flex容器{

显示:flex;

身高:250px;

背景颜色:灰色;

}

.flex容器> DIV {

background - color: # f1f1f1;

宽度:100像素;

边缘:10px;

text-align:中心;

线高:50px;

字体大小:48 px;

Flex: 1 1 150px;

}

结果:

FlexBox容器示例具有Flex-Basit属性集

来源

附加Flex项目属性是订单,Flex-Grow,Flex-Shrink,Flex基础和对齐自我。您可以了解更多信息CSS技巧上的FlexBox的完整指南

CSS网格与Bootstrap

现在我们已经比较了CSS Grid和Flexbox以及Flexbox和Bootstrap,让我们来比较一下CSS Grid和Bootstrap。

如果尝试决定要使用的这两个布局模型中的哪一个,请询问您是否让您的布局结构钉在一起或内容。如果您首先是布局,这意味着要创建布局,然后将物品放入其中,然后使用CSS网格更好。但是,如果你是满足的,这意味着你有你想要均匀地放入容器和空间的物品,然后使用Bootstrap。由于Bootstrap使用FlexBox构建,因此在比较CSS网格与Flexbox时,可以应用此推理。

现在让我们看看可以分别用CSS Grid和Bootstrap构建的特定网格示例的代码。

CSS网格示例

创建网格容器很简单。您只需将display属性应用到元素,并将其值设置为grid或inline-grid。造型才是棘手之处。

假设我想创建一个有5个元素的布局。下面是我要开始的HTML:

一位

两个

< div class = " box3“> 3 < / div >

< div class = " box4“四> < / div >

< div class = " box5“五> < / div >

< / div >

然后我将它制作一个网格容器,并使用此CSS将其背景颜色更改为灰色:

.wrapper {

显示:网格;

背景颜色:灰色;

}

现在让我们说我想创建三个相等宽度的列轨道。您可以使用网格模板列和网格模板 - 行属性来定义网格上的行和列及其大小(或者您只能定义一个)。我可以使用任何长度的单元,但我会使用FR单元。FR单元表示网格容器中的可用空间的一部分,而不是设定量,并确保栅格轨道根据可用空间生长和收缩。我的例子的CSS现在看起来像:

.wrapper {

显示:网格;

背景颜色:灰色;

网格模板列:1FR,1FR,1FR;

}

注意,我们使用了grid-template-columns属性来显式定义网格上的列,但没有使用grid-template-rows属性来显式定义行。这并不意味着你的CSS网格没有行;它只是意味着行是隐式定义的。您可以使用网格自动行和网格自动列属性设置隐式网格中创建的轨道的大小。

假设我想确保在隐式网格中创建的轨迹是100像素高。然后我将添加以下CSS,所以最终结果将是:

.wrapper {

显示:网格;

背景颜色:灰色;

网格模板列:1FR,1FR,1FR;

网格自动行:100像素;

}

最后,我需要将五个项目放置在网格容器中。使用CSS网格,使用“网格列 - 启动”,“网格列端”,“网格行 - 行启动”和“网格 - 行结束属性”并将“值”设置为不同的网格线。网格线基本上是网格中子项的水平和垂直分隔件。例如,此三列,两排网格的网格线以下:

CSS网格线所示示例

来源

So if I want my box1 to span from the far-left line on the grid to the far-right, then I’d place it against column line 1 and span it to column line 4. And if I wanted it to span one implicit row track, then I’d begin it at row line 1 and end it at row line 2, as shown below. I also have CSS to style box2 and box4.

.box1 {

网格栏 - 开始:1;

网格柱末端:4;

网格行开始:1;

网格行端:2;

}

.box2 {

网格栏 - 开始:1;

网格行开始:2;

网格行端:4;

}

.box4 {

网格列开始:2;

网格行开始:2;

网格行端:4;

}

其结果将是:

CSS网格容器示例

来源

您可以点击来源链接查看CSS我以前的风格电网项目。这是从Flexbox,就上面的例子。

引导网格系统

现在让我们说我想用两列成一列,一个是一个全宽的一列,一个是半宽,所以它们在移动上彼此叠加。这是HTML:

< div class = "行" >

< div class = " col-md-8”风格= " background:黄色;" > .col-md-8 < / div >

。col-6 .col-md-4

< / div >

我不想再拍行与占用视口的1/2移动和1/3的台式机三列。然后我会使用以下命令:

< div class = "行" >

。col-6 .col-md-4

< span style=" font - family:宋体;"col-6 .col-md-4 < / div >

。COL-6 .COL-MD-4

< / div >

最后,我想用两列宽度制作一个最后一个宽度,无论屏幕尺寸是什么。然后我使用以下HTML:

< div class = "行" >

< div class = " col-6”风格= " background: lightgreen; " > .col-6 < / div >

。col-6

< / div >

< / div >

总之,这就是结果:

引导混合和匹配列的例子

来源

创造独特的布局

FlexBox,CSS网格和Bootstrap是响应的布局模型,使您可以在许多不同的浏览器和设备上创建响应性和唯一布局。无论您选择哪种型号,您都需要一些熟悉的HTML和CSS。好消息是任何人都可raybetapp以开始编码

新的呼叫动作

css的介绍

最初发布于1月19日,2021年7:00:00,于2002年1月19日更新

话题:

Bootstrap&CSS

相关文章