能用CSS实现的就不要麻烦JavaScript了

f14ac1ed49320467a07eb9d677cc1d99.png

屏幕录制2021-07-18 上午10.14.21.gif"/>

屏幕录制2021-07-17 下午10.23.04.gif"/>

屏幕录制2021-07-17 下午10.38.14.gif"/>

屏幕录制2021-07-18 上午9.15.50.gif"/>

屏幕录制2021-07-18 上午9.42.38.gif"/>

image.png

一般要把隐藏的东西如菜单作为hover目标的子元素或者相邻元素,才方便用css控制,例如上面的菜单,是把menu当作导航的一个相邻元素:

<!--menu为相邻的li-->
<li class="user">用户</li>
<li class="menu">
    <ul>
       <li>账户设置</li>
       <li>登出</li>
    </ul>
</li>

menu在正常态下是隐藏的:

.menu{
  display: none;
}

而当导航hover时显示:

/*使用相邻选择器和hover*/
.user:hover + .menu{
  display: list-item;
}

注意这里使用了一个相邻选择器,这也是上面说的为什么要写成相邻的元素。menu的位置可以用absolute定位。

同时menu自已本身hover的时候也要显示,否则鼠标一离开导航的时候,菜单就消失了:

.menu:hover{
    display: list-item;
}

这里会有一个小问题,即menu和导航需要挨着一起,否则中间有空隙的话,上面添加的菜单hover就不能发挥作用了,但是实际情况下从美观的角度,两者是要有点距离的。这个其实也好解决,只要在menu上面再画一个透明的区域就好了,如下蓝色的方块:

可以用before/after伪类用absoute定位实现:

ul.menu:before{
    content: "";
    position: absolute;
    left: 0;
    top: -20px;
    width: 100%;
    height: 20px;
    /*background-color: rgba(0,0,0,0.2);*/
}

如果我既写了css的hover,又监听了mouse事件,用mouse控制显示隐藏,双重效果会有什么情况发生,如果按正常套路,在mouse事件里面hover的时候,添加了一个display: block的style,会覆盖掉CSS的设置。也就是说,只要hover一次,css的代码就不管用了,因为内联样式的优先级会高于外链的。但是实际情况下会有意外发生,那就是在移动端iphone上面,触摸会触发CSS的hover,并且这个的触发会很高概率地先于touchstart事件,在这个事件里面会判断当前是显示还是隐藏的状态,由于css的hover发挥了作用,所以判断为显示,然后又把它隐藏了。也就是说,点一次不出来,要点两次。所以最好别两个同时写。第二种场景,使用子元素,这个更简单。把hover的目标和隐藏的对象当作同一个父容器的子元素,然后hover写在这个父容器上面就可以了,不用像上面那样,隐藏元素也要写个hover:

.marker-container .detail-info{
    display: none
}
.marker-container:hover .detail-info{
   display: block
}

最后

这里展示也只是一些常用的功能,其实还有很多可以通过CSS实现的功能,有兴趣的同学继续研究一下更多不依赖JavaScript完成的CSS功能。

到此这篇关于能用CSS实现的就不要麻烦JavaScript了的文章就介绍到这了,更多相关css平滑滚动内容请搜索QQwps.Com以前的文章或继续浏览下面的相关文章,希望大家以后多多支持QQwps.Com!

猜你在找的能用CSS实现的就不要麻烦JavaScript了相关文章

这几天做关于css动画的知识,其中遇到了一个问题,就是给一个div设置动画,CSS动画如何中途停止并维持姿态,怎么实现呢,下面通过实例代码给大家详细介绍,需要的朋友参考下吧
本文通过图片以及代码,详细讲解了CSS数学函数如何实现一些有趣的动画效果,非常的有趣,感兴趣的小伙伴可以借鉴一下这篇文章
了css动画效果之animation的常用样式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
了CSS+JS实现水滴涟漪动画按钮,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
了浅谈css动画是否会被js阻塞,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
了css实现快速炫酷抖动动画效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需求的大佬可以参考下
了CSS3通过var()和calc()函数实现动画特效,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需求的大佬可以参考下
不同于传统的PC Web或者是移动WEB,在腾讯视频客厅盒子端,接大屏显示器下,许多能流畅运行于PC端、移动端的Web动画,受限于硬件水平,在盒子端的表现的往往不尽如人意。想要在盒子端跑出高性能接近60 FPS的流畅动画,就必须要刨根问底,深挖每一处可以提升的方法。
纯CSS实现动画效果:鼠标移上图标显示搜索框,鼠标移出隐藏搜索框,这种效果给用户带来很好的体验效果,下面小编给大家带来了CSS实现隐藏搜索框功能(动画正反向序列)的完整代码,需要的朋友参考下吧