将<a>标记放在生成的菜单上的<li>标记之外

时间:2016-09-11 作者:insidesin

我正在尝试为我的主题中的页脚创建一个社交链接菜单。我想在仪表板中有一个可自定义的菜单,我想链接与其中的内容相关。

最初,我是这样做的:

<a href="http://www.facebook.com/" target="_blank"><i class="fa fa-facebook circle"></i></a>
<a href="http://www.google.com/" target="_blank"><i class="fa fa-google-plus circle"></i></a>
<a href="http://www.twitter.com/" target="_blank"><i class="fa fa-twitter circle"></i></a>
<a href="http://www.linkedin.com/" target="_blank"><i class="fa fa-linkedin circle"></i></a>
用于硬编码菜单项。

现在,我想使用

<?php wp_nav_menu( array( \'theme_location\' => \'social\' ) ); ?>
生成<li> 但要意识到这样做会给链接贴上标签,即。Facebook 内部<li><a> 标签。

i、 e。<li class="fa fa-facebook circle"><a href="fb.com">Facebook</a></li>

这不太好,因为1。脸书标签阻碍和2。是唯一可以点击的东西。

我想在我的类之外获得链接标签(由Wordpress通过菜单自定义自动设置)

我意识到我可以写<i> 在标签内为每个菜单项初始化,但这违背了我在这里要实现的目的。

编辑:我希望有一个在某种程度上不排除黑客攻击的解决方案。

2 个回复
最合适的回答,由SO网友:C C 整理而成

这是一个艰难的过程。通常我会说使用text-indent:-99999px; 作为标记的一部分<a> -- 将链接文本从屏幕上删除。但你有fa 斜体标记,实际上也是文本-因此它也会从屏幕上移开。

这个解决方案很难看,但您可能可以调整它以供使用。

将社交链接包装在div中:

<div id="social-wrapper">
    <a href="http://www.facebook.com/" target="_blank"><i class="fa fa-facebook circle"></i>Facebook</a>
    <a href="http://www.google.com/" target="_blank"><i class="fa fa-google-plus circle"></i>Google</a>
    <a href="http://www.twitter.com/" target="_blank"><i class="fa fa-twitter circle"></i>Twitter</a>
    <a href="http://www.linkedin.com/" target="_blank"><i class="fa fa-linkedin circle"></i>LinkedIn</a>
</div>
然后。css如下:

#social-wrapper .fa {
 color: #000;
}
#social-wrapper a {
  color: transparent;
  display: inline-block;
  margin: 0 8px;
  overflow: hidden;
  width: 15px;
}
设置该宽度以适应您的。fa图标宽度。这是一个jsfiddle 这说明了它是如何工作的。

EDIT:

好的,我没有意识到你无法使用上述解决方案。这里有一个不那么难看的版本,仍然使用CSS。除此之外,您还需要编写自己的实现wp_nav_menu 以您想要的方式获取内容,而不是依赖css解决方案。

与上面的HTML相同,带有包装器div。

此CSS:

#social-wrapper {
    text-indent: -99999px;
}
#social-wrapper a {
    width: 30px;
    float: left;
}
#social-wrapper .fa {
    display: inline-block;
    vertical-align: middle;
    width: 0;
    text-indent: 99999px;
}
这是another fiddle 展示其工作原理。

SO网友:insidesin

我的解决方案很奇怪。有点黑客,使用CC的解决方案是可行的,但我认为它被我的页脚中的其他内容所窃听。(我很傻)

#social_area {
    li a {
        display: block;
        color: transparent;
        overflow: hidden;
        margin-top: -45px;
        width: 100%;
    }
}
HTML看起来有点像这样。

<ul id="menu-social-media">
    <li class="fa fa-facebook circle"><a title="Facebook" target="_blank" href="http://www.facebook.com/">Facebook</a></li>
    <li class="fa fa-instagram circle"><a title="Instagram" target="_blank" href="http://www.instagram.com/">Instagram</a></li>
    <li class="fa fa-pinterest circle"><a title="Pinterest" target="_blank" href="http://au.pinterest.com/">Pinterest</a></li>
    <li class="fa fa-yelp circle"><a title="Yelp" target="_blank" href="http://www.yelp.com/">Yelp</a></li>
</ul>
被#social\\u area div.包围。

我想我花了一个小时试着让它发挥作用,但正是另一种元素的风格破坏了它。(为什么这玩意儿不管用!?)

谢谢CC!

相关推荐

Sucuri SiteCheck在使用iThemes Security Pro插件的域上失败

我在我的几个网站上安装了iThemes Security Pro插件。最近,我注意到我的Sucuri SiteCheck(自动和非自动)扫描都失败了,但我不知道为什么会这样。日志也不明确,告诉我:Unable to properly scan your site. Timeout reached.下面是插件给我的原始日志。如果有人能告诉我问题出在哪里,我将不胜感激。我没有在插件或Apache级别启用防火墙,尽管我启用了ModSecurity。但是,每当我尝试SiteCheck时,ModSecurity的日