html - 正确显示 CSS 'popup' 时出现问题

标签 html css xhtml

我在使用 CSS 显示弹出式 div 时遇到了一些问题。用一个例子可以更好地解释这个问题。采用以下 html:

<html>
    <head>
        <style type"text/css">
            #popup {
                color: #fff;
                background: #8c0000
            }

            #form {
                background: #ccc;
                color: #000;
                position: absolute;
                display: none;
            }

            #popup:hover > #form {
                display: block;
            }
        </style>
    </head>
    <body>
        <span id="popup">
            Popup 
            <div id="form">
                <form>
                    <label>Text Field</label>
                    <input type="text" />
                    <label>Select Field</label>
                    <select>
                        <option value="opt1">val1</option>
                        <option value="opt2">val2</option>
                    </select>
                </form>
            </div>
        </span>
    </body>
</html>

它由一个 span 元素和一个包含表单的隐藏 div 元素组成。当鼠标悬停在 span 元素上时显示 div。问题是,当我要在下拉框中选择一个选项时,div 消失了,就好像它失去了焦点一样。结果是我只能使用键盘更改下拉值。

我的问题是:我该如何解决?感谢您提供有关该主题的任何线索。

最佳答案

我相信你在这里可能不走运,因为 <option> 的渲染元素依赖于浏览器/操作系统/平台,而不是 CSS 框模型的一部分。使用 JavaScript(和 jQuery),这非常简单。我在您的表单中添加了一个“完成”按钮,因为这可能是选择何时隐藏表单的更好解决方案。否则,用户必须非常小心,不要将鼠标指针移到选择下拉菜单之外,否则所有内容都会消失(如果我没有正确理解您的请求。)

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <style type"text/css">
            #popup {
                color: #fff;
                background: #8c0000
            }

            #form {
                background: #ccc;
                color: #000;
                position: absolute;
                display: none;
            }
        </style>

        <script src="http://code.jquery.com/jquery-1.4.2.min.js" language="javascript" type="text/javascript"></script>
        <script language="javascript">
        function showForm() {
            $("#form").show();
        }
        function hideForm() {
            $("#form").hide();
        }
        </script>
    </head>
    <body>
        <span id="popup" onmouseover="showForm()">
            Popup 
            <div id="form">
                <form>
                    <label>Text Field</label>
                    <input type="text" />
                    <label>Select Field</label>
                    <select>
                        <option value="opt1">val1</option>
                        <option value="opt2">val2</option>
                    </select>
                    <input type="button" value="Done" onclick="hideForm()" />
                </form>
            </div>
        </span>
    </body>
</html>

关于html - 正确显示 CSS 'popup' 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3789567/

相关文章:

html - 悬停按钮大小

css - 将 css 类添加到表单(Yii 表单生成器)

html - 使用流畅的创建固定高度的水平 div

html - margin-top 未按预期计算

javascript - 在 JavaScript 中设置 window.location 时页面不重定向

html - HTML5 是否要求引用值的属性之间有空格?

javascript - 用于文本区域的 Onchange AJAX 在 Safari 中不起作用

javascript - 仅限聊天滚动底部 CSS 或 Javascript

jquery - Internet Explorer 8 阻止 CSS、JQuery

html - 如何显示两列下拉菜单?