suchen
HeimWeb-FrontendHTML-TutorialCSS3打造3D导航_html/css_WEB-ITnose

效果预览


分析:可以看出hover的时候是有前后两个面的翻转,并且有一个凸出效果。

HTML分析

代码如下:

<ul class="block-menu">    <li>        <a href="#" class="three-d">            Home            <span class="three-d-box">                <span class="front">Home</span>                <span class="back">Home</span>            </span>        </a>    </li>    <li>        <a href="#" class="three-d">            Demo            <span class="three-d-box">                <span class="front">Demo</span>                <span class="back">Demo</span>            </span>        </a>    </li>    <li>        <a href="#" class="three-d">            Deal            <span class="three-d-box">                <span class="front">Deal</span>                <span class="back">Deal</span>            </span>        </a>    </li>    <li>        <a href="#" class="three-d">            About            <span class="three-d-box">                <span class="front">About</span>                <span class="back">About</span>            </span>        </a>    </li></ul>

标签里包裹一个盒子里包裹两个,为效果的前后面做准备。

CSS分析

1.外观、定位

代码如下:

        *{  box-sizing:border-box;}        .block-menu{background:black;}        .block-menu li{display:inline-block;}        .block-menu li a{          color:#fff;          text-decoration:none;          text-transform:uppercase;          font-size:24px;          line-height:20px;          font-weight:bold;          font-family: Arial, sans-serif;          display:block;          padding:15px 10px;        }        .three-d{          position:relative;        }        .three-d-box,.front,.back{          width:100%;          height:100%;          position:absolute;          top:0;          left:0;          padding:15px 10px;          background:black;        }

2.3D效果

首先创造3D环境,保留3D空间:

.three-d{perspective:200px;}.three-d-box{transform-style:preserve-3d;}

1.在three-d:hover的时候,我们让.three-d-box旋转,正面面对我们的元素向上翻转,下面有元素翻转上来,并且在翻转时有一个凸出来的效果。
2.关于这个凸出的效果,大家可以进行测试,如果一个元素是以自己的中心为中心点进行翻转时,是不会有凸出的效果。所以如果要制造一个凸出的效果,那么元素翻转的中心就一定不是自己的中心。
3.同时我们看到,在翻转的同时,元素贴回了ul所在的平面的,因此应该是在Z轴上有一定负的位移。

根据以上3点,我们可以设置3D变换:

.three-d:hover .three-d-box{    transform:translateZ(-50px) rotateX(90deg);}

在这里,我先设置translateZ而不是rotateX,是因为rotateX之后坐标轴会变换,如果先roatetX后translateZ的话,Z轴的位移就不是垂直于ul平面(面对我们)的位移了。

由于变换时,.three-d-box有Z轴上的负位移,如果不给.front,.back设置Z轴上的位移的话,这两个平面最后不会贴回ul的平面,而是在ul平面的后面。因此,我们给.front,.back设置Z轴正方向且等于变化时的位移的距离,如此,变化时,这两个元素就会完美贴合ul所在的平面了。

.front,.back{transform:translateZ(50px);}

变换时,.back是从下面上来的,理应有一个rotateX(-90deg)的旋转。如果先translateZ再rotateX的话,.back所在的Y轴上的高度是的一半,动画时并没有从下面上来的效果,因此,应该先rotateX变化坐标后再translateZ,这样.back就在ul的“下方”了。

.front{transform:rotateX(0deg) translateZ(50px);}.back{transform:rotateX(-90deg) translateZ(50px);}

在没有hover的情况下,由于给.front,.back设置了translateZ,.front,.back看起来比正常的大。为了在没有hover的情况下,.front能贴合,我给.three-d设置translateZ(-50px),这样.front虽然先跟随.three-d在Z轴上有-50px的负位移,但随后translateZ(50px)又让它在Z轴上有50px的正位移,如此,便贴合了.
.three-d-box{transform:translateZ(-50px);}

最后,我们为这个变化添加一个过渡的效果:
.three-d-box{transition:all .3s;}

3.注意

  • 为了让效果明显,Z轴上的位移设置的较大值50px;在了解原理后,大家可以设置小一点的位移值,这样下方的.back就不会如此明显的看到了。

  • hover的时候,.three-d-box旋转,它的子元素旋转的中心点是.three-d-box的中心点而不是子元素自己的中心点哦~这样你才能看到有凸出的效果。

  • hover的时候是会覆盖原来的样式,所以hover时,原始状态是.three-d-box在Z轴的位移是0,.front,.back在Z轴的位移是50px;hover的时候以此为起点进行变换。

  • 最终3D相关代码如下:

    .three-d{perspective:200px;}.three-d-box{    transform-style:preserve-3d;    transform:translateZ(-25px);    transition: all .3s ; }.front{transform:rotateX(0deg) translateZ(25px);}.back{transform:rotateX(-90deg) translateZ(25px);}.three-d:hover .three-d-box{    transform: translateZ(-25px) rotateX(90deg);}
    总结
  • 这个例子很好的说明了,一定要注意变换的中心点

  • 父元素变换时,子元素是以父元素的中心点为中心点变换的,而不是自己。

  • Stellungnahme
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    HTML, CSS und JavaScript verstehen: Ein AnfängerhandbuchHTML, CSS und JavaScript verstehen: Ein AnfängerhandbuchApr 12, 2025 am 12:02 AM

    WebdevelopmentRelieSonHtml, CSS und JavaScript: 1) HtmlStructuresContent, 2) CSSstylesit und 3) JavaScriptaddssinteraktivität, Bildung von TheBasisofModerernwebexperiences.

    Die Rolle von HTML: Strukturierung von WebinhaltenDie Rolle von HTML: Strukturierung von WebinhaltenApr 11, 2025 am 12:12 AM

    Die Rolle von HTML besteht darin, die Struktur und den Inhalt einer Webseite durch Tags und Attribute zu definieren. 1. HTML organisiert Inhalte über Tags wie das Lesen und Verständnis. 2. Verwenden Sie semantische Tags wie usw., um die Zugänglichkeit und SEO zu verbessern. 3. Optimierung des HTML -Codes kann die Ladegeschwindigkeit und die Benutzererfahrung der Webseite verbessern.

    HTML und Code: Ein genauerer Blick auf die TerminologieHTML und Code: Ein genauerer Blick auf die TerminologieApr 10, 2025 am 09:28 AM

    HtmlisaspecifictypeofcodeFocusedonstructuringuringwebcontent, während "Code" breitincludesluages ​​-ähnlichjavaScriptandpythonforfunctionality.1) htmldefineswebpageStructureStags.2) "Code" cometesaWiNrangeOfLanguagesForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForfirsInsForfunctionNacts

    HTML, CSS und JavaScript: Wesentliche Tools für WebentwicklerHTML, CSS und JavaScript: Wesentliche Tools für WebentwicklerApr 09, 2025 am 12:12 AM

    HTML, CSS und JavaScript sind die drei Säulen der Webentwicklung. 1. HTML definiert die Webseitenstruktur und verwendet Tags wie z.

    Die Rollen von HTML, CSS und JavaScript: KernverantwortungDie Rollen von HTML, CSS und JavaScript: KernverantwortungApr 08, 2025 pm 07:05 PM

    HTML definiert die Webstruktur, CSS ist für Stil und Layout verantwortlich, und JavaScript ergibt eine dynamische Interaktion. Die drei erfüllen ihre Aufgaben in der Webentwicklung und erstellen gemeinsam eine farbenfrohe Website.

    Ist HTML für Anfänger leicht zu lernen?Ist HTML für Anfänger leicht zu lernen?Apr 07, 2025 am 12:11 AM

    HTML ist für Anfänger geeignet, da es einfach und leicht zu lernen ist und schnell Ergebnisse sehen kann. 1) Die Lernkurve von HTML ist glatt und leicht zu beginnen. 2) Beherrschen Sie einfach die grundlegenden Tags, um Webseiten zu erstellen. 3) hohe Flexibilität und kann in Kombination mit CSS und JavaScript verwendet werden. 4) Reiche Lernressourcen und moderne Tools unterstützen den Lernprozess.

    Was ist ein Beispiel für ein Start -Tag in HTML?Was ist ein Beispiel für ein Start -Tag in HTML?Apr 06, 2025 am 12:04 AM

    AnexampleofaTartingTaginHtmlis, die, die starttagsaresesinginhtmlastheyinitiateElements, definetheirtypes, andarecrucialForstructuringwebpages und -konstruktionsthedoms.

    Wie kann ich das Flexbox -Layout von CSS verwenden, um eine zentrale Ausrichtung des Segmentierungseffekts für gepunktete Linien im Menü zu erzielen?Wie kann ich das Flexbox -Layout von CSS verwenden, um eine zentrale Ausrichtung des Segmentierungseffekts für gepunktete Linien im Menü zu erzielen?Apr 05, 2025 pm 01:24 PM

    Wie gestalte ich den Segmentierungseffekt der gepunkteten Linien im Menü? Bei der Gestaltung von Menüs ist es normalerweise nicht schwierig, links und rechts zwischen dem Gerichtsnamen und dem Preis von Schalen auszurichten, aber wie wäre es mit der gepunkteten Linie oder dem Punkt in der Mitte ...

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    mPDF

    mPDF

    mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

    EditPlus chinesische Crack-Version

    EditPlus chinesische Crack-Version

    Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion