【CSS】純css實現立體擺放圖片效果


1.  元素的 width/height/padding/margin 的百分比基准

設置 一個元素 width/height/padding/margin 的百分比的時候,大家可知道基准是什么?

舉個栗子:

 

.parent {
  width: 200px;
  height: 100px;
}
.child {
  width: 80%;
  height: 80%;
}
.childchild {
  width: 50%;
  height: 50%;
 padding: 2%;
margin: 5%;
}

  

    <div class="parent">
        <div class="child">
            <div class="childchild"></div>
        </div>
    </div>

  上段代碼中,childchild 元素的 width 是多少? height 是多少?padding 是多少? margin是多少?

元素的 height 百分比基准是父級元素的 height, 元素的 width, padding, margin 百分比基准是父級元素的 width。

由此,相信大家都已經有數了,大家可以試一下呢~~

面試經常會遇到一個簡單的css樣式問題 , 實現一個自適應的正方形,原理就是基於上面的那些知識了。只需要

#box {
            width: 50%;
            padding-top: 50%;
            background: #000;
        }

  因為元素的 width 和 padding 的基准值都是父級元素的 width, 而 body 的 width 就是瀏覽器窗口啦~~,so 這樣設置就可以隨着瀏覽器窗口大小變化,正方形自適應了呢~~

2. 純css實現立體擺放圖片效果

言歸正傳,想要實現如下圖中圖片的立體擺放效果,就需要應用一下 padding ,width, height 的知識了。

有點眼熟,是不是跟小說軟件里推薦圖書的樣式有些相似呢?

這里,首先我們看下其位置擺放,一張圖片水平居中並且靠前,其他兩邊圖片分別左右對齊,並且靠后一些,呈現一種立體擺放的樣子。這里我學到了一種完全依賴css,簡單的寫法即可實現這種立體的效果。

 · 不同的高度是 padding-top 有大有小撐起來的。

 · 前后效果是 z-index 折疊順序控制的。

 · 排列上使用了 nth-of-type 偽元素控制 + positon 定位結合。

是不是有點思路了呢?不繞彎子了,直接上代碼

<html>
    <head>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            .box {
                width: 300px;
                height: 200px;
                position: relative;
            }
            .img {
                width: auto;
                height: 0;
            }
            .box img {
                width: 100%;
                display: inline-block;
            }
            .box .img:nth-of-type(1) {
                display: inline-block;
                position: absolute;
                left: 50%;
                top: 50%;
                padding-bottom: 50%;
                transform: translate(-50%, -50%);
                z-index:  6;
            }
            .box .img:nth-of-type(2), .box .img:nth-of-type(3) {
                position: absolute;
                top: 50%;
                transform: translateY(-50%);
                padding-bottom: 63%;
                z-index: 3;
            }
            .box .img:nth-of-type(2) {
                right: 0;
            }
            .box .img:nth-of-type(3) {
                left: 0;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="img">
                <img src="https://febaidu.com/list/img/3ns.png" />
            </div>
            <div class="img">
                <img src="https://febaidu.com/list/img/3ns.png" />
            </div>
            <div class="img">
                <img src="https://febaidu.com/list/img/3ns.png" />
            </div>
        </div>
    </body>
</html>

  快去試試吧 ~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM