当前位置: 首页 > 科技观察

拿到UI的时候,前端人应该怎么想?

时间:2023-03-18 00:11:54 科技观察

经常有人私信我,问小智的设计怎么用CSS布局,这个按钮怎么画。所以今天在这篇文章中,我们将介绍一些新的布局方式,希望对智米有用。把设计细节放在一边我通常做的第一件事就是把设计细节放在一边。我想知道这个设计的主要部分是什么,然后关注每个部分的细节。考虑以下UI:在上面的UI中,有以下功能:Header/NavigationHowitworkssection位于中间内容部分的底部接下来,我们首先抽象这三个主要部分:抽象之后,我们可以看到主要的Song可以帮助我们思考如何布局组件,而不必考虑每个组件的细节。下面是我的想法:Full-widthheader:header的导航栏CenteredContent:中间内容水平居中。请注意,这通常需要设置最大宽度max-width。工作原理:这是一个4列布局,整个部分都被限制在一个包装器中。接下来将以上三部分用代码表达出来:"wrapper">

因为我们有一个4列的部分,所以我在这里使用CSS网格:。wrapper{margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem;max-width:1140px;}.hero__content{max-width:700px;margin-left:auto;margin-right:auto;}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);}拿到UI后,我们不是马上开始行动,而是观察整体构成并先实现每个块的组成,然后再深入到组成的实现。文章页面在这个例子中,我们有一个文章页面布局。这是UI,包括:HeaderimageArticletitle文章内容Sidebar(beside)我们把它再次抽象成主要部分:抽象主要包括几个部分:网站的headerwidth100%Title:包含标题和描述文章,其内容是左对齐的。要设置最大宽度的两列布局,它包含主要元素和侧边栏元素。文章内容,水平居中并有最大宽度。文章-页面标题这里不需要任何布局方法。一个简单的max-width就足够了,当然,还需要一些padding来增加舒适的距离。.page-header{max-width:50rem;padding:2rem1rem;}Article-Main和Sidebarmain元素是视口的整个宽度减去侧边栏的宽度。一般来说,侧边栏应该有一个固定的宽度。为此,使用CSSGrid是完美的。.page-wrapper{display:grid;grid-template-columns:1fr;}@media(min-width:800px){grid-template-columns:1fr250px;}对于文章的内部内容,应该限于一个包装器。.inner-content{max-width:50rem;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem;}在整体布局了一番之后,我们来看一下具体细节。深入了解“工作原理”部分的细节在本文的第一个示例中,让我们看一下“工作原理”部分的详细实现。这里的第1、2、3步,有没有可能会增加或减少的情况,如果有,应该怎么处理?我们是否需要列的高度相等,特别是当卡片有很长的文本时?标题我们是否需要将章节标题放在一边?或者在某些情况下它应该是全宽的吗?响应式设计当网页宽度缩小时,我们需要做响应式设计吗?如果是这样,什么触发条件?这些是我们开发的东西,你觉得可能遇到的问题是什么?作为前端开发者,我们更应该考虑这样的边缘情况,而不是只跟猫虎虎一样简单的UI。由于本文侧重于思考过程,因此不可能详细介绍每种可能的情况。在上述模型的第一版和第三版中,步数分别为3和2。我们可以让CSS动态处理它吗?是的。HTML

Howitworks

简单易行的步骤

CSS.steps{display:grid;grid-template-columns:1fr;grid-gap:1rem;}@媒体(最小宽度:700px){.steps{grid-template-columns:250px1fr;}}.layout{display:grid;grid-template-columns:1fr;grid-gap:1rem;}@media(min-width:200px){.layout{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}}我使用了CSSgridminmax()和auto-fit关键字。这在卡片数量可以增加或减少的情况下很有用。内容部分图像图像应该如何呈现?它是每天更改还是应该从CMS更新?它是使用HTML还是CSS背景?图像的预期纵横比是多少?我们是否需要根据视口大小使用多种图像大小?该部分是否可能会换成视频?高度内容的最小高度是多少?内容长度我们是否需要为标题和描述设置最大长度?如果是,设计预期处理的最小值和最大值是多少?如何处理元素之间的间距?垂直间距?内容中心如何让内容水平和垂直居中?鉴于我们只知道宽度,高度是未知的。限制内容为了更好的可读性,最好限制内容。理想的宽度是多少?对于响应式设计,我们是否需要根据视口宽度更改字体大小?如果是这样,我们应该使用基于像素的单位、视口单位还是CSSclamp()函数?根据我们正在做的项目的性质,我们应该找到这些问题的答案,这将帮助我们确定组件是如何构建的。有时很难回答每一个问题,但你问的越多,你就越有可能得到良好的无错误结果。在本节中,我将讨论子元素之间的间距。我喜欢使用流空间实用程序。我是从AndyBell的Piccalil博客中学到的。目的是提供直接兄弟元素之间的间距。html

Foodisamazing

Learnhowtocookamazingmealswitheasyandsimpletofollowsteps

立即学习css.flow>*+*{margin-top:var(--flow-space,1em);}最终想法完全匹配UI,同时考虑到边缘情况。希望Chimi至少从这篇文章中学到一件事。本文转载自微信公众号“伟大的走向世界”,您可以通过以下二维码关注。转载本文请联系大千世界公众号。