搜尋
首頁web前端css教學純 CSS 中的圖片交換

純 CSS 中的圖片交換

Image Swap in Pure CSS

Image Swap in Pure CSS

讓我們在不使用 JavaScript 的情況下使用純 CSS 建立圖片交換教學。

  1. 讓我們使用輸入單選按鈕、標籤在 html 中建立一些元素。最後,我們還添加 **
    <div>
    
    
    
    <p>Let's create <strong>CSS</strong><br>
    </p>
    
    <pre class="brush:php;toolbar:false"> * {
        margin: 0;
        padding: 0;
    } 
    
    html {
        height: 100%;
        scroll-behavior: smooth;
    }
    
    body {
        display: flex;
        flex-direction: column;
        height: 100%;
        font-family: monospace;
        place-content: center;
        background-size: 100% 100%;
        background-position: 0px 0px;
        background-image: radial-gradient(18% 28% at 24% 50%, #CEFAFFFF 7%,
     #073AFF00 100%), radial-gradient(18% 28% at 18% 71%, #FFFFFF59 6%, 
    #073AFF00 100%), radial-gradient(70% 53% at 36% 76%, #73F2FFFF 0%, 
    #073AFF00 100%), radial-gradient(42% 53% at 15% 94%, #FFFFFFFF 7%,
     #073AFF00 100%), radial-gradient(42% 53% at 34% 72%, #FFFFFFFF 7%,
     #073AFF00 100%), radial-gradient(18% 28% at 35% 87%, #FFFFFFFF 7%,
     #073AFF00 100%), radial-gradient(31% 43% at 7% 98%, #FFFFFFFF 24%,
     #073AFF00 100%), radial-gradient(21% 37% at 72% 23%, #D3FF6D9C 24%,
     #073AFF00 100%), radial-gradient(35% 56% at 91% 74%, #8A4FFFF5 9%,
     #073AFF00 100%), radial-gradient(74% 86% at 67% 38%, #84d9ff 24%,
     #073AFF00 100%), linear-gradient(125deg, #4EB5FFFF 1%, #4C00FCFF 100%);
    }
    
    .wrapper {
        width: 860px;
        height: 283px;
        position: relative;
        margin: 0 auto;
    }
    
    .wrapper label {
        width: 200px;
        height: 134px;
        cursor: pointer;
        position: absolute;
        transition: 0.25s;
        border-radius: 10px;
    }
    
    .wrapper label img{
        max-width: 100%;
        height: 100%;
        border-radius: 10px;
    }
    
    .wrapper input[type="radio"] {
        padding: 5px 5px 5px 10px;
        height: 134px;
        width: 200px;
        cursor: pointer;
        position: absolute;
        z-index: -1;
        opacity: 0;
    }
    
    .wrapper input[type="radio"]+label span {
        opacity: 0;
        background: var(--bg);
        display: inline-block;
        border-radius: 7px;
        padding: 5px 0 5px 10px;
        margin-top: 5px;
        width: calc(100% - 10px);
        color: white;
    }
    
    .wrapper input[type="radio"]:checked+label span {
        opacity: 1;
        animation-delay: 1s;
        animation: fade 1s;
    }
    
    /* static positions */
    .wrapper input[type="radio"]#s1,
    .wrapper input[type="radio"]#s1+label {
        left: 0;
        top: 0;
    }
    
    .wrapper input[type="radio"]#s2,
    .wrapper input[type="radio"]#s2+label {
        left: 440px;
        top: 0;
    }
    
    .wrapper input[type="radio"]#s3,
    .wrapper input[type="radio"]#s3+label {
        left: 655px;
        top: 0;
    }
    
    .wrapper input[type="radio"]#s4,
    .wrapper input[type="radio"]#s4+label {
        left: 440px;
        top: 150px;
    }
    
    .wrapper input[type="radio"]#s5,
    .wrapper input[type="radio"]#s5+label {
        left: 655px;
        top: 150px;
    }
    
    /* onclick shows large image and caption*/
    .wrapper input[type="radio"]:checked,
    .wrapper input[type="radio"]:checked+label {
        left: 0 !important;
        top: 0 !important;
        width: 425px;
        height: 100%;
    }
    
    /* placing first item position when clickced on other thumbnails */
    .wrapper input[type="radio"]#s2:checked~#s1+label {
        left: 440px;
    }
    
    .wrapper input[type="radio"]#s3:checked~#s1+label {
        left: 660px;
    }
    
    .wrapper input[type="radio"]#s4:checked~#s1+label {
        left: 440px;
        top: 150px;
    }
    
    .wrapper input[type="radio"]#s5:checked~#s1+label {
        left: 660px;
        top: 150px;
    }
    
    @keyframes fade {
        from {
            opacity: 0;
        }
    
        to {
            opacity: 1;
        }
    }
    
    /* changing background color when clicked on thumbnails */
    .bg {
        position: fixed;
        left: 0;
        top: 0;
        width: 100vw;
        height: 100vh;
        z-index: -1;
    }
    
    .wrapper input[type="radio"]#s2:checked~.bg {
        background-image: radial-gradient(circle, rgba(238, 174, 202, 1) 0%, rgba(148, 187, 233, 1) 100%);
    }
    
    .wrapper input[type="radio"]#s3:checked~.bg {
        background-image: radial-gradient(circle, rgb(197, 218, 196) 0%, rgb(88, 167, 204) 100%);
    }
    
    .wrapper input[type="radio"]#s4:checked~.bg {
        background-image: radial-gradient(circle, rgb(238, 226, 174) 0%, rgb(177, 139, 131) 100%);
    }
    
    .wrapper input[type="radio"]#s5:checked~.bg {
        background-image: radial-gradient(circle, rgb(174, 238, 225) 0%, rgb(36, 163, 136) 100%);
    }
    

    現在,我們已經完成了靜態位置的交換動畫。檢查下面的 gif 動畫中的輸出是否可以播放,否則請前往本文末尾並查看演示的 codepen 連結。

    Image Swap in Pure CSS

    現在讓我們嘗試使用 CSS 自訂變數來動態寬度和高度。使用自訂 css 變數非常有用,因為只需更改 2 個位置,所有尺寸(大尺寸和縮圖)包括間隙都會自動修復。讓我們在 :root
    中建立變數

     :root {
         --w: 800px;
         --h: 270px;
         --m: 15px;
         --thumbw: calc(var(--w)/4 - 15px);
         --thumbh: calc(50% - var(--m));
         --top: calc(var(--h)/2 + var(--m)/2 + 0px);
     }
    

    現在忽略之前的所有 CSS 並替換為下面的 CSS。您可以在下面發現先前的 CSS 已被註解並替換為自訂變數。

    :root {
        --w: 800px;
        --h: 270px;
        --m: 15px;
        --thumbw: calc(var(--w)/4 - 15px);
        --thumbh: calc(50% - var(--m));
        --top: calc(var(--h)/2 + var(--m)/2 + 0px);
    }
    
     * {
         margin: 0;
         padding: 0;
     }
    
     html {
         height: 100%;
         scroll-behavior: smooth;
     }
    
    body {
        display: flex;
        flex-direction: column;
        height: 100%;
        font-family: monospace;
        place-content: center;
        background-size: 100% 100%;
        background-position: 0px 0px;
        background-image: radial-gradient(18% 28% at 24% 50%, #CEFAFFFF 7%,
     #073AFF00 100%), radial-gradient(18% 28% at 18% 71%, #FFFFFF59 6%, 
    #073AFF00 100%), radial-gradient(70% 53% at 36% 76%, #73F2FFFF 0%, 
    #073AFF00 100%), radial-gradient(42% 53% at 15% 94%, #FFFFFFFF 7%,
     #073AFF00 100%), radial-gradient(42% 53% at 34% 72%, #FFFFFFFF 7%,
     #073AFF00 100%), radial-gradient(18% 28% at 35% 87%, #FFFFFFFF 7%,
     #073AFF00 100%), radial-gradient(31% 43% at 7% 98%, #FFFFFFFF 24%,
     #073AFF00 100%), radial-gradient(21% 37% at 72% 23%, #D3FF6D9C 24%,
     #073AFF00 100%), radial-gradient(35% 56% at 91% 74%, #8A4FFFF5 9%,
     #073AFF00 100%), radial-gradient(74% 86% at 67% 38%, #84d9ff 24%,
     #073AFF00 100%), linear-gradient(125deg, #4EB5FFFF 1%, #4C00FCFF 100%);
    }
    
     .wrapper {
         /* width: 860px; */
         /* height: 283px; */
         width: var(--w);
         height: var(--h);
         position: relative;
         margin: 0 auto;
     }
    
     .wrapper label {
         /* width: 200px; */
         width: var(--thumbw);
         height: calc(50% - var(--m) / 2);
         cursor: pointer;
         position: absolute;
         transition: 0.25s;
         border-radius: 10px;
     }
    
     .wrapper label img,
     .wrapper label div {
         max-width: 100%;
         height: 100%;
         border-radius: 10px;
     }
    
     .wrapper input[type="radio"] {
         padding: 5px 5px 5px 10px;
          /* width: 200px; */
         /* height: 134px; */
         height: calc(50% - var(--m) / 2);
         width: var(--thumbw);
         cursor: pointer;
         position: absolute;
         z-index: -1;
         opacity: 0;
     }
    
     .wrapper input[type="radio"]+label span {
         opacity: 0;
         background: var(--bg);
         display: inline-block;
         border-radius: 7px;
         padding: 5px 0 5px 10px;
         margin-top: 5px;
         width: calc(100% - 10px);
         color: white;
     }
    
     .wrapper input[type="radio"]:checked+label span {
         opacity: 1;
         animation-delay: 1s;
         animation: fade 1s;
     }
    
     .wrapper input[type="radio"]#s1,
     .wrapper input[type="radio"]#s1+label {
         left: 0;
         top: 0;
     }
    
     .wrapper input[type="radio"]#s2,
     .wrapper input[type="radio"]#s2+label {
         /* left: 440px; */
         left: calc((var(--w)/2) + var(--m));
         top: 0;
     }
    
     .wrapper input[type="radio"]#s3,
     .wrapper input[type="radio"]#s3+label {
         /* left: 655px; */
         left: calc(var(--w)/2 + var(--thumbw) + var(--m) + 15px);
         top: 0;
     }
    
     .wrapper input[type="radio"]#s4,
     .wrapper input[type="radio"]#s4+label {
         /* left: 440px; */
          /* top: 150px; */
         left: calc((var(--w)/2) + var(--m));
         top: var(--top);
     }
    
     .wrapper input[type="radio"]#s5,
     .wrapper input[type="radio"]#s5+label {
         /* left: 655px; */
          /* top: 150px; */
         left: calc(var(--w)/2 + var(--thumbw) + var(--m) + 15px);
         top: var(--top);
     }
    
     .wrapper input[type="radio"]:checked,
     .wrapper input[type="radio"]:checked+label {
         left: 0 !important;
         top: 0 !important;
         /* width: 425px; */
         width: calc(var(--w)/2);
         height: 100%;
     }
    
     .bg {
         position: fixed;
         left: 0;
         top: 0;
         width: 100vw;
         height: 100vh;
         z-index: -1;
     }
    
     .wrapper input[type="radio"]#s2:checked~#s1+label {
         /* left: 440px; */
         left: calc((var(--w)/2) + var(--m));
     }
    
     .wrapper input[type="radio"]#s3:checked~#s1+label {
         /* left: 660px; */
         left: calc(var(--w)/2 + var(--thumbw) + var(--m) + 15px);
     }
    
     .wrapper input[type="radio"]#s4:checked~#s1+label {
         /* left: 440px; */
          /* top: 150px; */
         left: calc((var(--w)/2) + var(--m));
         top: var(--top);
     }
    
     .wrapper input[type="radio"]#s5:checked~#s1+label {
         /* left: 660px; */
          /* top: 150px; */
         left: calc(var(--w)/2 + var(--thumbw) + var(--m)*2);
         top: var(--top);
     }
    
    
     @keyframes fade {
         from {
             opacity: 0;
         }
    
         to {
             opacity: 1;
         }
     }
    
     .wrapper input[type="radio"]#s2:checked~.bg {
         background-image: radial-gradient(circle, rgba(238, 174, 202, 1) 0%, rgba(148, 187, 233, 1) 100%);
     }
    
     .wrapper input[type="radio"]#s3:checked~.bg {
         background-image: radial-gradient(circle, rgb(197, 218, 196) 0%, rgb(88, 167, 204) 100%);
     }
    
     .wrapper input[type="radio"]#s4:checked~.bg {
         background-image: radial-gradient(circle, rgb(238, 226, 174) 0%, rgb(177, 139, 131) 100%);
     }
    
     .wrapper input[type="radio"]#s5:checked~.bg {
         background-image: radial-gradient(circle, rgb(174, 238, 225) 0%, rgb(36, 163, 136) 100%);
     }
    

    現在在 :root {--w: 800px; --h: 270px;}.只需按比例更改寬度和高度即可。前往網址 https://scriptygoddess.com/resources/proportioncalc.htm 並輸入:根寬度和高度,如下圖所示

    Image Swap in Pure CSS

    現在輸入新的寬度或高度以獲得比例值。我新增了新的寬度 1000 並點擊調整大小,高度為 337.5,並在 :root {--w: 1000px; --h: 337.5px;}。這就是你所要做的。您可以看到所有影像的變化 - 寬度、高度、間隙按比例增加。

    您可以在下面的codepen連結中的:root中編輯寬度和高度的值並運行。玩得開心!
    Codepen 示範

    感謝您的觀看...

以上是純 CSS 中的圖片交換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Draggin&#039;和droppin&#039;在反應中Draggin&#039;和droppin&#039;在反應中Apr 17, 2025 am 11:52 AM

React生態系統為我們提供了許多庫,所有庫都集中在拖放的相互作用上。我們有反應,反應,可愛dnd,

快速軟件快速軟件Apr 17, 2025 am 11:49 AM

最近有一些關於快速軟件的完美互連的事情。

帶有背景折疊的嵌套梯度帶有背景折疊的嵌套梯度Apr 17, 2025 am 11:47 AM

我可以說我經常使用背景折疊。 IT Wager IT幾乎從未在日常CSS工作中使用。但是在斯特凡·朱迪斯(Stefan Judis)的帖子中,我想起了它,

使用React Hooks使用requestAnimationFrame使用React Hooks使用requestAnimationFrameApr 17, 2025 am 11:46 AM

使用RequestAnimationFrame進行動畫化應該很容易,但是如果您還沒有徹底閱讀React的文檔,那麼您可能會遇到一些事情

需要滾動到頁面頂部嗎?需要滾動到頁面頂部嗎?Apr 17, 2025 am 11:45 AM

向用戶提供此鏈接的最簡單方法是針對元素上的ID的鏈接。如此...

最好的(GraphQl)API是您編寫的API最好的(GraphQl)API是您編寫的APIApr 17, 2025 am 11:36 AM

聽著,我不是GraphQL專家,但我確實喜歡與之合作。作為前端開發人員,它向我曝光數據的方式非常酷。它就像一個菜單

在保留邊框半徑的同時,擴展盒子的各種方法在保留邊框半徑的同時,擴展盒子的各種方法Apr 17, 2025 am 11:19 AM

我最近注意到Codepen的一個有趣的更改:在懸停在主頁上的筆時,有一個矩形,圓角在後面擴展。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。