当前位置: 首页 > Web前端 > HTML

使用这个技巧可以大大提高前端布局的效率

时间:2023-04-02 17:14:27 HTML

作者:Ahmadshaded译者:前端小智来源:sitepoint点赞再看,微信搜索【大招天下】关注这个不用大工厂出身,但有着积极向上的心态的人分享。本文已收录到GitHubhttps://github.com/qq44924588...,文章已分类,也整理了很多我的文档和教程资料。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。在布局中,对于每个功能块的DOM结构,我们一般会使用一个带有wrapper类的元素对其进行包装,使代码或网页内容更易于阅读。为此,我们通常使用包装器或容器。在CSS中使用包装器有很多可能的方法,其中一些方法会导致一些问题。在本文中,我将介绍CSS中的布局包装器、它们的工作原理、如何使用它们以及何时不使用它们。请注意,在本文中,可能会提到wrapper和container这两个术语,它们具有相同的含义。包装器简介当我们谈论包装器或容器时,我们实际上指的是一组被包装或包含在另一个元素中的元素。我们可以向元素添加一个包装类,这样我们就不需要像这样的额外元素:body{max-width:1170px;左边距:自动;右边距:自动;左填充:16px;padding-right:16px;}但是,向元素添加包装器是不切实际的。wrapper元素可防止子元素超出其边界。考虑下图:我们这里有aside和main元素,它们被放置在wrapper元素内。当然,.wrapper元素有一个宽度。

...
如果没有wrapper,子元素会粘在屏幕边缘。这对用户来说非常烦人,尤其是在大屏幕上。上图显示了元素在未使用包装器包裹时如何扩展,用户不应体验到这种行为。让我们解释一下背后的原因。为什么页面上的包装器是必要的?通过添加额外的包装器布局层,有很多好处:使内容更具可读性。如果不添加额外的包装层,文本和图像等内容可以拉伸以占据屏幕的整个宽度。对于小屏幕,这似乎没问题。然而,对于大屏幕来说,这是非常烦人的。分组设计元素允许更好的间距。如果没有包装器,将设计元素分成几列是不容易的。在CSS中实现wrapper现在我们已经了解了wrapper的基础知识和优点,让我们来看看如何在CSS中使用它。设置宽度实现包装器的第一件事是确认它的宽度。宽度取决于用户界面的设计。一般来说,最常用的宽度是1000px-1300px。例如,流行的框架Bootstrap使用1170px的宽度。.wrapper{width:1170px;}但是不推荐使用width属性,因为当屏幕尺寸小于1170px时,会出现横向滚动。您可以使用max-width来解决这个问题。.wrapper{宽度:1170px;max-width:100%;}我们也可以更简单,只使用max-width。.wrapper{max-width:1170px;}现在我们有了宽度,我们可以将它居中。Centerwrapper为了使wrapper居中,将左右边距的值设为auto,如下图:.wrapper{max-width:1170px;margin:0auto;}根据CSS规范,以下是margin:0auto;的实现方式有效如果'margin-left'和'margin-right'都是'auto',它们使用相同的值。这将使元素相对于包含块的边缘水平居中。我在这里使用margin:0auto,它基本上将顶部和底部边距重置为零,并使左右自动。使用此功能会产生一些后果,本文稍后将对此进行描述。目前推荐使用简化版的边距:.wrapper{max-width:1170px;左边距:自动;margin-right:auto;}Addpaddingontheleftandright重要的事情要考虑在左边和右边Addpaddingtotheside。当视口大小小于包装器的最大宽度时,这将导致包装器边缘粘在视口上。.wrapper{最大宽度:1170px;左边距:自动;右边距:自动;左填充:16px;padding-right:16px;}通过添加padding,我们可以确保左右偏移量为16px,即使视口的尺寸小于最大宽度。填充用作一种保护策略,以避免在宽度不足时包装器粘在视口的边缘。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。使用百分比的包装器我收到了关于使用百分比宽度(如最大宽度:90%)作为包装器而不是padding-left和padding-right的回复。我经常可以直接在“包装器”中使用百分比宽度,例如max-width:90%。而不是使用padding-left和padding-right。在大屏幕上,90%的宽度太大了,我们可以使用媒体查询来覆盖它。.wrapper{最大宽度:90%;左边距:自动;margin-right:auto;}/*大屏幕的媒体查询*/@media(min-width:1170px){.wrapper{max-width:1170px;}}使用百分比宽度,我们添加了一个额外的步骤。我们可以通过使用固定宽度值轻松避免这一步。对应这个方案,我们可以把width:90%和max-width:1170px属性组合在一起。.wrapper{宽度:90%;最大宽度:1170px;左边距:自动;margin-right:auto;}这是一种有趣的方法,但我更喜欢自己添加填充而不是依赖百分比宽度。Wrapper的显示类型由于wrapper是
,所以默认是块级元素。问题来了,wrapper里面的内容要放到grid里面怎么办?我们直接在包装器上添加display:grid?我不推荐这样做,因为它违背了关注点分离的概念。包装器用于包装其内容,仅此而已。如果需要使用网格布局,多加一层
专门用于网格布局,会更简单、更清晰、更易维护。
不推荐这样做,因为wrapper元素可以在另一个页面上使用,这可能会无意间破坏布局。.wrapper{显示:网格;网格模板列:2fr1fr;grid-gap:16px;}更好的解决方案如下:
.featured-news{display:grid;网格模板列:2fr1fr;grid-gap:16px;}在wrapper之前在它们之间添加边距我们上面说了不推荐使用简写版本让wrapper元素居中:.wrapper{margin:0auto;}虽然可以,但是当有页面上有多个包装器,并且您需要在它们之间添加间距,这可能会造成混淆。由于布局要求,我们需要在包装器上添加一个额外的类,例如包装器变体,那么边距可能无法正常工作。.wrapper-variation{margin-top:50px;}.wrapper{最大宽度:1170px;左边距:自动;右边距:自动;左填充:16px;元素的边距不能使用,因为它被margin:0auto覆盖。为避免此类混淆,建议在这种情况下使用非速记格式。现在让我们添加边距。在每个项目中,我都为margin和padding准备了一组实用类,必要时使用它们,请考虑下图。
.mb-5{margin-bottom:3rem!important;}这样,包装器的CSS保持原样,并使用额外的CSS类添加间距。现在,您可能会问,为什么可以在一个页面上添加多个包装器?在上面的HTML中,两个包装器之间有一个
元素。在这里使用!important很好,因为实用程序类的目的是强制执行属性,通过添加!important我们可以确保这一点。全屏包装器在某些情况下,如果一个部分的背景视口宽度为100%并且其中包含一个包装器,就会发生这种情况。与前面示例中呈现的内容类似。
的宽度为100%。我们可以为其添加背景颜色或图像。在其中,包装器防止内容占据视口的整个宽度。主要内容是否需要添加包装器?这取决于。让我们探讨两个最常用的内容部分的设计。第一个以其内容为中心,并以特定宽度为界。第二个将其内容扩展到主要内容的边缘。为了更好地理解这两种模式,让我们探讨如何构建它们中的每一种。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。居中内容您可能希望在不使用包装器的情况下居中内容。

如何在家做面包

....

注册a>

在上面的HTML中,你可以使用text-align来居中content.hero{text-align:center;}除非你调整浏览器窗口的大小,否则你可以忽略这个问题。内容粘在边缘由于左右没有填充,内容会粘在边缘。这不是用户友好的,因为它使内容浏览更加困难。大屏幕的行长在大屏幕上,段落文本可能由于行长而难以阅读。一行的推荐字符数为45到75,具体取决于应用于Web的排版样式元素。该范围之外的任何字符都会使阅读更加困难。为了避免上述问题,可以使用包装器来防止文本长度变得太长并增加移动设备中的间距。

如何在家做面包

...

Signup

这里使用了hero__wrapper类,因为wrapper可能只是针对英雄部分定制的,所以可以有一定的宽度,也就是小于通用包装器元素。.hero__wrapper{最大宽度:720px;左边距:自动;右边距:自动;左填充:16px;padding-right:16px;}为了让内容居中,可以根据具体情况使用具体的属性。对于此示例,使用text-align:center足以使内容居中。将CSS变量用于包装器很少有包装器只使用一种尺寸。包装纸的宽度可大可小,具体取决于内容。通过使用CSS变量,我们可以创建一个更现代的包装器,它具有很大的灵活性。考虑以下内容:.wrapper{max-width:var(--wrapper-width,1170px);左边距:自动;右边距:自动;左填充:16px;padding-right:16px;}var有两个值,第一个值是变量--wrapper-width,第二个值是1170px,如果没有设置--wrapper-width变量,将使用1170px。当然,我们可以直接在标签中赋值--wrapper-width,这样就可以动态设置我们想要的值了。如果不用CSS变量,也可以通过增加一个额外的class来解决:.wrapper--small{--wrapper-width:720px;/*这将覆盖默认的包装器宽度。*/}使用display:contents首先简单介绍一下这个属性。CSS中的每个元素都是一个包含内容、填充、边距和边框的框。display:contents样式规则导致div元素不产生任何边界框,因此不呈现元素的边距、边框和填充部分。然而,颜色(color)和字体(font)等继承属性可以像往常一样影响子元素。.site-header__wrapper{display:flex;弹性包装:包装;justify-content:space-between;}在上面的示例中,您可能希望标题扩展到页面的整个宽度,而不是受包装器宽度的限制。.site-header__wrapper{显示:内容;}.site-header{显示:flex;弹性包装:包装;justify-content:space-between;}这样,.wrapper元素将被隐藏(类似)。现在,当display:flex应用于.site-header元素时,.wrapper的后代项将成为.site-header的子项。流动背景,固定内容LeaVerou在她的书《CSS Secrets》中介绍了一个有趣的技巧,可以使用流动背景(占据视口的整个宽度),其中包含一个包装部分。让我们回顾一下常见的做法。
section{background-color:#ccc;}.wrapper{最大宽度:1170px;左边距:自动;右边距:自动;左填充:16px;padding-right:16px;}margin-left:auto和margin-right:auto通过计算视口宽度减去内容宽度的一半来工作。也可以使用填充来完成。section{padding:1remcalc(50%-585px);}这个还有一个问题,在移动设备上内容会粘贴到设备边缘,解决方法如下:section{padding:1rem;}@media(min-width:1170px){section{padding:1remcalc(50%-585px);}}原文:https://ishaded.com/article/s...无法实时知道代码部署后可能出现的BUG,为了解决事后BUG,我花了很多时间关于日志调试。顺便推荐一个好用的BUG监控工具,Fundebug。交流文章每周更新一次。可以微信搜索【大千世界】立即阅读,回复【福利】还有很多前端视频等着你。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,欢迎Star。