春节来了,为你写的专属礼物快来打开看看吧(html+css+js)

上期回顾

前两天写了一个烟花登录页,偶然的机会上推荐页了,我直接好家伙!因为没写如何制作详细过程,结果直接被喷。。。还被多人举报,直接把我文章从推荐页拉下来了,吓的我这小心脏,第一次目睹网络暴力是啥样的,本次更新可的吧代码写清楚了,可别再喷弟弟了

image.png

正片

忽如一夜春风来,千树万树梨花开。

这一年又要过去了,这不马上过年了嘛,寻思给大家准备点礼物,程序员的礼物当然要有程序员的特征,下面我为大家写了个礼盒,但是我不展示礼盒里面是什么东西,注意看礼盒里面还有东西在动哦~哈哈,需要同学们自己动手写完之后才能知道我送的是什么礼物
视频地址;https://www.bilibili.com/video/BV1QT4y1C78t/
desktop-2022-01-17-10-50-09.gif

页面结构

这里不用我多说了吧?html还让我解释我直接吐血了都。

<div class="present" ontouchstart="ontouchstart">
    <div class="santa">
      <div class="santa__hat"></div>
      <div class="santa__eyes"></div>
      <div class="santa__beard">
        <div class="santa__beard--cover"></div>
      </div>
      <div class="santa__smile"></div>
    </div>
    <div class="present__box">
      <div class="present__ribbon--vertical"></div>
      <div class="present__ribbon--horizontal"></div>
    </div>
    <div class="present__top">
      <div class="present__ribbon--vertical"></div>
      <div class="present__bow"></div>
    </div>
  </div>

页面样式

初始化:

  body {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    height: 100vh;
    background-color: #1e2f27;
  }

整体位置和大小:

 .present {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    position: relative;
    margin-top: 10vw;
    width: 30vw;
    height: 25vw;
  }

下面我们写红色的盒子,以及圆角

 .present__box {
    background-color: #FE4365;
    background-image: -webkit-repeating-linear-gradient(45deg, #fe2f54, #fe2f54 1px, #FE4365 1px, #FE4365 4px);
    background-image: repeating-linear-gradient(45deg, #fe2f54, #fe2f54 1px, #FE4365 1px, #FE4365 4px);
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 0 0 0.5vw 0.5vw;
    box-shadow: inset -6px -6px 36px rgba(0, 0, 0, 0.1);
  }

这是横竖的封条

.present__ribbon--horizontal,
  .present__ribbon--vetical {
    content: "";
    position: absolute;
    margin: auto;
    background-color: #F9CDAD;
  }

  .present__ribbon--vertical {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    margin: auto;
    width: 5vw;
    height: 100%;
    background-color: #F9CDAD;
    background-image: -webkit-linear-gradient(10deg, transparent, rgba(255, 255, 255, 0.4) 70%, transparent);
    background-image: linear-gradient(80deg, transparent, rgba(255, 255, 255, 0.4) 70%, transparent);
    box-shadow: inset 0 -4px 6px -2px rgba(0, 0, 0, 0.1), 4px 0 6px -2px rgba(0, 0, 0, 0.1);
  }

  .present__ribbon--horizontal {
    top: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 5vw;
    background-image: -webkit-linear-gradient(10deg, transparent, rgba(255, 255, 255, 0.6) 60%, transparent);
    background-image: linear-gradient(80deg, transparent, rgba(255, 255, 255, 0.6) 60%, transparent);
    box-shadow: 0 0 8px -2px rgba(0, 0, 0, 0.1);
  }

这是礼盒盖子

 .present__top {
    background-color: #FE4365;
    background-image: -webkit-repeating-linear-gradient(135deg, #fe2f54, #fe2f54 1px, #FE4365 1px, #FE4365 4px);
    background-image: repeating-linear-gradient(-45deg, #fe2f54, #fe2f54 1px, #FE4365 1px, #FE4365 4px);
    position: absolute;
    top: 0;
    left: -1%;
    width: 102%;
    height: 20%;
    border-radius: 0.5vw 0.5vw 0 0;
    box-shadow: inset -6px -6px 36px rgba(0, 0, 0, 0.1);
  }

  .present__bow {
    position: absolute;
    right: 0;
    bottom: 100%;
    left: 0;
    margin: auto;
    width: 30%;
    height: 40%;
    background-color: #83AF9B;
    border-radius: 2px 2px 0 0;
    box-shadow: inset -6px -6px 6px rgba(0, 0, 0, 0.1);
  }

这是盖子上的蝴蝶结

 .present__bow:before,
  .present__bow:after {
    content: "";
    position: absolute;
    bottom: 100%;
    width: 70%;
    height: 150%;
    background-color: inherit;
    border-radius: 2px;
    z-index: -1;
  }

  .present__bow:before {
    left: 0;
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
    box-shadow: inset 6px 6px 6px rgba(0, 0, 0, 0.1);
  }

  .present__bow:after {
    right: 0;
    -webkit-transform: rotate(-45deg);
    transform: rotate(-45deg);
    box-shadow: inset -6px -6px 6px rgba(0, 0, 0, 0.1);
  }

开始画礼盒里面的礼物

  .santa {
    position: absolute;
    right: 0;
    bottom: 90%;
    left: 0;
    margin: auto;
    width: 60%;
    background-color: #E1B899;
    border-radius: 100%;
  }

  .santa:after {
    content: "";
    display: block;
    padding-bottom: 100%;
  }

  .santa__eyes {
    position: absolute;
    top: 35%;
    width: 100%;
    height: 100%;
  }

  .santa__eyes:before,
  .santa__eyes:after {
    content: "";
    position: absolute;
    width: 1.4vw;
    height: 1.4vw;
    background-color: #111111;
    border-radius: 100%;
  }

  .santa__eyes:before {
    left: 30%;
  }

  .santa__eyes:after {
    right: 30%;
  }

  .santa__beard {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    width: 100%;
    height: 50%;
    background-color: white;
    border-radius: 0 0 4vw 4vw;
  }

  .santa__beard:before,
  .santa__beard:after {
    content: "";
    position: absolute;
    bottom: 100%;
    width: 15%;
    height: 25%;
    background-color: inherit;
  }

  .santa__beard:before {
    left: 0;
    border-radius: 0 4vw 0 0;
  }

  .santa__beard:after {
    right: 0;
    border-radius: 4vw 0 0 0;
  }

  .santa__beard--cover {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    margin: auto;
    width: 70%;
    height: 50%;
    background-color: #E1B899;
    border-radius: 0 0 2vw 2vw;
  }

  .santa__beard--cover:before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    margin: auto;
    width: 50%;
    height: 100%;
    background-color: white;
    border-radius: 1vw 1vw 0 0;
  }

  .santa__smile {
    position: absolute;
    right: 0;
    bottom: 30%;
    left: 0;
    margin: auto;
    width: 15%;
    height: 20%;
    background-color: #111111;
    border-radius: 4vw;
  }

  .santa__smile:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 50%;
    background-color: white;
  }

最后添加动画就ok

.present {
    -webkit-animation: shake 5s ease-in-out infinite;
    animation: shake 5s ease-in-out infinite;
  }

  .present__top {
    -webkit-transform: translateY(0);
    transform: translateY(0);
    -webkit-transition: -webkit-transform 0.2s ease-in;
    transition: -webkit-transform 0.2s ease-in;
    transition: transform 0.2s ease-in;
    transition: transform 0.2s ease-in, -webkit-transform 0.2s ease-in;
  }

  .santa {
    -webkit-transform: translateY(17vw);
    transform: translateY(17vw);
    -webkit-transition: -webkit-transform 0.2s ease-in;
    transition: -webkit-transform 0.2s ease-in;
    transition: transform 0.2s ease-in;
    transition: transform 0.2s ease-in, -webkit-transform 0.2s ease-in;
  }

  .present:hover {
    -webkit-animation: none;
    animation: none;
  }

  .present:hover .santa {
    -webkit-transform: translateY(0);
    transform: translateY(0);
    -webkit-transition: -webkit-transform 0.1s ease-out;
    transition: -webkit-transform 0.1s ease-out;
    transition: transform 0.1s ease-out;
    transition: transform 0.1s ease-out, -webkit-transform 0.1s ease-out;
  }

  .present:hover .present__top {
    -webkit-transform: translateY(-17vw);
    transform: translateY(-17vw);
    -webkit-animation: pop-the-top 0.4s ease-in;
    animation: pop-the-top 0.4s ease-in;
  }

  @-webkit-keyframes pop-the-top {
    0% {
      -webkit-transform: translateY(0);
      transform: translateY(0);
    }

    30% {
      -webkit-transform: translateY(-24vw);
      transform: translateY(-24vw);
    }

    60% {
      -webkit-transform: translateY(-16vw);
      transform: translateY(-16vw);
    }

    75% {
      -webkit-transform: translateY(-18vw);
      transform: translateY(-18vw);
    }

    90%,
    100% {
      -webkit-transform: translateY(-17vw);
      transform: translateY(-17vw);
    }
  }

  @keyframes pop-the-top {
    0% {
      -webkit-transform: translateY(0);
      transform: translateY(0);
    }

    30% {
      -webkit-transform: translateY(-24vw);
      transform: translateY(-24vw);
    }

    60% {
      -webkit-transform: translateY(-16vw);
      transform: translateY(-16vw);
    }

    75% {
      -webkit-transform: translateY(-18vw);
      transform: translateY(-18vw);
    }

    90%,
    100% {
      -webkit-transform: translateY(-17vw);
      transform: translateY(-17vw);
    }
  }

  @-webkit-keyframes shake {
    52% {
      -webkit-transform: translateX(-0.2vw);
      transform: translateX(-0.2vw);
    }

    54% {
      -webkit-transform: translateX(0.2vw);
      transform: translateX(0.2vw);
    }

    56% {
      -webkit-transform: translateX(-0.5vw);
      transform: translateX(-0.5vw);
    }

    58% {
      -webkit-transform: translateX(0.5vw);
      transform: translateX(0.5vw);
    }

    60% {
      -webkit-transform: translateX(-0.2vw);
      transform: translateX(-0.2vw);
    }

    62% {
      -webkit-transform: translateX(0.2vw);
      transform: translateX(0.2vw);
    }

    64% {
      -webkit-transform: translateX(0);
      transform: translateX(0);
    }
  }

  @keyframes shake {
    52% {
      -webkit-transform: translateX(-0.2vw);
      transform: translateX(-0.2vw);
    }

    54% {
      -webkit-transform: translateX(0.2vw);
      transform: translateX(0.2vw);
    }

    56% {
      -webkit-transform: translateX(-0.5vw);
      transform: translateX(-0.5vw);
    }

    58% {
      -webkit-transform: translateX(0.5vw);
      transform: translateX(0.5vw);
    }

    60% {
      -webkit-transform: translateX(-0.2vw);
      transform: translateX(-0.2vw);
    }

    62% {
      -webkit-transform: translateX(0.2vw);
      transform: translateX(0.2vw);
    }

    64% {
      -webkit-transform: translateX(0);
      transform: translateX(0);
    }
  }

我这样写你明白了么?总的来说内容不是太难,总共也没几个html标签,主要是css样式,有些样式不理解的话可以查一下,我写的这些元素还算是比较常用的。

再有就是:如果写不出来的话就复制到你代码里瞅瞅我给你的什么礼物吧~

网页效果如何通过发链接给别人看?

1.1解决部署上线~> 部署上线工具(永久免费使用)

1.不需要买服务器就能部署线上,全世界都能访问你的连接啦, 这里给大家推荐一个程序员必备神器~ 简单易懂, 简直神器 ~ 更多源码或者部署方法点击下方公z号:前端老实人,联系获取

2.就是把你的代码效果做好了以后, 部署到线上, 把链接发给别人, 就可以让对方通过你的连接点击进去, 就能看到你的网页效果啦, 电脑端和手机端都可以噢! (不然别人看你的网页都要发文件过去,体验感不太好~)
在这里插入图片描述

最后

博主为人老实,无偿解答问题,也会录制一些学习视频教同学们知识❤
礼物我就先送为敬了,👍 /收藏/关注就交给你喽。
有不懂的可以联系前端老实人哦~

寄语

注意了,先看看你的左边,再看看你的右边。请小心一个刚溜出来的精神病,他的特征是:拿着手机东张西望。祝你新年快乐哦😂~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端老实人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值