要求:随机分布在div 里,共有两种颜色,字体大小随机大小,中间的名称必须是最大的,效果如下。
代码参考:
// 获取div元素
var container = document.getElementById("randoms");
var centerX = container.offsetWidth / 2.5; // 椭圆的中心点横坐标
var centerY = container.offsetHeight / 2.5; // 椭圆的中心点纵坐标
var a = container.offsetWidth / 2.5; // 长轴的长度
var b = container.offsetHeight / 2.5; // 短轴的长度
var theta = 0; // 角度
// 创建中间的span元素
var middleSpan = document.createElement("span");
middleSpan.innerText = "中间内容";
middleSpan.style.fontSize = "26px";
middleSpan.style.fontFamily = "微软雅黑";
middleSpan.style.color = "#1B52FD";
middleSpan.style.position = "absolute";
middleSpan.style.top = centerY -30 + "px";
middleSpan.style.left = centerX-30 + "px";
container.appendChild(middleSpan);
for (var i = 0; i < this.numbers.length; i++) {
var number = this.numbers[i];
var span = document.createElement("span");
span.innerText = number;
span.style.fontSize = Math.floor(Math.random() * 18 + 12) + "px";
span.style.fontFamily = "微软雅黑";
// 计算椭圆上的点的坐标
var x = centerX + a * Math.cos(theta);
var y = centerY + b * Math.sin(theta);
// 确保不超出"randoms"这个div
x = Math.max(0, Math.min(x, container.offsetWidth-30));
y = Math.max(0, Math.min(y, container.offsetHeight-30));
span.style.position = "absolute";
span.style.top = y + 10+ "px";
span.style.left = x + 10 + "px";
var color = Math.floor(Math.random() * 2) === 0 ? "#1B52FD" : "#FE973E";
span.style.color = color;
if (i === Math.floor(this.numbers.length / 2)) {
span.style.fontSize = "22px";
span.style.color = "#FE973E";
}
container.appendChild(span);
// 增加角度,使得下一个数字的位置在椭圆上均匀分布
theta += (2.5 * Math.PI) / this.numbers.length;
}
其中源数据:numbers:[‘admin’,’zxp’,’zxp1′,’admin’,’admin’,’admin’,’admin’,’admin’]。
直接vue 里执行这个方法就行。
版权声明:本文为qq_42174597原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。