translate

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本使用。自 2022 年 8 月起,所有瀏覽器均已支援此功能。

translate CSS 屬性允許你單獨且獨立於 transform 屬性指定平移轉換。這更符合典型的使用者介面使用方式,並且無需記住在 transform 值中指定變換函式的確切順序。

試一試

translate: none;
translate: 40px;
translate: 50% -40%;
translate: 20px 4rem;
translate: 20px 4rem 150px;
<section class="default-example" id="default-example">
  <div class="transition-all" id="example-element">
    <div class="face front">1</div>
    <div class="face back">2</div>
    <div class="face right">3</div>
    <div class="face left">4</div>
    <div class="face top">5</div>
    <div class="face bottom">6</div>
  </div>
</section>
#default-example {
  background: linear-gradient(skyblue, khaki);
  perspective: 800px;
  perspective-origin: 150% 150%;
}

#example-element {
  width: 100px;
  height: 100px;
  perspective: 550px;
  transform-style: preserve-3d;
}

.face {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  position: absolute;
  backface-visibility: inherit;
  font-size: 60px;
  color: white;
}

.front {
  background: rgb(90 90 90 / 0.7);
  transform: translateZ(50px);
}

.back {
  background: rgb(0 210 0 / 0.7);
  transform: rotateY(180deg) translateZ(50px);
}

.right {
  background: rgb(210 0 0 / 0.7);
  transform: rotateY(90deg) translateZ(50px);
}

.left {
  background: rgb(0 0 210 / 0.7);
  transform: rotateY(-90deg) translateZ(50px);
}

.top {
  background: rgb(210 210 0 / 0.7);
  transform: rotateX(90deg) translateZ(50px);
}

.bottom {
  background: rgb(210 0 210 / 0.7);
  transform: rotateX(-90deg) translateZ(50px);
}

語法

css
/* Keyword values */
translate: none;

/* Single values */
translate: 100px;
translate: 50%;

/* Two values */
translate: 100px 200px;
translate: 50% 105px;

/* Three values */
translate: 50% 105px 5rem;

/* Global values */
translate: inherit;
translate: initial;
translate: revert;
translate: revert-layer;
translate: unset;

單個 <length-percentage>

一個 <length><percentage>,指定沿 X 軸的平移。等同於指定單個值的 translate() (2D 平移) 函式。

兩個 <length-percentage>

兩個 <length><percentage>,分別指定 2D 平移的 X 軸和 Y 軸平移值。等同於指定兩個值的 translate() (2D 平移) 函式。

三個值

兩個 <length-percentage> 和單個 <length> 值,分別指定 3D 平移的 X、Y 和 Z 軸平移值。等同於 translate3d() (3D 平移) 函式。

none

指定不應用任何平移。

正式定義

初始值none
應用於可變換元素
繼承性
百分比指邊框的尺寸
計算值按指定值,但相對長度會轉換為絕對長度。
動畫型別變換
建立層疊上下文

正式語法

translate = 
none |
<length-percentage> [ <length-percentage> <length>? ]?

<length-percentage> =
<length> |
<percentage>

示例

懸停時平移元素

此示例演示瞭如何使用 translate 屬性在三個軸上移動元素。第一個框沿 X 軸移動,第二個框沿 X 軸和 Y 軸移動。第三個框沿 X、Y 和 Z 軸移動,並且由於父元素添加了 perspective,因此看起來像是向觀察者移動。

HTML

html
<div class="wrapper">
  <div id="box1">translate X</div>
  <div id="box2">translate X,Y</div>
  <div id="box3">translate X,Y,Z</div>
</div>

CSS

css
.wrapper {
  perspective: 100px;
  display: inline-flex;
  gap: 1em;
}
.wrapper > div {
  width: 7em;
  line-height: 7em;
  text-align: center;
  transition: 0.5s ease-in-out;
  border: 3px dotted;
}
#box1:hover {
  translate: 20px;
}

#box2:hover {
  translate: 20px 20px;
}

#box3:hover {
  translate: 5px 5px 30px;
}

結果

規範

規範
CSS 變換模組級別 2
# individual-transforms

瀏覽器相容性

另見

注意:傾斜不是獨立的變換值