记录日常练习的demo

1. 仿大咖秀

1
2
3
4
<div id="wrap">
<div class="img"></div>
<div class="img img2"></div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<style>
#wrap{
position: relative;
/* height: 100%;
width: 100%; */
/* 实际情况要进行容器样式调整 */
min-height: 300px;
overflow: hidden;
background: url(https://cdn.lovelee.cn/images/8b409cf84518ef14365616c7248c3431.gif) no-repeat center / contain;
}
.img{
height: 120px;
width: 120px;
background: rgba(255,255,255,.6);
position: absolute;
top: 30px;
left: 46%;
/*------*/
display: block;
transition: transform .1s linear 0s;
}
.img2{
left:52%;
top:60%;
}
.blur {
/*filter: url(blur.svg#blur); */

-webkit-filter: blur(10px); /* Chrome, Opera */
-moz-filter: blur(10px);
-ms-filter: blur(10px);
filter: blur(10px);

filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=10, MakeShadow=false); /* IE6~IE9 */
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script type="text/javascript" src="js/jquery-1.8.0.min.js" ></script>
<script type="text/javascript">
$(function(){
cursor.init("#wrap",".img","small");
})
var cursor = {
obj:function(elm){
return $(elm);
},
init:function(dom,target,scale){ //鼠标移上元素,偏移目标,相对偏移量();
var scales = scale=="big" ? "big" : "small";
var o = this.obj(dom);
var t = this.obj(target);
o.bind("mousemove",function(e){
var x = e.clientX;
var y = e.clientY;
var result_x,
result_y;
if(scales == "small"){
result_x = Number(x/100).toFixed(5);
result_y = Number(y/100).toFixed(5);
}else if(scales == "big"){
result_x = Number(x/50).toFixed(5);
result_y = Number(y/50).toFixed(5);
}
t.css({"transform" : "translate3d(-"+result_x+"%, -"+result_y+"%, 0px)","transform-style":" preserve-3d","backface-visibility": "hidden"});
})
}
}
</script>

2. 数字翻页

1
2
3
4
<div style="margin: 0 auto; height: 100px;width: 100%;display: flex;align-items: center;justify-content: center;">
<!-- 外层容器随意,这里只做演示效果 -->
<div id="numBox"></div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#numBox {
height: 0.6rem;
color: #f0933f;
}

/* // 卡片数字动画 start */

/* // 卡片 - 数字 */
.box-item {
display: inline-block;
width: .34rem;
height: .6rem;
margin-right: 2px;
font-size: .4rem;
line-height: .6rem;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAABSCAYAAAD0F5ySAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAADF0lEQVR42u2cz2tcVRSAv3PefSHRQURTqCnVkEXFBloaskgZqJvionRV3FoX/i3+BS7c549QEHVhbaGb0lajtFBIScyiFVptYcK89+5x8d6bHzEmWMS8E+4Hw73Mvcycb867dwbenCuf/GhMcBa4CJwAFB+8ADaAG+t9CoDQDCjw6dbdnz/e/umXM4Nnz9+IZamYQTSgFjezV3nT/wwRaTuggmjGTO/1wduL726dvfzhd9dv8sV6n6et1JVfv/3hs0e3bvdjURCLAqsqqKpa5Ihl9piBCKKKZBkSAs+3d07v/vmit3LtanH9Jp8HIAc+enzn3oU4HBKHQ2JZYmVZi1mTqS54SdvqWCpGMOO3+xvn3lw4+WRpbfXrACzubDxYHL58+dooS0VRi8Vq6vLrBhOZChlqRgREld83txaW1lbPBGC22B3k1manLIhlUfdj7KAUzZrKgFpIRYhZRrk7mAHmAoBFw6pq30en1tOkVBuXCJa18Uag3f0MMMNibLLTtM1znWO0C1YQFYsGTbww+i6y8S5n4/5Rb+EH0oZmBhandmndf2bHaT/sfwhX/zbRKxPxe/kpdIjQdHs8pPaQpLyQpLyQpLyQpLyQpLyQpLyQpLyQpLyQpLyQpLyQpLyQpLxwLKXCYRNs/p3mBld3kGdPoSpfXQrNIDt82v9rdfDwodHKk+2jVtifA66eY7mmkpQXkpQXkpQXkpQXkpQXkpQXkpQXkpQXkpQXkpQXkpQXkpQXkpQXkpQXklRnkel2LCXy71+sS0zEvydTTsRGlW77D2s7Kk39LDLuS5ezN7rkpC6RbeOnvT0qjMtMVbG2NUO0g8tuFGvWtAKq01KiUhcCt4+2aFGksyWxohkSmni1jV1HUrv57FwhISBVhcSIGkQEPBQvhxzJczQEwuzcEBgEYHNh+f3NmV5vMIxxDjOiCKrqo8w8z9E8R0JgfvH0DvAwAAXwzXsr51ce3brdr6udFcsyNwcCaJ5z6tzy/aW11RvAnfZ/FF99cPnSid78W384Prrhe+DL9T5R9hyysQys4fyQjb8AehNh+XbFU44AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDctMjhUMTY6MTk6MzQrMDg6MDCGBlhyAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTA3LTI4VDE2OjE5OjM0KzA4OjAw91vgzgAAACB0RVh0c29mdHdhcmUAaHR0cHM6Ly9pbWFnZW1hZ2ljay5vcme8zx2dAAAAGHRFWHRUaHVtYjo6RG9jdW1lbnQ6OlBhZ2VzADGn/7svAAAAF3RFWHRUaHVtYjo6SW1hZ2U6OkhlaWdodAA4MssAIT8AAAAWdEVYdFRodW1iOjpJbWFnZTo6V2lkdGgANTPxBq9pAAAAGXRFWHRUaHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADE1NjQzMDE5NzRwdxKoAAAAEnRFWHRUaHVtYjo6U2l6ZQAxNjY0QkJ8CMvtAAAAQnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vdG1wL2ltYWdlbGMvaW1ndmlldzJfN18xNTYyODQxNjMyOTA5MzUwMF8zNl9bMF22aZRrAAAAAElFTkSuQmCC) no-repeat center center;
/* background: url(./number-bg.png) no-repeat center center; */
background-size: 100% 100%;
text-align: center;
position: relative;
writing-mode: vertical-lr;
text-orientation: upright;
transform-style: preserve-3d;
overflow: hidden;


}

.box-item span {
position: absolute;
top: .07rem;
left: 50%;
transform: translate(-50%, 0%);
letter-spacing: 10px;
transition: transform 0.5s ease-in-out;
}

/* // 卡片 - 千分符 */
.box-item-symbol {
display: inline-block;
height: inherit;
width: .1rem;
position: relative;

}

.box-item-symbol::after {
content: ',';
display: inline-block;
position: absolute;
font-size: .4rem;
padding: 0 3px;
bottom: -0.02rem;
left: 50%;
transform: translateX(-50%);
}
/* // 卡片数字动画end */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
$(() => {
let num = 1000;
getRem(1920, 100); // 设计稿 1920 => 1rem = 1px 采用高分屏设计稿
// 先调用一次 ,初始化状态
initAnimation({
start: num
});
// 开启定时器,激活动画效果
setInterval(() => {
num += Math.floor(Math.random()*100);
if(num >= 100000)num = 1000; // 演示效果数字简单判断边界
initAnimation({
start: num
});
}, 2000);
})

function getRem(pwidth, prem) {
var html = document.getElementsByTagName("html")[0];
var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
html.style.fontSize = oWidth / pwidth * prem + "px";
}
function initAnimation(opt) {
var num = opt.start || 0;
var elm = $(opt.el || '#numBox');
var old = elm.attr("data-num") || 0;
var format_num = formatMoney(num);
var format_old = formatMoney(old);
var arr = format_num.split('');
var old_arr = format_old.split('');
if (elm.children().length == 0) $('<div class="box-item"><span>0123456789</span></div>').appendTo(elm);
if (arr.length !== 0) {
if (arr.length > old_arr.length) {
var range = arr.length - old_arr.length; // 需要补位
var allArr = arr.concat(old_arr);
var clipArr = allArr.slice(0, allArr.length - old_arr.length * 2);
// console.log(clipArr, '多的' , old_arr);
for (var i = clipArr.length - 1; i > -1; i--) {
var item = clipArr[i];
if (!isNaN(item)) {
$('<div class="box-item"><span>0123456789</span></div>').prependTo($(elm));
} else {
$('<div class="box-item-symbol"></div>').prependTo($(elm));
}
}
} else if (arr.length < old_arr.length) {
var range = old_arr.length - arr.length; // 需要补位
var allArr = old_arr.concat(arr);
var clipArr = allArr.slice(0, allArr.length - arr.length * 2);
// console.log(clipArr, '多的' , arr,old_arr);
clipArr.forEach(function (e, i) {
$(elm).children().eq(0).remove(); // 每次删完都是从0 重新开始 所以不用 i
})
giveNumAnimation(num);
} else {
giveNumAnimation(num);
}
elm.attr({
"data-num": num,
"data-old": old
});
giveNumAnimation(num);
}
}

function giveNumAnimation(num) {
var num = num || 0;
var numberArr = num + ''.split('');
const numberItems = $(".box-item");
numberItems.each(function (i, e) {
$(e).children('span').css({
transform: "translate(-50%, -" + numberArr[i] * 10 + "%)",
// "transform-style":'preserve-3d',
// "transform-origin": "50% 50%"
})
})
}
function formatMoney(number, decimals = 0, decPoint = '.', thousandsSep = ',') {
decimals = decimals || 0, decPoint = decPoint || '.', thousandsSep = thousandsSep || ',';
number = (number + "").replace(/[^0-9+-Ee.]/g, "")
let n = !isFinite(+number) ? 0 : +number
let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
let sep = (typeof thousandsSep === "undefined") ? "," : thousandsSep
let dec = (typeof decPoint === "undefined") ? "." : decPoint
let s = ""
let toFixedFix = function (n, prec) {
let k = Math.pow(10, prec)
return "" + Math.ceil(n * k) / k
}
s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split(".")
let re = /(-?\d+)(\d{3})/
while (re.test(s[0])) {
s[0] = s[0].replace(re, "$1" + sep + "$2")
}
if ((s[1] || "").length < prec) {
s[1] = s[1] || ""
s[1] += new Array(prec - s[1].length + 1).join("0")
}
return s.join(dec)
}

3.