【问题标题】:jQuery UI Dialog Styling - Overflow?jQuery UI 对话框样式 - 溢出?
【发布时间】:2010-11-05 02:13:11
【问题描述】:

Hey Stack,在 jQuery UI 对话框的样式方面需要一些帮助。你可以在这里看到发生了什么:http://img714.imageshack.us/i/jquerydialogstylingissu.png/

验证消息和左上角的图标都被切断了。我认为这是因为 .ui-dialog 具有“溢出:隐藏”,但删除它没有效果(我可以看到)。任何人都可以提供任何建议以正确显示这些内容吗?

附加左上角图标后标题栏的 HTML 为:

<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<img style="position: absolute; left: -28px; top: -25px; z-index: 2147483647;" src="/img/browser.png">
<span class="ui-dialog-title" id="ui-dialog-title-TaskEditWindow">Task Details</span>
<a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button">
<span class="ui-icon ui-icon-closethick">close</span></a>
</div>

编辑(感谢 Cubed Eye Studios):

将 .ui-dialog 和 .ui-dialog-content 更改为“溢出:可见”可以解决此问题,但是您将失去内容区域的自动滚动功能,并且可能会在标题栏上得到意想不到的结果(假设有首先将溢出隐藏在标题上的原因。我没有注意到任何不同。)。失去自动滚动是一件大事。任何解决此问题的建议将不胜感激。谢谢。

附加代码:

<div style="display: block; z-index: 1004; outline: 0px none; height: auto; width: auto; top: 157px; left: 756px;" class="ui-dialog ui-widget ui-widget-content ui-corner-all  ui-draggable" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-StageEditWindow">
    <div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
        <img style="position: absolute; left: -23px; top: -20px;" src="/img/browser.png">
        <span class="ui-dialog-title" id="ui-dialog-title-StageEditWindow">Stage Details</span>
        <a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button"><span class="ui-icon ui-icon-closethick">close</span></a>
    </div>
    <div style="width: auto; min-height: 50.8px; height: auto;" id="StageEditWindow" class="ui-dialog-content ui-widget-content">
        <div class="screens-container">
            <div id="DetailsScreen">
                <form id="StageEditForm" action="#" onsubmit="return false;">
                    <fieldset id="DetailsFieldSet">
                        <div>
                            <label class="label" for="StageName">Name:</label>
                            <input type="text" class="input required validation-failed" name="Name" id="StageName">
                            <label for="StageName" generated="true" class="validation-failed" style="position: absolute; top: -121.95px; left: 107.1px; opacity: 0; display: none;">This field is required.</label>
                        </div>
                    </fieldset>
                </form>
            </div>
        </div>
    </div>
    <div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
        <div class="ui-dialog-buttonset">
            <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false"><span class="ui-button-text">Save</span></button>
        </div>
    </div>
</div>

工具提示解决方案(仅针对此特定工具提示插件)

更改工具提示的动态插件中的 getCropping() 函数,使其适用于内容容器而不是窗口。

function getCropping(el) {
    var w = $(el).closest('.ui-dialog-content');
    var right = w.offset().left + w.width();
    var bottom = w.offset().top + w.height();
    var toolTipRight = el.offset().left + el.width();
    var toolTipBottom = el.offset().top + el.height();

    return [
        el.offset().top <= w.offset().top,                      // top
        right <= toolTipRight,          // right
        bottom <= toolTipBottom,        // bottom
        w.offset().left >= el.offset().left                     // left
    ];
}

【问题讨论】:

    标签: jquery-ui coding-style dialog styling


    【解决方案1】:

    对于图标,只需使对话框上的溢出可见。

    <div class="ui-dialog" style="overflow:visible">
    

    验证消息看起来像一个 z-index 的东西,你能再贴一些代码吗?

    【讨论】:

    • 谢谢。在 CSS 中将溢出更改为“可见”有效。你能解释为什么删除“溢出:隐藏”没有相同的效果吗?溢出的默认值不是“可见”吗?将 .ui-dialog-content 更改为 overflow: visible 还会阻止验证消息被切断,但您随后将失去自动滚动条功能。有什么想法吗?
    • 我不确定为什么需要设置溢出:可见,因为正如你所说,它是默认设置,但看起来浏览器默认溢出为自动。至于验证消息,我不认为溢出是最好的选择,z-index 会更好。你能再贴一些代码吗
    • 我已经为它们尝试过 z-index (stackoverflow.com/questions/4066525/jquery-tooltips-and-dialog/…)。抱歉没有提及。
    【解决方案2】:

    我对那个工具提示插件并不太熟悉,但我想工具提示是绝对放置的。我做了这个演示,似乎可以正常工作,也许你可以把它翻译成插件。

    <div class="ui-dialog" style="overflow:visible;">
       <div class="ui-dialog-title" style="position:relative; z-index:5">Title Bar</div>
       <div class="ui-dialog-content" style="position:relative; z-index:10">
          Content Here
          <div class="tooltip" style="position:absolute; top:-4px;">
               Tooltip Content
          </div>
       </div>
    </div>
    

    我只是确保内容部分的 z-index 大于标题部分。不确定这是否有帮助,但请尝试一下。还要让它们都是相对的,而不是绝对的。

    【讨论】:

    • 问题不在于 z-index。不管 z-index 是多少,overflow: auto 仍然会切断它。
    猜你喜欢
    • 2011-01-28
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多