Свойство backface-visibility

Свойство backface-visibility определяет, видно ли заднюю грань элемента, когда он повернут к пользователю. Применяется при работе с трансформацией, например при создании вращающихся 3D карточек, где при вращении нужно чтобы пользователь видел только одну грань карточки.

backface-visibility: hidden;
  • поддерживается начиная с
  • частичная поддержка до
  • не поддерживается

Значения

backface-visibility: visible;

Пользователь видит все грани элемента, даже если повернут задней гранью к пользователю. Попробуйте вращать элемент .scene-1-inner и вы всегда будете видеть переднюю и заднюю части карточки.

<div class="scene-1">
    <div class="scene-1-inner">
        <div class="scene-1-front">front</div>
        <div class="scene-1-back">back</div>
    </div>
</div>

<style>
    .scene-1 {
        width: 200px;
        height: 200px;
        perspective: 500px;
    }
    
    .scene-1-inner {
      width: 100%;
      height: 100%;
      
      border: 1px solid red;
      
      transform: rotateY(0deg);
      transition: transform .1s linear;
      transform-style: preserve-3d;
    }
    
    .scene-1-front,
    .scene-1-back {
      width: 100%;
      height: 100%;
      position: absolute;
      
      backface-visibility: visible;
      
      font-size: 45px;
      text-align: center;
    }
    
    .scene-1-back {
      transform: rotateY(180deg);
    }
</style>
front
back
backface-visibility: hidden;

Пользователь не видит все грани элемента. Если элемент повернут к пользователю своей задней гранью, то он будет скрыт. Попробуйте вращать элемент .scene-2-inner и вы будете видеть только одну грань карточки, которая будет повернута "лицом" к пользователю.

<div class="scene-2">
    <div class="scene-2-inner">
        <div class="scene-2-front">front</div>
        <div class="scene-2-back">back</div>
    </div>
</div>

<style>
    .scene-2 {
        width: 200px;
        height: 200px;
        perspective: 500px;
    }
    
    .scene-2-inner {
      width: 100%;
      height: 100%;
      
      border: 1px solid red;
      
      transform: rotateY(0deg);
      transition: transform .1s linear;
      transform-style: preserve-3d;
    }
    
    .scene-2-front,
    .scene-2-back {
      width: 100%;
      height: 100%;
      position: absolute;
      
      backface-visibility: hidden;
      
      font-size: 45px;
      text-align: center;
    }
    
    .scene-2-back {
      transform: rotateY(180deg);
    }
</style>
front
back

Читайте также

Обсуждение (0)

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии