如何实现呢?

首先就是分析如何将这6个图片分布成该方式,那我们就需要将6张图片设置水平垂直居中,然后计算出x,y轴坐标,然后移动到相应位置。

动画效果,只需将父盒子使用css3 animation动画即可。具体代码实现如下。

// html相关代码<div class="container1"><div class="item"><img src="" alt=""></div><div class="item"><img src="" alt=""></div><div class="item"><img src="" alt=""></div><div class="item"><img src="" alt=""></div><div class="item"><img src="" alt=""></div><div class="item"><img src="..." alt=""></div></div>// vue3中使用onMounted(() => {const dom = document.querySelectorAll('.container1 .item')const len = dom.lengthconst r = document.querySelector('.container1').clientWidth / 2rotateAnimate(dom, r, len)})

然后封装动画方法:

// dom为所有图片容器,r1为半径,len1为图片个数,
// len1可以在函数内部处理  const len = items.lengthexport function rotateAnimate(dom, r1, len1) {const items = dom;// 图片个数const len = len1;// 旋转半径const r = r1;// 计算相邻两个的角度const pieDeg = 360 / len;// 移动每一张图片到响应位置for (let i = 0; i < len; i++) {// 每张图与第一张图的夹角let t = i * pieDeg// 因为sin  cos 需要转化成Π(pai)的角度形式t = (Math.PI / 180) * t// 这里需要用到数学公式 根据半径角度计算x,y轴距离const x = Math.sin(t) * rconst y = -Math.cos(t) * r// 然后移动到相应位置items[i].style.transform = `translate(${x}px,${y}px)`}
}

这个特效 是需要使用css即可制作。

实现原理:利用伪元素before和after 实现,在before中设置线条的颜色,旋转动画、速度等

在after中使用遮罩将线条其余部分遮盖。

<button class="btn">按钮</button>.btn {background-color: transparent;border-radius: 10px;border: none;width: 100px;height: 60px;color: red;position: relative;outline: none;margin-left: 10%;overflow: hidden;
}// 这里是设置一个 以按钮中心旋转的矩形,父组件设置overflow:hidden
将会形成一个在按钮中旋转的图形.btn::before {content: '';position: absolute;background-color: red;width: 200%;height: 200%;z-index: -2;left: 50%;top: 50%;transform-origin: 0 0;animation: rotate 3s infinite linear;
}// 这里就是设置一个遮罩层,将除了最外层线条旋转部分,其余部分遮盖住,即可实现。
// 这里需要你计算,你要留出的旋转线条宽度
.btn::after {content: '';position: absolute;background-color: #fff;width: calc(100% - 5px);z-index: -1;height: calc(100% - 5px);left: 2.5px;top: 2.5px;border-radius: 10px;
}

水印制作组件封装

原理:利用canvas画布功能绘制水印组件,并将其添加到页面中,利用toDataURL('image/png')将图片转为base64格式,并设置样式实现固定定位。

export const addWaterMarker = (str, parentNode, font, textColor) => {// str为内容,parentNode为dom节点// 创建画布let can = document.createElement('canvas');// 添加到页面中parentNode.appendChild(can);// 画布大小can.width = 200;can.height = 200;can.style.display = 'none'// 设置上下文环境,进行绘制let cans = can.getContext('2d')cans.rotate(-(Math.PI / 180) * 20);cans.font = font || '16px'cans.fillStyle = textColor || '#000'cans.textAlign = 'left';cans.textBaseline = 'middle';cans.fillText(str, can.width / 10, can.height / 2);const styleCss = {backgroundImage: `url(${can.toDataURL('image/png')})`,backgroundAttachment: 'fixed'}for (let key in styleCss) {parentNode.style[key] = styleCss[key]}
}

实现按钮边框动画+摩天轮旋转动画+水印实现相关推荐

  1. 简单html摩天轮动画效果,2D模拟实现摩天轮旋转动画特效

    这次给大家带来2D模拟实现摩天轮旋转动画特效,使用2D模拟实现摩天轮旋转动画特效的注意事项有哪些,下面就是实战案例,一起来看一下. 先看效果图: 由于上传的大小原因,只能录制成这种效果,原图是无限循环 ...

  2. html摩天轮效果,用CSS3 animation模拟摩天轮旋转动画效果

    这次我们来实现一个简单又很有意思的动画效果,完全由CSS 的animation来实现,素材和源码来自于其他网站,个人对源码做了一些改动优化 完成后的效果--旋转效果 (github pages打开特别 ...

  3. 纯css摩天轮旋转动画

    布局(html代码块) <body><div class="box"><div class="pic1"><img s ...

  4. 用css3实现摩天轮旋转的动画效果

    用css3实现摩天轮旋转的动画效果 1.CSS3 @keyframes 规则 如需在 CSS3 中创建动画,您需要学习 @keyframes 规则. @keyframes 规则用于创建动画.在 @ke ...

  5. 第4章第13节:创建漂亮的色轮旋转动画 [SwiftUI快速入门到实战]

    本节课演示如何制作一个彩色的圆环,进而创建漂亮的色轮旋转动画. 首先添加一个布尔类型的属性,标识是否开始播放动画. 添加一个ZStack视图,作为子视图的容器.接着创建一个简单的圆形图形. 给圆形设置 ...

  6. CSS3 摩天轮旋转特效

    1.效果图 2.案例分析 这各效果分别由两部分组成:摩天轮和小朋友. 摩天轮作为div(居中显示)的背景图片 小朋友是通过定位定在指定位置的 通过css3 动画animation与transform属 ...

  7. CSS3 元素转圈动画 (元素旋转动画)

    CSS3 元素转圈动画 (元素旋转动画) <!DOCTYPE html> <html> <head> <style> div { width:100px ...

  8. html摩天轮效果,用js和纯css分别实现摩天轮效果动画

    小弟最近在找工作,刚好今天面试笔试的时候遇到一个题: 大概实现后的效果应该是这样的: 说来惭愧,原来只写过简单的平移和隐藏显示动画,还真没接触过这种动画效果.... 思路: 1.先画一个圆 2.然后将 ...

  9. 3dsmax动画三、旋转动画及分离支点。

    ①分别创建茶壶(teapot)和tube(管状物). ②制作茶壶倒水的动画. 第0帧到第12帧做一个拿起来,移动的操作. 再第12帧到第24帧做一个旋转茶壶的动作. 首先在第12帧做一个旋转起始帧.然 ...

最新文章

  1. 机器学习导论(张志华):多项式分布
  2. 『PPYOLO tiny尝鲜』基于PaddleDetection的人脸疲劳检测
  3. VTK:Filtering之ConnectivityFilterDemo
  4. 你知道Linux和Unix的区别吗
  5. 2017年天津市大学生数学竞赛试题 (理工类)
  6. Android变形(Transform)之Camera使用介绍【转】
  7. JDK源码解析之 java.lang.ClassLoader
  8. mysql主从不同步 tar_Mysql主从不同步问题处理案例
  9. python增加工作日列_将工作日添加到日期字段
  10. 将阿拉伯数字转换成中文大写的好算法
  11. SSH服务器能够允许root用户远程登录
  12. 【Robot Framework】字符串判断,if语句多执行条件,多执行语句
  13. 重塑层次化索引stack
  14. Java程序设计以及实验指导 实验笔记
  15. 如何写一篇文献计量分析论文---citespace+vosviewer+文献计量在线分析平台
  16. 技嘉 7pesh3 安装Linux,技嘉h370主板装win7系统及BIOS设置教程(完美支持usb3.1)
  17. DirectX简单的FBX文件加载(网格MESH)
  18. win2012金蝶服务器不能运行,解决在win7、win10 下无法安装 金蝶KIS 12.3 专业版 的问题...
  19. HTML的路径和链接、注释、特殊字符
  20. Codesys使用电子凸轮实现追剪功能

热门文章

  1. 三星s8怎么分屏操作_一心三用 三星Galaxy Z Fold2 5G成多任务处理大师-三星 ——快科技(驱动之家旗下媒体)-...
  2. cm域名 好域名_.cm域名_.cm域名注册_.cm域名价格 - NameBeta
  3. php 缩略图生成类,php生成图片缩略图类
  4. iMeta|中科院微生物所刘双江组发布人源毛螺菌科菌株资源库和菌株水平代谢谱...
  5. 关于IE打印预览内容显示不全的问题解决
  6. 【Word提升】高级word使用技巧-持续更新学习
  7. 制作超好看的个人网站:用ThreeJs为你的网站打造个性的动画背景
  8. canary版本_如何设置Canary家庭安全摄像机
  9. 第七集 人机交互(1)
  10. 职场加薪步步高升的五大法则