功能實(shí)現(xiàn):右鍵菜單

<!DOCTYPE html>

<html>

<head>

? ? <meta charset="UTF-8">

? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <title>功能實(shí)現(xiàn):右鍵菜單</title>

? ? <style>

? ? ? ? *{

? ? ? ? ? ? margin: 0;

? ? ? ? ? ? padding: 0;

? ? ? ? ? ? list-style: none;

? ? ? ? }

? ? ? ? .box{

? ? ? ? ? ? width: 400px;

? ? ? ? ? ? height: 400px;

? ? ? ? ? ? border: 2px solid #ccc;

? ? ? ? ? ? position: relative;

? ? ? ? ? ? left: 50px;

? ? ? ? ? ? top: 50px;

? ? ? ? }

? ? ? ? .menu{

? ? ? ? ? ? width: 80px;

? ? ? ? ? ? border: 1px solid #ccc;

? ? ? ? ? ? text-align: center;

? ? ? ? ? ? padding: 5px 0;

? ? ? ? ? ? background: linear-gradient(to left top,black, purple, black);

? ? ? ? ? ? position: absolute;

? ? ? ? ? ? left: 50px;

? ? ? ? ? ? top: 50px;

? ? ? ? ? ? /* 請使用 "display" 屬性來創(chuàng)建不占據(jù)頁面空間的不可見元素棘幸。 */

? ? ? ? ? ? /* display: none; */

? ? ? ? ? ? /* visibility 屬性規(guī)定元素是否可見国旷。即使不可見的元素也會占據(jù)頁面上的空間初茶。

? ? ? ? ? ? 屬性值包括:

? ? ? ? ? ? visible 默認(rèn)值。元素是可見的咐刨。

? ? ? ? ? ? hidden ?元素是不可見的。

? ? ? ? ? ? collapse ? ?當(dāng)在表格元素中使用時,此值可刪除一行或一列,

? ? ? ? ? ? 但是它不會影響表格的布局。被行或列占據(jù)的空間會留給其他內(nèi)容使用。如果此值被用在其他的元素上蛙奖,會呈現(xiàn)為 "hidden"潘酗。

? ? ? ? ? ? inherit 規(guī)定應(yīng)該從父元素繼承 visibility 屬性的值。

? ? ? ? ? ? */

? ? ? ? ? ? visibility: hidden;

? ? ? ? }

? ? ? ? /* .menu ul{

? ? ? ? ? ? display: flex;

? ? ? ? ? ? justify-content: space-evenly;

? ? ? ? } */

? ? ? ? .menu ul li{

? ? ? ? ? ? padding: 5px 0;

? ? ? ? }

? ? ? ? .menu ul li button{

? ? ? ? ? ? padding: 0 5px;

? ? ? ? }

? ? </style>

</head>

<body>

? ? <div class="box">

? ? ? ? <div class="menu">

? ? ? ? ? ? <ul>

? ? ? ? ? ? ? ? <li><button>查詢</button></li>

? ? ? ? ? ? ? ? <li><button>添加</button></li>

? ? ? ? ? ? ? ? <li><button>修改</button></li>

? ? ? ? ? ? ? ? <li><button>刪除</button></li>

? ? ? ? ? ? </ul>

? ? ? ? </div>

? ? </div>

? ? <script>

? ? ? ? /*

? ? ? ? ? ? 右鍵菜單

? ? ? ? ? ? e.target 獲取具體的元素

? ? ? ? ? ? e.preventDefault() 阻止默認(rèn)行為

? ? ? ? */

? ? ? ? // 獲取box

? ? ? ? let box = document.querySelector('.box')


? ? ? ? // 獲取menu

? ? ? ? let menu = document.querySelector('.menu')

? ? ? ? /*

? ? ? ? ? ? JS 獲取寬度的3個方法 筆記

? ? ? ? ? ? 1 offsetWidth ? ?自身雁仲,padding仔夺,邊框,內(nèi)容區(qū)的寬度攒砖,返回數(shù)值不帶單位

? ? ? ? ? ? 2. clientWidth ? 自身缸兔,padding,不包含邊框吹艇,內(nèi)容區(qū)的寬度惰蜜,返回數(shù)值不帶單位

? ? ? ? ? ? 3. scrollWidth ? 自身的實(shí)際寬度(overflow:hidden;超出被隱藏的也算進(jìn)去)受神,不含邊框抛猖,返回數(shù)值不帶單位

? ? ? ? ? ? 邊框?qū)挾?= (offsetWidth - clientWidth) / 2

? ? ? ? ? ? 一般用法

? ? ? ? ? ? offsetXXX ?:一般用來獲取元素位置

? ? ? ? ? ? clientXXX ?: 經(jīng)常用來獲取元素大小

? ? ? ? ? ? scrollXXX ?: 獲取滾動距離

? ? ? ? ? ? 頁面滾動距離用 ?window.pageYOffset上下 , window.pageXOffset 左右

? ? ? ? */

? ? ? ? // 獲取box的默認(rèn)外邊距

? ? ? ? let box_left = box.offsetLeft

? ? ? ? let box_top = box.offsetTop

? ? ? ? // console.log(box_left, box_top);


? ? ? ? // 獲取box的邊框?qū)挾?/p>

? ? ? ? let box_leftBorderWidth = (box.offsetWidth - box.clientWidth) / 2

? ? ? ? let box_topBorderWidth = (box.offsetHeight - box.clientHeight) / 2

? ? ? ? // console.log(box_leftBorderWidth);

? ? ? ? // console.log(box_topBorderWidth);

? ? ? ? // 計算菜單的最大位置

? ? ? ? let menu_leftMax = box.offsetWidth - menu.offsetWidth - box_leftBorderWidth * 2

? ? ? ? // console.log(box.offsetWidth, menu.clientWidth, box_leftBorderWidth);

? ? ? ? let menu_topMax = box.offsetHeight - menu.offsetHeight - box_topBorderWidth * 2

? ? ? ? console.log(menu_leftMax, menu_topMax);

? ? ? ? // box注冊鼠標(biāo)右鍵點(diǎn)擊事件

? ? ? ? box.oncontextmenu = function(e) {

? ? ? ? ? ? // 獲取鼠標(biāo)的位置

? ? ? ? ? ? let {pageX, pageY} = e

? ? ? ? ? ? // console.log(pageX, pageY);

? ? ? ? ? ? // console.log(e);

? ? ? ? ? ? // 阻止默認(rèn)行為

? ? ? ? ? ? e.preventDefault()

? ? ? ? ? ? // 顯示菜單

? ? ? ? ? ? // menu.style.display = 'block'

? ? ? ? ? ? menu.style.visibility = 'visible'

? ? ? ? ? ? // 更新菜單位置

? ? ? ? ? ? let a = pageX - box_left - box_leftBorderWidth * 2

? ? ? ? ? ? let b = pageY - box_top - box_topBorderWidth * 2

? ? ? ? ? ? console.log(a, b);

? ? ? ? ? ? menu.style.left = ((a <= menu_leftMax)? a : menu_leftMax) + 'px'

? ? ? ? ? ? menu.style.top = ((b <= menu_topMax)? b : menu_topMax) + 'px'

? ? ? ? }

? ? ? ? // box注冊鼠標(biāo)左鍵點(diǎn)擊事件

? ? ? ? box.onclick = function(e) {

? ? ? ? ? ? // 獲取box里面被點(diǎn)擊的具體(某一個)標(biāo)簽元素

? ? ? ? ? ? // 比如:div, ul, li, button

? ? ? ? ? ? let {target} = e

? ? ? ? ? ? // console.log(target);

? ? ? ? ? ? // if(this.contains(target)){ ?相當(dāng)于if(true){}

? ? ? ? ? ? if(this === target){ ?// 點(diǎn)擊box就會隱藏菜單,其它不隱藏

? ? ? ? ? ? ? ? // 隱藏菜單

? ? ? ? ? ? ? ? // menu.style.display = 'none'

? ? ? ? ? ? ? ? menu.style.visibility = 'hidden'

? ? ? ? ? ? }

? ? ? ? }

? ? </script>

</body>

</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鼻听,一起剝皮案震驚了整個濱河市财著,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撑碴,老刑警劉巖撑教,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異醉拓,居然都是意外死亡伟姐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門廉嚼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玫镐,“玉大人,你說我怎么就攤上這事怠噪】炙疲” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵傍念,是天一觀的道長矫夷。 經(jīng)常有香客問我,道長憋槐,這世上最難降的妖魔是什么双藕? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮阳仔,結(jié)果婚禮上忧陪,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好嘶摊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布延蟹。 她就那樣靜靜地躺著,像睡著了一般叶堆。 火紅的嫁衣襯著肌膚如雪阱飘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天虱颗,我揣著相機(jī)與錄音沥匈,去河邊找鬼。 笑死忘渔,一個胖子當(dāng)著我的面吹牛高帖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辨萍,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼棋恼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锈玉?” 一聲冷哼從身側(cè)響起爪飘,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拉背,沒想到半個月后师崎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椅棺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年犁罩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片两疚。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡床估,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诱渤,到底是詐尸還是另有隱情丐巫,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布勺美,位于F島的核電站递胧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赡茸。R本人自食惡果不足惜缎脾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望占卧。 院中可真熱鬧遗菠,春花似錦联喘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至牲平,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間域滥,已是汗流浹背纵柿。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留启绰,地道東北人昂儒。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像委可,于是被迫代替她去往敵國和親渊跋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

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