實(shí)現(xiàn)類(lèi)似客服彈窗的千難萬(wàn)險(xiǎn)

由于工作需求推掸,要實(shí)現(xiàn)一個(gè)類(lèi)似客服的功能窗口桶蝎,就是界面右下角一個(gè)按鈕驻仅,點(diǎn)了之后彈出一個(gè)窗口,窗口內(nèi)容為外鏈登渣。這些實(shí)現(xiàn)其實(shí)挺容易噪服,首先按鈕固定,窗口也固定胜茧,然后點(diǎn)了按鈕切換顯示和隱藏窗口即可粘优。

實(shí)際開(kāi)發(fā)過(guò)程中碰到的第一個(gè)問(wèn)題,是窗口內(nèi)容的外鏈要如何引用呻顽。查到了兩個(gè)解決方案:

第一個(gè)是用jquery的load方法:


$("#targetId").load("someUrl/templatePage.html");

第二個(gè)是用object標(biāo)簽:


$("#targetId").append("<object type='text/html' data='"+"http://www.baidu.com"+"' style='width:500px;height:500px' id='web-out-from-baidu'></object>");

本著嘗試新東西的態(tài)度雹顺,選擇了第二種。于是簡(jiǎn)單的功能完成了廊遍。但是測(cè)試后發(fā)現(xiàn)无拗,每次顯示object標(biāo)簽中的頁(yè)面都會(huì)重新加載,不能保存歷史記錄昧碉,于是開(kāi)始想解決方案,由于object相關(guān)的內(nèi)容千篇一律又無(wú)法解決我的問(wèn)題揽惹,所以最后改為了Iframe被饿。

到這里,基本功能算是完成了搪搏,關(guān)于object的問(wèn)題狭握,還是無(wú)解。

想到之前畢設(shè)的時(shí)候?qū)崿F(xiàn)過(guò)類(lèi)似的消息提醒疯溺,有些動(dòng)態(tài)效果论颅,于是又想做些改進(jìn),改成類(lèi)似ppt從下往上進(jìn)入界面和從上往下移出界面的特效囱嫩,之前是怎么實(shí)現(xiàn)的已經(jīng)不記得了恃疯,這次想用css3的動(dòng)畫(huà),但是有點(diǎn)沒(méi)有頭緒墨闲。于是跟著w3c走了一下今妄,看到有js里使用的transform,就copy過(guò)來(lái)試了一下鸳碧,發(fā)現(xiàn)和隱藏顯示的效果完全一樣盾鳞,根本不會(huì)動(dòng)不會(huì)動(dòng)不會(huì)動(dòng)。(期間還查了怎么獲取元素的屬性瞻离,尷尬腾仅。)原來(lái)transform只是變形,沒(méi)有動(dòng)態(tài)效果套利。于是用上了animation推励,并不知道應(yīng)該怎么觸發(fā)鹤耍,所以學(xué)習(xí)了keyframes,finally窗口會(huì)動(dòng)了吹艇,but動(dòng)完又回到了初始狀態(tài)惰蜜,what?查了下發(fā)現(xiàn)animation有個(gè)屬性叫animation-fill-mode受神,設(shè)為towards即可固定在最后一刻抛猖。于是最終的實(shí)現(xiàn)如下:(最后會(huì)有demo展示)

image

雖說(shuō)過(guò)程實(shí)在是拖得格外的長(zhǎng),但是最終還是實(shí)現(xiàn)了鼻听,這樣實(shí)際使用碰到問(wèn)題再去查確實(shí)比只看一堆教程要有效的多财著。

總結(jié)如下

css3動(dòng)畫(huà)常見(jiàn)的屬性為transition,transform撑碴,translate撑教,animation。

transform是變形醉拓,和color一樣只是單獨(dú)改變外表伟姐,并不涉及動(dòng)畫(huà)。

translate是移動(dòng)亿卤。

真正涉及動(dòng)畫(huà)的是transition和animation愤兵。transition是屬性的過(guò)渡,只有兩個(gè)狀態(tài)排吴,開(kāi)始和結(jié)束秆乳,而animation可以有多個(gè)狀態(tài),相當(dāng)于多個(gè)transition的疊加钻哩。

demo如下

<html>
<head>
    <title>彈出框客服</title>
    <style>
        .robotBtnWrap {
            position:fixed;
            z-index:1;
            bottom:10px;
            right:0px;
            width:120px;
            height:60px;
        }
        .dialogSector {
            width:500px;
            height: 500px;
            position: fixed;
            bottom:-500px;
            right:0px;
        }
        .robotHeader {
            background-color:rgb(55,130,188);
            height:30px;
            color: #fff;
        }
        .btnClose {
            margin: 10px 8px 0px;
            position: relative;
            cursor: pointer;
            float: right;
            height: 16px;
            width: 16px;
            font-family: Verdana !important;
            font-size: 8px !important;"
        }
        @keyframes dialogShow {
            from{bottom:-500px;}
            to{bottom:0px;}
        }
        @keyframes dialogHide {
            from{bottom:0px;}
            to{bottom:-500px;}
        }
        @keyframes btnShow {
            from{right:-120px;}
            to{right:0px;}
        }
        @keyframes btnHide {
            from{right:0px;}
            to{right:-120px;}
        }
    </style>
</head>
<body>
    <div id="robotBtn" class="robotBtnWrap"  data-status="show">
        <button class="btn" onclick="showDialog();">客服咨詢(xún)</button>
    </div>
    <div class="dialogSector" id="robotDialog" data-status="hide">
        <div class="robotHeader">
            <span style="width:10px;display:inline-block;"></span>
            <span style="font-size:13px;height:30px;line-height:30px;color:#fff;">客服</span>
            <span id="robotClose" class="btnClose" onclick="closeDialog();">×</span>
        </div>

        <iframe name="robotFrame" id="robotFrame" border="0"
                frameborder="no" noresize="noresize"  width="100%" height="100%"
                scrolling="auto" src="https://www.baidu.com/" style="height:100%;overflow-y:hidden;"></iframe>
    </div>
    <script>
        function showDialog() {
            robotBtnToggle();
            robotToggle();
        }
        function closeDialog() {
            robotToggle();
            robotBtnToggle();
        }

        function robotBtnToggle() {
            var btnr = document.getElementById("robotBtn");
            if(btnr.dataset.status === "hide") {
                btnr.style.animation = "btnShow 1s";
                btnr.style.animationFillMode = "forwards";
                btnr.setAttribute("data-status","show");
            } else {
                btnr.style.animation = "btnHide 1s";
                btnr.style.animationFillMode = "forwards";
                btnr.setAttribute("data-status","hide");
            }
        }

        function robotToggle() {
            var dgr = document.getElementById("robotDialog");
            if(dgr.dataset.status === "hide") {
                dgr.style.animation = "dialogShow 1s";
                dgr.style.animationFillMode = "forwards";
                dgr.setAttribute("data-status","show");
            } else {
                dgr.style.animation = "dialogHide 1s";
                dgr.style.animationFillMode = "forwards";
                dgr.setAttribute("data-status","hide");
            }
        }
    </script>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屹堰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子街氢,更是在濱河造成了極大的恐慌扯键,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件珊肃,死亡現(xiàn)場(chǎng)離奇詭異忧陪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)近范,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)嘶摊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人评矩,你說(shuō)我怎么就攤上這事叶堆。” “怎么了斥杜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵虱颗,是天一觀(guān)的道長(zhǎng)沥匈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)忘渔,這世上最難降的妖魔是什么高帖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮畦粮,結(jié)果婚禮上散址,老公的妹妹穿的比我還像新娘。我一直安慰自己宣赔,他們只是感情好预麸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著儒将,像睡著了一般吏祸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钩蚊,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天贡翘,我揣著相機(jī)與錄音,去河邊找鬼砰逻。 笑死鸣驱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诱渤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谈况,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼勺美!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起碑韵,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赡茸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后祝闻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體占卧,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年联喘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了华蜒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡豁遭,死狀恐怖叭喜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蓖谢,我是刑警寧澤捂蕴,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布譬涡,位于F島的核電站,受9級(jí)特大地震影響啥辨,放射性物質(zhì)發(fā)生泄漏涡匀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一溉知、第九天 我趴在偏房一處隱蔽的房頂上張望陨瘩。 院中可真熱鬧,春花似錦着倾、人聲如沸拾酝。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蒿囤。三九已至,卻和暖如春崇决,著一層夾襖步出監(jiān)牢的瞬間材诽,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工恒傻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脸侥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓盈厘,卻偏偏與公主長(zhǎng)得像睁枕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沸手,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容