掀開圖片顯示介紹的css效果

效果是這樣的:
效果展現css

主要運用到CSS3的3D transform等變換。
作的時候遇到了兩個問題:
一,圖片掀開的效果
二,鼠標hover效果的穩定html

挨着解決:api

一,圖片掀開的效果

把動畫拆開來看,感受應該是有一個沿着X軸的旋轉,設置一下transform效果動畫

img{
            transform: rotateX(90deg);
        }

可是這樣看起來更像是圖片收縮了,並無在視覺上產生旋轉的效果。此時,須要在img的父元素上添加perspective屬性,更改它的透視位置。spa

.picBox{
    perspective:1000px;
    }

這時候再看,效果已經差很少了,只要img再同時增長一個向上的移動效果便可。因此最後img的transform設置爲scala

img{
    transform: translateY(-320px) rotateX(90deg);
}

這樣掀開圖片的效果基本上就搞定了。
可是,因爲最開始把hover設置在了img本身身上,要同時設置描述文本.overLayer,就要寫成code

img:hover +.overLayer

(按慣性寫空格就不會起效果。由於img和.overLayer是同級元素)
這時最明顯的問題在於hover效果不穩定。orm

二,鼠標hover效果的穩定

由於img在作變化,鼠標保持不動的時候,img可能已經不在鼠標的範圍裏面,就會產生晃晃蕩蕩忽上忽下的顫抖效果,看起來很不舒服。
最好的解決方法就是把hover設置在img和.overLayer共同的父元素.picBox身上,而後分別給他們設置樣式。htm

.picBox
    &:hover img{
        transform: translateY(-320px) rotateX(90deg);
        opacity: 0;
    }
    
    &:hover .overLayer{
        opacity: 1;
    }    

}

(使用的scss)
這樣效果就能穩定了。圖片

完整代碼

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <title>css圖片翻轉效果</title>
    <link rel="stylesheet" href="style_try.css">
    
</head>
<body>
    <div class="picBox">
        <img src="../img/1.jpg" alt="">
        <div class="overLayer">
            <h3 class="title">title here</h3>
            <p class="description">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis labore molestiae magni, consequatur nesciunt expedita. Dicta placeat minus sint, culpa.</p>
        </div>
    </div>
    
    <div class="picBox">
        <img src="../img/2.jpg" alt="">
        <div class="overLayer">
            <h3 class="title">title here</h3>
            <p class="description">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut pariatur excepturi, voluptatum consectetur facere commodi at distinctio iste sapiente necessitatibus.</p>
        </div>
    </div>

</body>
</html>

CSS

body{
    background-color: #4e658b;
}

.picBox{
    width: 500px;
    height: 500px;
    position: relative;
    perspective:1000px;
    cursor: pointer;
    
    img{
        width: 100%;
        height: 100%;
        z-index: 5;
        
    }
    
    img,.overLayer{
        position: absolute;
        top: 0;
        left: 0;
        transition: all 0.6s ease-in-out;
    }
    
    &:hover img{
        transform: translateY(-320px) rotateX(90deg);
        opacity: 0;
    }
    
    &:hover .overLayer{
        opacity: 1;
    }    

}

.overLayer{
    width: 100%;
    height: 100%;
    color: aliceblue;
    background-color: #465176;
    opacity: 0;
    
    
    
    .title{
        text-align: center;
        text-transform: capitalize;
        padding-top: 70px;
    }
    
    .description{
        padding: 50px 30px;
    }
    
    .title:after,.description:after{
        content: "";
        width: 250px;
        border-bottom: 1px solid white;
        display: block;
        margin: 0 auto;
        padding-top: 50px;
        
    }
}

總結:樣式寫死了尺寸,致使總體縮放時不少地方都要重寫,下次要注意改爲百分比的形式,或者設置變量,便於修改。


備註:新用到的小技巧

1.Emmet生成佔位文字:lorem+數值+[tab鍵]。
好比實例中20個單詞的文字段就是輸入lorem20,而後敲個tab生成的。
2.Css控制單詞大小寫:

text-transform
相關文章
相關標籤/搜索