IE 版本 10.0.9200 “忘记”了 CSS 样式
IE version 10.0.9200 "forgets" CSS styles
我有一个有 3 个选项卡的"选项卡工具栏"。 用户可以单击一个选项卡,我们的网页会根据单击的 3 个选项卡中的哪个显示不同的数据。
为了提醒用户他们"选择"了 3 个选项卡中的哪一个,我在单击它时即时更改它的 CSS 类。
"选定"选项卡将进行以下更改:(1) 带渐变的黄色背景;(2)字体较大; (3) 所选选项卡的宽度和高度分别增加约 6 个像素。
它在火狐中工作正常。 但在 IE 10.0.9200 中,对所选选项卡的 CSS 类的更改在背景颜色和渐变方面失败。 例如,当第一次选择选项卡 #3 时,没问题 - 出现黄色渐变(更大的字体和增加的宽度和高度也是如此)。
但是,如果我单击其他选项卡,然后再次单击选项卡#3,IE似乎"忘记"了"所选"CSS类的一部分。 第二次(以及第三次和第四次等)我单击以选择选项卡#3时,字体大小增加和宽度和高度增加显示,但缺少带有渐变的彩色背景。
如果我在IE中的页面上进行"重新加载",则BAM带有渐变的彩色背景会突然返回。
下面是"选定的"CSS 类:
.selectedTabClass{
-moz-box-shadow:inset 0px 1px 0px 0px #fff6af;
-webkit-box-shadow:inset 0px 1px 0px 0px #fff6af;
box-shadow:inset 0px 1px 0px 0px #fff6af;
background:-webkit-gradient( linear, left top, left bottom,
color-stop(0.05, #ffec64), color-stop(1, #ffab23) );
background:-moz-linear-gradient( center top, #ffec64 5%, #ffab23 100% );
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec64',
endColorstr='#ffab23');
background-color:#ffec64;
-webkit-border-top-left-radius:15px;
-moz-border-radius-topleft:15px;
border-top-left-radius:15px;
-webkit-border-top-right-radius:15px;
-moz-border-radius-topright:15px;
border-top-right-radius:15px;
-webkit-border-bottom-right-radius:0px;
-moz-border-radius-bottomright:0px;
border-bottom-right-radius:0px;
-webkit-border-bottom-left-radius:0px;
-moz-border-radius-bottomleft:0px;
border-bottom-left-radius:0px;
text-indent:0;
border:1px solid #ffaa22;
display:inline-block;
color:#333333;
font-family:Arial;
font-size:18px;
font-weight:bold;
font-style:normal;
height:65px;
width:186px;
text-decoration:none;
text-align:center;
text-shadow:1px 1px 0px #ffee66;
}
.selectedTabClass:hover {
background:-webkit-gradient( linear, left top, left bottom,
color-stop(0.05, #ffab23), color-stop(1, #ffec64) );
background:-moz-linear-gradient( center top, #ffab23 5%, #ffec64 100% );
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffab23',
endColorstr='#ffec64');
background-color:#ffab23;
}
.selectedTabClass:active {
position:relative;
top:1px;
}
这是 HTML:
<label class="selectedTabClass" id="tab3"
onclick="handleTabSelect(3, this)">this is Tab #3</label>
这是Javascript:
function handleTabSelect(whichTab, thisOne)
{
document.getElementById(whichTab).className = "selectedTabClass";
}
我需要做些什么才能使IE像Firefox一样一致地运行?
嗨,下面的代码是我发布的jquery代码的确切纯js代码
function hasClass(ele,cls) {
return ele.className.match(new RegExp('(''s|^)'+cls+'(''s|$)'));
}
function addClass(ele,cls) {
if (!hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(''s|^)'+cls+'(''s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
ele--> id 和 cls-->类名。如果没有,应该恢复工作。.例如像
function handleTabSelect(whichTab, thisOne)
{
var ele = document.getElementById(whichTab);
addClass(ele, "be-still");
// or
removeClass(ele, "be-still");
}
我能够解决这个问题,但它的微妙原因?,我还没有掌握,我修复了它,但我不确定为什么它首先被"破坏"。
如上所述,我们网站上某些"缺少"CSS样式的问题仅在使用IE 10.0.9200访问位于我们的托管服务提供商的网站时发生。
当访问我们内部开发服务器上本地运行的网站时,IE 10.0.9200没有任何问题。 因此,我们认为是我们托管服务提供商的Web服务器设置(或与我们的内部开发Web服务器不同),因为相同的IE浏览器版本在我们的本地开发服务器上没有出现此问题。
我们的网站会动态更改选项卡式工具栏的CSS"className",以指示选择了哪个选项卡。 每个选项卡都是一个"标签"html元素。
选项卡有 2 种类型的 CSS 更改:
(1)在我们的javascript中,一行代码document.getElementById('tab3').style.backgroundColor = "white"
(2)紧接着,仅在某些情况下,我们通过以下方式更改了选项卡的类名:document.getElementById('tab1').className = "showThisTabIsSelectedCssClass";
在 Firefox 和运行在我们开发服务器上的 IE 10.0.9200 中,"className"的更改似乎"清除"(或重置)了我们在某些条件下所做的样式.backgroundColor 更改,就在更改选项卡元素的 CSS "className"之前。
Firefox 在开放网络上访问我们的网站时也做了同样的事情(当我们重置"className"时,擦除或重置 style.backgroundColor 更改)。
但无论出于何种原因,相同版本的IE 10.0.9200并没有丢弃style.backgroundColor="white"更改,即使更改了className。 style.backgroundColor="white" 将 tab 元素的背景更改为白色,然后我们在特定条件下更改了 'className',新的 CSS 类对选项卡施加了蓝色背景颜色,但在 className 更改后白色背景颜色仍然存在。
我不确定为什么IE 10.0.9200仅在查看我们的托管服务提供商在线托管的网站时表现出此问题,而不是在我们的本地开发计算机上显示我们的网站。
该修复要求我们有条件地避免代码 style.backgroundColor="white" 行,方法是在代码中预先确定我们最终需要更改选项卡元素的 CSS className。
换句话说,IE 10.0.9200 即使在更改了元素的"className"之后,仍然保留了一个 style.backgroundColor="white" 设置,尽管新的 CSS 类强加了它自己的 backgroundColor。
- 如果文本字段为空,则使用JavaScript应用CSS样式
- FF和Chromium中CSS样式按钮的外观差异
- CSS样式属性留空
- CKeditor预览插件.js,为Chrome和IE进行编辑.因为它拒绝CSS样式
- 基于路由的CSS样式-Angular2
- 为未标记的文本添加CSS样式
- 使用JQuery将现有CSS样式扩展%-%
- JavaScript-在keyDown上切换css样式
- React js应用程序's在托管应用程序中打开时将覆盖css样式
- 如何在javascript中更改段落中不同行的css样式
- 通过javascript设置IE特定的css样式
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 使用javascript/jquery检查.css样式表的名称
- JavaScript和CSS样式不适用于我的“;谷歌网站”;页
- 未使用jQuery验证器选中Css样式复选框时
- javascript正则表达式,用于编辑元素内部的css样式属性
- css样式加载+id.例如加载1、加载300
- 无法在运行时将CSS样式添加到元素中
- d3js 通过其 CSS 样式选择所有元素
- 如何根据浏览器宽度动态调整 css 样式表