Internet Explorer 8 上的独生子女替代方案
Posted
技术标签:
【中文标题】Internet Explorer 8 上的独生子女替代方案【英文标题】:Alternative to only-child on Internet Explorer 8 【发布时间】:2014-10-15 08:46:54 【问题描述】:我创建了一个看起来像这样的 CSS 菜单 - jsfiddle。
使用的 CSS 类。
#main_nav
margin-top:15px
#main_nav ul
list-style:none;
position:relative;
float:left;
margin:0;
padding:0;
background: #888;
#main_nav ul a
display:block;
text-decoration:none;
font-size:12px;
line-height:32px;
padding:0 15px;
color: #fff;
font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;
#main_nav ul li
position:relative;
float:left;
margin:0;
padding:0
#main_nav ul li.current-menu-item
background:#ddd
#main_nav ul li:hover
background: #008000
#main_nav ul ul
display:none;
position:absolute;
top:100%;
left:0;
background:#888;
padding:0
#main_nav ul ul li
float:none;
width:200px;
#main_nav ul ul a
line-height:120%;
padding:10px 15px
#main_nav ul ul ul
top:0;
left:100%
#main_nav ul li:hover > ul
display:block
.menu li > a:after margin-left: 5px; float: right; content: '\25BA';
.menu > li > a:after margin-left: 5px; float: right; content: '\25BC';
.menu li > a:only-child:after margin-left: 0; content: '';
<div id="main_nav">
<ul class="menu">
<li class="current-menu-item"><a href="#">Home</a></li>
<li><a href="#">Menu 1</a>
<ul>
<li><a href="#">Sub Menu 1</a></li>
<li><a href="#">Sub Menu 2</a></li>
<li><a href="#">Sub Menu 3</a></li>
<li><a href="#">Sub Menu 4</a>
<ul>
<li><a href="#">Deep Menu 1</a>
<ul>
<li><a href="#">Sub Deep 1</a></li>
<li><a href="#">Sub Deep 2</a></li>
<li><a href="#">Sub Deep 3</a></li>
<li><a href="#">Sub Deep 4</a></li>
</ul>
</li>
<li><a href="#">Deep Menu 2</a></li>
</ul>
</li>
<li><a href="#">Sub Menu 5</a></li>
</ul>
</li>
<li><a href="#">Menu 2</a>
<ul>
<li><a href="#">Sub Menu 1</a></li>
<li><a href="#">Sub Menu 2</a></li>
<li><a href="#">Sub Menu 3</a></li>
</ul>
</li>
<li><a href="#">Menu 3</a>
<ul>
<li class="dir"><a href="#">Sub Menu 1</a></li>
<li class="dir"><a href="#">Sub Menu 2</a>
<ul>
<li><a href="#">Category 1</a></li>
<li><a href="#">Category 2</a></li>
<li><a href="#">Category 3</a></li>
<li><a href="#">Category 4</a></li>
<li><a href="#">Category 5</a></li>
</ul>
</li>
<li><a href="#">Sub Menu 3</a></li>
<li><a href="#">Sub Menu 4</a></li>
<li><a href="#">Sub Menu 5</a></li>
</ul>
</li>
<li><a href="#">Menu 4</a></li>
<li><a href="#">Menu 5</a></li>
<li><a href="#">Menu 6</a></li>
</ul>
</div>
给定 CSS 中的a:only-child:after
在 Internet Explorer (8) 上不起作用。因此,每个菜单项上都会出现一个箭头,包括那些没有子菜单的项。
在 Internet Explorer 8 中是否有 a:only-child:after
的替代品?
【问题讨论】:
【参考方案1】:我找不到任何其他可以在这种情况下代替:only-child
的伪选择器。我尝试使用一些兄弟选择器,但没有成功。
一个可能的解决方案是使用 Jquery “模拟”only-child
。 Jquery 原生支持大多数 css 伪,独立于浏览器。你可以这样:
$(document).ready(function()
$("a:only-child").addClass("only-child");
);
为每个满足伪的a
设置一个类.only-child
。然后,将您的 css 规则更改为:
.menu li > a.only-child:after
工作小提琴:http://jsfiddle.net/xgjhk0kw/2/
【讨论】:
"我找不到任何其他可以与 :only-child 相同的伪选择器。"如果这样的选择器已经存在,他们可能不会费心去创建一个新的;) 我也推荐这个解决方案——你不能用 CSS 模拟:only-child
的主要原因是因为没有前面的兄弟选择器。见Faking CSS :only-child in IE8 with jQuery/javascript
对不起,如果我没有说清楚。我的意思是我找不到另一个选择器可以让他做他想做的事......当然我知道没有其他选择器会做同样的事情......以上是关于Internet Explorer 8 上的独生子女替代方案的主要内容,如果未能解决你的问题,请参考以下文章
从 Internet Explorer 8 打印时,我需要为不透明度设置哪种 css 样式?
为啥即使在模拟 Internet Explorer 8 文档模式时,Internet Explorer 11 也不支持条件注释?
在 Internet Explorer 9 中更改域名后,Ajax 停止工作
markdown IE上的保证金自动问题(Internet Explorer)