点击的时候利用jquery、css3实现三角或者箭头如丝顺滑地旋转

点击前
点击后

因为没有gif,首先脑补一下小三角完美的旋转180度,实现代码如下

html

<li class="left_li1">
              按目的查看
                                 <ul class="dropdown">
                                     <li>按目的查看</li>
                                     <li>按源查看</li>
                                 </ul>
                            </li>
                            <li class="left_li2">按流量
                                <ul class="dropdown">
                                     <li>按流量</li>
                                     <li>按百分比</li>
                                </ul>
                            </li>

css

.left_li1::before{
    position: absolute;
    right: 13px;
    top: 15px;
    width: 0;
    height: 0;
    content: "";
    border-width: 8px 8px 0 8px;
    border-style: solid;
    border-color: #169bd5 transparent;
    -webkit-transition: all 0.25s ;
    -moz-transition:  all 0.25s ;
    -ms-transition:  all 0.25s ;
    -o-transition:  all 0.25s ;
    transition:  all 0.25s ;     
}
.left_li2::before{
    position: absolute;
    right: 13px;
    top: 15px;
    width: 0;
    height: 0;
    content: "";
    border-width: 8px 8px 0 8px;
    border-style: solid;
    border-color: #169bd5 transparent;
    -webkit-transition: all 0.25s ;
    -moz-transition:  all 0.25s ;
    -ms-transition:  all 0.25s ;
    -o-transition:  all 0.25s ;
    transition:  all 0.25s ;     
   
}
.dropdown{
    position: absolute;
    right: 0;
    left: 0;
    display: none;
    padding: 0;
    border-radius: inherit;
    border: 1px solid #3DDCFC;
    background-color: #fff;
    box-shadow: 2px 2px 5px rgba(0,0,0,.4);
    color: #333;
    margin-top: 14px
}
 .dropdown::before{
    position: absolute;
    right: 13px;
    bottom: 100%;
    width: 0;
    height: 0;
    content: "";
    border-width: 0 8px 8px 8px;
    border-style: solid;
    border-color: #fff transparent;
}
.left_li1.active::before{
   transform: rotate(180deg)       
}
.left_li2.active::before{
    transform: rotate(180deg)       
 }
.dropdown li{
    width: 130px;
    font-size: 14px;
    text-align: center;
    color: #333;
    height: 35px;
    line-height: 35px
}

js

   $('.left_li1').on('click',function(){
            $('.left_li2').removeClass('active');   
            $('.left_li2 .dropdown').hide();
            $(this).addClass('active');
            setTimeout(function(){
                $('.left_li1 .dropdown').toggle();
            },200)
            var node=$('.left_li1 .dropdown')
            if(!node.is(':hidden')){
                $(this).removeClass('active');   
            }
            
        })
        $('.left_li2').on('click',function(){
            $('.left_li1').removeClass('active');   
            $('.left_li1 .dropdown').hide();
            $(this).addClass('active');
            setTimeout(function(){
                $('.left_li2 .dropdown').toggle();
            },200)
            var node=$('.left_li2 .dropdown')
            if(!node.is(':hidden')){
                $(this).removeClass('active');   
            }
            
        })

刚开始的时候是采用的.left_li1:active::before{transform: rotate(180deg)}注意active前的冒号,使用伪类,但是点击的时候不能完全旋转,便采用了jquery 添加css3和移除css3的方式。这里有一点注意就是:active在before之前

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,399评论 1 45
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 13,301评论 0 8
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 5,600评论 0 7
  • PNG 有PNG8和truecolor PNG PNG8类似GIF颜色上限为256,文件小,支持alpha透明度,...
    hudaren阅读 5,654评论 0 0
  • $HTML, HTTP,web综合问题 1、前端需要注意哪些SEO 2、 的title和alt有什么区别 3、HT...
    Hebborn_hb阅读 10,128评论 0 20

友情链接更多精彩内容