值得了解的关于CSS auto的相关知识!!

auto
值,它可以用于像margin
,position,height
,width
等属性。在本文中,会先解释auto
的工作方式以及如何最大程度地利用auto
的技术细节,当然,会配合一些用例和示例。
简介
<p>auto
关键字的使用因属性而异。 对于本文,我将在每个属性的上下文中解释值。
width: auto
<p>块级元素(如<div>
或<p>
)的初始宽度是auto
,这使得它们占据了包含它们的块的整个水平空间。
<p>根据CSS规范:
<p>‘margin-left’ + ‘border-left-width’ + ‘padding-left’ + ‘width’ +‘padding-right’ + ‘border-right-width’ + ‘margin-right’ = 块的宽度
<p>当一个元素的宽度值为auto
时,它包含margin
、padding
和border
,不会变得比它的父元素大。其中 content 的宽度将是content本身减去margin
、padding
和border
。
<p>
<div class="wrapper"> <div class="item"> <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Eos maxime cum non cupiditate, perferendis saepe vitae fugiat id exercitationem officiis voluptate sint ducimus commodi reiciendis error itaque dolores ipsam? Ea!</p> </div> </div>
* { box-sizing: border-box; } .wrapper { max-width: 600px; margin: 2rem auto 0; padding: 1rem; } .item { padding: 1rem; margin: 0 50px; border: 15px solid #1f2e17; }
item
被限制在其父项中。<p>
// css .item { width: 100%; padding: 1rem; margin: 0 50px; border: 15px solid #1f2e17; }

568px
,是以下各项的总和:<p>‘border-left-width’ + ‘padding-left’ + ‘width’ + ‘padding-right’ +‘border-right-width’ = 15 + 16 + 506 + 16 + 15 =568px
<p>如果方向是ltr
,则完全忽略margin-right
。在我们的例子中,这种情况发生了。但是,如果布局是rtl
,那么margin-left
将被忽略。<p>
<p>事例源码:https://codepen.io/shadeed/pen/f305220fbd4b444371bdef11dad014ec?editors=0100
width 用例: auto
<p>仅仅解释基础知识不足以使我们掌握这一概念,因此需要一些事例来说明。<p>手机和 PC 之间的宽度不同<p>
50%
),而在桌面设备上,每个按钮都应该占据其父元素的全部宽度。该怎么做?<p>HTML<div class="group"> <div class="group__item"> <button class="c-button">Sign In</button> </div> <div class="group__item"> <button class="c-button c-button--ghost">Register</button> </div> </div>
.group { display: flex; } .group__item { width: 50%; }
@media (min-width: 800px) { /* Revert the wrapper to a block element instead of flex */ .group { display: block; } .group__item { width: auto; } }
.group
是一个块元素,因此使用width: auto
可以很好地填充其父元素的可用空间。<p>事例源码:https://codepen.io/shadeed/pen/399de6d9d473137998f87f957cfdfa03?editors=1100
height: auto
<p>说到height
,情况就不一样了。元素的高度等于默认值为auto
的内容。<p>考虑下面的例子<div class="wrapper"> <div class="item">What's my height?</div> </div>
.item
获得其容器的全部高度,我们可以使用以下方法之一:- <p>给
.wrapper
一个固定的高度,然后为.item
元素添加height: 100%
- <p>对
.wrapper
使用flex
布局,默认情况下它将拉伸子项.item
.wrapper { height: 200px; } .item { height: 100%; }

margin 和 auto 关键字
<p>对于margin
,最常见的用例是将已知宽度的元素水平居中。<p>请考虑以下示例:<p>
.element { margin-left: auto; margin-right: auto; }
<p>如果<p>margin-left
和margin-right
值均为auto
,则它们的使用值相等。 这使元素相对于包含块的边缘水平居中。

具有绝对定位元素的 margin:auto
<p>
margin: auto
。当我们有一个元素应该在它的父元素内部水平和垂直居中时,我们可能会倾向于使用translateX
或translateY
。<p>我们可以使用下面方法让具有绝对定位元素居中:- <p>设置的宽度和高度。
- <p>元素应具有
position: absolute
<div class="wrapper"> <div class="item">I am centered.</div> </div>
.wrapper { position: relative; } .item { width: 200px; height: 100px; position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; }
<p>事例源码:https://codepen.io/shadeed/pen/b086f8402be981e871ac5db15495dec8?editors=0100
Flexbox
<p>在某些情况下,在flexbox中使用自动页边距非常有用。当一个子项目有一个margin
是auto
时,它将被推到远的另一边。例如,如果一个flex
项目的左边是margin-left: auto
,那么它将被推到最右边。<p>考虑下面的模型,父级元素是一个 flex
布局:<p>
.wrapper { display: flex; } .item-2 { margin-left: auto; }

.item-2 { margin-top: auto; }

margin:auto
将其水平和垂直居中。<p>CSS.item-1 { margin: auto; }

flex 属性和 auto 关键字
<p>在flexbox中,我们可以使用flex: auto作为子项目。这是什么意思?当一个子项目有flex: auto时,它等价于flex: 11 auto,与下面等价:<p>CSS.item { flex-grow: 1; flex-shrink: 1; flex-basis: auto; }
<p>该项目根据其宽度和高度属性调整大小,但会增长以吸收flex容器中的任何额外自由空间,并会收缩到其最小尺寸以适合该容器,这等效于设置“ flex:1 1 auto
”。
<p>具有flex:auto
的项目将根据其宽度和高度来调整大小,但它可以根据可用的额外空间来增大或缩小。 在研究本文之前,我不知道这一点!<p>HTML<div class="wrapper"> <div class="item item-1">Item</div> <div class="item">Item</div> <div class="item">Item</div> </div>
.wrapper { display: flex; flex-wrap: wrap; } .item { width: 120px; height: 500px; } .item-1 { flex: auto; }

<p>事例源码:https://codepen.io/shadeed/pen/4914b4517b858f0fcf0f8acd07c64b1e?editors=1100
CSS grid 和自动设置一个 auto
列
<p>
auto
,这意味着它的宽度将基于它的内容长度。看看下面,你就知道我的意思了:wrapper { display: grid; grid-template-columns: auto 1fr 1fr; }
margin-left: auto
时:该项目将被推到右边,其宽度将基于其内容长度<p>考虑下面的例子:<p>
item1
的宽度基于其内容,而不是网格区域。 通过使用margin-left: auto
,可以通过下面代码实实现:.item-1 { margin-left: auto; }

从右向左布局
<p>值得一提的是,使用margin-left: auto
或margin-right: auto
对于从左到右的布局(例如英语)可能效果很好。 但是,在多语言网站上工作时要当心颠覆这些价值观。 更好的是,使用flexbox
或grid
属性,以防使用它们完成工作。 如果没有,那么请使用自动页边距作为最后的选择,而应使用CSS逻辑属性。overflow 属性
<p>当我们有一个元素时,我们应该考虑它应该包含的最小和最大内容。如果内容超过了最大值,那么我们需要显示一个滚动条。<p>你可能想使用以下内容:element { overflow-y: scroll; }

auto
关键字,我们可以确保滚动条不会显示,除非内容高度大于它的容器。<p>根据MDN:<p>取决于用户代理。 如果内容适合填充框内部,则它看起来与可见内容相同,但仍会建立新的块格式化上下文。 如果内容溢出,桌面浏览器会提供滚动条。
.element { overflow-y: auto; }
position 属性
<p>对于CSS定位属性top,right,bottom和left,我们可以使用auto关键字作为它们的值。 接下来我要解释的是对我来说是新的,我在研究本文时学到了它。<p>考虑下面的模型:<p>
.wrapper { position: relative; padding: 16px; } .item { position: absolute; width: 100px; height: 100px; }
left
属性的值会是什么?<p>
left
的默认值为16px
,即使没有设置。为什么会发生这种情况? 好吧,原因是绝对定位的元素相对于其最接近的父元素具有position:relative
。 该父项具有padding: 16px
,因此子项位于顶部和左侧的16px
处。 有趣,不是吗?<p>现在,你可能会问,这样做有什么好处?好吧,让我继续。<p>假设子项必须在较小的视口中位于距左侧100像素的位置,对于桌面,它应恢复为默认位置。.wrapper { position: relative; } .item { position: absolute; left: 100px; width: 100px; height: 100px; }
left
? 我们不能使用left:0
,因为这会将子元素粘到边缘,这不是我们想要的。 请参阅下面的模型,以了解我的意思。<p>
left: auto
。 根据 MDN:<p>如果元素是静态元素,则将定位在它应该水平定位的位置<p>这意味着,它会尊重
padding
,而不会将子条目粘贴到其父条目的边缘。.item { position: absolute; left: 100px; width: 100px; height: 100px; } @media (min-width: 800px) { .item { /* This is equivalent to left: 16px */ left: auto; } }
top
属性也是如此。 对于right
和bottom
属性,其默认计算值分别等于元素的宽度和高度。<p>事例源码:https://codepen.io/shadeed/pen/d062539938346e5458f769cbc08833e1?editors=0100
用例和示例
<p>值得一提的是,下面的用例可能还不够,但是我尝试添加一些用例,希望它们对你们有用。<p>提示箭头<p>对于提示框,我们需要一个指向箭头,以使其对用户更加清晰。 如果我们正在设计系统上,则应该考虑多个状态。 例如,提示的箭头指向左侧,另一个箭头指向右侧。<p>
.tooltip:before { /* 箭头代码 */ position: absolute; left: -15px; } /* 这是一个箭头指向右侧的版本*/ .tooltip.to-right:before { /* 箭头代码 */ position: absolute; left: auto; right: -15px; }
left: auto
来覆盖left: -15px
。 供您参考,这是非常常用的,我建议改用以下内容:.tooltip:before { position: absolute; right: 100%; } .tooltip.to-right:before { /* Arrow code */ position: absolute; right: auto; left: 100%; }
100%
,我们避免了使用硬编码的值(箭头宽度),如果我们改变箭头的大小,这个值可能会失败。这是一个更经得起时间考验的解决方案。<p>卡片组件<p>你可能有一个card组件,其左上角有一个操作,它可能仅用于装饰,也可能是一个有用的操作。不管是什么,你都应该考虑到它是双向的。<p>
left:auto
,我们可以很容易地重置它的基本实现。.card .icon { position: absolute; left: 15px; top: 15px; } .card.is-right .icon { left: auto; right: 15px; }

<div class="item"> <div class="item-group"> <!-- Title and description --> </div> <button class="item__action">Confirm</button> </div>
.item { display: flex; flex-wrap: wrap; justify-content: space-between; } .item__action { margin-left: auto; }
margin-left: auto
,将动作推到最右角。 更好的是,如果您要构建多语言网站,我们可以使用CSS逻辑属性。 CSS将如下所示:.item__action { margin-inline-start: auto; }

<p class="input-group"> <label for="">Full Name</label> <input type="email" name="" id=""> </p>
.input-group { display: grid; grid-template-columns: 1fr; grid-gap: 1rem; @media (min-width: 700px) { grid-template-columns: 0.7fr 2fr; } }
.input-group label { margin-left: auto; }

<p>

.modal-body { overflow-y: auto; }
<p>英文原文地址:https://css-tricks.com/almanac/properties/o/overflow/ <p>作者:shadeed<p>更多编程相关知识,请访问:编程教学!!
Atas ialah kandungan terperinci 值得了解的关于CSS auto的相关知识!!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

WebDevelopmentReliesOnhtml, CSS, andjavascript: 1) HtmlStructuresContent, 2) CSSStylesit, dan3) JavaScriptaddsInteractivity, Formingthebasisofmodernwebexperiences.

HTML mentakrifkan struktur web, CSS bertanggungjawab untuk gaya dan susun atur, dan JavaScript memberikan interaksi dinamik. Ketiga melaksanakan tugas mereka dalam pembangunan web dan bersama -sama membina laman web yang berwarna -warni.

Terdapat dua cara untuk membuat garis perpecahan bootstrap: menggunakan tag, yang mewujudkan garis perpecahan mendatar. Gunakan harta sempadan CSS untuk membuat garis perpecahan gaya tersuai.

Terdapat beberapa cara untuk memasukkan imej dalam bootstrap: masukkan imej secara langsung, menggunakan tag HTML IMG. Dengan komponen imej bootstrap, anda boleh memberikan imej yang responsif dan lebih banyak gaya. Tetapkan saiz imej, gunakan kelas IMG-cecair untuk membuat imej boleh disesuaikan. Tetapkan sempadan, menggunakan kelas IMG-Sempadan. Tetapkan sudut bulat dan gunakan kelas IMG-bulat. Tetapkan bayangan, gunakan kelas bayangan. Saiz semula dan letakkan imej, menggunakan gaya CSS. Menggunakan imej latar belakang, gunakan harta CSS imej latar belakang.

Untuk menubuhkan rangka kerja bootstrap, anda perlu mengikuti langkah -langkah ini: 1. Rujuk fail bootstrap melalui CDN; 2. Muat turun dan tuan rumah fail pada pelayan anda sendiri; 3. Sertakan fail bootstrap di HTML; 4. Menyusun sass/kurang seperti yang diperlukan; 5. Import fail tersuai (pilihan). Setelah persediaan selesai, anda boleh menggunakan sistem grid Bootstrap, komponen, dan gaya untuk membuat laman web dan aplikasi yang responsif.

Bagaimana cara menggunakan butang bootstrap? Perkenalkan CSS bootstrap untuk membuat elemen butang dan tambahkan kelas butang bootstrap untuk menambah teks butang

Untuk menyesuaikan saiz unsur-unsur dalam bootstrap, anda boleh menggunakan kelas dimensi, yang termasuk: menyesuaikan lebar: .col-, .w-, .mw-adjust ketinggian: .h-, .min-h-, .max-h-
