网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > css

纯css如何制作一个好玩的拼图游戏?

2022/10/5 16:53:54

在我们的影像中css是用来定义字体、颜色等页面元素样式的,但有牛人却用css制作了一款好玩的拼图游戏,今天我们就来看看这个游戏是怎么实现的,如下图所示:<html><head> <meta charset="UTF-8"> <link rel="apple-touch-icon&quo…

        在我们的影像中css是用来定义字体、颜色等页面元素样式的,但有牛人却用css制作了一款好玩的拼图游戏,今天我们就来看看这个游戏是怎么实现的,如下图所示:

image.png


<html>
<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" type="image/png"
    href="https://cpwebassets.codepen.io/assets/favicon/apple-touch-icon-5ae1a0698dcc2402e9712f7d01ed509a57814f994c660df9f7a952f3060705ee.png">
  <meta name="apple-mobile-web-app-title" content="CodePen">
  <link rel="shortcut icon" type="image/x-icon"
    href="https://cpwebassets.codepen.io/assets/favicon/favicon-aec34940fbc1a6e787974dcd360f2c6b63348d4b1f4e06c77743096d55480f33.ico">
  <link rel="mask-icon" type="image/x-icon"
    href="https://cpwebassets.codepen.io/assets/favicon/logo-pin-8f3771b1072e3c38bd662872f6b673a722f4b3ca2421637d5596661b4e2132cc.svg"
    color="#111">
  <title>纯css如何制作一个好玩的拼图游戏?</title>
  <style>
    /* number of columns/rows, don't forget to adjust the HTML value */
    g {
      --s: 300px;
      /* size of the puzzle */
      display: grid;
      max-width: var(--s);
      border: 1px solid;
      margin: auto;
      grid-template-columns: repeat(4, 1fr);
    }
    g:before {
      content: "Original Image";
      color: #fff;
      font-size: 25px;
      font-weight: bold;
      text-shadow: 0 0 2px #000, 0 0 2px #000, 0 0 2px #000;
      position: fixed;
      top: 10px;
      left: 10px;
      width: calc(var(--s)*0.6);
      aspect-ratio: 1;
      -webkit-mask: repeating-linear-gradient(-45deg, #000 0 10%, #000d 0 20%);
      background: var(--i) 0/100% 100%;
      display: grid;
      place-content: center;
    }
    z {
      aspect-ratio: 1;
      outline: 1px dashed;
      display: grid;
      position: relative;
      pointer-events: none;
    }
    a {
      grid-area: 1/1;
      width: 0;
      transition: 0s 0.2s;
      pointer-events: initial;
    }
    b {
      grid-area: 1/1;
      background: var(--i) 0/var(--s) var(--s);
      box-shadow: 0 0 4px 1px red;
      z-index: 2;
      cursor: grab;
      pointer-events: initial;
    }
    z:nth-of-type(1) b {
      background-position: 0% 0%;
      transform: translate(150%, 150%) rotate(124deg) translate(301%) rotate(-115deg);
    }
    z:nth-of-type(2) b {
      background-position: 33.3333333333% 0%;
      transform: translate(50%, 150%) rotate(8deg) translate(334%) rotate(-16deg);
    }
    z:nth-of-type(3) b {
      background-position: 66.6666666667% 0%;
      transform: translate(-50%, 150%) rotate(15deg) translate(381%) rotate(-8deg);
    }
    z:nth-of-type(4) b {
      background-position: 100% 0%;
      transform: translate(-150%, 150%) rotate(131deg) translate(305%) rotate(-131deg);
    }
    z:nth-of-type(5) b {
      background-position: 0% 33.3333333333%;
      transform: translate(150%, 50%) rotate(39deg) translate(320%) rotate(-36deg);
    }
    z:nth-of-type(6) b {
      background-position: 33.3333333333% 33.3333333333%;
      transform: translate(50%, 50%) rotate(33deg) translate(339%) rotate(-28deg);
    }
    z:nth-of-type(7) b {
      background-position: 66.6666666667% 33.3333333333%;
      transform: translate(-50%, 50%) rotate(128deg) translate(352%) rotate(-135deg);
    }
    z:nth-of-type(8) b {
      background-position: 100% 33.3333333333%;
      transform: translate(-150%, 50%) rotate(71deg) translate(339%) rotate(-74deg);
    }
    z:nth-of-type(9) b {
      background-position: 0% 66.6666666667%;
      transform: translate(150%, -50%) rotate(135deg) translate(302%) rotate(-141deg);
    }
    z:nth-of-type(10) b {
      background-position: 33.3333333333% 66.6666666667%;
      transform: translate(50%, -50%) rotate(105deg) translate(356%) rotate(-108deg);
    }
    z:nth-of-type(11) b {
      background-position: 66.6666666667% 66.6666666667%;
      transform: translate(-50%, -50%) rotate(17deg) translate(338%) rotate(-15deg);
    }
    z:nth-of-type(12) b {
      background-position: 100% 66.6666666667%;
      transform: translate(-150%, -50%) rotate(127deg) translate(389%) rotate(-120deg);
    }
    z:nth-of-type(13) b {
      background-position: 0% 100%;
      transform: translate(150%, -150%) rotate(142deg) translate(341%) rotate(-138deg);
    }
    z:nth-of-type(14) b {
      background-position: 33.3333333333% 100%;
      transform: translate(50%, -150%) rotate(27deg) translate(330%) rotate(-22deg);
    }
    z:nth-of-type(15) b {
      background-position: 66.6666666667% 100%;
      transform: translate(-50%, -150%) rotate(15deg) translate(352%) rotate(-17deg);
    }
    z:nth-of-type(16) b {
      background-position: 100% 100%;
      transform: translate(-150%, -150%) rotate(159deg) translate(382%) rotate(-168deg);
    }
    z b {
      transition: 9999s 9999s;
    }
    z:active a {
      width: 100%;
      transition: 0s;
    }
    z a:hover~b {
      transform: translate(0);
      box-shadow: none;
      transition: 0s;
    }
    body {
      background: #2c6603;
      color: #fff;
      font-family: system-ui, sans-serif;
    }
    h1 {
      font-size: 2rem;
      margin: 0;
      text-align: center;
    }
    p {
      font-size: 1.2rem;
      text-align: center;
    }
  </style>
  <script>
    window.console = window.console || function (t) { };
  </script>
  <script>
    if (document.location.search.match(/type=embed/gi)) {
      window.parent.postMessage("resize", "*");
    }
  </script>
</head>
<body translate="no">
  <h1>CSS Puzzle</h1>
  <p>drag &amp; drop the piece into...<br> Well, you know how a puzzle works :)</p>
  <g style="--i:url(https://assets.codepen.io/1480814/1015-800x800.jpg)">
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
    <z><a></a><b draggable="true"></b></z>
  </g>
  <div id="xl_chrome_ext_{4DB361DE-01F7-4376-B494-639E489D19ED}" style="display: none;">
    <div></div>
    <a id="xl_chrome_ext_download" href="javascript:;">下载视频</a>
    <a id="xl_chrome_ext_close" href="javascript:;"></a>
  </div>
</body>
</html>

        查看在线实例

        通过以上内容我们知道了css如何制作一个好玩的拼图游戏?感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!


相关资讯

  • 设置英文首字母大写的css属性是什么?

    设置CSS text-transform 的属性为capitalize就可以实现英文首字母大写。 定义和用法  text-transform 属性控制文本的大小写。 属性值 值 描 述 none 默认。定义带有小写字…

    2021/7/14 20:35:17
  • 只让页面显示横滚动条,不显示竖滚动条如何实现?

    只让页面显示横滚动条,不显示竖滚动条的方法其实很简单,主要用到body的两个css属性 overflow和 overflow-y,如下所示:body { overflow:scroll; overflow-y:hidden;}

    2021/2/28 21:45:25
  • 网页的滚动条样式可以修改吗?如何修改?

    网页的滚动条样式可以修改的,主要是使用css来控制那如何修改呢?如下代码:<div class="inner"> <div class="innerbox"> <p style="height:200px;">这是内容111</p> <p style="hei…

    2021/2/28 21:15:24
  • css如何实现6张图片均匀排列在一行?

    css部分如下:img{width:120px; height:80px;float:left;margin-right:16px;}.img3{margin-right:0;}html部分如下:<img src="images/001.jpg" /><img src="images/002.jpg" /><img src="images/003.jpg" /><img src=…

    2021/2/28 21:10:01