File "code03.html"

Full Path: /home/analogde/www/editor/liste/code03.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>