iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >CSS中怎么利用transition保留hover状态
  • 143
分享到

CSS中怎么利用transition保留hover状态

2024-04-02 19:04:59 143人浏览 八月长安
摘要

这篇文章主要介绍了CSS中怎么利用transition保留hover状态的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS中怎么利用transition保留hover状态文章

这篇文章主要介绍了CSS中怎么利用transition保留hover状态的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS中怎么利用transition保留hover状态文章都会有所收获,下面我们一起来看看吧。

通常情况下,hover 是无法保存状态的。鼠标移入触发额外样式,一旦移出就还原了。

el:hover{
  color: red
}

登录后复制

这就意味着,如果需要保留hover的状态,可能就不得不借助js了,比如下面是某某书院的首页排行榜效果

CSS中怎么利用transition保留hover状态

这里的主要交互有以下几个

  • 鼠标滑过触发选中态

  • 鼠标移出列表后仍然保留上一次的选中态(重点)

  • 默认列表的第一项为选中态

目前官网的实现也是通过JS实现的,事实上,仅仅通过 CSS也是可以完全做到的,需要用到transition延时的一些小技巧,一起看看吧。

一、鼠标滑过触发选中态

所有的一切都离不开布局。

假设列表html是这样的

将军,夫人喊你种田了只是在休息室里打了个盹儿,一睁眼,竟然穿成了古代目不识丁的乡下胖丫头。 好吃懒做不说,还在村里横行霸道。 十里八乡没人愿意娶她,好不容易买了个金龟婿,大婚之日竟让人逃了。 恶霸老爹一怒之下去道上掳了个夫君给她。 就是……爹你掳的是不是有点不太对呀? * 婚后的苏胖丫很忙。 忙着改造恶霸爹爹与恶霸弟弟。 忙着抢救貌美如花的神将夫君。 忙着养育三个小小恶霸小豆丁。 一不小心,将自己忙成了大燕最位高权重的一品女侯!被夺一切后她封神回归【甜爽燃,团宠,玄学】 司扶倾一睁眼,不仅被夺了气运,人人还让她滚出娱乐圈。 重活一次,她只想咸鱼躺,谁知现在圈内人只知拉踩营销,没点真本事,不好好磨炼演技,这样下去还能行?怎么也得收拾收拾。 司扶倾捏了捏手腕,动了。 后来,网上疯狂骂她不自量力倒贴郁曜,造谣她私生活不检点,而—— 国际天后:今天我能站在这里,多亏了倾倾 top1男顶流:离我妹妹远点@郁曜 就连国际运动会官方:恭喜司扶倾拿下第13枚个人金牌,等一个退圈 当天,全网瘫痪。 · 史书记载,胤皇年少成名,八方征战,平天下,安宇内,是大夏朝最年轻的帝王,他完美强大,心怀天下,却因病死于27岁,一生短暂,无妻无妾,无子无孙,是无数人的白月光男神。 无人知晓,他再睁开眼,来到了1500年后。 这一次,他看见了他遥想过的盛世大夏。 · 不久后胤皇身份曝光,司扶倾得知偶像竟然就在身边,她敬佩万分,只想—— 司扶倾:努力奋斗,报效大夏! 胤皇:以身相许 司扶倾:??? 我一心奋发上进你却想要我? · 全能颜巅女神×杀伐清贵帝王 从全网黑到封神顶流,顺便和男神1v1...

登录后复制

简单修饰一下

.list{
  list-style: none;
  margin: 0;
  padding: 0;
  width: 400px;
}
.item{
  position: relative;
  padding: 10px 10px 10px 34px;
  cursor: pointer;
  counter-increment: num;
}
.title::before{
  content: counter(num) ' ';
  width: 25px;
  line-height: 30px;
  text-align: center;
  color: #fff;
  position: absolute;
  font-size: 14px;
  font-family: fantasy;
  left: 4px;
  background: center/100% 100% url(data:image/png;base64,iVBORw0KGGoAAAANSUhEUgAAADQAAAA8CAMAAAAe9Wm0AAAAbFBMVEUAAACaov2SnPKXnvaXofiyuvuCjPOgqvi4vfiBjPSyuf6Ml/a0u/21vPtte/F/i/WTnfWNmPiyuv6Ik/Zue/GRnPinr/Wfp/Gyuv6Ml/ebo/KTnfOutfqEj/W3vvpue/G/xfd1gvN8iPRodfBFzp+BAAAAF3RSTlMAECA7U2BgdIiTn6Wsvr+/v9Df39/s/o6+GugAAAGPSURBVHjazdZhk4IgEAZgpS6z8iotPEBF8P//x1tJrTxQlrm5uff7MxubLBtF9sQfp+ywjRCJk+zLhPq6SUwuxokhp4/YT1SUVtWam4nSZObImyA2YXHZ022cYsirOzwYoYti7nJzuMOqeHPNvke5jxgP2DRNNqLSMzQQtXjUtv8cBTWiwqOqohcsKikt8ajkHI+4EGjEBWNnNGJ1jUe1Vp9YJLSSeKRkh0eyC0BdEJIBZ5J/h2TA/6SUOGCgjUdaT6gJQA0CjV85jFrq/ZU/UYtA7HFzG5iA1PcOMnbs0b7tU/mcCAhjO/NE52A8jmXKMHYdnukTzE141vhyGWaSTq97ksMQhOnEF8qYFJvXneDO++lU82VznG0giYDppBVzTTvIffdjZSGFVjA2JHeVuRDbopOC6TrJ7GUSx0a1vYGR8u1kQ5krce5hJAUjlRbuRtuyu8GFVopxZ6OtxW5wObU2P3Ewaby+jya6R7UYO+C3xpICbk3NFhptTToaZ6OtzS/WGm39iUdkmdFFv5pvdNPREWjicTcAAAAASUVORK5CYII=);
}
.title{
  margin: 0;
  padding: 8px 0;
  font-weight: nORMal;
}
.sumary{
  margin: 0;
  overflow: hidden;
  display: -WEBkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  color: #666;
  font-size: 14px;
  color: 20px;
  height: 0;
}

.item::before{
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 8px;
  opacity: 0;
  z-index: -1;
  background: linear-gradient(270deg, rgb(241, 236, 249) 0%, rgba(241, 236, 249, 0) 100%);
}

登录后复制

效果如下

CSS中怎么利用transition保留hover状态

现在加上hover的效果

.item:hover .title{
  color: rebeccapurple;
}
.item:hover .sumary{
  height: 40px;
}
.item.item:hover::before{
  opacity: 1;
}

登录后复制

效果如下

CSS中怎么利用transition保留hover状态

很正常的hover效果,没什么特别的,那如何在移出后仍然保留最后的状态呢?接着往下看

二、保留hover的状态

实现hover保留状态需要用到这样一个小技巧。

比如,给一个元素添加hover样式

el:hover{
  color: red
}

登录后复制

CSS中怎么利用transition保留hover状态

如果我们给这个元素加一个延时

el{
  transition-delay: 1s;
}

登录后复制

那么,在鼠标移入和移出时都会有延迟

CSS中怎么利用transition保留hover状态

接着,我们在 hover的时候取消延时

el:hover{
  color: red;
  transition-delay: 0s;
}

登录后复制

那么,在鼠标移入的时候会迅速响应,移出的时候仍然会有延迟

CSS中怎么利用transition保留hover状态

到这里相信大家都明白了吧,如果把延时设置为足够大,比如

el{
  transition-delay: 9999s;
}

登录后复制

这样鼠标在移出后,需要经历9999s后才会变为原状,也就相当于保留了hover状态

CSS中怎么利用transition保留hover状态

原理就是这样,接下来看看实际应用吧

三、鼠标移出列表后仍然保留上一次的选中态

根据上面的原理,我们可以轻松的实现在hover后保留状态,如下


.item::before,
.item .sumary,
.item .title{
  transition: 0s 9999s;
}

.item:hover .title{
  color: rebeccapurple;
  transition: none;
}
.item:hover .sumary{
  height: 40px;
  transition: none;
}
.item.item:hover::before{
  opacity: 1;
  transition: none;
}

登录后复制

需要注意的是,由于是transition,所以所有的状态变化都是需要支持过渡属性的,比如隐藏sumary这里用的是height: 0而不是display:none,还有选中的背景色变化,由于background-image不支持过渡,所以换成了::before,然后单独用opacity控制等等一些细节,效果如下

CSS中怎么利用transition保留hover状态

这样在鼠标离开后,之前状态仍然是保留的。但是我们只需要保留上一次的,而不是所有的,如何处理呢?

这里需要换一种思路,可以这么做,鼠标在移入整个列表的时候就清除所有的状态,这样就只有当前hover的选项才会保留下来,有点类似于JS中的思维,先把所有的.current都移除,再给当前项添加.current,实现如下


.list:hover .title{
  transition: none;
  color: #333;
}
.list:hover .sumary{
  transition: none;
  height: 0;
}
.list:hover .item::before{
  transition: none;
  opacity: 0;
}

登录后复制

这样就实现了鼠标移出列表后仍然保留上一次的选中态的功能,有点像单选框的效果,只不过是hover触发的,效果如下

CSS中怎么利用transition保留hover状态

四、默认列表的第一项为选中态

下面来实现最后一个功能。

这个相对而言比较容易,需要用到:first-child伪类,可以匹配到第一个元素。

不过需要考虑的是优先级的问题,这个是默认状态,权限应该是最低的,其他hover样式都应该可以覆盖它,所以可以放在最前面,如下


.item:first-child .sumary{
  height: 40px;
}
.item:first-child .title{
  color: rebeccapurple;
}
.item:first-child::before{
  opacity: 1;
}



登录后复制

这样就完美实现了文章开头的效果

CSS中怎么利用transition保留hover状态

由于是 CSS 实现,多个列表也是完全复用的

CSS中怎么利用transition保留hover状态

关于“CSS中怎么利用transition保留hover状态”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“CSS中怎么利用transition保留hover状态”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网JavaScript频道。

--结束END--

本文标题: CSS中怎么利用transition保留hover状态

本文链接: https://www.lsjlt.com/news/98896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSS中怎么利用transition保留hover状态
    这篇文章主要介绍了CSS中怎么利用transition保留hover状态的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS中怎么利用transition保留hover状态文章...
    99+
    2024-04-02
  • css中hover怎么使用
    CSS中的hover伪类是一个非常常用的选择器,它允许我们在鼠标悬停在元素上时改变其样式。本文将为大家介绍hover的用法,并提供具体的代码示例。 一、基本用法要使用hover,我们需...
    99+
    2024-02-23
    css 使用 hover html元素 a标签 伪类选择器
  • css中hover属性怎么用
    css中hover属性的使用方法:可以在选择鼠标指针浮动在上面的元素中使用,例如在css中添加以下语法格式“标签选择器:hover{样式代码;}”格式进行使用,共有4种使用方式比如:1、直接在悬浮元素上改变样式;2、改变子元素的样式;3、改...
    99+
    2024-04-02
  • Playwright中怎么保持登录状态
    本篇内容主要讲解“Playwright中怎么保持登录状态”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Playwright中怎么保持登录状态”吧!引言在编写UI自动化测试用例的时候,通常会采用每...
    99+
    2023-06-25
  • 怎么利用css在页面中不留缝隙
    在现代的网页设计中,CSS早已成为了必不可少的一部分。不同的CSS技巧能够让我们实现各种神奇的效果,让网页看起来更加美观和专业。今天,我们要讨论的是一种高级的CSS技巧:不留缝隙。所谓“不留缝隙”,指的是在网页布局上,完全去掉元素之间的空隙...
    99+
    2023-05-14
  • HTML/CSS怎么保留页面中的空格
    这篇文章给大家分享的是有关HTML/CSS怎么保留页面中的空格的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML中的空格的规则在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了。同时内...
    99+
    2023-06-08
  • css中的transition-property属性怎么用
    小编给大家分享一下css中的transition-property属性怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  ...
    99+
    2024-04-02
  • css中过渡transition属性怎么用
    这篇文章将为大家详细讲解有关css中过渡transition属性怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   一、transition(过渡)是指为了添加鼠...
    99+
    2024-04-02
  • React中怎么实现状态自动保存
    这篇文章给大家介绍React中怎么实现状态自动保存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 什么是状态保存?假设有下述场景:移动端中,用户访问了一个列表页,上拉浏览列表...
    99+
    2024-04-02
  • 怎么在python中利用装饰器保留原函数信息
    怎么在python中利用装饰器保留原函数信息?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、...
    99+
    2023-06-14
  • 怎么在css中隐藏元素并保留位置
    这篇文章将为大家详细讲解有关怎么在css中隐藏元素并保留位置,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。css隐藏元素但保留位置<!DOCTYPE html><...
    99+
    2023-06-15
  • css中的transition-timing-function属性怎么用
    小编给大家分享一下css中的transition-timing-function属性怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解...
    99+
    2024-04-02
  • CSS中伪类选择器hover怎么使用
    这篇文章主要讲解了“CSS中伪类选择器hover怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS中伪类选择器hover怎么使用”吧! 伪类选择...
    99+
    2024-04-02
  • CSS中transition属性不起作用怎么办
    小编给大家分享一下CSS中transition属性不起作用怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!   我们先来看一下CSS中transition属性不起作用的原因   t...
    99+
    2024-04-02
  • 怎么在java中利用wait改变线程的状态
    本篇文章为大家展示了怎么在java中利用wait改变线程的状态,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式...
    99+
    2023-06-14
  • css中的UI状态伪类选择器怎么使用
    这篇文章主要介绍“css中的UI状态伪类选择器怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css中的UI状态伪类选择器怎么使用”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • 怎么在css中利用Flex制作一个柱状图
    怎么在css中利用Flex制作一个柱状图?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。HTML:<div class="his_box...
    99+
    2023-06-08
  • 怎么在CSS3中利用transition属性实现下划线
    怎么在CSS3中利用transition属性实现下划线?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。transition属性transition: 简写属性,用于在一个属性中设...
    99+
    2023-06-08
  • 怎么使用Laravel和SSR实现保存登录状态
    这篇“怎么使用Laravel和SSR实现保存登录状态”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Laravel和S...
    99+
    2023-07-05
  • 怎么在CSS3中利用transition属性实现过渡效果
    怎么在CSS3中利用transition属性实现过渡效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。属性详解transition属性目的是让css的一些属性(如backg...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作