【问题标题】:Font-awesome icon alignment字体真棒图标对齐
【发布时间】:2015-12-13 14:54:12
【问题描述】:

我将 Font-awesome 图标用于复选框,但在正方形中对齐图标时遇到问题。它看起来很丑,我尝试使用填充和对齐多少,它不能很好地调整,因为边缘不同(字体真棒图标有圆形边缘,不适合我的正方形)。有人对如何将它完美地融入我的广场有任何想法吗?

有没有办法改变图标的​​圆边(实际上不必更改字体很棒的源代码?)谢谢。

HTML:

<input type="checkbox" name="checkbox" id="checkbox"class="checkboxClass"/>    
<label for="checkbox" class="labelForCheckboxClass"></label> 

CSS:

.checkboxClass {   
    opacity: 0;
}

.labelForCheckboxClass {
    position: relative;
    font-size: 16px;
    cursor: pointer;
    padding-left: 20.5px;
    padding-top: 0;
    padding-bottom: 0;
    border: 1px solid gray;
    background-color: white;    
}

.labelForCheckboxClass:after {
    content: '\f14a';
    max-width: 0;
    overflow: hidden;
    opacity: 0.5;   
    line-height: 20px;
    border-radius: 0;
}

.labelForCheckboxClass:before, .labelForCheckboxClass:after {
    font-family: FontAwesome;
    font-size: 25px;
    position: absolute;
    top: 0;
    left: 0;
}

.checkboxClass:checked ~ label:after {
    max-width: 25px; 
    opacity: 1; 
}

这里是JsFiddle.

【问题讨论】:

  • 很多关于 SO 的问题都在寻找将圆形钉子安装在方孔中的解决方案,但没有一个像这样字面意思。

标签: javascript jquery html css font-awesome


【解决方案1】:

问题是您试图用具有圆角边框的图形填充方形框空间。您无法使用 css 修改复选标记的边框,因为是字体的形状...您无权使用 css 访问该属性。

一种解决方法是让正方形带有边框半径,您可能会在这里看到: http://jsfiddle.net/leojavier/0h7gfdq6/1/

.labelForCheckboxClass {
    position: relative;
    font-size: 16px;
    cursor: pointer;
    padding-left: 21.5px;
    padding-bottom: 2px;
    border: 1px solid gray;
    background-color: #FFF;  
    border-radius:4px;
}

另一方面,如果您想保留框的锐利方形边缘,您可能需要使用勾选标记图标 (white) 没有来自 font-awesome 的背景,只需切换背景使用 javascript 点击时将标签的颜色变为 (黑色)

这是一个没有去除锐边的版本:

http://jsfiddle.net/leojavier/0h7gfdq6/3/

【讨论】:

    【解决方案2】:

    编辑:

    对于方角试试这个:

    .checkboxClass {   
        opacity: 0;
    }
    
    .labelForCheckboxClass {
        position: relative;
        font-size: 16px;
        cursor: pointer;
        padding-left: 17px;
        padding-top: 0;
        padding-bottom: 0;
        border: 1px solid gray;
        background-color: white;   
    }
    
    .labelForCheckboxClass:after {
        content: '\f00c';
        color:white;
        background-color: black;
        max-width: 0;
    }
    
    .labelForCheckboxClass:before, .labelForCheckboxClass:after {
        font-family: FontAwesome;
        font-size: 17px;
        position: absolute;
        top: 0;
        left: 0;
        height:1.05em;
    }
    
    .checkboxClass:checked ~ label:after {
        max-width: 17px; 
        opacity: 1; 
    }
    

    试试这个:

    .labelForCheckboxClass {
        position: relative;
        font-size: 18px;
        cursor: pointer;
        padding-left: 21.5px;
        padding-top: 0;
        padding-bottom: 0;
        border: 1px solid gray;
        background-color: white;
        border-radius: 4px;
    }
    

    【讨论】:

    • 抱歉,我无法将正方形改为圆边。
    • 你好 user1527762,上面我发布了一个解决方案,所以你不需要改变你的边界:jsfiddle.net/leojavier/0h7gfdq6/3
    • 你看到我的解决方案了吗?
    【解决方案3】:

    .labelForCheckboxClass:before, .labelForCheckboxClass:after 中添加right: 0bottom: 0 也会在一定程度上有所帮助。

    这是你更新后的小提琴:http://jsfiddle.net/4zjtp/134/

    【讨论】:

    • 感谢您的回复,我已经尝试过相同的方法,但仍然注意到一些差距。不是我正在寻找的解决方案。
    猜你喜欢
    • 2020-08-11
    • 2021-01-10
    • 2020-12-04
    • 1970-01-01
    • 2023-03-22
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多