>  기사  >  웹 프론트엔드  >  CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

青灯夜游
青灯夜游앞으로
2020-06-30 09:44:223998검색

CSS3에서 미니언을 그리는 방법은 무엇입니까? 다음 기사에서는 CSS를 사용하여 미니언을 그리고 애니메이션 효과를 얻는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

우선 렌더링부터 보시죠(미니언즈 애니메이션)

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

어때요? 손과 발 애니메이션이 아직 그다지 유사하지는 않지만, 영리한 인간의 두뇌는 여전히 의미를 알아낼 수 있습니다! 오늘은 미니언을 낳는 방법을 배워보겠습니다.

먼저 모든 사람이 볼 수 있도록 HTML 구조를 나열해 보겠습니다.

<div class="wrapper"><!-- 容器 -->
        <div class="littleH"><!-- 小黄人 -->
            <div class="bodyH"><!-- 身体 -->
                <div class="trousers"><!-- 裤子 -->
                    <div class="condoleBelt"><!-- 吊带 -->
                        <div class="left"></div>
                        <div class="right"></div>
                    </div>
                    <div class="trousers_top"></div><!-- 裤子突出的矩形部分 -->
                    <div class="pocket"></div><!-- 裤袋 -->
                    <!-- 三条线 -->
                    <span class="line_left"></span>
                    <span class="line_right"></span>
                    <span class="line_bottom"></span>
                </div>
            </div>
            <div class="hair"><!-- 头发 -->
                <span class="left_hair_one"></span>
                <span class="left_hair_two"></span>
            </div>
            <div class="eyes"><!-- 眼睛 -->
                <div class="leftEye"><!-- 左眼 -->
                    <div class="left_blackEye">
                        <div class="left_white"></div>
                    </div>
                </div>
                <div class="rightEye"><!-- 右眼 -->
                    <div class="right_blackEye">
                        <div class="right_white"></div>
                    </div>
                </div>
            </div>
            <div class="mouse"><!-- 嘴巴 -->
                <div class="mouse_shape"></div>
            </div>
            <div class="hands"><!-- 双手 -->
                <div class="leftHand"></div>
                <div class="rightHand"></div>
            </div>
            <div class="feet"><!-- 双脚 -->
                <div class="left_foot"></div>
                <div class="right_foot"></div>
            </div>
            <div class="groundShadow"></div><!-- 脚底阴影 -->
        </div>
    </div>

좋아요, 곳곳에 그 목적을 표시해 두었으니 조금 이해하셔도 되고 대략적인 모델을 마음 속에 두셔도 됩니다. 계층.

다음 단계는 흥미로운 소식입니다. . . 단계별로 설명하고 단계별로 구현하겠습니다.

먼저 컨테이너와 전체에 간단한 스타일 설정을 합니다.

body{
    margin: 0;
    padding:0;
}
.wrapper{
    width: 300px;
    margin:100px auto;
}
.litteH{
    position: relative;
}
.bodyH{
    position: absolute;
    width: 240px;
    height: 400px;
    border:5px solid #000;
    border-radius: 115px;
    background: rgb(249,217,70);
    overflow: hidden;
    z-index: 2;
}

그 중 .bodyH는 주로 미니언의 몸체를 그리는 데 사용됩니다. 몸의 비율이 매우 중요합니다. 이제 실행하여 효과를 확인하세요.

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

자, 몸은 이미 거기에 있습니다. 이제 빨리 바지를 입으세요!

.bodyH .condoleBelt{
    position: absolute;
}
.bodyH .trousers{
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 100px;
    border-top: 6px solid #000;
    background: rgb(32,116,160);
}
.trousers_top{
    width: 160px;
    height: 60px;
    border:6px solid #000;
    border-bottom: none;
    border-radius: 0 0 5px 5px;
    background: rgb(32,116,160);
    position: absolute;
    bottom: 100px;
    left:34px;
}

그 중 .trousers_top 은 직사각형 부분인데 바지를 입으면 어떤 모습일까요?

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

이제 캡슐처럼 생겼네요 아니 어서 수정해서 슬링을 주면 바지가 떨어져요

.bodyH .condoleBelt .left,
.bodyH .condoleBelt .right{
    width: 100px;
    height: 16px;
    border:5px solid #000;
    background: rgb(32,116,160);
    position: absolute;
    top:-90px;
    left:-35px;
    z-index: 2;
    -webkit-transform:rotate(45deg);
}
.bodyH .condoleBelt .left{
    top:-88px;
    left:165px;
    -webkit-transform:rotate(-45deg);
}
.bodyH .condoleBelt .left:after,
.bodyH .condoleBelt .right:after{
    content: &#39;&#39;;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #000;
    position: absolute;
    top:4px;
    left:88px;
}

.bodyH .condoleBelt .left:after{
    left:5px;
}

이 부분은 주로 슬링을 양쪽에 하나씩 구현하는 부분이고, 그런 다음 :after 의사 요소를 사용하여 슬링의 작은 검은색 점을 구현합니다.

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

안녕하세요, 보기 좋아지기 시작했습니다. 다음으로 바지 주머니와 수정된 가장자리를 한 번에 구현하겠습니다.

.pocket{
    width: 60px;
    height: 45px;
    border:6px solid #000;
    border-radius: 0px 0px 25px 25px;
    position: absolute;
    bottom:65px;
    left:84px;
}
.line_right{
    width: 30px;
    height: 30px;
    border-bottom-left-radius: 100px;
    border-bottom:6px solid #000;
    border-left:6px solid #000;
    position: absolute;
    left: 0;
    bottom:60px;
    -webkit-transform:rotate(-75deg);
}
.line_left{
    width: 30px;
    height: 30px;
    border-bottom-right-radius: 100px;
    border-bottom:6px solid #000;
    border-right:6px solid #000;
    position: absolute;
    right: 0;
    bottom:63px;
    -webkit-transform:rotate(75deg);
}
.line_bottom{
    height: 40px;
    border:3px solid #000;
    border-radius: 3px;
    position: absolute;
    left:118px;
    bottom: 0px;
}

합시다. 먼저 효과를 확인하세요. 그림:

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

좋아요, 주의할 점 두 가지:

1 바지를 몸 안에 넣은 다음 .bodyH에 Overflow:hidden을 추가했습니다.

2. 바지 양쪽에 2개의 곡선 부분이 있어 모서리를 둥글게 처리한 것을 볼 수 있습니다. 직사각형을 선택한 다음 인접한 두 변의 테두리 스타일만 설정하고 각도를 회전하면 이 효과를 얻을 수 있습니다.

자, 다음으로 눈 부분을 구현해 보겠습니다.

.eyes{
    position: relative;
    z-index: 3;
}
.eyes .leftEye,.eyes .rightEye{
    width: 85px;
    height: 85px;
    border-radius: 50%;
    border:6px solid #000;
    background: #fff;
    position: absolute;
    top:60px;
    left: 27px;
}
.eyes .leftEye{
    left: 124px;
}
.eyes .leftEye .left_blackEye,
.eyes .rightEye .right_blackEye{
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #000;
    position: absolute;
    top:24px;
    left:22px;
}
.eyes .leftEye .left_blackEye .left_white,
.eyes .rightEye .right_blackEye .right_white{
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #fff;
    position: absolute;
    top:7px;
    left:17px;
}
.eyes .leftEye .left_blackEye .left_white{
    top:4px;
    left:17px;
}
.eyes .leftEye:after,
.eyes .rightEye:after{
    content: &#39;&#39;;
    width: 28px;
    height: 18px;
    background: #000;
    position: absolute;
    left:-30px;
    top:37px;
    -webkit-transform:skewX(20deg) rotate(7deg);
}
.eyes .leftEye:after{
    left:89px;
    top:37px;
    -webkit-transform:skewX(-20deg) rotate(-7deg);
}

눈 부분은 먼저 안경을 그린 다음 검은 눈알, 흰색 점을 그리고 마지막으로 안경 프레임을 그립니다. . :after 의사 요소를 사용하여 눈 프레임을 구현했습니다. 렌더링은 다음과 같습니다.

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

입이 가장 헷갈렸지만 결국엔 해낼 수 있었습니다.

.mouse{
    position: relative;
}
.mouse .mouse_shape{
    width: 55px;
    height: 35px;
    border:5px solid #000;
    border-bottom-left-radius: 30px;
    background: #fff;
    position: absolute;
    top:175px;
    left:98px;
    z-index: 3;
    -webkit-transform:rotate(-35deg);
}

우선 직사각형의 모서리 중 하나를 둥글게 만들어 입 모양을 흉내냈습니다. 입, 그런 다음 회전:

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

결과는 다음과 같습니다. 원하는 효과를 얻으려면 윗부분을 덮어야 하므로 다음을 사용합니다. 의사 요소 뒤에 마스킹 효과를 얻습니다.

.mouse .mouse_shape:after{
    content: &#39;&#39;;
    width: 70px;
    height: 32px;
    border-bottom:5px solid #000;
    border-radius:35px 26px 5px 5px;
    background: red;
    position: absolute;
    top:-16px;
    left:3px;
    -webkit-transform:rotate(34deg);
}

이 장소는 천천히 적절한 위치로 조정되어야 합니다. 위치, 시뮬레이션 사진은 다음과 같습니다.

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

빨간색 부분은 마스크이며 하단 테두리도 직사각형을 이루도록 설정됩니다. 입 아래쪽 부분으로 클로징 효과를 주면 됩니다.

.mouse .mouse_shape:after{
    content: &#39;&#39;;
    width: 70px;
    height: 32px;
    border-bottom:5px solid #000;
    border-radius:35px 26px 5px 5px;
    background: rgb(249,217,70);
    position: absolute;
    top:-16px;
    left:3px;
    -webkit-transform:rotate(34deg);
    -webkit-animation: mouse_mask 5s ease-in-out infinite;
}

렌더링은 다음과 같습니다.

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

다음으로 손 부분을 구현하면 됩니다. 두 개의 둥근 직사각형, 각도에 따라 회전한 다음 레벨이 신체 레벨보다 낮습니다. 다음을 통해 구현됩니다. 의사 요소 이후 팔 관절이 완료됩니다.

.hands{
    position: relative;
}
.hands .leftHand,
.hands .rightHand{
    width: 80px;
    height: 80px;
    border:6px solid #000;
    border-radius: 25px;
    background: rgb(249,217,70);
    position: absolute;
    top:220px;
    left:-23px;
    -webkit-transform:rotate(40deg);
}
.hands .leftHand{
    left:182px;
    top:220px;
    -webkit-transform:rotate(-40deg);
}
.hands .leftHand:after,
.hands .rightHand:after{
    content: &#39;&#39;;
    width: 6px;
    border:3px solid #000;
    border-radius: 3px;
    position: absolute;
    left:13px;
    top:50px;
    -webkit-transform:rotate(90deg);
}

.hands .leftHand:after{
    left:53px;
    top:50px;
    -webkit-transform:rotate(-90deg);
}

렌더링은 다음과 같습니다.

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

다음 단계는 발입니다. 주로 갑피의 디자인을 사용하고 다른 필렛 값을 설정하고 약간의 회전을 추가합니다. 어떻게 만들어도 별로 비슷하지 않을 것 같아서 결국 거의 포기할 뻔했어요.

.feet{
    position: relative;
}
.feet .left_foot,
.feet .right_foot{
    width: 36px;
    height: 50px;
    border-bottom-right-radius: 6px;
    border-bottom-left-radius: 9px;
    background: #000;
    position: absolute;
    top: 406px;
    left:88px;
    -webkit-transform-origin: right top;
}
.feet .left_foot{
    border-bottom-right-radius: 9px;
    border-bottom-left-radius: 6px;
    left:130px;
    -webkit-transform-origin: left top;
}
.feet .left_foot:after,
.feet .right_foot:after{
    content: &#39;&#39;;
    width: 60px;
    height: 35px;
    border-radius: 20px 10px 21px 15px;
    background: #000;
    position: absolute;
    left:-36px;
    top:14.4px;
    -webkit-transform:rotate(5deg);
}
.feet .left_foot:after{
    border-radius: 10px 20px 15px 21px;
    left:13px;
    -webkit-transform:rotate(-5deg);
}

렌더링은 다음과 같습니다.

CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

本来是不想画头发的,感觉怪难的,最后尝试了一下,还是能出个样子,那就添加上去吧。原理跟裤子左右两边的实现原理是一样的,只是参数值不一样罢了,大家参考代码琢磨一下:

.hair{
    position: relative;
}
.left_hair_one{
    width: 130px;
    height: 100px;
    border-radius: 50%;
    border-top:8px solid #000;
    position: absolute;
    left:17px;
    top:-17px;
    -webkit-transform:rotate(27deg);
}
.left_hair_two{
    width: 80px;
    height: 80px;
    border-radius: 50%;
    border-top:6px solid #000;
    position: absolute;
    left:45px;
    top:-10px;
    -webkit-transform:rotate(15deg);
}

补充脚底阴影部分:

.groundShadow{
    width: 200px;
    height: 2px;
    border-radius: 50%;
    background: rgba(0,0,0,0.3);
    box-shadow: 0 0 2px 4px rgba(0,0,0,0.3);
    position: relative;
    top: 455px;
    left:25px;
}

最后就是最初的效果了:

1CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)

这时大家可能会问:然后呢?不是还会动的吗?

是的,这里我就大概讲一下实现的思路吧:

1.头发:头发我想实现的是被小风轻轻地吹起来,然后很快就塌下去,所以吹起和下塌分配的时间很关键;

2.眼睛:眼睛我设想的场景是小黄人在悠闲地走路,然后不时左右看一下两边的风景,所以眼睛转动很悠哉,所以分配的时间可以稍微长一点点;

3.嘴巴:让嘴巴动起来确实比较难,因为要动的话,遮罩也得实时跟着改变,而且不能露馅,所以最后实现的是当它往左边看了一下之后卖了一下萌;

4.双手和双脚:这部分确实很难逼真,本来脚就不是正常的走路状态,所以只能按卓别林老爷爷的走路方式模拟一下,而且左右脚动作是紧接实现而不是同步实现。双手的话,我是简单模拟人在走路时有摆手的自然惯性,而且是左脚配右手,右脚配左手。考虑到它的双手是放在背后的,所以我的摆动幅度设置为非常小,有效果但不明显。

OK,我就直接把动画代码放上来吧:

.left_hair_one{
    -webkit-animation: lefthair 2s ease-in-out infinite;
}
@-webkit-keyframes lefthair{
    0%,25%,31%,100%{
    }
    30%{
        -webkit-transform: rotate(31deg) translate3d(-3px,-1px,0);
    }
}
.eyes .leftEye .left_blackEye,
.eyes .rightEye .right_blackEye{
    -webkit-animation: blackeye 5s ease-in infinite;
}
@-webkit-keyframes blackeye{
    0%,20%,50%,70%,100%{
        -webkit-transform: translateX(0px);
    }
    30%,40%{
        -webkit-transform: translateX(15px);
    }
    80%,90%{
        -webkit-transform: translateX(-15px);
    }
}
.eyes .leftEye .left_blackEye .left_white,
.eyes .rightEye .right_blackEye .right_white{
    -webkit-animation: whiteeye 5s ease-in-out infinite;
}
@-webkit-keyframes whiteeye{
    0%,20%,50%,70%,100%{
        -webkit-transform: translateX(0px);
    }
    30%,40%{
        -webkit-transform: translate3d(3px,4px,0);
    }
    80%,90%{
        -webkit-transform: translate3d(-15px,4px,0);
    }
}
.mouse .mouse_shape{
    -webkit-animation: mouse 5s ease-in-out infinite;
}
@-webkit-keyframes mouse{
    40%,43%{
        width: 45px;
        height: 25px;
        top:180px;
    }
    0%,35%,48%,100%{
        width: 55px;
        height: 35px;
        top:175px;
        -webkit-transform:rotate(-35deg);
    }
}
.mouse .mouse_shape:after{
    -webkit-animation: mouse_mask 5s ease-in-out infinite;
}
@-webkit-keyframes mouse_mask{
    40%,43%{
        width: 60.5px;
        top:-19.3px;
        left:1.5px;
    }
    0%,35%,48%,100%{
        width: 70px;
        top:-16px;
        left:3px;
        -webkit-transform:rotate(33deg);
    }
}
.hands .rightHand{
    -webkit-animation:rightHand .8s ease-in-out infinite;
}
@-webkit-keyframes rightHand{
    0%,50%,100%{
        -webkit-transform: rotate(40deg);
    }
    30%{
        -webkit-transform: rotate(37deg) translateX(1px);
    }
}
.hands .leftHand{
    -webkit-animation:leftHand .8s ease-in-out infinite;
}
@-webkit-keyframes leftHand{
    0%,50%,100%{
        -webkit-transform: rotate(-40deg);
    }
    80%{
        -webkit-transform: rotate(-37deg) translateX(-1px);
    }
}
.feet .right_foot{
    -webkit-animation: rightfoot .8s ease-in-out infinite;
}
@-webkit-keyframes rightfoot{
    0%,50%,100%{
        -webkit-transform: rotate(0deg);
    }
    80%{
        -webkit-transform: rotate(10deg);
    }
}
.feet .left_foot{
    -webkit-animation: leftfoot .8s ease-in-out infinite;
}
@-webkit-keyframes leftfoot{
    0%,50%,100%{
        -webkit-transform: rotate(0deg);
    }

    30%{
        -webkit-transform: rotate(-10deg);
    }
}

更多炫酷CSS3、html5、javascript特效代码,尽在:js特效大全

更多相关教程请访问:CSS3最新版参考手册

위 내용은 CSS3에서 미니언을 그리고 애니메이션 효과를 얻는 방법은 무엇입니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제