Уроки по CSS/CSS3. Часть 18. Трехмерный куб на CSS3

preview_player
Показать описание
В этом видео я покажу как сделать трехмерный куб при помощи CSS transform

Рекомендации по теме
Комментарии
Автор

100500 лайков за Чувство юмора и отличные примеры!)

SergeyMerkoev
Автор

Этот урок ориентирован на будущее (и многие еще будут). Норм. поддержки трансформаций всеми браузерами мы всё еще ждем. Я писал специально для ff, потому что у меня нет никаких сомнений в том что то же самое можно написать и для вебкита. В разных браузерах разные мелочи реализованы по разному, это так, да. Поэтому просто изменить префиксы оказалось недосаточно.

Для side1 допиши translateZ(0px), в cube убери transform-origin для вебкита вообще, и в wrapper допиши margin:150px auto;width:300px;

artsorax
Автор

Супер! Класс!!! Sorax, ты просто крутой чувак! Спасибо за туторилы!

BauMaki
Автор

Отлично!
В развитие 3d-шной темы: то, что показано, создает куб и позволяет трансформировать его в координатах объекта (с точкой начала координат в центре куба). Если дополнительно нужно, например, повращать его вокруг некоторой точки сцены, то задаем еще одну обертку (div) вокруг cube и прописываем в его css только transform-origin: (<координаты_точки>); transform-style: preserve-3d; transform: <трансформации>
Т.е. в итоге можно сделать вращение планеты-куба вокруг своей оси (осей) и вокруг "солнца".

denisarius
Автор

Спасибо еще раз, в который раз пересматриваю. Отличная best-практика

НиколайВладимирович-кф
Автор

Как же приятно смотреть твои уроки Артем

dtwizzx
Автор

в последних видео ты раскрылся как человек) подход с чувством юмора, спасибо, привет из 2019, почти закончил изучение по твоим урокам)

Moter
Автор

Боже) на 1:21 у меня была истерика) Лайк безусловно)

ImIvI
Автор

Sorax, а чем ты реализовал отдельное окно для ввода сокращений кода, при этом полный код одновременно отображается в другом окне ???

МаксПокровский-кп
Автор

Ссылка в описании неактивна, поэтому вот код, если кому лень с экрана переписывать:

HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS Cube</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div id="wrapper">
<div id="cube">
<div class="side" id="side1">1</div>
<div class="side" id="side2">2</div>
<div class="side" id="side3">3</div>
<div class="side" id="side4">4</div>
<div class="side" id="side5">5</div>
<div class="side" id="side6">6</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>


CSS:
#wrapper {
margin: 80px;
perspective: 900px;
}

#cube {
position: relative;
width: 300px;
height: 300px;
transform-origin: 50% 50% -150px;
transform-style: preserve-3d;
}

.side {
width: 300px;
height: 300px;
background: red;
position: absolute;
border: 2px solid #fff;
border-radius: 10px;
font-size: 5em;
color: #fff;
line-height: 300px;
text-align: center;
transform-origin: 50% 50% -150px;
}

#side2 {
transform: rotateY(90deg);
background: blue;
}

#side3 {
transform: rotateY(-90deg);
background: pink;
}

#side4 {
transform: rotateX(90deg);
background: yellow;
}

#side5 {
transform: rotateX(-90deg);
background: green;
}

#side6 {
transform: rotateY(180deg);
background: black;
}



JS:
$(function(){

$('#cube').css({
rotateY('+e.pageX+'deg)'
})
});
})

ХудожникНастоящий
Автор

отличный урок ! все доступно и понятно ... буду смотреть всю серию уроков. Вопрос может не по теме но все же, сколько уроков планируешь по CSS3 ?

liveindesignful
Автор

спасибо за урок, в Сhrome куб получился

BBARWARRIOR
Автор

Sorax, привет отличный урок, подскажи как можно вставить в каждую грань видео с ютуба или из другого источника. Спасибо

TheProfitmen
Автор

Жееесть. Я знал, что ксс сила, но что бы от так, в 5 минут..

david_shiko
Автор

а если я хочу вращать при нажатии кнопки мыши, не подскажешь че изменить

MrSirus
Автор

Привет, видео очень классное, а можешь подсказать через какую программу ты пишешь код и дать ссылку на твой сайт если он есть.

nikiman
Автор

Что-то я не врубаю. Каким образом можно запихнуть в центр куба картинку? У меня там анамальная херня получается :P

TheHappyLokiGames
Автор

body {
background: url(background.png);
font: 1em Tahoma, Arial;

}

#wrapper {
perspective: 900px;
margin: 80px;
}

#cube {
position: relative;
width: 300px;
height: 300px;
transform-origin: 50% 50% -150px;
transform-style: preserve-3d;
transform: rotate3d(1, 1, 1, 45deg);
}

.side {
width: 300px;
height: 300px;
background: rgba(0, 0, 0, .3);
background: radial-gradient(rgba(128, 175, 126, .8), rgba(13, 186, 7, .9));
position: absolute;
border: 10px solid #0cff02;
border-radius: 10px;
font-size: 5em;
color: #fff;
line-height: 300px;
text-align: center;
text-shadow: 0 1px 3px rgba(0, 0, 0, .4);
box-shadow: 0 0 6px rgba(0, 0, 0, .5);
transform-origin: 50% 50% -150px;
backface-visibility: hidden;

}

#side2 {
transform: rotateY(90deg);
}

#side3 {
transform: rotateY(-90deg);
}

#side4 {
transform: rotateX(90deg);
}

#side5 {
transform: rotateX(-90deg);
}

#side6 {
transform: rotateY(180deg);
}

DAIMON-tfxd
Автор

А как сделать, что-бы куб вращался только при зажатой кнопки мыши?

romanchernyshov
Автор

Сделайте урок по вёрстке на psd макете

zadable