【问题标题】:Unexpected distortion of Font Awesome Icons placed inside CSS created Hexagon放置在 CSS 中的 Font Awesome 图标意外变形创建了 Hexagon
【发布时间】:2016-10-23 16:25:21
【问题描述】:

我正在尝试使用 Font-awesome i 带有 fa 类的标签 将社交媒体图标添加到六边形背景。社交媒体图标应在六边形背景中彼此相邻,并在悬停时更改背景颜色。但是我遇到的问题如下:

更新小提琴几乎是正确的,我们只需要能够使 shpae 看起来像一个六边形https://jsfiddle.net/onkkdef6/4/

问题:

1.社交媒体图标被六边形扭曲

2.六边形现在不会在悬停时改变背景颜色

3.社交媒体图标应该更能响应图片

https://jsfiddle.net/onkkdef6/

HTML

  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">


            <div class="row">


              <div class="social">
                    <ul>
                    <li><a class="hexagon" href="#"><i class="fa fa-lg fa-linkedin"></i> </a> </li>
                    <li><a class="hexagon" href="#"><i class="fa fa-lg fa-twitter"></i> </a> </li>
                      <li><a class="hexagon" href="#"><i class="fa fa-lg fa-facebook"></i> </a> </li>
                    <li><a class="hexagon" href="#"><i class="fa fa-lg fa-yelp"></i></a></li>
                     <li><a class="hexagon" href="#"><i class="fa fa-lg fa-instagram"></i></a></li>
                    </ul>
                </div>


                      <div class="social">
                    <ul>
                    <li><a class="" href="#"><i class="fa fa-lg fa-linkedin"></i> </a> </li>
                    <li><a class="" href="#"><i class="fa fa-lg fa-twitter"></i> </a> </li>
                      <li><a class="" href="#"><i class="fa fa-lg fa-facebook"></i> </a> </li>
                    <li><a class="" href="#"><i class="fa fa-lg fa-yelp"></i></a></li>
                     <li><a class="" href="#"><i class="fa fa-lg fa-instagram"></i></a></li>
                    </ul>
                </div>


                </div>

CSS:

* { box-sizing: border-box; margin: 0; padding: 0; }



    .hexagon {
        position: relative;
        display: inline-block;
        overflow: hidden;
        margin: 0 8.5%;
        padding: 16%;
        transform: rotate(30deg) skewY(30deg) scaleX(.866); /* .866 = sqrt(3)/2 */
    }
    .hexagon:before{
        display: block;
        position: absolute; /* 86.6% = (sqrt(3)/2)*100% = .866*100% */
        top: 6.7%; right: 0; bottom: 6.7%; left: 0; /* 6.7% = (100% -86.6%)/2 */
        transform: scaleX(1.155) skewY(-30deg) rotate(-30deg); /* 1.155 = 2/sqrt(3) */
        background-color: rgba(30,144,255,.56);
        background-size: cover;
        content: '';
    }


        .social {
        margin: 0;
        padding: 0;
    }

    .social ul {
        margin: 0;
        padding: 5px;
    }

    .social ul li {
        margin: 5px;
        list-style: none outside none;
        display: inline-block;
    }


        .social i {
        width:80px;
        height: 80px;
        color: #FFF;
        background-color: #333;
        font-size: 42px;
        text-align:center;
        padding-top: 25px;

        transition: all ease 0.3s;
        -moz-transition: all ease 0.3s;
        -webkit-transition: all ease 0.3s;
        -o-transition: all ease 0.3s;
        -ms-transition: all ease 0.3s;
    }

    .social i:hover {

        text-decoration: none;
        transition: all ease 0.3s;
        -moz-transition: all ease 0.3s;
        -webkit-transition: all ease 0.3s;
        -o-transition: all ease 0.3s;
        -ms-transition: all ease 0.3s;
    }

        .social .fa-facebook:hover { /* round facebook icon*/
        background: #4060A5;
    }

    .social .fa-twitter:hover { /* round twitter icon*/
        background: #00ABE3;
    }

    .social .fa-yelp:hover { /* round google plus icon*/
        background: #e64522;
    }


    .social .fa-linkedin:hover { /* round linkedin icon*/
        background: #0094BC;
    }


    .social .fa-instagram:hover { /* round instagram icon*/
        background: #375989;
    }

【问题讨论】:

    标签: twitter-bootstrap css font-awesome css-shapes


    【解决方案1】:

    您正在转换子元素 - 不应该如此。只需将图标还原 - 就像这样(但请确保这是 .hexagon:after):

    .hexagon i {
        transform: rotate(-45deg) skewY(0) scaleX(1.866);
    }
    

    工作示例: https://jsfiddle.net/onkkdef6/4/

    如果您无法使用比例尺和 CSS 来满足您的需求,也许您可​​以使用这样的库。看起来正是您想要的。

    http://ninodezign.com/css3-hexagon-buttons/

    【讨论】:

    • jsfiddle.net/onkkdef6/2 如何填满整个六边形?它仍然看起来像一个正方形
    • 顶行是六边形...除非我遗漏了什么!?
    • 显然把.hexagon i放在六边形之后。六边形后:后;)
    • 检查我的回答。
    • 当您将鼠标悬停在六边形上时,它会显示一个不同颜色的正方形。六边形应该在悬停时完全填满并改变颜色
    【解决方案2】:

    我将六边形 i scaleX 更改为 2.4 以获得所需的六边形形状。

    .hexagon i {
        transform: rotate(-45deg) skewY(0) scaleX(2.4);
    }
    

    这是完整的工作 css:

    * { box-sizing: border-box; margin: 0; padding: 0; }
    
    
    
    .hexagon {
        position: relative;
        display: inline-block;
        overflow: hidden;
        margin: 0 8.5%;
        padding: 16%;
        transform: rotate(30deg) skewY(30deg) scaleX(.866); /* .866 = sqrt(3)/2 */
    }
    .hexagon:before{
        display: block;
        position: absolute; /* 86.6% = (sqrt(3)/2)*100% = .866*100% */
        top: 6.7%; right: 0; bottom: 6.7%; left: 0; /* 6.7% = (100% -86.6%)/2 */
        transform: scaleX(1.155) skewY(-30deg) rotate(-30deg); /* 1.155 = 2/sqrt(3) */
        /* background-color: rgba(30,144,255,.56); */
        background-size: cover;
        content: '';
    }
    
    
        .social {
        margin: 0;
        padding: 0;
    }
    
    .social ul {
        margin: 0;
        padding: 5px;
    }
    
    .social ul li {
        margin: 5px;
        list-style: none outside none;
        display: inline-block;
    }
    
    
        .social i {
        width:80px;
        height: 80px;
        color: #FFF;
        background-color: #333;
        font-size: 42px;
        text-align:center;
        padding-top: 25px;
    
        transition: all ease 0.3s;
        -moz-transition: all ease 0.3s;
        -webkit-transition: all ease 0.3s;
        -o-transition: all ease 0.3s;
        -ms-transition: all ease 0.3s;
    }
    
    .social i:hover {
    
        text-decoration: none;
        transition: all ease 0.3s;
        -moz-transition: all ease 0.3s;
        -webkit-transition: all ease 0.3s;
        -o-transition: all ease 0.3s;
        -ms-transition: all ease 0.3s;
    }
    
        .social .fa-facebook:hover { /* round facebook icon*/
        background: #4060A5;
    }
    
    .social .fa-twitter:hover { /* round twitter icon*/
        background: #00ABE3;
    }
    
    .social .fa-yelp:hover { /* round google plus icon*/
        background: #e64522;
    }
    
    
    .social .fa-linkedin:hover { /* round linkedin icon*/
        background: #0094BC;
    }
    
    
    .social .fa-instagram:hover { /* round instagram icon*/
        background: #375989;
    }
    
    .hexagon i {
        transform: rotate(-45deg) skewY(0) scaleX(2.4);
    }
    

    感谢 Mike Barwick,他帮助我找出了大部分答案。感谢他的帮助,我能够解决我的问题。

    这是工作小提琴: https://jsfiddle.net/onkkdef6/5/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-22
      • 2014-05-03
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多