layout utility 速查
布局
aspect ratio
控制元素横纵比
<iframe
class="w-full aspect-video ..."
src="https://www.youtube.com/..."
></iframe>
Class Properties aspect-auto aspect-ratio: auto; aspect-square aspect-ratio: 1 / 1; aspect-video aspect-ratio: 16 / 9;
container
固定一个元素的最大尺寸
sm:container
md:container
lg:container
xl:container
2xl:container
Tailwind 的容器不会自动居中,也没有任何内置的水平填充。
要将容器居中,请使用以下 mx-auto:
<div class="container mx-auto">
<!-- ... -->
</div>
要添加水平填充,请使用以下px-*
<div class="container mx-auto px-4">
<!-- ... -->
</div>
定制
/** @type {import('tailwindcss').Config} */
module.exports = {
theme: {
container: {
padding: {
DEFAULT: "1rem",
sm: "2rem",
lg: "4rem",
xl: "5rem",
"2xl": "6rem",
},
},
},
};
column
用于控制元素内的列数
列宽将自动调整以适应该数字
<div class="columns-3 ...">
<img class="w-full aspect-video ..." src="..." />
<img class="w-full aspect-square ..." src="..." />
<!-- ... -->
</div>
break after/break before/break inside
控制列或页面在元素之后,之前,内部如何分隔
https://tailwindcss.com/docs/break-after https://tailwindcss.com/docs/break-before https://tailwindcss.com/docs/break-inside
<div class="columns-2">
<p>Well, let me tell you something, ...</p>
<p class="break-after-column">Sure, go ahead, laugh...</p>
<p>Maybe we can live without...</p>
<p>Look. If you think this is...</p>
</div>
Box Decoration Break
盒(背景)装饰中断或连续
前者被 br 分隔后,背景渐变色被分成两块 后者被 br 分隔后,背景渐变色被分成两块,但是保持线性连续
<span
class="box-decoration-slice bg-gradient-to-r from-indigo-600 to-pink-500 text-white px-2 ..."
>
Hello<br />
World
</span>
<span
class="box-decoration-clone bg-gradient-to-r from-indigo-600 to-pink-500 text-white px-2 ..."
>
Hello<br />
World
</span>
Box Sizing
box-border
box-content
Display
block display: block;
inline-block display: inline-block;
inline display: inline;
flex display: flex;
inline-flex display: inline-flex;
table display: table;
inline-table display: inline-table;
table-caption display: table-caption;
table-cell display: table-cell;
table-column display: table-column;
table-column-group display: table-column-group;
table-footer-group display: table-footer-group;
table-header-group display: table-header-group;
table-row-group display: table-row-group;
table-row display: table-row;
flow-root display: flow-root;
grid display: grid;
inline-grid display: inline-grid;
contents display: contents;
list-item display: list-item;
hidden display: none;
Floats
图片配文字
float-start float: inline-start; // 逻辑属性,受rtl影响
float-end float: inline-end;
float-right float: right;
float-left float: left;
float-none float: none;
如果不开启 float-right,图片和文字会像块元素一样上下分离
<img class="float-right ..." src="path/to/image.jpg" />
<p>Maybe we can live without libraries, people like you and me. ...</p>
Clear
清除浮动
clear-start clear: inline-start;
clear-end clear: inline-end;
clear-left clear: left;
clear-right clear: right;
clear-both clear: both;
clear-none clear: none;
Object Fit
控制图片标签 contain: 改变高,不会全覆盖,破坏比例 cover: 同时改变宽高直到覆盖元素(破坏比例) fill: 改变宽,会全覆盖,破坏比例 none: 保 持图片原大小,不做处理 scale-down: 不破坏比例,也不会超出元素范围,自适配
object-contain object-fit: contain;
object-cover object-fit: cover;
object-fill object-fit: fill;
object-none object-fit: none;
object-scale-down object-fit: scale-down;
<div class="bg-indigo-300 ...">
<img class="object-cover h-48 w-96 ..." />
</div>
Object position
容器中点对应图片上的位置,不会溢出,刚好贴边
object-bottom object-position: bottom;
object-center object-position: center;
object-left object-position: left;
object-left-bottom object-position: left bottom;
Overflow
overflow-auto overflow: auto; //只有真容纳不下才会显示scrollbar
overflow-hidden overflow: hidden; // 超出直接剪掉,原内容尽量不保留
overflow-clip overflow: clip; // 超出直接剪掉,原内容尽量保留
overflow-visible overflow: visible;
overflow-scroll overflow: scroll; // 一直显示srollbar
overflow-x-auto overflow-x: auto;
overflow-y-auto overflow-y: auto;
overflow-x-hidden overflow-x: hidden;
overflow-y-hidden overflow-y: hidden;
overflow-x-clip overflow-x: clip;
overflow-y-clip overflow-y: clip;
overflow-x-visible overflow-x: visible;
overflow-y-visible overflow-y: visible;
overflow-x-scroll overflow-x: scroll;
overflow-y-scroll overflow-y: scroll;
Overscroll Behavior
子容器滚动到底部后,继续滚动触发父容器滚动
以及滚动到底的反弹效果
Position
绝对定位是相对最近开启相对定位的元素 并不一定是父级元素
static position: static; fixed position: fixed; absolute position: absolute; relative position: relative; sticky position: sticky;
Top/Right/Bottom/Left
Inset 用于框高不定元素的 span 和 fill (扩展)
如inset-y-3.5
top: 0.875rem; /* 14px */
bottom: 0.875rem; /* 14px */
inset-0 inset: 0px; inset-x-0 left: 0px; right: 0px; inset-y-0 top: 0px; bottom: 0px; start-0 inset-inline-start: 0px; end-0 inset-inline-end: 0px; top-0 top: 0px; right-0 right: 0px; bottom-0 bottom: 0px; left-0 left: 0px; inset-px inset: 1px; inset-x-px left: 1px; right: 1px; inset-y-px top: 1px; bottom: 1px; start-px inset-inline-start: 1px; end-px inset-inline-end: 1px; top-px top: 1px; right-px right: 1px; bottom-px bottom: 1px; left-px left: 1px; inset-0.5 inset: 0.125rem; /2px / inset-x-0.5 left: 0.125rem; / 2px/ right: 0.125rem; /2px/
left-auto left: auto; left-1/2 left: 50%; left-1/3 left: 33.333333%; left-2/3 left: 66.666667%; left-1/4 left: 25%; left-2/4 left: 50%; left-3/4 left: 75%; left-full left: 100%;
<!-- Span top edge -->
<div class="relative h-32 w-32 ...">
<div class="absolute inset-x-0 top-0 h-16 ...">02</div>
</div>
<!-- Pin to top right corner -->
<div class="relative h-32 w-32 ...">
<div class="absolute top-0 right-0 h-16 w-16 ...">03</div>
</div>
<!-- Span left edge -->
<div class="relative h-32 w-32 ...">
<div class="absolute inset-y-0 left-0 w-16 ...">04</div>
</div>
<!-- Fill entire parent -->
<div class="relative h-32 w-32 ...">
<div class="absolute inset-0 ...">05</div>
</div>
<!-- Span right edge -->
<div class="relative h-32 w-32 ...">
<div class="absolute inset-y-0 right-0 w-16 ...">06</div>
</div>
<!-- Pin to bottom left corner -->
<div class="relative h-32 w-32 ...">
<div class="absolute bottom-0 left-0 h-16 w-16 ...">07</div>
</div>
<!-- Span bottom edge -->
<div class="relative h-32 w-32 ...">
<div class="absolute inset-x-0 bottom-0 h-16 ...">08</div>
</div>
<!-- Pin to bottom right corner -->
<div class="relative h-32 w-32 ...">
<div class="absolute bottom-0 right-0 h-16 w-16 ...">09</div>
</div>
负值
<div class="relative h-32 w-32 ...">
<div class="absolute h-14 w-14 -left-4 -top-4 ..."></div>
</div>
logical start
<div dir="ltr">
<div class="relative h-32 w-32 ...">
<div class="absolute h-14 w-14 top-0 start-0 ..."></div>
</div>
<div>
<div dir="rtl">
<div class="relative h-32 w-32 ...">
<div class="absolute h-14 w-14 top-0 start-0 ..."></div>
</div>
<div>
visibility
使用 collapse 隐藏表行、行组、列和列组,就像将它们设置为 display: none 一样,但不会影响其他行和列的大小。
这使得动态切换行和列成为可能,而不影响表布局。
visible visibility: visible;
invisible visibility: hidden;
collapse visibility: collapse;
z-index
z-0 z-index: 0;
z-10 z-index: 10;
z-20 z-index: 20;
z-30 z-index: 30;
z-40 z-index: 40;
z-50 z-index: 50;
z-auto z-index: auto;
负 z-index
<div class="-z-50">
<!-- ... -->
</div>