原生JS實(shí)現(xiàn)分享側(cè)邊欄
本文分享一個(gè)用原生JS實(shí)現(xiàn)的分享側(cè)邊欄,實(shí)現(xiàn)效果如下:

以下是代碼實(shí)現(xiàn),方便大家復(fù)制粘貼。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>分享到效果</title>
<style>
#share {
position: fixed;
width: 100px;
height: 200px;
background-color: lightblue;
left: -100px;
top: 100px;
}
#share span {
width: 20px;
height: 60px;
line-height: 20px;
text-align: center;
left: 100px;
top: 70px;
position: absolute;
background-color: yellow;
}
</style>
</head>
<body>
<div id="share">
<span>分享到</span>
</div>
<script>
// 獲取元素
var share = document.getElementById("share");
// 將事件設(shè)置給share
share.onmouseover = function () {
animate(this, "left", 0);
};
share.onmouseout = function () {
animate(this, "left", -100);
};
// animate運(yùn)動(dòng)函數(shù)
function animate(tag, attr, target) {
clearInterval(tag.timer);
tag.timer = setInterval(function () {
// 獲取某個(gè)屬性的當(dāng)前狀態(tài)
// 由于具有單位,需要取整
// parseInt("hehe") => NaN NaN || 0
// 為了應(yīng)對(duì)auto轉(zhuǎn)換為NaN的問題,我們使用短路操作,保證程序的健壯性
var leader = parseInt(getStyle(tag, attr)) || 0;
// 緩動(dòng)公式的一部分是更改step的值
var step = (target - leader) / 10;
// 由offsetLeft在取值的時(shí)候會(huì)四舍五入,step如果比較小,會(huì)造成無法運(yùn)動(dòng)的問題
// 根據(jù)步數(shù)的正負(fù),更改取整方式
step = step > 0 ? Math.ceil(step) : Math.floor(step);
// 緩動(dòng)公式
leader = leader + step;
// 設(shè)置給某一個(gè)屬性
tag.style[attr] = leader + "px";
// 檢測(cè)是否走到了指定位置
if (leader == target) {
clearInterval(tag.timer);
}
}, 17);
}
// 用于獲取某個(gè)標(biāo)簽的某個(gè)樣式屬性值
// 帶單位
function getStyle(tag, attr) {
// 檢測(cè)支持哪一個(gè)
// box.currentStyle,如果不存在值為undefined
// getComputedStyle如果瀏覽器不支持。相當(dāng)于變量未聲明,報(bào)錯(cuò)
if (tag.currentStyle) {
// ie支持
return tag.currentStyle[attr];
} else {
// 標(biāo)準(zhǔn)方法
return getComputedStyle(tag, null)[attr];
}
}
</script>
</body>
</html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaScript中實(shí)現(xiàn)無縫滾動(dòng)、分享到側(cè)邊欄實(shí)例代碼
- JS運(yùn)動(dòng)框架之分享側(cè)邊欄動(dòng)畫實(shí)例
- 博客側(cè)邊欄模塊跟隨滾動(dòng)條滑動(dòng)固定效果的實(shí)現(xiàn)方法(js+jquery等)
- javascript實(shí)現(xiàn)動(dòng)態(tài)側(cè)邊欄代碼
- JavaScript實(shí)現(xiàn)簡(jiǎn)單的隱藏式側(cè)邊欄功能示例
- javascript 實(shí)現(xiàn)動(dòng)態(tài)側(cè)邊欄實(shí)例詳解
- 利用js編寫響應(yīng)式側(cè)邊欄
- JS實(shí)現(xiàn)側(cè)邊欄鼠標(biāo)經(jīng)過彈出框+緩沖效果
- 基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效
- js+css實(shí)現(xiàn)全屏側(cè)邊欄
相關(guān)文章
Bootstrap學(xué)習(xí)筆記 輪播(Carousel)插件
Bootstrap 輪播(Carousel)插件是一種靈活的響應(yīng)式的向站點(diǎn)添加滑塊的方式。這篇文章主要介紹了Bootstrap學(xué)習(xí)筆記 輪播(Carousel)插件,需要的朋友可以參考下2017-03-03
通過隱藏iframe實(shí)現(xiàn)文件下載的js方法介紹
本篇文章主要是對(duì)通過隱藏iframe實(shí)現(xiàn)文件下載的js方法進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02
layui清空,重置表單數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇layui清空,重置表單數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
easyui window refresh 刷新兩次的解決方法(推薦)
下面小編就為大家?guī)硪黄猠asyui window refresh 刷新兩次的解決方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
CSS中position屬性之fixed實(shí)現(xiàn)div居中
這篇文章主要介紹了CSS中position屬性之fixed實(shí)現(xiàn)div居中的相關(guān)資料,需要的朋友可以參考下2015-12-12
KnockoutJS 3.X API 第四章之表單value綁定
Knockout是一個(gè)以數(shù)據(jù)模型(data model)為基礎(chǔ)的能夠幫助你創(chuàng)建富文本,響應(yīng)顯示和編輯用戶界面的JavaScript類庫(kù)。這篇文章主要介紹了KnockoutJS 3.X API 第四章之表單value綁定的相關(guān)資料,需要的朋友可以參考下2016-10-10
變量聲明時(shí)命名與變量作為對(duì)象屬性時(shí)命名的區(qū)別解析
這篇文章主要介紹了變量聲明時(shí)命名與變量作為對(duì)象屬性時(shí)命名的區(qū)別。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12
Vue elementUI實(shí)現(xiàn)免密登陸與號(hào)碼綁定功能
這篇文章主要介紹了Vue elementUI實(shí)現(xiàn)免密登陸與號(hào)碼綁定功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-11-11

