如何使用 CSS 创建悖论效果?


悖论效果是一种视觉效果,用于创建任何对象、元素或文本的视觉错觉,使其看起来以矛盾的方式移动。此效果可用于为网页添加有趣且独特的元素。

这可以使用 HTML 和 CSS 轻松创建。在本文中,我们将讨论创建悖论效果所需的 CSS 技术和属性。我们将从使用两个 CSS 属性同时组合创建简单的悖论开始,然后深入研究更高级的技术,这些技术使我们能够使用 CSS 动画创建复杂的悖论效果。

在本文结束时,您将具备创建令人惊叹且视觉上引人入胜的悖论效果的知识和技能,并将其应用于您自己的网页。

创建悖论效果

使用 CSS 创建悖论效果可以通过使用相互矛盾的 CSS 属性来实现,从而导致视觉矛盾或意外行为。以下是一些示例。

示例

在这里,我们使用 CSS 属性(如floatcleartext-alignvertical-aligntransformtransition 等)的组合创建了一些悖论效果。以下是需要遵循的步骤 -

  • 创建一个 div、span 和 button 元素。

  • 使用 CSS 为其设置样式。

  • 对于div 元素,使用floatclear 属性。对于span 元素,使用text-alignvertical-align 属性。对于button,使用transformtransition 属性。

<html>
<head>
   <style>
      div {
         float: left;
         clear: both;
         background-color: yellow;
         padding: 20px;
         margin: 15px;
         border: 1px solid black;
      }
      span {
         text-align: center;
         vertical-align: top;
         background-color: lightblue;
         padding: 20px;
         margin: 10px;
         display: inline-block;
         border: 1px solid black;
      }
      button {
         transform: rotate(180deg);
         transition: transform 1s;
         background-color: pink;
         color: white;
         border: none;
         padding: 10px 20px;
         margin: 10px;
         cursor: pointer;
      }
      button:hover {
        transform: rotate(0deg);
      }      
   </style>
</head>
<body>  
   <div> This is a div element </div>
   <span> This is a span element </span>
   <br>
   <br>
   <button> Click me </button>
</body>
</html>
  • div 元素浮动到左侧,但随后在两侧都清除,导致它根本不浮动。这可以通过使用floatclear 属性来实现。同时为任何元素将float 的值设置为left,将clear 的值设置为both。这使得元素浮动到左侧,但随后两侧都清除,导致元素根本不浮动。

  • 使用text-alignvertical-align 也可以创建悖论效果。span 元素的文本水平居中,但垂直对齐到顶部,导致文本看起来偏离中心。

  • 使用transformtransition 属性。button 元素最初旋转 180 度,但当悬停在其上时,它使用transition 属性旋转回 0 度,以在两种状态之间创建平滑的动画。

示例

移动背景,静止内容:此效果可以通过为元素的background-position 属性设置动画,同时保持其内容静止来实现。以下是需要遵循的步骤 -

  • 为背景图像创建一个容器 div 元素。在其中,创建另一个包含内容或文本的 div 元素。

  • 指定背景图像的尺寸。此外,将background-size 保持为cover,并将overflow 保持为hidden

  • 将内容与背景的中心对齐。

  • 现在,使用 CSS 动画为背景的 background-position 设置动画。background-position 从 (0 0) 到 (100% 0),以便背景沿 X 轴移动。

<html>
<head>
   <style>
      .paradox {
         background: url('https://images.ctfassets.net/hrltx12pl8hq/4f6DfV5DbqaQUSw0uo0mWi/6fbcf889bdef65c5b92ffee86b13fc44/shutterstock_376532611.jpg?fit=fill&w=800&h=300');
         background-size: cover;
         height: 500px;
         width: 100%;
         overflow: hidden;
      }
      .paradox .content {
         position: relative;
         top: 50%;
         transform: translateY(-50%);
         text-align: center;
         color: white;
         font-size: 2em;
      }
      @keyframes background-slide {
         0% {
            background-position: 0 0;
         }
         100% {
            background-position: 100% 0;
         }
      }
      .paradox {
         animation: background-slide 10s infinite linear;
      }   
   </style>
</head>
<body>   
   <div class="paradox">
      <div class="content">
         <h1> Static Content </h1>
         <p> This content remains stationary while the background moves. </p>
      </div>
   </div>
</body>   
</html>

示例

静止内容,移动边框:我们可以通过为边框属性设置动画,同时保持内容静止来创建此效果。以下是需要遵循的步骤 -

  • 为背景图像创建一个容器 div 元素。在其中,创建另一个包含内容或文本的 div 元素。

  • 指定背景图像的尺寸。此外,将position 保持为relative,并将overflow 保持为hidden

  • 将内容与背景的中心对齐。

  • 现在,使用 CSS 动画为背景的边框设置动画。在悬停时,边框的大小从 0px 增加到 20px,然后返回到 0。

<html>
<head>
   <style>
      .paradox {
         background: url('https://images.ctfassets.net/hrltx12pl8hq/4f6DfV5DbqaQUSw0uo0mWi/6fbcf889bdef65c5b92ffee86b13fc44/shutterstock_376532611.jpg?fit=fill&w=800&h=300');
         height: 300px;
         width: 430px;
         margin: 10px;
         position: relative;
         overflow: hidden;
      }
      .paradox .content {
         position: absolute;
         top: 50%;
         left: 50%;
         transform: translate(-50%, -50%);
         text-align: center;
      }
      .paradox:hover {
         animation: border 2s infinite linear;
      }
      @keyframes border {
         0% {
            border: 1px solid green;
         }
         50% {
            border: 20px solid green;
         }
         100% {
            border: 1px solid green;
         }
      }
   </style>
</head> 
<body>   
   <div class="paradox">
      <div class="content">
         <h1> Static Content </h1>
         <p> This content remains stationary while the border moves. </p>
      </div>
   </div>
</body>
</html>

在上面的示例中,内容和背景保持静止,而边框移动。

结论

使用各种 CSS 属性,您可以在网页上创建独特的悖论效果,这将使您的网站用户友好,并提高其受欢迎程度。创建此类视觉效果可以吸引用户的注意力,并帮助您创建动态网站。

更新于: 2023 年 5 月 2 日

355 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告