rounded.js

来自「Hippo CMS是一个以信息为中心的开源内容管理系统。Hippo CMS目标是」· JavaScript 代码 · 共 445 行 · 第 1/2 页

JS
445
字号
						}
					}
				}
			}
		}
		if (corner) {
			var psn = [];
			if (cc.charAt(0) == "t") {
				psn.push("top");
			} else {
				psn.push("bottom");
			}
			if (cc.charAt(1) == "l") {
				psn.push("left");
			} else {
				psn.push("right");
			}
			if (corner.style.position == "absolute") {
				for (var z = 0; z < psn.length; z++) {
					corner.style[psn[z]] = "0px";
				}
			}
			if (psn[0] == "top") {
				if (top) {
					top.appendChild(corner);
				}
			} else {
				if (bottom) {
					bottom.appendChild(corner);
				}
			}
		}
	}
	var diff = {t:Math.abs(options.radii.tl - options.radii.tr), b:Math.abs(options.radii.bl - options.radii.br)};
	for (var z in diff) {
		var smaller = (options.radii[z + "l"] < options.radii[z + "r"] ? z + "l" : z + "r");
		var filler = document.createElement("div");
		filler.style.height = diff[z] + "px";
		filler.style.width = options.radii[smaller] + "px";
		filler.style.position = "absolute";
		filler.style.fontSize = "1px";
		filler.style.overflow = "hidden";
		filler.style.backgroundColor = format.color;
		switch (smaller) {
		  case "tl":
			filler.style.bottom = "0px";
			filler.style.left = "0px";
			filler.style.borderLeft = format.borderString;
			top.appendChild(filler);
			break;
		  case "tr":
			filler.style.bottom = "0px";
			filler.style.right = "0px";
			filler.style.borderRight = format.borderString;
			top.appendChild(filler);
			break;
		  case "bl":
			filler.style.top = "0px";
			filler.style.left = "0px";
			filler.style.borderLeft = format.borderString;
			bottom.appendChild(filler);
			break;
		  case "br":
			filler.style.top = "0px";
			filler.style.right = "0px";
			filler.style.borderRight = format.borderString;
			bottom.appendChild(filler);
			break;
		}
		var fillBar = document.createElement("div");
		fillBar.style.position = "relative";
		fillBar.style.fontSize = "1px";
		fillBar.style.overflow = "hidden";
		fillBar.style.backgroundColor = format.color;
		fillBar.style.backgroundImage = format.bgImage;
		if (z == "t") {
			if (top) {
				if (options.radii.tl && options.radii.tr) {
					fillBar.style.height = (topHeight - format.borderWidth) + "px";
					fillBar.style.marginLeft = (options.radii.tl - format.borderWidth) + "px";
					fillBar.style.marginRight = (options.radii.tr - format.borderWidth) + "px";
					fillBar.style.borderTop = format.borderString;
					if (format.bgImage != "") {
						fillBar.style.backgroundPosition = "-" + (topHeight + format.borderWidth) + "px 0px";
					}
				}
				top.appendChild(fillBar);
			}
		} else {
			if (bottom) {
				if (options.radii.bl && options.radii.br) {
					fillBar.style.height = (bottomHeight - format.borderWidth) + "px";
					fillBar.style.marginLeft = (options.radii.bl - format.borderWidth) + "px";
					fillBar.style.marginRight = (options.radii.br - format.borderWidth) + "px";
					fillBar.style.borderBottom = format.borderString;
					if (format.bgImage != "") {
						fillBar.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (topHeight + format.borderWidth)) + "px";
					}
				}
				bottom.appendChild(fillBar);
			}
		}
	}
	if (options.autoPad && format.padding > 0) {
		var content = document.createElement("div");
		content.style.position = "relative";
		content.innerHTML = format.content;
		content.className = "autoPadDiv";
		if (topHeight < format.padding) {
			content.style.paddingTop = Math.abs(topHeight - format.padding) + "px";
		}
		if (bottomHeight < format.padding) {
			content.style.paddingBottom = Math.abs(bottomHeight - format.padding) + "px";
		}
		content.style.paddingLeft = format.padding + "px";
		content.style.paddingRight = format.padding + "px";
		node.appendChild(content);
	}
};
var count = 0;
dojo.lfx.rounded._fns = {blend:function (clr1, clr2, frac) {
	var c1 = {r:parseInt(clr1.substr(1, 2), 16), g:parseInt(clr1.substr(3, 2), 16), b:parseInt(clr1.substr(5, 2), 16)};
	var c2 = {r:parseInt(clr2.substr(1, 2), 16), g:parseInt(clr2.substr(3, 2), 16), b:parseInt(clr2.substr(5, 2), 16)};
	if (frac > 1 || frac < 0) {
		frac = 1;
	}
	var ret = [Math.min(Math.max(Math.round((c1.r * frac) + (c2.r * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.g * frac) + (c2.g * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.b * frac) + (c2.b * (1 - frac))), 0), 255)];
	for (var i = 0; i < ret.length; i++) {
		var n = ret[i].toString(16);
		if (n.length < 2) {
			n = "0" + n;
		}
		ret[i] = n;
	}
	return "#" + ret.join("");
}, fraction:function (x, y, r) {
	var frac = 0;
	var xval = [];
	var yval = [];
	var point = 0;
	var whatsides = "";
	var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2)));
	if (intersect >= y && intersect < (y + 1)) {
		whatsides = "Left";
		xval[point] = 0;
		yval[point++] = intersect - y;
	}
	intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2)));
	if (intersect >= x && intersect < (x + 1)) {
		whatsides += "Top";
		xval[point] = intersect - x;
		yval[point++] = 1;
	}
	intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2)));
	if (intersect >= y && intersect < (y + 1)) {
		whatsides += "Right";
		xval[point] = 1;
		yval[point++] = intersect - y;
	}
	intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2)));
	if (intersect >= x && intersect < (x + 1)) {
		whatsides += "Bottom";
		xval[point] = intersect - x;
		yval[point] = 1;
	}
	switch (whatsides) {
	  case "LeftRight":
		return Math.min(yval[0], yval[1]) + ((Math.max(yval[0], yval[1]) - Math.min(yval[0], yval[1])) / 2);
	  case "TopRight":
		return 1 - (((1 - xval[0]) * (1 - yval[1])) / 2);
	  case "TopBottom":
		return Math.min(xval[0], xval[1]) + ((Math.max(xval[0], xval[1]) - Math.min(xval[0], xval[1])) / 2);
	  case "LeftBottom":
		return (yval[0] * xval[1]) / 2;
	  default:
		return 1;
	}
}, draw:function (x, y, color, opac, height, corner, image, radius, top, format) {
	var px = document.createElement("div");
	px.style.height = height + "px";
	px.style.width = "1px";
	px.style.position = "absolute";
	px.style.fontSize = "1px";
	px.style.overflow = "hidden";
	if (image == -1 && format.bgImage != "") {
		px.style.backgroundImage = format.bgImage;
		px.style.backgroundPosition = "-" + (format.width - (radius - x) + format.borderWidth) + "px -" + ((format.height + top + y) - format.borderWidth) + "px";
	} else {
		px.style.backgroundColor = color;
	}
	if (opac != 100) {
		dojo.html.setOpacity(px, (opac / 100));
	}
	px.style.top = y + "px";
	px.style.left = x + "px";
	corner.appendChild(px);
}, getRGB:function (clr) {
	var ret = "#ffffff";
	if (clr != "" && clr != "transparent") {
		if (clr.substr(0, 3) == "rgb") {
			var t = clr.substring(4, clr.indexOf(")"));
			t = t.split(",");
			for (var i = 0; i < t.length; i++) {
				var n = parseInt(t[i]).toString(16);
				if (n.length < 2) {
					n = "0" + n;
				}
				t[i] = n;
			}
			ret = "#" + t.join("");
		} else {
			if (clr.length == 4) {
				ret = "#" + clr.substring(1, 2) + clr.substring(1, 2) + clr.substring(2, 3) + clr.substring(2, 3) + clr.substring(3, 4) + clr.substring(3, 4);
			} else {
				ret = clr;
			}
		}
	}
	return ret;
}};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?