File "code04.html"
Full Path: /home/analogde/www/editor/liste/code04.html
File size: 2.69 KB
MIME-type: text/html
Charset: utf-8
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste avec menu contextuel</title>
<style>
.context-menu {
display: none;
position: absolute;
background-color: #fff;
border: 1px solid #ccc;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
z-index: 1000;
}
.context-menu ul {
list-style: none;
padding: 0;
margin: 0;
}
.context-menu ul li {
padding: 10px;
cursor: pointer;
}
.context-menu ul li:hover {
background-color: #f0f0f0;
}
</style>
</head>
<body>
<h1>Liste de 10 éléments</h1>
<ul id="myList">
<li>Élément 1</li>
<li>Élément 2</li>
<li>Élément 3</li>
<li>Élément 4</li>
<li>Élément 5</li>
<li>Élément 6</li>
<li>Élément 7</li>
<li>Élément 8</li>
<li>Élément 9</li>
<li>Élément 10</li>
</ul>
<div id="contextMenu" class="context-menu">
<ul>
<li onclick="handleOption1()">Option 1</li>
<li onclick="handleOption2()">Option 2</li>
<li onclick="handleOption3()">Option 3</li>
</ul>
</div>
<script>
const contextMenu = document.getElementById('contextMenu');
const listItems = document.querySelectorAll('#myList li');
listItems.forEach(item => {
item.addEventListener('contextmenu', (event) => {
event.preventDefault();
contextMenu.style.display = 'block';
contextMenu.style.left = `${event.pageX}px`;
contextMenu.style.top = `${event.pageY}px`;
});
});
document.addEventListener('click', (event) => {
if (!contextMenu.contains(event.target) && !event.target.matches('#myList li')) {
contextMenu.style.display = 'none';
}
});
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape' || event.keyCode === 27) {
contextMenu.style.display = 'none';
}
});
function handleOption1() {
alert('Option 1 sélectionnée');
contextMenu.style.display = 'none';
}
function handleOption2() {
alert('Option 2 sélectionnée');
contextMenu.style.display = 'none';
}
function handleOption3() {
alert('Option 3 sélectionnée');
contextMenu.style.display = 'none';
}
</script>
</body>
</html>