【问题标题】:Button Toggle using :before :after with Font Awesome Icons使用 :before :after 和 Font Awesome 图标的按钮切换
【发布时间】:2015-07-14 13:08:16
【问题描述】:

我有一个使用条形字体真棒图标的切换按钮,我正在使用 :after 伪类将左插入符号添加到条形的左侧。当我单击按钮时,我希望左边的插入符号消失,而右侧的插入符号出现在条形的右侧。在One Codex Beta Site 上可以看到此功能的一个示例(在该站点上,它从条形右侧的右插入符号开始,而我从条形左侧的左插入符号开始)。

我已经在 Google 上寻求有关如何执行此操作的帮助,但我无法让它按我的意愿工作。任何想法将不胜感激。谢谢!

HTML

<div id="header" class="navbar navbar-default navbar-static-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#nav-collapse">
                    <span class="sr-only">Toggle Navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <div id="logo" class="navbar-brand">
                    <button type="button" id="toggleSidebar">
                        <i class="navbar-icon fa fa-bars icon"></i>
                    </button><a href="index2.html" class="brand noline" title="Home">Brand</a></div>
            </div>
            <div class="collapse navbar-collapse" id="nav-collapse">
                <ul class="nav navbar-nav navbar-right">
                    <li id="nav-join"><a href="#" id="join" title="Join">Sign Up</a></li>
                    <li id="nav-signin"><a href="#" id="sign-in" title="Sign In">Sign In</a></li>
                    <li id="nav-about-us"><a href="#" id="about-us" title="About Us">About Us</a></li>
                </ul>
            </div>
        </div>
    </div>

JS

$(document).ready(function(){
            $.asm = {};
            $.asm.panels = 2;

            $('#toggleSidebar').click(function(){
                if ($.asm.panels === 1) {
                    $('#content').attr({'class': 'products col-lg-9'});
                    $('#sidebar').show();
                    $.asm.panels = 2;
                } else {
                    $('#content').attr({'class': 'col-lg-12'});
                    $('#sidebar').hide();
                    $.asm.panels = 1;
                }
            });
        });

CSS

.fa-bars:after {
  content: "\f0d9";
  float: left;
  padding-right: 5px;
}

#content {
    background-color: gray;
    padding: 0px;
    height: 100px;
}

这是我的JSFiddle

【问题讨论】:

  • 我在 One Codex 网站上没有看到类似的内容。
  • 查看左上角侧边栏切换按钮的位置。看看插入符号如何在点击时切换?
  • 那里什么都没有。当然,我没有登录。也许您正在查看该网站的登录版本。
  • 啊,你是对的。我没有意识到我已经登录了。很抱歉包含这样一个糟糕的例子,哈哈。

标签: jquery css button font-awesome pseudo-class


【解决方案1】:

你需要添加一个类来重写图标的内容,即:

JS

$('#toggleSidebar').click(function(){
$(this).find('.navbar-icon').toggleClass('right');

CSS

.fa-bars.right::after {
content: "";
float: right;
padding-left: 5px;}

https://jsfiddle.net/5xtmapqp/

【讨论】:

    【解决方案2】:

    我不知道您最初设置 .fa-bars 的方式发生了什么,但我会在 jQuery 逻辑中添加/删除 CSS 类。我重写了你的#toggleSidebar.change 函数:

    $('#toggleSidebar').click(function(){
                if ($.asm.panels === 1) {
                    $('#content').attr({'class': 'products col-lg-9'});
                    $('#sidebar').show();
                    $('.fa-bars').removeClass('i-right-caret').addClass('i-left-caret');
                    $.asm.panels = 2;
                } else {
                    $('#content').attr({'class': 'col-lg-12'});
                    $('#sidebar').hide();
                    $('.fa-bars').removeClass('i-left-caret').addClass('i-right-caret');
                    $.asm.panels = 1;
                }
            });
    

    “i-right-caret”和“i-left-caret”是确定插入符号的字体很棒的类(我认为那里通常有一个“fa”?我不确定)。

    【讨论】:

    • 我会试试看它是否有效。所以基本上我什至不应该使用 :after 伪类来做到这一点?
    • 我只使用 :after 和 :before 伪类,如果我正在处理导航菜单,或者涉及 div 的非常简单的事情。它们令人困惑,我无法控制何时获得它们的状态,所以我更愿意使用 jQuery——在那里我可以准确地看到发生了什么事情。
    • 明白了。因此,当我实施您的解决方案时,我遇到的问题是 fa-bars 只是被左/右插入符号替换;插入符号没有被“添加”到条形旁边。
    • 我只需修改 .addClass 以包含“fa-bars”,例如 addClass('i-right-caret fa-bars')
    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2021-12-22
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    相关资源
    最近更新 更多