Tạo các khối 3D bằng CSS

Cập nhật: Lượt xem: 159 [ Css ]

Hôm nay mình sẽ hướng dẫn các bạn tạo một khối 3D bằng cách sử dụng các phép biến đổi CSS và HTML. Tại đây chúng ta không sử dụng bất kỳ hình ảnh nào, toàn bộ là css và html

Tạo các khối 3D bằng CSS

HTML

<div id="experiment">
    <div class="cube">
        <div class="topFace"><div>
            <h2>Top cube face</h2>
            <p>The top face is nested in an extra div tag to give correct rotation of skewed rectangle.</p>
            <p>This face is also scaled, so the font size has been reduced to accommodate.</p>
        </div></div>
        <div class="leftFace">
            <h2>Left cube face</h2>
            <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        </div>
        <div class="rightFace">
            <h2>Right cube face</h2>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>
    <div class="cube two">
        <div class="topFace"><div>
            <h2>Top cube face</h2>
            <p>The top face is nested in an extra div tag to give correct rotation of skewed rectangle.</p>
            <p>This face is also scaled, so the font size has been reduced to accommodate.</p>
        </div></div>
        <div class="leftFace">
            <h2>Left cube face</h2>
            <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        </div>
        <div class="rightFace">
            <h2>Right cube face</h2>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>
    <div class="cube three">
        <div class="topFace"><div>
            <h2>Top cube face</h2>
            <p>The top face is nested in an extra div tag to give correct rotation of skewed rectangle.</p>
            <p>This face is also scaled, so the font size has been reduced to accommodate.</p>
        </div></div>
        <div class="leftFace">
            <h2>Left cube face</h2>
            <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        </div>
        <div class="rightFace">
            <h2>Right cube face</h2>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>
</div>

Css Animation

.cube {
    -webkit-transition: -webkit-transform 1s linear;
    -moz-transition: -moz-transform 1s linear;
    -o-transition: -o-transform 1s linear;
    -ms-transition: -ms-transform 1s linear;
    transition: transform 1s linear;
}

.cube:hover {
    -webkit-transform: translate(202px, 115px);
    -moz-transform: translate(202px, 115px);
    -o-transform: translate(202px, 115px);
    -ms-transform: translate(202px, 115px);
    transform: translate(202px, 115px);
}

CSS Tạo hình 3D

.cube {
    position: absolute;
    left: 50%;
    top: 300px;
}

.cube p {
    line-height: 14px;
    font-size: 12px;
}

.cube h2 {
    font-weight: bold;
}

.cube.two {
    top: 416px;
    left: 50%;
    margin-left: -200px;
}

.cube.three {
    top: 532px;
    left: 50%;
    margin-left: -400px;
}

.rightFace,
.leftFace,
.topFace div {
    padding: 10px;
    width: 180px;
    height: 180px;
}

.rightFace,
.leftFace,
.topFace {
    position: absolute;
}

.cube:hover .rightFace,
.cube:hover .leftFace,
.cube:hover .topFace div {
    background-color: #ffc;
}

.cube:hover .rightFace:hover,
.cube:hover .leftFace:hover,
.cube:hover .topFace:hover div {
    background-color: #ffa;
}

.leftFace {
    -webkit-transform: skew(0deg, 30deg);
    -moz-transform: skew(0deg, 30deg);
    -o-transform: skew(0deg, 30deg);
    -ms-transform: skew(0deg, 30deg);
    transform: skew(0deg, 30deg);
    background-color: #ccc;
}

.rightFace {
    -webkit-transform: skew(0deg, -30deg);
    -moz-transform: skew(0deg, -30deg);
    -o-transform: skew(0deg, -30deg);
    -ms-transform: skew(0deg, -30deg);
    transform: skew(0deg, -30deg);
    background-color: #ddd;
    left: 200px;
}

.topFace div {
    -webkit-transform: skew(0deg, -30deg) scale(1, 1.16);
    -moz-transform: skew(0deg, -30deg) scale(1, 1.16);
    -o-transform: skew(0deg, -30deg) scale(1, 1.16);
    -ms-transform: skew(0deg, -30deg) scale(1, 1.16);
    transform: skew(0deg, -30deg) scale(1, 1.16);
    background-color: #eee;
    font-size: 0.862em;
}

.topFace {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    transform: rotate(60deg);
    top: -158px;
    left: 100px;
}

Sản Phẩm cuối cùng