单选按钮设置为被选中状态_为什么要设置错误的按钮状态

单选按钮设置为被选中状态

当正确的方法出错时 (When the right way goes wrong)

Let’s say you want to create a click effect on an HTML button. The first idea that many people get is to do something that reproduces the feeling of the sound emitted by a real button. Here is a simple pulse effect:

假设您要在HTML按钮上创建点击效果。 许多人得到的第一个想法是做一些能够重现真实按钮发出声音的感觉的事情。 这是一个简单的脉冲效果:

Image for post
Button with a pulse effect on click
带有脉冲效果的按钮

To create a button effect, in HTML/CSS, you have only three states to choose from:

要创建按钮效果,在HTML / CSS中, 只有三种状态可供选择

  • :hover which is triggered by having your cursor over the button.

    :hover ,通过将光标悬停在按钮:hover触发。

  • :focus which is triggered when you give focus to the button using your keyboard or by clicking it. For some browsers, the focus is given when you press your mouse button down. For others, it’s when you release it.

    :focus ,当您使用键盘或单击按钮将焦点放在按钮上时触发。 对于某些浏览器,当您按下鼠标按钮时会给出焦点。 对于其他人,就是您发布它的时间。

  • :active which is triggered from the moment you press your mouse button down to when you release it.

    :active ,从按下鼠标按钮到释放鼠标之间触发。

According to this, it’s safe to assume that the good state to style is :active since it comes and goes as you press the button, right? Depending on the effect you want to create, that can be absolutely wrong.

据此,可以安全地认为样式的良好状态是:active因为在您按下按钮时它就会来回移动,对吗? 根据要创建的效果,这可能是绝对 错误的

This is what will happen in our case if we use :active:

如果使用:active这就是我们的情况:

Image for post

Looking closely, you can see our pulse effect triggering on click, then immediately reverting to nothing. What happened?

仔细观察,您会发现我们的脉冲效果在点击时触发,然后立即恢复为零。 发生了什么?

了解问题 (Understanding the problem)

This pulse effect takes 300ms to go through its whole animation. A mouse click lasts anywhere between ≈15ms (gaming mouse) and 200+ ms (laptop trackpad).

此脉冲效果需要300毫秒才能经历整个动画。 鼠标单击的持续时间介于≈15ms (游戏鼠标) 和200+ ms (笔记本电脑触控板)之间。

Image for post

You guessed it, your CSS transition, although set to 300ms, will stop halfway because the :active state will disappear. You can’t control the actual transition duration this way. Many developers don’t notice that when implementing short or static effects, but in our case, it just can’t work.

您猜对了,您CSS过渡尽管设置为300ms,但会中途停止,因为:active状态将消失。 您无法通过这种方式控制实际的过渡时间。 许多开发人员没有注意到在实现短效果或静态效果时,但是在我们的情况下,它根本无法工作。

解决方案 (The solution)

There are two tricks to achieve this effect. The first one is to start the click effect when the mouse button is released. To do so, the state you are looking for is :not(:active).

有两种技巧可以达到这种效果。 第一个是在释放鼠标按钮时开始单击效果 。 为此,您正在寻找的状态是:not(:active)

By using this state, the animation will start when the :active state disappears, and there will be no limit for the transition duration!

通过使用此状态,动画将在:active状态消失时开始,并且过渡持续时间没有限制!

Image for post

But there is one more thing: it should only animate one way. You must put the transition property for this effect under the :not(:active) selector. If you don’t, the transition will try to go back and forth and result in a weird effect or simply no effect at all.

但是还有一件事: 它只能以一种方式进行动画处理 。 您必须将此效果的transition属性放在:not(:active)选择器下。 如果您不这样做,则过渡将尝试来回移动,从而导致怪异的效果,或者根本没有效果。

For this effect, I actually styled the :before pseudo-element. Here is the relevant part of the code:

为此,我实际上设置了:before伪元素的样式。 这是代码的相关部分:

The previous sample illustrates our case very well but needs some more code to work. You can get the full code sample in this gist.

前面的示例很好地说明了我们的情况,但是还需要更多代码才能工作。 您可以 在本要点中 获得完整的代码示例

Now you can unleash your best transitions and create crazy click effects that won’t stop randomly! Here is another example that goes for a whole second:

现在,您可以释放最佳的过渡效果,并创建不会随机停止的疯狂点击效果! 这是一秒钟的例子:

Image for post
Another click effect example using this method.
使用此方法的另一个点击效果示例。

Just remember that this method is using transitions, and not keyframes, which are managing their own timelines.

请记住,此方法使用的是过渡,而不是关键帧,它们是在管理自己的时间轴。

This method works really well with pseudo-elements and you should get some fun hours creating weird stuff with it (I did). If you need more than two elements, just put divs inside the button tag.

这种方法对伪元素非常有效,您应该花一些时间来创建一些奇怪的东西(我这样做了)。 如果需要两个以上的元素,只需将div放在button标记内。

Image for post
Example using a div inside the button
在按钮内使用div的示例

结论 (Conclusion)

What you need to remember to create beautiful click effects using this method:

使用此方法创建漂亮的点击效果需要记住的内容:

  • You must target the :not(:active) selector so that the animation starts at the end of a click.

    您必须定位:not(:active)选择器,以便动画在单击结束时开始

  • The transition property for your effect also need to be set on the :not(:active) selector, so that the transition goes only one way.

    还需要在:not(:active)选择器上设置效果的过渡属性,以便过渡只能以一种方式进行

  • It only uses transitions because keyframes manage their own timelines.

    它仅使用过渡,因为关键帧管理自己的时间轴。

  • Using pseudo-elements or internal div tags allow you to create effects outside of the button.

    使用伪元素或内部div标签可让您在按钮外部创建效果。

Have fun animating!

玩得开心!

翻译自: https://codeburst.io/why-you-should-style-the-wrong-button-state-d4e4c2db8f7e

单选按钮设置为被选中状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「娃娃分享」-常见自校检分析实例.

自校检是许多软件的保护手段之一,对软件加个简单的壳再增加自校检在一定程序上可以抵挡住一大部分新手,不过,对许多人来说,这个保护已经很弱了。。下面讲几种常见的解决自校检方法,写的粗略,希望大家补充。…

用VC和MinGW导出dll的def和lib(a)文件

为什么80%的码农都做不了架构师?>>> 原文地址:http://zhangyafeikimi.iteye.com/blog/404580 有了dll文件需要导出def文件: pexports zlib1.dll > zlib1.def 有了dll和def文件,需要导出MinGW的.a文件:…

产品设计美学案例分析_美学在产品设计中的重要性

产品设计美学案例分析重点 (Top highlight)In one of my previous jobs, I had really interesting debates with the CEO regarding whether we should spend more time improving the way our app looks and feels. ‘How could he not care that the design is outdated?! …

即将到来的ECMAScript 2022标准

大家好,我是若川。周末分享一篇相对简单的文章。最近组织了源码共度活动:1个月,200人,一起读了4周源码,参与的小伙伴都表示收获很大。如果感兴趣可以点击链接扫码加我微信 ruochuan12。另外:昨天的推文入门…

c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理

二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节…

动态库的创建与使用

1、动态库文件的创建 (1)编写源文件 (2)编译生成动态库 g -fPIC -shared -o libfile_operation.so file_operation.cpp 此编译过程分为两步,等同于下面的两个命令: g -c -fPIC file_operation.cpp …

ux设计中的各种地图_UX写作中的移情

ux设计中的各种地图Demetri Martin is a master of comedic situations. If you’ve never seen Demetri Martin是喜剧情境的大师。 如果你从未见过 him before, he has a sort of dry brand of observational humor, relying more on anecdotes than full stories, and often…

字符串搜索。HOJ1530 Compound Words。

stl set实现字符串搜索。。效率一般。(附二分搜索。) Compound WordsTime limit:1sec.Submitted:233Memory limit:32MAccepted:81Source: Waterloo ACM Programming Contest Sep 28, 1996 You are to find all the two-word compound words in a dictionary. A two-word compo…

字节3-1前端面试官自学Vue的正确姿势

大家好,我是若川。前不久和一个字节前端TL朋友聊天,说到大厂前端供需脱节的情况。特别是使用Vue框架的,因为简单易学好上手,但是能够深入理解的人并不多,大多都只停留在应用层面,缺乏更深层面的理解。尤其是…

苹果风格ui_苹果如何使Soft-UI成为未来

苹果风格ui重点 (Top highlight)Apple announced some pretty wild updates at WWDC 2020 today.苹果今天在WWDC 2020上宣布了一些相当疯狂的更新。 But technology aside, let’s focus on how their UI has changed. It went through the first bitmap representations, thr…

【数据结构】量子危机

问题 宇宙时间公元 5.55 亿年,由于某种原因两大联盟展开了激战(maxingc 联盟采用了微子技术): 邪恶的 maxingc 联盟采集好了微子能,就要运输。Maxingc 联盟的领袖 xc 此时才发现,自己的军事基地中由微子发射…

android 自定义menu背景,Android编程实现自定义系统菜单背景的方法

本文实例讲述了Android编程实现自定义系统菜单背景的方法。分享给大家供大家参考,具体如下:不多说,上图,见代码。package lab.sodino.menutest;import android.content.Context;import android.app.Activity;import android.os.Bu…

面试官问 async、await 函数原理是在问什么?

大家好,我是若川。这是 源码共读活动《1个月,200人,一起读了4周源码》 第四期,纪年小姐姐的第四次投稿。纪年小姐姐通过本次学习提早接触到generator,协程概念,了解了async/await函数的原理等。第四期是 学…

一步步优化JVM六:优化吞吐量[转]

2019独角兽企业重金招聘Python工程师标准>>> 原文:http://ganlv.iteye.com/blog/1571315 参考:http://www.myexception.cn/software-architecture-design/1455594.html 现代JVM是一个具有灵活适应各种应用能力的软件,尽管很多应用…

element-ui 网格_UI备忘单:列表与网格

element-ui 网格重点 (Top highlight)Grids or lists? That is the question we will look at in this cheat sheet. While they can be used anywhere in your site, we are going to look primarily at search results, catalogs and newsfeeds. Making this choice will de…

50行 koa-compose,面试常考的中间件原理原来这么简单?

大家好,我是若川。源码共读《1个月,200人,一起读了4周源码》 活动第五期是学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理中的koa-compose源码原理,阅读不到50行的koa-compose源码。这篇是izjing小哥哥的投稿。…

sqlite3源码编译到Android,实现SQLite跨全平台使用

文/何晓杰Dev(高级Android架构师)著作权归作者所有,转载请联系作者获得授权。初看这个标题你可能会不解,SQLite 本身就是一个跨平台的数据库,在这里再说跨平台有什么意义呢?其实不然,目前我就遇到了一个项目…

illustrator下载_平面设计:16个Illustrator快捷方式可加快工作流程

illustrator下载I know, I know — keyboard shortcuts sound so nerdy, and you’re a graphic designer, not an IT Director, why should you learn keyboard shortcuts?我知道,我知道—键盘快捷键听起来很书呆,而且您是图形设计师,而不是…

手把手教你五分钟扒个源码写个无敌外挂

大家好,我是若川。源码共读《1个月,200人,一起读了4周源码》 活动进行到第五期了,欢迎点链接加我微信 ruochuan12 报名参加。前言前段时间群里分享了一个小游戏,多次怀疑自己的眼睛以后,尝试去写个外挂。中…

Kubernetes 1.14重磅来袭,多项关键特性生产可用

走过了突飞猛进的2018年,Kubernetes在2019年终于迎来了第一个大动作:Kubernetes 1.14版本的正式发布!Kubernetes 本次发布的 1.14 版本,包含了 31 项增强,其中 10 项为 GA,12 项进入 beta 试用阶段&#xf…