gpt4 book ai didi

css - IE 中的奇怪滚动行为与可滚动 div 中的复选框

转载 作者:行者123 更新时间:2023-11-28 09:30:18 25 4
gpt4 key购买 nike

我有一个“多选”控件,看起来像这样(抱歉 ID 名称很长,它们有点自动生成,因为这整个事情都是由自定义标记生成的):

<div class="default-skin-outer" id="myMapSelect_multiSelectOuterDiv">
<div class="default-control" id="myMapSelect_multiSelectControlDiv">
<span class="default-icon-check-text" id="myMapSelect_multiSelectControlCheckWrapperSpan">
<span class="default-icon default-icon-check" id="myMapSelect_multiSelectControlCheckIconSpan"></span><span class="default-icon default-icon-text" id="myMapSelect_multiSelectControlCheckTextSpan">Check All</span>
</span>
<span class="default-icon-uncheck-text" id="myMapSelect_multiSelectControlUncheckWrapperSpan">
<span class="default-icon default-icon-uncheck" id="myMapSelect_multiSelectControlUncheckIconSpan"></span><span class="default-icon default-icon-text" id="myMapSelect_multiSelectControlUncheckTextSpan">Uncheck All</span>
</span>
</div>
<div class="default-skin-inner" id="myMapSelect_multiSelectInnerDiv">
<ul class="default-multiselect">
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="0" class="default-checkbox" id="myMapSelect0" name="myMapSelect"> Zero
</label>
</li>
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="1" class="default-checkbox" id="myMapSelect1" name="myMapSelect"> One
</label>
</li>
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="2" class="default-checkbox" id="myMapSelect2" name="myMapSelect"> Two
</label>
</li>
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="3" class="default-checkbox" id="myMapSelect3" name="myMapSelect"> Three
</label>
</li>
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="4" class="default-checkbox" id="myMapSelect4" name="myMapSelect"> Four
</label>
</li>
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="5" class="default-checkbox" id="myMapSelect5" name="myMapSelect"> Five
</label>
</li>
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="6" class="default-checkbox" id="myMapSelect6" name="myMapSelect"> Six
</label>
</li>
<li class="default-multiselect">
<label class="default-label">
<input type="checkbox" value="7" class="default-checkbox" id="myMapSelect7" name="myMapSelect"> Seven
</label>
</li>
</ul>
</div>
</div>

这整个事情的 CSS 是:

div.default-skin-outer {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
width: 300px;
height: auto;
padding: 2px;
background-color: #f0f0f0;
border: 1px solid #999999;
}

div.default-skin-inner {
overflow: auto;
width: 300px;
height: 100px;
}

div.default-control {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
width: auto;
border: 1px solid #555555;
background-color: #999999;
color: #f0f0f0;
vertical-align: middle;
padding: 2px;
margin-bottom: 2px;
font-weight: bold;
overflow: hidden;
}

ul.default-multiselect {
padding: 0px;
margin: 0px;
white-space: nowrap;
}

ul.default-with-padding {
padding: 0px;
padding-left: 20px;
margin: 0px;
white-space: nowrap;
}

li.default-multiselect {
list-style-type: none;
}

label.default-label {
display: block;
padding: 2px;
}

input.default-checkbox {
width: 13px;
height: 13px;
padding: 0;
margin: 0;
vertical-align: bottom;
position: relative;
top: -1px;
*overflow: hidden;
}

span.default-icon {
background-image: url("/resources/authoring/jqueryui/custom-theme/images/ui-icons_ffffff_256x240.png");
display: inline-block;
height: 16px;
width: 16px;
overflow: hidden;
}

span.default-icon-text {
width: auto;
background: none;
}

span.default-icon-text:hover {
text-decoration: underline;
cursor: pointer;
}

span.default-icon-check-text {
float: left;
}

span.default-icon-uncheck-text {
float: right;
}

span.default-icon-check {
background-position: -64px -144px;
}

span.default-icon-uncheck {
background-position: -96px -128px;
}

这在 Firefox 中运行得很好。复选框在可滚动的 div 中滚动没有任何问题。但是当我在 IE8 中查看时,它看起来很糟糕。

首先,额外的复选框超出了主 div。其次(这真的很奇怪)当我使用滚动条时,文本会滚动,但复选框不会。当文本滚动时,它们只是留在原地。我尝试在谷歌上搜索解决方案,但一无所获。

谢谢!

更新

所以我发现如果我删除复选框样式中的时髦部分:

vertical-align:bottom; 
position:relative;
top: -1px;
*overflow: hidden;

它工作正常。但我把它放进去是为了确保我的 labels and checkboxes are lined up properly .

哦,是的,就兼容性 View 而言,这是在兼容模式下运行的 IE8。

针对有关继承样式的评论,这里是复选框继承的样式:

input {
border:1px solid #CFCFCF;
color:#000000;
font-family:Arial,Verdana,Sans-Serif;
font-size:12px;
padding-left:4px;
}


li.default-multiselect {
list-style-type:none;
}

ul.default-with-padding {
white-space:nowrap;
}

table {
empty-cells:show;
}

html, body {
line-height:16px;
}

我没有看到任何可能会干扰...

最佳答案

继承的样式和我定义的样式之间似乎存在一些奇怪的交互。从 Jacob 和 Ray 的评论中可以清楚地看出这一点,因为他们能够将这段代码放到页面上并让它在 IE 中正常呈现而没有任何问题。

我能够通过从 input.default-checkbox 样式中删除 position:relative 使其正常运行。

我假设某种奇怪的交互使复选框认为它们是静态或绝对(或其他)定位的,因此它们不会滚动。至少我认为是这个原因;有人可能能够提供更好的理由并阐明这一点。无论如何,通过删除 position:relative,我能够停止奇怪的滚动行为。感谢您帮我解决这个问题!

关于css - IE 中的奇怪滚动行为与可滚动 div 中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2233438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com