293 lines
9.8 KiB
SCSS
293 lines
9.8 KiB
SCSS
|
/*!markdown
|
|||
|
|
|||
|
---
|
|||
|
title: Top / Right / Bottom / Left
|
|||
|
---
|
|||
|
|
|||
|
用来控制位置的样式集。
|
|||
|
|
|||
|
| Class | Properties |
|
|||
|
| ------------ | --------------------------------------------------------------------------------- |
|
|||
|
| inset-0 | top: 0px;<br/>right: 0px;<br/>bottom: 0px;<br/>left: 0px; |
|
|||
|
| -inset-0 | top: 0px;<br/>right: 0px;<br/>bottom: 0px;<br/>left: 0px; |
|
|||
|
| inset-y-0 | top: 0px;<br/>bottom: 0px; |
|
|||
|
| inset-x-0 | right: 0px;<br/>left: 0px; |
|
|||
|
| -inset-y-0 | top: 0px;<br/>bottom: 0px; |
|
|||
|
| -inset-x-0 | right: 0px;<br/>left: 0px; |
|
|||
|
| top-0 | top: 0px; |
|
|||
|
| right-0 | right: 0px; |
|
|||
|
| bottom-0 | bottom: 0px; |
|
|||
|
| left-0 | left: 0px; |
|
|||
|
| -top-0 | top: 0px; |
|
|||
|
| -right-0 | right: 0px; |
|
|||
|
| -bottom-0 | bottom: 0px; |
|
|||
|
| -left-0 | left: 0px; |
|
|||
|
| inset-0.5 | top: 0.125rem;<br/>right: 0.125rem;<br/>bottom: 0.125rem;<br/>left: 0.125rem; |
|
|||
|
| -inset-0.5 | top: -0.125rem;<br/>right: -0.125rem;<br/>bottom: -0.125rem;<br/>left: -0.125rem; |
|
|||
|
| inset-y-0.5 | top: 0.125rem;<br/>bottom: 0.125rem; |
|
|||
|
| inset-x-0.5 | right: 0.125rem;<br/>left: 0.125rem; |
|
|||
|
| -inset-y-0.5 | top: -0.125rem;<br/>bottom: -0.125rem; |
|
|||
|
| -inset-x-0.5 | right: -0.125rem;<br/>left: -0.125rem; |
|
|||
|
| top-0.5 | top: 0.125rem; |
|
|||
|
| right-0.5 | right: 0.125rem; |
|
|||
|
| bottom-0.5 | bottom: 0.125rem; |
|
|||
|
| left-0.5 | left: 0.125rem; |
|
|||
|
| -top-0.5 | top: -0.125rem; |
|
|||
|
| -right-0.5 | right: -0.125rem; |
|
|||
|
| -bottom-0.5 | bottom: -0.125rem; |
|
|||
|
| -left-0.5 | left: -0.125rem; |
|
|||
|
|
|||
|
按以下尺寸表依次类推
|
|||
|
|
|||
|
| 尺寸 | 大小 |
|
|||
|
| ---- | -------------- |
|
|||
|
| 0 | 0 |
|
|||
|
| 0.5 | 0.125rem; |
|
|||
|
| 1 | 0.25rem |
|
|||
|
| 1.5 | 0.375rem |
|
|||
|
| 1.5 | 0.375rem |
|
|||
|
| 2 | 0.5rem |
|
|||
|
| 2.5 | 0.625rem |
|
|||
|
| 3 | 0.75rem |
|
|||
|
| 3.5 | 0.875rem |
|
|||
|
| 4 | 1rem |
|
|||
|
| 5 | 1.25rem |
|
|||
|
| 6 | 1.5rem |
|
|||
|
| 7 | 1.75rem |
|
|||
|
| 8 | 2rem |
|
|||
|
| 9 | 2.25rem |
|
|||
|
| 10 | 2.5rem |
|
|||
|
| 11 | 2.75rem |
|
|||
|
| 12 | 3rem |
|
|||
|
| 14 | 3.5rem |
|
|||
|
| 16 | 4rem |
|
|||
|
| 20 | 5rem |
|
|||
|
| 24 | 6rem |
|
|||
|
| 28 | 7rem |
|
|||
|
| 32 | 8rem |
|
|||
|
| 36 | 9rem |
|
|||
|
| 40 | 10rem |
|
|||
|
| 44 | 11rem |
|
|||
|
| 48 | 12rem |
|
|||
|
| 52 | 13rem |
|
|||
|
| 56 | 14rem |
|
|||
|
| 60 | 15rem |
|
|||
|
| 64 | 16rem |
|
|||
|
| 68 | 17rem |
|
|||
|
| 72 | 18rem |
|
|||
|
| 76 | 19rem |
|
|||
|
| 80 | 20rem |
|
|||
|
| 96 | 24rem |
|
|||
|
| auto | auto |
|
|||
|
| 1/2 | 50% |
|
|||
|
| 1/3 | 33.333333% |
|
|||
|
| 2/3 | 66.666667% |
|
|||
|
| 1/4 | 25%; |
|
|||
|
| 2/4 | 50%; |
|
|||
|
| 3/4 | 75%; |
|
|||
|
| full | 100%; |
|
|||
|
| px | 0.0625rem(1px) |
|
|||
|
|
|||
|
## 用法
|
|||
|
|
|||
|
结合 relative 和 absolute 定位 和位置样式 `{top|right|bottom|left|inset}-xxx`,可以很方便的实现各种组件布局。
|
|||
|
|
|||
|
```html
|
|||
|
<div class="grid grid-cols-4 m:grid-cols-2 gap-4">
|
|||
|
|
|||
|
<!-- Span top edge -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute inset-x-0 top-0 h-16 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">1</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Span right edge -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute inset-y-0 right-0 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">2</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Span bottom edge -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute inset-x-0 bottom-0 h-16 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">3</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Span left edge -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute inset-y-0 left-0 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">4</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Fill entire parent -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute inset-0 bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">5</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Pin to top left corner -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute left-0 top-0 h-16 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">6</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Pin to top right corner -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute top-0 right-0 h-16 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">7</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Pin to bottom right corner -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute bottom-0 right-0 h-16 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">8</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- Pin to bottom left corner -->
|
|||
|
<div class="relative h-32 w-32 ... bg-blue-500">
|
|||
|
<div class="absolute bottom-0 left-0 h-16 w-16 ... bg-red-500 text-white font-extrabold text-2xl flex items-center justify-center">9</div>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
```
|
|||
|
|
|||
|
## 响应式设计
|
|||
|
|
|||
|
支持通过添加设备前缀 `m:` 或者 `pc:` 来分别针对「手机端」或者「pc端」设置样式,更多说明请前往[「响应式设计」](../../../docs/style/responsive-design.md)。
|
|||
|
|
|||
|
## 状态前缀
|
|||
|
|
|||
|
不支持[「状态前缀」](../../../docs/style/state.md),有需求请提 [issue](https://github.com/baidu/amis/issues)。
|
|||
|
|
|||
|
*/
|
|||
|
|
|||
|
@mixin make-single-position(
|
|||
|
$selector,
|
|||
|
$direction,
|
|||
|
$name,
|
|||
|
$value,
|
|||
|
$prefix: '.'
|
|||
|
) {
|
|||
|
#{$prefix}#{'' + selector-escape($selector + '-' + $name) } {
|
|||
|
#{$direction}: $value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@mixin make-single-positions($direction, $map: $inset, $prefix: '.') {
|
|||
|
@each $name, $value in $map {
|
|||
|
@include make-single-position(
|
|||
|
$direction,
|
|||
|
$direction,
|
|||
|
$name,
|
|||
|
$value,
|
|||
|
$prefix
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
@each $name, $value in $map {
|
|||
|
@if (type-of($value) == 'number') {
|
|||
|
@include make-single-position(
|
|||
|
#{'-' + $direction},
|
|||
|
$direction,
|
|||
|
$name,
|
|||
|
($value * -1),
|
|||
|
$prefix
|
|||
|
);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@mixin make-inset-positions($map: $inset, $prefix: '.') {
|
|||
|
@each $name, $value in $map {
|
|||
|
#{$prefix}#{selector-escape('inset-' + $name) } {
|
|||
|
top: $value;
|
|||
|
right: $value;
|
|||
|
bottom: $value;
|
|||
|
left: $value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@each $name, $value in $map {
|
|||
|
@if (type-of($value) == 'number') {
|
|||
|
#{$prefix}#{selector-escape('-inset-' + $name) } {
|
|||
|
top: $value * -1;
|
|||
|
right: $value * -1;
|
|||
|
bottom: $value * -1;
|
|||
|
left: $value * -1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@mixin make-inset-x-positions($map: $inset, $prefix: '.') {
|
|||
|
@each $name, $value in $map {
|
|||
|
#{$prefix}#{selector-escape('inset-x-' + $name) } {
|
|||
|
right: $value;
|
|||
|
left: $value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@each $name, $value in $map {
|
|||
|
@if (type-of($value) == 'number') {
|
|||
|
#{$prefix}#{selector-escape('-inset-x-' + $name) } {
|
|||
|
right: $value * -1;
|
|||
|
left: $value * -1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@mixin make-inset-y-positions($map: $inset, $prefix: '.') {
|
|||
|
@each $name, $value in $map {
|
|||
|
#{$prefix}#{selector-escape('inset-y-' + $name) } {
|
|||
|
top: $value;
|
|||
|
bottom: $value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@each $name, $value in $map {
|
|||
|
@if (type-of($value) == 'number') {
|
|||
|
#{$prefix}#{selector-escape('-inset-y-' + $name) } {
|
|||
|
top: $value * -1;
|
|||
|
bottom: $value * -1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@include make-single-positions('top');
|
|||
|
@include make-single-positions('right');
|
|||
|
@include make-single-positions('bottom');
|
|||
|
@include make-single-positions('left');
|
|||
|
|
|||
|
@include make-inset-positions();
|
|||
|
@include make-inset-x-positions();
|
|||
|
@include make-inset-y-positions();
|
|||
|
|
|||
|
@each $deivce in map-keys($devices) {
|
|||
|
@include media-device($deivce) {
|
|||
|
@include make-single-positions(
|
|||
|
'top',
|
|||
|
$inset,
|
|||
|
'.' + selector-escape($deivce + ':')
|
|||
|
);
|
|||
|
@include make-single-positions(
|
|||
|
'right',
|
|||
|
$inset,
|
|||
|
'.' + selector-escape($deivce + ':')
|
|||
|
);
|
|||
|
@include make-single-positions(
|
|||
|
'bottom',
|
|||
|
$inset,
|
|||
|
'.' + selector-escape($deivce + ':')
|
|||
|
);
|
|||
|
@include make-single-positions(
|
|||
|
'left',
|
|||
|
$inset,
|
|||
|
'.' + selector-escape($deivce + ':')
|
|||
|
);
|
|||
|
|
|||
|
@include make-inset-positions($inset, '.' + selector-escape($deivce + ':'));
|
|||
|
@include make-inset-x-positions(
|
|||
|
$inset,
|
|||
|
'.' + selector-escape($deivce + ':')
|
|||
|
);
|
|||
|
@include make-inset-y-positions(
|
|||
|
$inset,
|
|||
|
'.' + selector-escape($deivce + ':')
|
|||
|
);
|
|||
|
}
|
|||
|
}
|