最近學習CSS,發現了一個很有趣的效果——碎片拼信封。所謂碎片拼信封,就是將一張紙片分割成多個碎片,然后利用CSS的位移、旋轉、透明度等屬性,將這些碎片拼成一個三維立體的信封,給人一種非常驚艷的視覺效果。
.card { position: relative; width: 350px; height: 220px; } .card .envelope { position: absolute; top: -50px; left: 0; width: 100%; height: 100%; background: #f4bb36; box-shadow: 0px 10px 30px rgba(0, 0, 0, .2); transform: rotateX(30deg) rotateY(40deg) rotateZ(10deg) translateZ(-100px); transform-origin: 0 100%; } .card .envelope .flap { position: absolute; top: 0; left: 0; width: 100%; height: 50%; background: #f2a922; transition: all .5s ease; } .card:hover .envelope .flap { transform: rotateX(-110deg); } .card .envelope .flap:before { content: ""; width: 100%; height: 30px; background: #f4bb36; position: absolute; bottom: -10px; left: 0; } .card .envelope .flap:after { content: ""; width: 0; height: 0; border-top: 10px solid transparent; border-bottom: 10px solid #f4bb36; border-left: 16px solid transparent; border-right: 16px solid transparent; position: absolute; top: -20px; right: 5px; }
上面是一個簡單的碎片拼信封的CSS代碼,通過上面的代碼可以看出來,其實碎片拼信封的實現并不難,主要就是利用CSS各種屬性的組合,去創建一個三維的立體效果。通過這個碎片拼信封的練習,我不僅僅掌握了CSS的各種屬性的使用方法,更加深入地理解了CSS的視覺設計原理。