時(shí)間:2023-07-20 03:51:01 | 來源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-07-20 03:51:01 來源:網(wǎng)站運(yùn)營(yíng)
CSS3為網(wǎng)頁(yè)打造絲滑鼠標(biāo)效果:可能各位經(jīng)常能看到一個(gè)畫面:在一個(gè)網(wǎng)站首頁(yè)右下角的地方有兩個(gè)圖標(biāo),分別是QQ和微信字樣,當(dāng)鼠標(biāo)劃入時(shí),會(huì)在上方以極其流利的動(dòng)畫顯示出一個(gè)二維碼、或提示。<div class="container"> <section> <a href="javascript:void(0);"> <i class="iconfont icon-qq"></i> <span> <img src="img/qq.png" /> 優(yōu)C體驗(yàn)咨詢?nèi)? </span> </a> <a href="javascript:void(0);"> <i class="iconfont icon-wangzhan"></i> <span class="span_two"> <img src="img/hub.png" /> 優(yōu)C·技術(shù)封推 </span> </a> </section></div>
這里用父子結(jié)構(gòu)的原因在于:要實(shí)現(xiàn)“緊跟著i圖標(biāo)周圍彈出內(nèi)容”需要用到 “父相子絕” 的position模式。overflow:hidden;
)—— 這是最基礎(chǔ)的。否則你的網(wǎng)頁(yè)將會(huì)很難看!/** 這里為了方便演示將div居中 */div.container { display: inline-block; position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%);}
接下來,我們對(duì)鏈接進(jìn)行樣式設(shè)置,創(chuàng)建簡(jiǎn)單的背景懸停效果,并定位社交媒體圖標(biāo):a { color: #fff; background: #8a938b; border-radius: 4px; text-align: center; text-decoration: none; position: relative; display: inline-block; box-sizing: border-box; padding: 12px; -o-transition: all .3s; -webkit-transition: all .3s; -moz-transition: all .3s; transition: all .3s; -webkit-font-smoothing: antialiased;}a:hover { background: #5a665e;}.iconfont { font-size: 36px; vertical-align: middle; display: inline-block; position: relative; top: 20%;}
接下來,我們將對(duì)彈出文本進(jìn)行樣式設(shè)置和動(dòng)畫處理:a span { max-width: 200px; max-height: 147px; color: #666; position: absolute; bottom: 0; left: -30px; right: 0; padding: 10px 6px; z-index: -1; font-size: 11px; border-radius: 5px; background: #fff; visibility: hidden; opacity: 0; -o-transition: all .4s cubic-bezier(0.68, -0.55, 0.265, 1.55); -webkit-transition: all .4s cubic-bezier(0.68, -0.55, 0.265, 1.55); -moz-transition: all .4s cubic-bezier(0.68, -0.55, 0.265, 1.55); transition: all .4s cubic-bezier(0.68, -0.55, 0.265, 1.55);}a span.span_two { left: 0; right: -30px;}span img{ max-width: 100%; max-height: 100%; width: initial; height: initial;}/* 當(dāng)圖標(biāo)處于懸停狀態(tài)時(shí),文本將彈出 */a:hover span { bottom: 70px; visibility: visible; opacity: 1;}
a span::before { content: ''; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #fff; position: absolute; bottom: -4px; left: 68px; right: auto;}a span.span_two::before { left: auto; right: 68px;}
它的作用原理就是 —— 一個(gè)div的上下左右邊框是可以分別操控的、是獨(dú)立的(它不是四個(gè)方形):@media (any-hover: none) { a:focus { background-color: #5a665e; }}@media (any-hover: none) { a:focus span { bottom: 70px; visibility: visible; opacity: 1; }}
any-hover:可用于測(cè)試是否有任意可用的輸入裝置可以hover懸停在元素上的CSS媒體屬性。例如鼠標(biāo)這個(gè)輸入裝置就可以控制cursor手形的位置,以及hover在元素上;例如手機(jī)都是手指控制,沒有什么懸停感應(yīng),因此,沒有裝置可以hover懸停(雖然手指也能觸發(fā):hover
偽類效果)。因此,any-hover媒體查詢簡(jiǎn)介可以用來精確控制不同設(shè)備上的hover交互行為,尤其對(duì)于跨平臺(tái)的網(wǎng)頁(yè),響應(yīng)式網(wǎng)站,非常有用。
語法:
opacity / visibility + translate + scale
也可以完美實(shí)現(xiàn),不過...有現(xiàn)成的東西,干嘛不用呢?::after
和 ::before
偽元素;overflow: hidden
的盒子 —— 不能加到上面的盒子中,因?yàn)閍fter和before不屬于div!事實(shí)上,transform動(dòng)畫中的屬性表示的含義更多的是“過渡多少”而不是“過渡到哪里”!那么,這個(gè)層級(jí)關(guān)系就很明了了:
<!--偽元素裝飾盒子--><div class="pic_border"> <!--overflow-hidden盒子--> <div class="pic_box"> <!--transition過渡盒子--> <div class="pic_item"> <div class="pic_text">music</div> <div class="pic_back">此時(shí)此刻,非我莫屬</div> </div> </div></div>
按照上面所說,我們很容易為它添加對(duì)應(yīng)的CSS:.pic_border{ position: relative;}.pic_border::before{ content: ''; position: absolute; top: 50%; left: 0; width: 43vw; height: 1px; background-color: red;}.pic_border::after{ content: ''; position: absolute; top: 50%; right: 0; width: 43vw; height: 1px; background-color: red;}@media screen and (max-width: 1100px) { .pic_border::before,.pic_border::after{ width: 20vw; }}.pic_box{ display: inline-block; height: 70px; margin-left: calc(50% - 70px); overflow: hidden; perspective: 2000px; cursor: pointer; user-select: none;}.pic_item{ width: 100%; height: 100%; transform-style: preserve-3d; transition: all .7s ease;}.pic_text,.pic_back{ width: 100%; height: 100%; display: flex; justify-content: center; align-items: center;}.pic_text{ transform: rotateX(0deg) translateZ(-21.9px);}.pic_back{ transform: rotateX(90deg) translateZ(-15px);}.pic_box:hover .pic_item{ transform: rotateX(-90deg);}.pic_box:active .pic_item{ transform: rotateX(-90deg);}
需要注意的是:3D效果是一定要有Z軸參與的! 不然會(huì)顯得很“尷尬“關(guān)鍵詞:效果,打造
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。