如何使用 Font Awesome 设置 CSS 复选框的样式

Posted

技术标签:

【中文标题】如何使用 Font Awesome 设置 CSS 复选框的样式【英文标题】:How to Style CSS Checkboxes with Font Awesome 【发布时间】:2014-06-11 21:58:06 【问题描述】:

我正在尝试使用 Font Awesome 设置我的复选框的样式,这些复选框是从我与 wordpress 一起使用的插件自动生成的我有一个 JSFiddle 中所有内容的模型

http://jsfiddle.net/bBPY5/1/

我的 CSS 似乎有点问题,但我不知道是什么问题。

<div id="sidebar-cards-archive">
<ul>
    <li class="cat-item cat-item-12">
        <label>
            <input type="checkbox" name="ofcards-rarity[]" value="12">Common (223)</label>
    </li>
    <li class="cat-item cat-item-14">
        <label>
            <input type="checkbox" name="ofcards-rarity[]" value="14">Epic (40)</label>
    </li>
    <li class="cat-item cat-item-11">
        <label>
            <input type="checkbox" name="ofcards-rarity[]" value="11">Free (83)</label>
    </li>
    <li class="cat-item cat-item-15">
        <label>
            <input type="checkbox" name="ofcards-rarity[]" value="15">Legendary (36)</label>
    </li>
    <li class="cat-item cat-item-13">
        <label>
            <input type="checkbox" name="ofcards-rarity[]" value="13">Rare (84)</label>
    </li>
</ul>
</div>

这里是 CSS

 @import url(//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css);
 #sidebar-cards-archive ul li 
     list-style: none;
 
 /*** custom checkboxes ***/
 input[type=checkbox] 
     display:none;
 
 /* to hide the checkbox itself */
 input[type=checkbox] + label:before 
     font-family: FontAwesome;
     display: inline-block;
 
 input[type=checkbox] + label:before 
     content:"\f096";
 
 /* unchecked icon */
 input[type=checkbox] + label:before 
     letter-spacing: 10px;
 
 /* space between checkbox and label */
 input[type=checkbox]:checked + label:before 
     content:"\f046";
 
 /* checked icon */
 input[type=checkbox]:checked + label:before 
     letter-spacing: 5px;
 
 /* allow space for check mark */

【问题讨论】:

您是否查看过以下任何一个:jsfiddle.net/8PYJg,以及这个:***.com/questions/11223615/…? 是的,CSS 似乎不适用于我的 html,我无法调整 HTML,因为它是由插件输出的。 【参考方案1】:

好的,您的 CSS 将无法正常工作,因为它是错误的。

为什么?因为当你说“输入+标签”时,你应该有一个像下面这样的 HTML 标记:

<input type="checkbox" name="ofcards-rarity[]" value="15">
<label>Legendary (36)</label> //You will be querying this label css with input + label

看,&lt;label&gt; 紧跟在&lt;input&gt; 之后。你可以确认这个HERE

现在,在您的情况下,您的 &lt;input&gt; 是您 &lt;label&gt; 的孩子,如下所示:

<label>
            <input type="checkbox" name="ofcards-rarity[]" value="15">Legendary (36)
</label>

要查询它,您可以这样做:

label>input[type=checkbox] 


label>input[type=checkbox]:checked 


因为你想在它们之间添加一些东西,所以你将它添加到你的 css 中:

label>input[type=checkbox]:before 


label>input[type=checkbox]:checked:before 


我已经为你调整好了。这不是实现它的最简单/最可爱的方法,但至少适用于您当前的 HTML。

这是FIDDLE

【讨论】:

非常感谢!非常感谢您帮我解决这个问题。【参考方案2】:

我使用 Font Awesome 创建了复选框和单选按钮。我在网上找到的那些有什么或另一个缺失。我需要那些可以缩放的,我不希望复选框和它的标签之间有任何不可点击的间隙。

这里是repository 和demo 的链接

【讨论】:

您的解决方案的问题是无法访问。【参考方案3】:

没有 javascript,但有小的 html 操作,例如添加带有“for”属性的标签。这样当点击标签复选框时,点击就会触发。

    .form input[type="checkbox"]
  display:none;  

.form input[type="checkbox"] + label.fa 
    color: #88E2E2;
    font-size: 25px;
    width: 25px;
    height: 25px;
    cursor: pointer;

.form input[type="checkbox"]:checked +label.fa
    background: #fff;

.form input[type="checkbox"] + label.fa:before 
     display:inline-block;
     content: "\f096";
     cursor:pointer;


.form input[type="checkbox"]:checked +label.fa:before
    content:"\f046";
    position: relative;
    left: 2px;
 <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
    <form class="form">
    <input id="check_1" type="checkbox"/><label class="fa" for="check_1"></label>
          <input id="check_2" type="checkbox"/><label class="fa" for="check_2"></label>
    <input id="check_3" type="checkbox"/><label class="fa" for="check_3"></label>

    </form>

【讨论】:

以上是关于如何使用 Font Awesome 设置 CSS 复选框的样式的主要内容,如果未能解决你的问题,请参考以下文章

我们如何通过 css 使用 FONT AWESOME

如何使用Font Awesome字体图标

如何应用Font Awesome矢量字体图标

如何应用Font Awesome矢量字体图标

如何在rails应用程序的tailwind css中导入font-awesome [关闭]

在 CSS 中使用 Font Awesome 图标