代码之家  ›  专栏  ›  技术社区  ›  Lowtrux

在复杂形状容器内单击时隐藏/显示面板

  •  0
  • Lowtrux  · 技术社区  · 7 年前

    只是想弄清楚布局让它工作。单击图标面板底部的箭头形状时,我必须显示和隐藏菜单,然后再次单击同一形状时显示面板。困扰我的部分是如何塑造箭头容器,我应该使用css3形状或只是一个背面img的部分(这似乎不太可能,因为它必须完全适合图标容器)或只是使整个事情(容器和底部形状css3形状)。

    我知道如何使切换上/下工作,但只是试图布局这一最好的方式可能,任何想法都会非常感谢。我可以使用css3形状、flex等,交叉排不是这个问题。

    图片如下:

    enter image description here

    enter image description here

    这是迄今为止我拥有的HTML:

                <nav class="l-apps l-container">
                <ul>
                    <li>
                        <img src="assets/img/icons/google.png">  
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/word.png">                     
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/file.png">
                        <a href="#">Lorem Ipsum</a>                         
                    </li>
                    <li>
                        <img src="assets/img/icons/network.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/powerpoint.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/diamond.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/other.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/pencil.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/excel.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/triangle.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                </ul>
            </nav>
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Lowtrux    7 年前

    好吧,我想如果有一天有人需要这样做的话:

    基本上是相同的html,但是添加了一些css3形div的容器,并使用toggle触发器:

                <nav class="l-apps l-container">
                <ul>
                    <li>
                        <img src="assets/img/icons/google.png">  
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/word.png">                     
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/file.png">
                        <a href="#">Lorem Ipsum</a>                         
                    </li>
                    <li>
                        <img src="assets/img/icons/network.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/powerpoint.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/diamond.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/other.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/pencil.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/excel.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                    <li>
                        <img src="assets/img/icons/triangle.png">                         
                        <a href="#">Lorem Ipsum</a>
                    </li>
                </ul>
                <div class="shape-container">    
                    <div class="base">
                        <a href="#"><i class="icon-toogle fa fa-angle-double-up"></i></a>
                    </div>
                </div>        
            </nav>
    

    这是形状的SCS:

        .base {
        background: $blue;
        display: inline-block;
        height: 105px;
        margin-top: 50px;
        position: relative;
        width: 150px;
        .icon-toogle {
            position:absolute;
            color: $white;
            font-size:1.8em;
            bottom:-.35em;
            left:0;
            right:0;
            margin:auto;
            text-align:center;
        }
        &:before {
            border-top: 20px solid $blue;
            border-left: 75px solid transparent;
            border-right: 75px solid transparent;            
            content: "";
            height: 0;
            left: 0;
            position: absolute;
            bottom: -20px;
            width: 0;
        }
    }
    

    现在我有另一个问题,整个形状有一个图案背景图像(图标容器和底部的css形状),我不能把背景图像放到形状上,可能是因为我使用边框来制作css形状。有没有办法把背景图像放在形状上?

        2
  •  -1
  •   jupeter    7 年前

    我的想法是

    $('div').on('click', function(){
      var _class = $(this).hasClass('a-top') ? 'b-top' : 'a-top';
      $(this).attr('class',_class);
    });
    .a-top {
      background: #f00;
      height: 50px;
      top:0px;
      transition: all .3s ease-out;
    }
    
    .b-top {
      background: #f00;
      height: 100px;
      transition: all .3s ease-out;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div class="a-top">
      menu click me.
    </div>
    推荐文章