Asp.net mvc .ui小部件:活动和.ui小部件:活动之间有区别吗?

Asp.net mvc .ui小部件:活动和.ui小部件:活动之间有区别吗?,asp.net-mvc,jquery-ui,google-chrome,css,Asp.net Mvc,Jquery Ui,Google Chrome,Css,我在Chrome 17.0.963.56上遇到了一个非常奇怪的错误。以下是屏幕截图: 当页面第一次呈现时,称呼组合框看起来很好。但是,只要选中上面的复选框,就会出现奇怪的图像。单击页面上的任意位置,然后使其消失。取消选中该框将使其再次出现。我试着在JSFIDLE中重新编程,但没有成功 我找到了两种不同的方法来消除这个bug。第一个与组合框的HTML和CSS结构有关: <div class="field ui-helper-clearfix @Html.IdFor(m => m.Sa

我在Chrome 17.0.963.56上遇到了一个非常奇怪的错误。以下是屏幕截图:

当页面第一次呈现时,称呼组合框看起来很好。但是,只要选中上面的复选框,就会出现奇怪的图像。单击页面上的任意位置,然后使其消失。取消选中该框将使其再次出现。我试着在JSFIDLE中重新编程,但没有成功

我找到了两种不同的方法来消除这个bug。第一个与组合框的HTML和CSS结构有关:

<div class="field ui-helper-clearfix @Html.IdFor(m => m.Salutation)-field">
    <span class="label">
        @Html.LabelFor(m => m.Salutation)
    </span>
    <div class="input">
        <div class="combobox">
            <div class="text-box input">
                @Html.EditorFor(m => m.Salutation)
            </div>
            <a class="text-box down-arrow">
                <img class="text-box down-arrow" alt="" 
                    src="/content/icons/transparent.png">
            </a>
            <div class="autocomplete-menu">
            </div>
        </div>
        <div class="messages">
            <div class="top callout border">
                <div class="top callout bg">
                </div>
            </div>
            <span class="validation">
                @Html.ValidationMessageFor(m => m.Salutation)
            </span>
        </div>
    </div>
</div>

.combobox .text-box.input {
    position: absolute;
    left: 0;
    right: 20px;
    border-right-color: transparent; /* was border-right-width: 0; */
    border-right-width: 0;
    border-radius: 5px 0 0 5px;
    -moz-border-radius: 5px 0 0 5px;
}
当我删除这一行,或者将其更改为
.ui widget:active{outline:none;}
(注意widget和:active之间没有空格)时,问题也会消失——即使文本框包装的右边框宽度为零

这个问题在Firefox、IE或Safari 5.1.1(7534.51.22)中没有出现,只有在上面提到的Chrome版本中才会出现。所以这可能是一个Chrome bug

我以前从未见过将状态选择器用于这样的空间。大多数情况下,诸如:hover、:link、:active等内容会紧跟在选择器之后。上面的jQueryUI选择器是否表示“应用大纲:无;应用到所有:嵌套在.UI小部件元素下的活动元素”?或者它的意思是“应用大纲:无;应用于所有:active.ui小部件元素”?如果移除.ui小部件和:active之间的空格没有什么区别,我更喜欢这种解决方案,而不是让文本框包装器的右边框透明,而不是让它的宽度为零

另一件奇怪的事情是后缀组合框不受影响——但它使用与称呼组合框相同的CSS和HTML结构。奇怪的

.ui小部件:活动和.ui小部件:活动之间有区别吗

.ui-widget:active
表示“具有类“ui-widget”的元素的活动后续元素”。
.ui-widget:active
表示“具有类“ui-widget”的活动元素”

如果其他浏览器正确地呈现了这种情况,我建议针对Chrome报告一个bug(最好给出一个简化的测试用例):

.ui小部件:活动和.ui小部件:活动之间有区别吗

.ui-widget:active
表示“具有类“ui-widget”的元素的活动后续元素”。
.ui-widget:active
表示“具有类“ui-widget”的活动元素”


如果其他浏览器正确地呈现了这种情况,我建议报告一个针对Chrome的bug(最好给出一个简化的测试用例):

谢谢Alexander,很高兴知道这一点。不过,Chrome的一个非常奇怪的行为。我刚刚意识到背景图像中的颜色对应于文本框包装的边框颜色——顶部和左侧为深灰色,底部和右侧为浅灰色。嗯,您有一个边框半径,其中一个边框不可见,这可能是一个问题-您是否尝试将边框设置为可见的颜色?是的,我找到的解决方案之一是保持正确的边框宽度,并给它一个透明的背景色。考虑到你的答案,这可能是我目前将采用的解决方案。然而,无法在其他浏览器中重新编程使我认为这是一个Chrome bug,而不是不恰当地使用CSS3。在这种情况下,最好的选择是针对Chrome报告一个bug(最好给出一个简化的测试用例):谢谢,我一定会这么做。请把最后的评论复制到你的答案中,我会打分。谢谢亚历山大,很高兴知道。不过,Chrome的一个非常奇怪的行为。我刚刚意识到背景图像中的颜色对应于文本框包装的边框颜色——顶部和左侧为深灰色,底部和右侧为浅灰色。嗯,您有一个边框半径,其中一个边框不可见,这可能是一个问题-您是否尝试将边框设置为可见的颜色?是的,我找到的解决方案之一是保持正确的边框宽度,并给它一个透明的背景色。考虑到你的答案,这可能是我目前将采用的解决方案。然而,无法在其他浏览器中重新编程使我认为这是一个Chrome bug,而不是不恰当地使用CSS3。在这种情况下,最好的选择是针对Chrome报告一个bug(最好给出一个简化的测试用例):谢谢,我一定会这么做。请将最后的评论复制到你的答案中,我会打分。
.ui-widget :active { outline: none; }