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

Web技术:CSS最小和最大(宽-高)知识点和优缺点

时间:2023-04-02 22:54:42 HTML

作者:Ahmadshaded译者:前端小智来源:sitepoint点赞看看微信搜索【大千世界】关注这个不大厂出身,却有着向上积极的心态。本文已收录到GitHubhttps://github.com/qq44924588...,文章已分类,也整理了很多我的文档和教程资料。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。通常,我们希望限制元素相对于其父元素的宽度,同时仍使其保持动态。因此,具有基本宽度或高度功能允许它根据可用空间进行扩展。假设我们有一个按钮,它的宽度应该是最小的并且不应该低于它的宽度。这就是max和min属性派上用场的地方。在本文中,我们将仔细研究CSS的最大和最小宽度和高度属性,并通过可能的用例和技巧详细解释每一个属性。宽度属性首先要讨论的是与宽度相关的属性。我们有min-width和max-width,它们每个都很重要并且有自己的用例。MinWidth设置min-width的值时,其好处是防止width属性使用的值变得小于min-width的指定值。请注意,min-width的默认值是auto,解析为0。让我们举一个基本的例子来说明这一点。我们有一个按钮,里面有一个不断变化的文本。文本的范围可以从一个词到多个词。为了确保即使只有一个单词,它也有一个最小宽度,应该使用min-width。最小宽度为100px,这样即使按钮的内容很短,比如Done,或者它只有一个图标,它仍然足够大以引起注意。这在使用阿拉伯语等多语言网站时非常重要。考虑以下来自Twitter的示例:在前面的例子中,按钮上有单词“ê?”,表示完成。按钮的宽度太小,所以在后一种情况下,我增加了它的最小宽度。min-width和padding在内容较长的情况下,min-width可以扩展按钮的宽度,需要在水平方向添加padding来实现按钮的美观。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。MaxWidth设置max-width值时,其好处是防止width属性使用的值超过max-width的指定值。max-width的默认值为none。最大宽度的一个常见且简单的用例是将其与图像一起使用。考虑以下示例:图像大于其父元素。通过使用max-width:100%,图像不会比它的父图像更宽。如果图像小于父图像,max-width:100%对图像没有实际影响,因为它小于父图像。使用min-width和max-width当在一个元素上同时使用min-width和max-width时,它们中的哪一个会覆盖另一个?换句话说,哪个优先级更高?html

css.sub{宽度:100px;最小宽度:50%;max-width:100%;}初始宽度值为100px,加上Uppermin-width和max-width值。结果是元素宽度不超过其包含块/父元素的50%。height属性除了min和maxwidth属性外,我们拥有与height相同的属性。当min-height设置min-height的值时,它的好处是防止使用的height属性的值变得小于min-height指定的值。请注意,min-height的默认值是auto,解析为0。让我们用一个简单的例子来演示。我们有一个带有描述文本的部分。目标是为该部分设置一个最小高度,以便它可以处理短内容或长内容。考虑以下基本情况.sub{display:flex;对齐项目:居中;证明内容:居中;填充:1rem;最小高度:100px;颜色:#fff;background:#3c78dB;}min-height为100px,当使用flexbox时,内容水平和垂直居中。如果内容更长会怎样?例如一个段落?是的,你猜对了!该部分的高度将扩展以包含新内容。有了它,我们可以构建响应其内容的灵活组件。示例源码:https://codepen.io/shadeed/pe...max-height设置max-height值时,其好处是防止height属性使用的值超过max-height的指定值.请注意,max-height的默认值是none。考虑下面的示例,我在其中为内容设置了最大高度。但是,因为它大于指定的空间,所以会发生溢出。因此,文本超出了其父级的范围。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。最小和最大属性的用例我们将介绍最小宽度、最小高度、最大宽度和最大高度的一些常见和不常见用例。选项卡列表当有选项卡列表时,建议限制选项卡的最小宽度,这样即使其内容较短,也不会影响其外观。通过这种灵活性,无论内容多短,标签都会看起来不错。但是,如果内容作者输入了一个很长的标签名称,而他使用的内容管理系统没有标签的最大字符长度限制,会发生什么情况?我们也可以使用最大宽度。.c-tag{显示:内联块;最小宽度:100px;最大宽度:250px;溢出:隐藏;空白:nowrap;文本溢出:省略号;/*Otherstyles*/}通过使用max-width,标签宽度将被限制为一个特定的值。但是,这还不够,标签名称应该被截断。示例地址:https://codepen.io/shadeed/pe...按钮对于按钮的最小值和最大值有不同的用例,因为按钮组件有很多变体。考虑下图:请注意按钮的“获取”宽度太小。如果您不设置最小宽度,无论出于何种原因没有文本,情况都会变得更糟。在这种情况下,设置最小宽度很重要。使用flexbox将最小宽度设置为零。min-width的默认值为auto,评估为0。当元素是flex项目时,min-width的值不会评估为0。弹性项目的最小尺寸等于其内容的尺寸。根据CSSWG:默认情况下,弹性项目不会缩小到其最小内容大小(最长单词或固定大小元素的长度)以下。要更改此设置,请设置min-width或min-height属性。考虑以下示例,其中人名中的单词很长,这会导致溢出和水平滚动。不过,我在标题中添加了以下CSS以截断它。c-person__name{white-space:nowrap;溢出:隐藏;文本溢出:省略号;由于title是一个flex项目,解决方案是重置min-width并将其强制为零。.c-person__name{/*Otherstyles*/min-width:0;}这是根据CSSWG的修复方法:在flex项目的主轴上有可见溢出的项目上,当处于flex项目的主轴最小尺寸时property指定时,指定自动最小大小。意思是设置overflow为非visible值会导致min-width被计算为0,解决了我们没有设置min-width:0的问题。示例源码:https://codepen.io/shadeed/pe...使用flexbox将min-height设置为零虽然与min-width相比这是一个不太常见的问题,但它可能会发生。只是为了确认,问题与不能小于其内容的弹性项目有关。生成的最小高度值设置为与内容一样长。考虑以下示例:红色指示的文本应在父文本中被剪裁。因为面板主体是弹性项目,所以它的最小高度等于它的内容。为了防止这种情况,我们应该重新设置最小高度值。查看HTML和CSS的外观。HTML
CSS.c-panel{display:flex;弹性方向:列;height:180px;}.c-panel__body{min-height:0;}.c-panel__content{overflow-y:scroll;height:100%;}通过将min-height:0添加到面板主体,这将重置该属性,现在应该可以正常工作了。示例源代码:https://codepen.io/shadeed/pe...混合最小宽度和最大宽度在某些情况下,我们有一个元素具有最小宽度,但与此同时,它没有有一个最大宽度。这会使组件太宽,这是我们不想要的。考虑以下示例由于宽度以像素为单位定义,因此不能保证上述方法适用于移动视口。为了解决这个问题,我们可以对最小和最大属性使用百分比而不是像素。考虑以下带有文章正文的示例。我为图像添加了以下CSS:img{min-width:35%;max-width:70%;}示例源代码:https://codepen.io/shadeed/pe... pagewrapper/container“max-width”最常见的用例之一是页面包装器或容器。通过向页面添加最大宽度,我们可以确保内容对用户而言可读且易于导航。下面是一个包装器的示例,该包装器以左右水平填充为中心。.wrapper{最大宽度:1170px;左填充:16px;填充右:16px;左边距:自动;margin-right:auto;}大家都说简历没项目可写,所以我给你找了一个项目,还自带【搭建教程】。最大宽度和ch单位ch是相对于数字0的大小,1ch是数字0的宽度。如果你定义宽度为3ch,那么你只能容纳3个零。
0000
/*CSS代码*/div{width:3ch;background:powderblue;}在前面的wrapper元素示例中,我们可以使用ch单元,因为它是一个文章主体。.wrapper{最大宽度:70ch;/*其他样式*/}高度未知的动画元素在某些情况下,我们面临着制作具有意外内容高度的手风琴或移动菜单的挑战。在这种情况下,最大高度可能是一个很好的解决方案。考虑以下示例:单击菜单按钮后,菜单应从上到下滑动并带有动画效果。如果没有固定高度(不推荐),除非使用JavaScript,否则这是不可能的。但是,使用max-height是可能的。想法是给高度加上一个很大的值,比如说max-height:20rem,这个值可能达不到,然后我们可以用动画从max-height:0转换到max-height:20rem。.c-nav{最大高度:0;溢出:隐藏;transition:0.3slinear;}.c-nav.is-active{max-height:22rem;}点击菜单按钮可以看到动画运行。示例源码:https://codepen.io/shadeed/pe...Hero元素的最小高度一般来说,我不喜欢给元素添加一个固定的高度。我认为这样做会破坏流体布局的结构。但有些情况下设置固定高度很有用。考虑以下示例,其中我们有一个固定高度的英雄部分。是的,当内容较长时,它会溢出并留下herowrapper,这很不好。为了预先解决这个问题,我们可以使用min-height而不是height。我们可以通过这种方式先解决问题,虽然它可能会导致页面看起来很奇怪,但我认为应该首先在内容管理系统(CMS)中防止它发生。这样,问题就解决了,看起来也不错。内容溢出的问题不仅仅在于内容大于固定的英雄高度。由于文本换行,它可能会在屏幕调整大小时发生。如果您改用min-height,则上述情况根本不会发生。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。模态组件对于模态组件,它需要一个最小和最大宽度,以便它可以适应移动设备到PC的屏幕。思路1.c-modal__body{width:600px;max-width:100%;}思路2.c-modal__body{width:100%;max-width:600px;}对我来说,我更喜欢第二种想法,因为我只需要定义max-width:600px。modal是一个
元素,所以它已经有其父元素的100%宽度,对吧?考虑以下为模态设计简化的测试用例。如果没有足够的可用视口空间,请注意宽度如何更改为其父项的100%。示例源代码:https://codepen.io/shadeed/pe...最小高度和粘性页脚当网站的内容不够长时,它希望看到页脚粘在底部。让我们用一个视觉示例更好地展示这一点。请注意,页脚不会粘贴在浏览器窗口的末尾。那是因为内容不够长,无法达到浏览器窗口的高度。修复后,它应该看起来像这样:首先,将body元素设为flexbox容器,然后将其最小高度设置为视口高度的100%。示例源代码:https://codepen.io/shadeed/pe...视口单位的最大宽度/高度和流体比率为了使比例容器根据视口大小响应地缩放,引入了填充黑客。现在,我们可以通过在CSS中组合视口单位和最大宽度/高度来模仿相同的行为。我们有一个大小为644*1000像素的图像。为了使其平滑,我们需要以下内容:纵横比:高度/宽度容器的宽度:可以是固定数字或动态数字(100%)设置高度为视口宽度的100%乘以纵横比设置max-Heigh,高度是容器的宽度乘以纵横比。最大宽度设置为等于容器的宽度。达人的【三通】是小智持续分享的最大动力。本博客如有错误或建议,欢迎达人留言,最后感谢大家的观看。原文:https://www.impressivewebs.co...无法实时获知代码部署后可能出现的bug。之后为了解决这些bug,花费了大量的时间在日志调试上。顺便推荐一个好用的BUG监控工具Fundebug。交流文章每周更新一次。可以微信搜索【大千世界】立即阅读,回复【福利】还有很多前端视频等着你。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,欢迎Star。