用纯 CSS 问题翻页

问题描述 投票:0回答:2

我发现以下Gist.

我把 VSCode 上的源代码一模一样地复制过来,但是没有任何反应。你能解释一下为什么它不起作用吗?

css
2个回答
0
投票

可能是因为没有包括样式。它是 Sass,您需要将其编译为“普通”CSS。在这里阅读更多相关信息!我拿了 GIST 的代码,给你把 SCSS 转成了 CSS。检查下面的工作示例:

@import url('https://fonts.googleapis.com/css2?family=Indie+Flower&display=swap');

* {
padding: 0;
margin: 0 auto;
box-sizing: border-box;
}

body {
font-family: 'Indie Flower', cursive;
background-color: #eee;
color: #555;
text-align: center;
padding: 4em 0;
}

.imgLoader {
position: fixed;
animation: preLoad 1s steps(1);
width: 1px;
height: 1px;
}

@keyframes preLoad {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
}

10% {
    background-image: url('https://picsum.photos/420/300?random=2');
}

20% {
    background-image: url('https://picsum.photos/420/300?random=3');
}

30% {
    background-image: url('https://picsum.photos/420/300?random=4');
}

40% {
    background-image: url('https://picsum.photos/420/300?random=5');
}

100% {
    display: none;
}
}

.container {
position: relative;
width: 420px;
border: #fff solid 2px;
border-radius: 4px;
height: 420px;
}

.title {
position: absolute;
top: 45px;
left: 0;
width: 100%;
font-size: 2em;
font-weight: normal;
line-height: 1;
}

.credit {
position: absolute;
top: 100%;
left: 0;
font-size: 0.9em;
text-align: left;
}

.book {
position: relative;
perspective: 630px;
perspective-origin: center 50px;
transform: scale(1.2);
filter: drop-shadow(0px 10px 5px rgba(0, 0, 0, 0.25));
}

.page {
width: 210px;
height: 300px;
background-color: #bbb;
position: absolute;
top: 0px;
right: 50%;
transform-origin: 100% 100%;
border: solid #555 2px;
background-size: 420px 300px;
background-position: center;
}

.page:nth-child(1) {
transform: rotateX(60deg) rotateY(3deg);
}

.page:nth-child(2) {
transform: rotateX(60deg) rotateY(4.5deg);
}

.page:nth-child(3) {
transform: rotateX(60deg) rotateY(6deg);
animation: nextPage 25s infinite -24s steps(1);
background-size: 420px 300px;
background-position: -2px -2px;
}

.page:nth-child(4) {
transform: rotateX(60deg) rotateY(177deg);
}

.page:nth-child(5) {
transform: rotateX(60deg) rotateY(175.5deg);
}

.page:nth-child(6) {
transform: rotateX(60deg) rotateY(174deg);
overflow: hidden;
}

.page:nth-child(6)::after {
content: '';
width: 210px;
height: 300px;
position: absolute;
top: 0px;
right: 0%;
transform-origin: center;
transform: rotateY(180deg);
animation: nextPage 25s -20s infinite steps(1);
background-size: 420px 300px;
background-position: 100% -2px;
}

@keyframes nextPage {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
}
}

.gap {
width: 10px;
height: 300px;
background: none;
transform: rotateX(60deg);
transform-origin: bottom;
position: absolute;
top: 0px;
left: calc(50% - 5px);
}

.gap::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translate(-50%, 50%);
background-color: #555;
width: 10px;
height: 5px;
border-radius: 50%;
}

.flip {
width: 32px;
height: 300px;
position: absolute;
top: 0px;
transform-origin: 100% 100%;
right: 100%;
border: solid #555;
border-width: 2px 0px;
perspective: 4200px;
perspective-origin: center;
transform-style: preserve-3d;
background-size: 420px 300px;
}

.flip::after {
content: '';
position: absolute;
top: 0px;
right: 0%;
width: 100%;
height: 100%;
transform-origin: center;
background-size: 420px 300px;
}

.flip.flip1 {
right: 50%;
animation: flip1 5s infinite ease-in-out;
border-width: 2px 2px 2px 0;
}

.flip.flip1::after {
animation: nextFlip1 25s -20s infinite steps(1);
}

.flip:not(.flip1) {
right: calc(100% - 2px);
top: -2px;
transform-origin: right;
animation: flip2 5s ease-in-out infinite;
}

.flip.flip2::after {
animation: nextFlip2 25s -20s infinite steps(1);
}

.flip.flip3::after {
animation: nextFlip3 25s -20s infinite steps(1);
}

.flip.flip4::after {
animation: nextFlip4 25s -20s infinite steps(1);
}

.flip.flip5::after {
animation: nextFlip5 25s -20s infinite steps(1);
}

.flip.flip6::after {
animation: nextFlip6 25s -20s infinite steps(1);
}

.flip.flip7::after {
animation: nextFlip7 25s -20s infinite steps(1);
}

.flip.flip7 {
width: 30px;
border-width: 2px 0px 2px 2px;
}

.flip.flip7::after {
animation: nextFlip7 25s -20s infinite steps(1);
}

@keyframes flip1 {

0%,
20% {
    transform: rotateX(60deg) rotateY(6deg);
}

80%,
100% {
    transform: rotateX(60deg) rotateY(174deg);
}
}

@keyframes flip2 {

0%,
20% {
    transform: rotateY(0deg) translateY(0px);
}

50% {
    transform: rotateY(-15deg) translateY(0px);
}
}

@keyframes nextFlip1 {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -178px -2px;
    transform: rotateY(0deg);
}

10% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -210px -2px;
    transform: rotateY(180deg);
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -178px -2px;
    transform: rotateY(0deg);
}

30% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -210px -2px;
    transform: rotateY(180deg);
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -178px -2px;
    transform: rotateY(0deg);
}

50% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -210px -2px;
    transform: rotateY(180deg);
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -178px -2px;
    transform: rotateY(0deg);
}

70% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -210px -2px;
    transform: rotateY(180deg);
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -178px -2px;
    transform: rotateY(0deg);
}

90% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -210px -2px;
    transform: rotateY(180deg);
}
}

@keyframes nextFlip2 {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -148px -2px;
    transform: rotateY(0deg);
}

10.5% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -238px -2px;
    transform: rotateY(180deg);
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -148px -2px;
    transform: rotateY(0deg);
}

30.5% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -238px -2px;
    transform: rotateY(180deg);
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -148px -2px;
    transform: rotateY(0deg);
}

50.5% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -238px -2px;
    transform: rotateY(180deg);
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -148px -2px;
    transform: rotateY(0deg);
}

70.5% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -238px -2px;
    transform: rotateY(180deg);
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -148px -2px;
    transform: rotateY(0deg);
}

90.5% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -238px -2px;
    transform: rotateY(180deg);
}
}

@keyframes nextFlip3 {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -118px -2px;
    transform: rotateY(0deg);
}

11% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -268px -2px;
    transform: rotateY(180deg);
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -118px -2px;
    transform: rotateY(0deg);
}

31% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -268px -2px;
    transform: rotateY(180deg);
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -118px -2px;
    transform: rotateY(0deg);
}

51% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -268px -2px;
    transform: rotateY(180deg);
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -118px -2px;
    transform: rotateY(0deg);
}

71% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -268px -2px;
    transform: rotateY(180deg);
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -118px -2px;
    transform: rotateY(0deg);
}

91% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -268px -2px;
    transform: rotateY(180deg);
}
}

@keyframes nextFlip4 {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -88px -2px;
    transform: rotateY(0deg);
}

11.5% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -298px -2px;
    transform: rotateY(180deg);
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -88px -2px;
    transform: rotateY(0deg);
}

31.5% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -298px -2px;
    transform: rotateY(180deg);
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -88px -2px;
    transform: rotateY(0deg);
}

51.5% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -298px -2px;
    transform: rotateY(180deg);
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -88px -2px;
    transform: rotateY(0deg);
}

71.5% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -298px -2px;
    transform: rotateY(180deg);
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -88px -2px;
    transform: rotateY(0deg);
}

91.5% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -298px -2px;
    transform: rotateY(180deg);
}
}

@keyframes nextFlip5 {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -58px -2px;
    transform: rotateY(0deg);
}

12% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -328px -2px;
    transform: rotateY(180deg);
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -58px -2px;
    transform: rotateY(0deg);
}

32% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -328px -2px;
    transform: rotateY(180deg);
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -58px -2px;
    transform: rotateY(0deg);
}

52% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -328px -2px;
    transform: rotateY(180deg);
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -58px -2px;
    transform: rotateY(0deg);
}

72% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -328px -2px;
    transform: rotateY(180deg);
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -58px -2px;
    transform: rotateY(0deg);
}

92% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -328px -2px;
    transform: rotateY(180deg);
}
}

@keyframes nextFlip6 {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -28px -2px;
    transform: rotateY(0deg);
}

12.5% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -358px -2px;
    transform: rotateY(180deg);
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -28px -2px;
    transform: rotateY(0deg);
}

32.5% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -358px -2px;
    transform: rotateY(180deg);
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -28px -2px;
    transform: rotateY(0deg);
}

52.5% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -358px -2px;
    transform: rotateY(180deg);
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -28px -2px;
    transform: rotateY(0deg);
}

72.5% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -358px -2px;
    transform: rotateY(180deg);
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -28px -2px;
    transform: rotateY(0deg);
}

92.5% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -358px -2px;
    transform: rotateY(180deg);
}
}

@keyframes nextFlip7 {
0% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -2px -2px;
    transform: rotateY(0deg);
}

13% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -388px -2px;
    transform: rotateY(180deg);
}

20% {
    background-image: url('https://picsum.photos/420/300?random=2');
    background-position: -2px -2px;
    transform: rotateY(0deg);
}

33% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -388px -2px;
    transform: rotateY(180deg);
}

40% {
    background-image: url('https://picsum.photos/420/300?random=3');
    background-position: -2px -2px;
    transform: rotateY(0deg);
}

53% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -388px -2px;
    transform: rotateY(180deg);
}

60% {
    background-image: url('https://picsum.photos/420/300?random=4');
    background-position: -2px -2px;
    transform: rotateY(0deg);
}

73% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -388px -2px;
    transform: rotateY(180deg);
}

80% {
    background-image: url('https://picsum.photos/420/300?random=5');
    background-position: -2px -2px;
    transform: rotateY(0deg);
}

93% {
    background-image: url('https://picsum.photos/420/300?random=1');
    background-position: -388px -2px;
    transform: rotateY(180deg);
}
}

.twitterLink {
position: fixed;
bottom: 0.5em;
right: 0.5em;
}

.twitterLink img {
width: 2em;
filter: grayscale(100%);
transition: filter 0.25s;
}

.twitterLink img:hover {
filter: grayscale(0%);
}
 
<div class="imgLoader"></div>

<div class="container">

  <h1 class="title">
    Turning pages<br>with css
  </h1>

  <div class="credit">
    * Images loaded randomly from Picsum.photos
  </div>

  <div class="book">
    <div class="gap"></div>
    <div class="pages">
      <div class="page"></div>
      <div class="page"></div>
      <div class="page"></div>
      <div class="page"></div>
      <div class="page"></div>
      <div class="page"></div>
    </div>
    <div class="flips">
      <div class="flip flip1">
        <div class="flip flip2">
          <div class="flip flip3">
            <div class="flip flip4">
              <div class="flip flip5">
                <div class="flip flip6">
                  <div class="flip flip7"></div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

<a href="https://twitter.com/amit_sheen" class="twitterLink" target="_top">
   <img src="https://assets.codepen.io/1948355/twitterLogo2.png" />
</a>


-1
投票

嗨,雅各布,感谢您的帮助,现在一切正常!

但是,如果我想使用自己的照片,而不是Picsum.photo; 1.是否可能; 2.我如何将自己的照片转成RUL;和 3. 我应该做哪些其他更正。

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.