如何用 Flexbox 构建一个新闻网站布局

news/2024/5/17 7:58:22/文章来源:https://blog.csdn.net/weixin_34404393/article/details/90323553
本文讲的是如何用 Flexbox 构建一个新闻网站布局,

最终产品效果图

你将要创建的东西

在你刚接触 Flexbox 的时候没有必要理解关于 Flexbox 的 所有 方面。在这篇教程中,我们将介绍 Flexbox 的一些新特性。同时设计一种新的、像 The Guardian 一样的布局方式。

我们使用 Flexbox 是因为它提供了许多强大的特性:

  • 我们可以通过简单的方式来实现响应式的纵列
  • 我们可以使列等高
  • 我们可以把内容塞入容器的 底部

我们开始吧!

1. 用两个列开始

在 CSS 中创建列一直是一个挑战。在很长的一段时间里,唯一的选择是使用 float 或者 table,但是这两种方法都有各自的问题。

Flexbox 使流程更加简单,提供了如下:

  • 简洁的代码:我们仅仅只需要在容器了添加 display: flex
  • 不需要去 清除 float, Flexbox 避免出现无法预料的布局行为
  • 语义标记
  • 灵活性:我们可以用很少的 CSS 代码来调整列的尺寸、伸缩和对齐方式

让我们从创建两个列开始:一个占容器的 2/3 宽度,另一个占 1/3 。

<div class="columns"><div class="column main-column">2/3 column</div><div class="column">1/3 column</div>
</div>

这里有两个元素:

  1. 一个 columns 容器

  2. 两个 column 子容器,其中一个添加名为 main-column 的 class 来使它更宽。

    .columns { display: flex; }

    .column { flex: 1; }

    .main-column { flex: 2; }

因为 main-column 的 flex 值设为了 2 ,它将会占用其他列的两倍的空间。

通过添加一些视觉效果,我们将得到:

<iframe src="https://codepen.io/tutsplus/embed/gMbpQM/?height=200&theme-id=12451&default-tab=result" width="850" height="200" frameborder="no" allowfullscreen="true" scrolling="no"></iframe>

2. 把每一列都变成 Flexbox 容器

这两列中的每一个都会垂直地堆积数篇文章,所以我们打算也把 column 元素移到 Flexbox 容器中。我们想要:

  • 文章被垂直堆积

  • 文章可 拉伸 并且可用

    .column { display: flex; flex-direction: column; /* 确保文章垂直堆积 */ }

    .article { flex: 1; /* 拉伸文章填充整个保留空间 */ }

容器 上的 flex-direction: column 规则合并了 子容器 上的 flex: 1 规则来确保文章可以充满整个垂直空间,也保证了两个第一列有相同的高度。

<iframe src="https://codepen.io/tutsplus/embed/PzwqXG/?height=400&theme-id=12451&default-tab=result" width="850" height="400" frameborder="no" allowfullscreen="true" scrolling="no"></iframe>

3. 把每一篇文章都变成 Flexbox 容器

现在,为了给我们额外的控制,我们要把每一篇文章移到 Flexbox 容器下。这些文章都包含:

  • 一个标题
  • 一段报道
  • 一个带有作者和评论数量的信息栏
  • 一张可选的响应图片

我们在这里使用 Flexbox 是为了把信息栏塞入底部。作为参照,这是我们的目标文章布局:

![](https://cms-assets.tutsplus.com/uploads/users/30/posts/26611/image/card.png)

这里是代码:

<a class="article first-article"><figure class="article-image"><img src=""></figure><div class="article-body"><h2 class="article-title"><!-- 标题 --></h2><p class="article-content"><!-- 内容 --></p><footer class="article-info"><!-- 信息 --></footer></div>
</a>.article {display: flex;flex-direction: column;
}.article-body {display: flex;flex: 1;flex-direction: column;
}.article-content {flex: 1; /* 这将使文本填充保留空间,并且把信息栏塞入底部 */
}

多亏了 flex-direction: column; 规则,文章的元素都被垂直排列了。

我们给 article-content 元素使用 flex: 1 因此它可以填充整个空白空间,然后把 article-info 塞入底部,无论列的高度如何。

<iframe src="https://codepen.io/tutsplus/embed/RRNWNR/?height=500&theme-id=12451&default-tab=result" width="850" height="500" frameborder="no" allowfullscreen="true" scrolling="no"></iframe>

4. 添加一些嵌套列

在左边一列,我们真正想要的是 另一组 列。所以我们使用之前相同的 columns 容器来替换第二个文章。

<div class="columns"><div class="column nested-column"><a class="article"><!-- 文章内容 --></a></div><div class="column"><a class="article"><!-- 文章内容 --></a><a class="article"><!-- 文章内容 --></a><a class="article"><!-- 文章内容 --></a></div>
</div>

因为我们想要第一个嵌套列更宽一些,所以我们在附加效果中加入了 nested-column class: .nested-column { flex: 2; }

这将使新创建列的宽度是其他列的两倍。

<iframe src="https://codepen.io/tutsplus/embed/wWBKaq/?height=500&theme-id=12451&default-tab=result" width="850" height="500" frameborder="no" allowfullscreen="true" scrolling="no"></iframe>

5. 给第一篇文章一个水平布局

第一篇文章太大了。为了优化使用空间,让我们把它的布局变成水平的。

.first-article {flex-direction: row;
}.first-article .article-body {flex: 1;
}.first-article .article-image {height: 300px;order: 2;padding-top: 0;width: 400px;
}

这里的 order 属性非常有用,因为它允许我们不用影响 HTML 标记就可以修改 HTML 元素的顺序。这里的 article-image 在标记中实际上在 article-body 之前,但是它表现得好像在之后一样。

<iframe src="https://codepen.io/tutsplus/embed/VjYvve/?height=500&theme-id=12451&default-tab=result" width="850" height="500" frameborder="no" allowfullscreen="true" scrolling="no"></iframe>

6. 使布局可响应

这就是我们想要的所有效果,虽然看起来有点破碎。让我们通过响应式来修复它。。

Flexbox 一个非常好的特性是:如果想让 Flexbox 完全失效,你仅仅只需要移除容器上的 display: flex 规则即可,其他的所有 Flexbox 属性(比如 align-items 或者 flex)完全可以保留。

这样一来,仅通过某一特定断点就能触发 “响应式” 布局。

我们将从 .columns 和 .column 上移除 display: flex ,而不是把它们放入 Media Query (响应式布局)中。

@media screen and (min-width: 800px) {.columns,.column {display: flex;}
}

这就是了!在更小的屏幕上,所有的文章都在另一篇文章的上面。超过 800px 时,它们将会排列成两列。

7. 添加一些结束的润色

为了让布局在更大屏设备适应,让我们对 CSS 做一些微调:

@media screen and (min-width: 1000px) {.first-article {flex-direction: row;}.first-article .article-body {flex: 1;}.first-article .article-image {height: 300px;order: 2;padding-top: 0;width: 400px;}.main-column {flex: 3;}.nested-column {flex: 2;}
}

第一篇文章的内容是横向布局的,其中文字在左边,图片在右边。同样,主列更宽( 75% ),嵌套列也是 ( 66% )。这就是最终效果了!

<iframe src="https://codepen.io/tutsplus/embed/Wxbvdp/?height=500&theme-id=12451&default-tab=result" width="850" height="500" frameborder="no" allowfullscreen="true" scrolling="no"></iframe>

结论

我希望我已经展示给你了:在你刚接触 Flexbox 的时候没有必要理解关于 Flexbox 的所有方面。这个可响应的新闻布局是一个非常有用的模版;拆解并且尝试一下,看看你掌握了多少!





原文发布时间为:2016年06月12日

本文来自云栖社区合作伙伴掘金,了解相关信息可以关注掘金网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_770242.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器字体大小设置_外贸建站的 常用CSS设置

今天我们来说说外贸建站的 常用CSS设置 。CSS设置这方面的内容比较侧重于代码技术类&#xff0c;有些同学会觉得去研究这方面的东西太费事费力&#xff0c;投入产出比不高。事实上&#xff0c;当你掌握了这方面的相关技术&#xff0c;你对网站的前端构建会有全新的认识。一般情…

VS2019 配色_设计师必看|这10个网站可以帮你更快做好配色

本文共1189字&#xff0c;阅读大约3分钟对于一个设计师来说&#xff0c;颜色太重要了&#xff0c;但是配色是比较难的一门学问&#xff0c;不是说看几篇文章就能学会的。对于大多数人来说&#xff0c;使用网上的工具进行配色是最简单高效的方式&#xff0c;这篇文章就来介绍10个…

html网站开发与php网站开发_网站开发的三个时代:网页制作、前端开发、后端开发...

网站开发共经历了三个时代分别是“网页制作”、“前端开发”、“后端开发”。下边谈一谈这三个时代分别是怎样的&#xff0c;和千锋广州小编一起来看看吧。网页制作网页制作是Web 1.0时代的产物&#xff0c;产生在2005年左右。那个时候的网页主要是静态页面。静态页面就是能使用…

asp还有人用吗_使用Asp.net Core3amp;Blazor 的全栈式网站开发体验

编者注&#xff1a;这是一篇写于2019年8月份的文章&#xff0c;文中有些内容需要根据最新状态进行调整。以下是重要步骤截图配注解&#xff1a;一、全栈的解决方案架构.Net Core3的全栈解决方案示意图。此图的第一部分Client 是可以灵活替换的&#xff0c;哪怕它是Vue,Angular …

网站访问量怎么刷_怎样提高网站的访问量?

如今互联网发达的时代&#xff0c;建立一个网站并不难&#xff0c;难的是怎么能够让网站提现价值&#xff0c;带来更加多用户和效益的转化&#xff0c;但是网站建设完成之后开始运行&#xff0c;却发现网站访问量非常少&#xff0c;那么如何提高网站访问量呢&#xff1f;一、明…

各大网站网页代码_无需任何软件,轻松下载网页上的视频

大家好&#xff0c;我是专注营销策划和PPT技巧的JS策划人&#xff5e;我们通常会碰到这样一个难题&#xff1a;需要下载网页上的视频的时候&#xff0c;不知道怎么下载&#xff0c;去各大视频网站上搜索&#xff0c;发现都先要安装客户端&#xff0c;并且下载下来的视频文件要么…

白山搜索引擎优化收费_SEO和SEM有什么区别?做网站优化如何选择?哪个更重要?...

首先&#xff0c;要说一下,SEM和SEO两者是包含关系&#xff0c;而不是付费广告和自然排名的的并列关系。很多人搞不清两者的概念&#xff0c;就会出现SEM就是付费广告&#xff0c;SEO是自然排名的不正确理解&#xff0c;并且这种说话还被越传越广。其实两者很容易区分,举个小例…

一个万能的工具包下载网站

https://pypi.python.org/simple/ http://www.lfd.uci.edu/~gohlke/pythonlibs/

基于androidx的快速开发框架_关于 TuziCMS是基于ThinkPHP框架开发的企业网站内容管理系统...

#关于 TuziCMS(兔子cms)是基于ThinkPHP框架开发的企业网站内容管理系统&#xff0c;国内PHPMYSQL 开源建站程序&#xff0c;它具有操作简单、功能强大、稳定性好、扩展性强&#xff0c;二次开发及后期维护方便&#xff0c;可以帮您快速构建起一个强大专业的企业网站。TC 软件具…

phpstudy快速搭建网站_「网站」快速搭建服务器环境及网站

网站域名与云服务器 - 网易云课堂​study.163.com在文章开头我想说明的是&#xff0c;此文章中所使用的工具为 BT 面板即宝塔面板&#xff0c;适合小白使用但是对于想要提升个人能力来说&#xff0c; BT 面板并不是一个好选择&#xff0c;而作为新手来说&#xff0c;可以使用该…

url模糊匹配优化_详情页怎么做SEO优化?

今天&#xff0c;赵彦刚与你一起围绕详情页怎么做SEO优化的问题展开讨论一下&#xff0c;也算是分享一下自己多年以来做文章、商品以及图片、电影等流量站的一些SEO的经验。很多人一直关注的是我们的网站首页关键词排名&#xff0c;按照本文的标题也就是网站首页如何做SEO优化&…

图片网站源码_网站首页被黑客篡改,查看备份文件中内容,根据时间点来排查...

网站首页被非法篡改&#xff0c;是的&#xff0c;就是你一打开网站就知道自己的网站出现了安全问题&#xff0c;网站程序存在严重的安全漏洞&#xff0c;攻击者通过上传脚本木马&#xff0c;从而对网站内容进行篡改。而这种篡改事件在某些场景下&#xff0c;会被无限放大。现象…

网站群2

引用&#xff1a;http://wzq.xa24h.com/portal.php?modview&aid2604 项目背景 上海计量测试技术研究院(SIMT)是由政府部门依法设置的法定计量检定机构&#xff0c;也是国务院计量行政管理部门批准建立的“华东国家计量测试中心”和国家科技部批准设立的国家级分析测试中心…

电脑没有安装iis,但是安装了.NET环境,如何调试网站发布的程序

大家在用.NET开发的网站发布后&#xff0c;如何在本地进行部署调试呢&#xff1f;前提是你本地没有安装IIS。 今天教大家一个小招&#xff0c;其实大家在安装完.NET开发环境后&#xff0c;会内置一个IIS&#xff0c;只需要用一个简单的命令就可以进行调试了 命令如下&#xff1…

网站漏洞修复方案防止SQL注入攻击漏洞

2019独角兽企业重金招聘Python工程师标准>>> SQL注入漏洞在网站漏洞里面属于高危漏洞&#xff0c;排列在前三&#xff0c;受影响范围较广&#xff0c;像asp、.net、PHP、java、等程序语言编写的代码&#xff0c;都存在着sql注入漏洞&#xff0c;那么如何检测网站存在…

【推荐收藏】10个获取免费网页背景纹理的最佳网站

在这篇文章中&#xff0c;我向大家推荐10个最好的背景图片和纹理资源免费下载网站。很多时候&#xff0c;我们看到的网站多是看上去平淡无奇&#xff0c;迫切需要增添一些色彩&#xff0c;彰显一点个性。装饰一个网站&#xff0c;最简单的方法是用一个新的主题&#xff0c;或者…

JMeter测试网站性能吞吐量

JMeter通过HTTP请求测试网站的方法见这个博文&#xff1a;http://leafwf.blog.51cto.com/872759/1618409 我的测试数据截图&#xff1a; 测试数据库的性能&#xff1a; 腾讯云机器测试数据&#xff1a;主机配置&#xff1a; CPU&#xff1a;1核 主频&#xff1a;2294.686M …

用宝塔面板网站php变成静态,宝塔面板设置网站伪静态教程(静态网址)

宝塔面板后台已经集成了网站伪静态程序。无需手动改代码即可一键设置网站伪静态。是分方便。此外&#xff0c;宝塔为市场上常见的程序提供了自己的伪静态规则&#xff0c;只需用鼠标点击即可。pc6a学习分享小白简单介绍&#xff0c;如何为宝塔面板设置伪静态规则。宝塔面板如何…

打开慢_网站打开慢的原因

很多站长在做网站优化的时候会发现&#xff0c;我们的网站有时打开速度快&#xff0c;有时打开速度慢&#xff0c;网站打开速度的快慢严重影响着用户体验度&#xff0c;所以了解网站为什么打开的慢是很必要的事情&#xff0c;今天云优化小编就带您来了解&#xff0c;为什么我们…

网站HTTP升级HTTPS完全配置手册

2019独角兽企业重金招聘Python工程师标准>>> 今天&#xff0c;所有使用Google Chrome稳定版的用户迎来了v68正式版首个版本的发布&#xff0c;详细版本号为v68.0.3440.75&#xff0c;上一个正式版v67.0.3396.99发布于6月13日&#xff0c;自Chrome 68起&#xff0c;当…