transition 和 animation 的区别+visibility=hidden, opacity=0,display:none 区别+画一条 0.5px 的线

1.transition 和 animation 的区别

1、animation是一个动画的效果,有多个中间帧,可以在任意一个中间帧设置状态,不需要设置触发事件就能执行。
transition是一个过渡的效果,没有中间状态,需要设置触发事件(如hover等)才能执行,只能触发一次;

2、animation 配合 @keyframe 可以不触发时间就触发这个过程,
而 transition 需要通过 hover 或者 js 事件来配合触发;

3、animation 可以设置很多的属性,比如循环次数,动画结束的状态等等
transition 只能触发一次;

4、animation 可以结合 keyframe 设置每一帧,
但是 transition 只有两帧,从 from … to;

5、在性能方面:浏览器有一个主线程和排版线程;主线程一般是对 js 运行的、页面布局、生成位图等等,然后把生成好的位图传递给排版线程,而排版线程会通过 GPU 将位图绘制到页面上,也会向主线程请求位图等等;我们在用使用 aniamtion 的时候这样就可以改变很多属性,像我们改变了 width、height、postion 等等这些改变文档流的属性的时候就会引起,页面的回流和重绘,对性能影响就比较大,但是我们用 transition 的时候一般会结合 tansfrom 来进行旋转和缩放等不会生成新的位图,当然也就不会引起页面的重排了;

补充:css动画和js动画的区别

代码复杂度方面:
简单动画,css 代码实现会简单一些,js 复杂一些。
复杂动画的话,css 代码就会变得冗长,js实现起来更优。

动画运行时:
对动画的控制程度上,js 比较灵活,能控制动画暂停,取消,终止等;
css动画不能添加事件,只能设置固定节点进行什么样的过渡动画。

性能方面:
css动画相对于优一些,css 动画通过GUI解析;
js 动画需要经过j s 引擎代码解析,然后再进行 GUI 解析渲染。

css 有浏览器兼容问题,js 大多情况下是没有的。

2.visibility=hidden, opacity=0,display:none 区别

  • opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些
    事件,如 click 事件,那么点击该区域,也能触发点击事件的
  • visibility=hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件
  • display=none把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删除掉一样。

3.怎么画一条 0.5px 的线

有两种方法

.line {
    height: 1px;
    transform: scaleY(0.5);
    transform-origin: 50% 100%; //scaleY Chrome/Safari的线都变虚了,加上就不会了
}

在移动端

<meta name="viewport" content="width=device-width,initial-sacle=1">

其中width=device-width表示将viewport视窗的宽度调整为设备的宽度,这个宽度通常是指物理上宽度。默认的缩放比例为1,如iphone 6竖屏的宽度为750px,它的dpr=2,用2px表示1px,这样设置之后viewport的宽度就变成375px。这时候0.5px的边就使用我们上面讨论的方法。

这样的话,viewport的宽度就是原本的750px,所以1个px还是1px,正常画就行,但这样也意味着UI需要按2倍图的出,整体面面的单位都会放大一倍。

在iPone X和一些安卓手机等dpr = 3的设备上,需要设置scale为0.333333,这个时候就是3倍地画了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你想要我写一个什么样的程序呢?如果你只是想把这段 HTML 代码作为字符串打印出来,可以直接用 print 函数输出即可: ```python html = '<div class="" style="position: absolute; display: block; border-style: solid; white-space: nowrap; z-index: 9999999; box-shadow: rgba(0, 0, 0, 0.2) 1px 2px 10px; transition: opacity 0.2s cubic-bezier(0.23, 1, 0.32, 1) 0s, visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1) 0s, transform 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s; background-color: rgb(255, 255, 255); border-width: 1px; border-radius: 4px; color: rgb(102, 102, 102); font: 14px / 21px sans-serif; padding: 10px; top: 0px; left: 0px; transform: translate3d(534px, 131px, 0px); border-color: rgb(49, 135, 216); pointer-events: none; visibility: hidden; opacity: 0;"> 内蒙古自治区 21个 </div>' print(html) ``` 如果你想要用 Python 操作这段 HTML 代码,比如解析它、获取里面的文本或属性值等,可以使用 Python 的第三方库 Beautiful Soup。以下是一个示例代码,用于解析上面的 HTML 代码,并获取其中的文本内容: ```python from bs4 import BeautifulSoup html = '<div class="" style="position: absolute; display: block; border-style: solid; white-space: nowrap; z-index: 9999999; box-shadow: rgba(0, 0, 0, 0.2) 1px 2px 10px; transition: opacity 0.2s cubic-bezier(0.23, 1, 0.32, 1) 0s, visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1) 0s, transform 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s; background-color: rgb(255, 255, 255); border-width: 1px; border-radius: 4px; color: rgb(102, 102, 102); font: 14px / 21px sans-serif; padding: 10px; top: 0px; left: 0px; transform: translate3d(534px, 131px, 0px); border-color: rgb(49, 135, 216); pointer-events: none; visibility: hidden; opacity: 0;"> 内蒙古自治区 21个 </div>' # 创建 Beautiful Soup 对象 soup = BeautifulSoup(html, 'html.parser') # 获取 div 元素的文本内容 text = soup.div.text.strip() print(text) ``` 上面的代码中,我们使用 `BeautifulSoup` 函数创建了一个 BeautifulSoup 对象,然后使用该对象的 `div` 属性获取到了第一个 div 元素,再使用 `text` 属性获取到了该元素的文本内容。最终输出的结果为: ``` 内蒙古自治区 21个 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值