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


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

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

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

创建悖论效果

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

示例

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

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

  • 使用 CSS 为其设置样式。

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

Open Compiler
<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 轴移动。

Open Compiler
<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。

Open Compiler
<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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告