Our requirements:
- no image used in corner
- only html, css and javascript
- user-defined color
- user-defined angle
Steps
(1) corner.js
/* Automatic, anti-aliased rounded corners. By Steven Wittens Based on http://pro.html.it/esempio/nifty/ Thanks to Jacob from Oddlabs.com for fixing two nasty bugs. */ function NiftyCheck() { if (!document.getElementById || !document.createElement) { return false; } var b = navigator.userAgent.toLowerCase(); if (b.indexOf("msie 5") > 0 && b.indexOf("opera") == -1) { return false; } return true; } function Rounded(selector, bk, color, sizex, sizey) { var i; var v = getElementsBySelector(selector); var l = v.length; for (i = 0; i < l; i++) { AddTop(v[i], bk, color, sizex, sizey); AddBottom(v[i], bk, color, sizex, sizey); } } Math.sqr = function (x) { return x * x; }; function Blend(a, b, alpha) { var ca = Array( parseInt('0x' + a.substring(1, 3)), parseInt('0x' + a.substring(3, 5)), parseInt('0x' + a.substring(5, 7)) ); var cb = Array( parseInt('0x' + b.substring(1, 3)), parseInt('0x' + b.substring(3, 5)), parseInt('0x' + b.substring(5, 7)) ); r = '0' + Math.round(ca[0] + (cb[0] - ca[0]) * alpha).toString(16); g = '0' + Math.round(ca[1] + (cb[1] - ca[1]) * alpha).toString(16); b = '0' + Math.round(ca[2] + (cb[2] - ca[2]) * alpha).toString(16); return '#' + r.substring(r.length - 2) + g.substring(g.length - 2) + b.substring(b.length - 2); } function AddTop(el, bk, color, sizex, sizey) { var i, j; var d = document.createElement("div"); d.style.backgroundColor = bk; d.className = "rounded"; var lastarc = 0; for (i = 1; i <= sizey; i++) { var coverage, arc2, arc3; // Find intersection of arc with bottom of pixel row arc = Math.sqrt(1.0 - Math.sqr(1.0 - i / sizey)) * sizex; // Calculate how many pixels are bg, fg and blended. var n_bg = sizex - Math.ceil(arc); var n_fg = Math.floor(lastarc); var n_aa = sizex - n_bg - n_fg; // Create pixel row wrapper var x = document.createElement("div"); var y = d; x.style.margin = "0px " + n_bg + "px"; // Make a wrapper per anti-aliased pixel (at least one) for (j = 1; j <= n_aa; j++) { // Calculate coverage per pixel // (approximates circle by a line within the pixel) if (j == 1) { if (j == n_aa) { // Single pixel coverage = ((arc + lastarc) * .5) - n_fg; } else { // First in a run arc2 = Math.sqrt(1.0 - Math.sqr(1.0 - (n_bg + 1) / sizex)) * sizey; coverage = (arc2 - (sizey - i)) * (arc - n_fg - n_aa + 1) * .5; } } else if (j == n_aa) { // Last in a run arc2 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j + 1) / sizex)) * sizey; coverage = 1.0 - (1.0 - (arc2 - (sizey - i))) * (1.0 - (lastarc - n_fg)) * .5; } else { // Middle of a run arc3 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j) / sizex)) * sizey; arc2 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j + 1) / sizex)) * sizey; coverage = ((arc2 + arc3) * .5) - (sizey - i); } x.style.backgroundColor = Blend(bk, color, coverage); y.appendChild(x); y = x; var x = document.createElement("div"); x.style.margin = "0px 1px"; } x.style.backgroundColor = color; y.appendChild(x); lastarc = arc; } el.insertBefore(d, el.firstChild); } function AddBottom(el, bk, color, sizex, sizey) { var i, j; var d = document.createElement("div"); d.className = "rounded"; d.style.backgroundColor = bk; var lastarc = 0; for (i = 1; i <= sizey; i++) { var coverage, arc2, arc3; // Find intersection of arc with bottom of pixel row arc = Math.sqrt(1.0 - Math.sqr(1.0 - i / sizey)) * sizex; // Calculate how many pixels are bg, fg and blended. var n_bg = sizex - Math.ceil(arc); var n_fg = Math.floor(lastarc); var n_aa = sizex - n_bg - n_fg; // Create pixel row wrapper var x = document.createElement("div"); var y = d; x.style.margin = "0px " + n_bg + "px"; // Make a wrapper per anti-aliased pixel (at least one) for (j = 1; j <= n_aa; j++) { // Calculate coverage per pixel // (approximates circle by a line within the pixel) if (j == 1) { if (j == n_aa) { // Single pixel coverage = ((arc + lastarc) * .5) - n_fg; } else { // First in a run arc2 = Math.sqrt(1.0 - Math.sqr(1.0 - (n_bg + 1) / sizex)) * sizey; coverage = (arc2 - (sizey - i)) * (arc - n_fg - n_aa + 1) * .5; } } else if (j == n_aa) { // Last in a run arc2 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j + 1) / sizex)) * sizey; coverage = 1.0 - (1.0 - (arc2 - (sizey - i))) * (1.0 - (lastarc - n_fg)) * .5; } else { // Middle of a run arc3 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j) / sizex)) * sizey; arc2 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j + 1) / sizex)) * sizey; coverage = ((arc2 + arc3) * .5) - (sizey - i); } x.style.backgroundColor = Blend(bk, color, coverage); y.insertBefore(x, y.firstChild); y = x; var x = document.createElement("div"); x.style.margin = "0px 1px"; } x.style.backgroundColor = color; y.insertBefore(x, y.firstChild); lastarc = arc; } el.appendChild(d); } function getElementsBySelector(selector) { var i; var s = []; var selid = ""; var selclass = ""; var tag = selector; var objlist = []; if (selector.indexOf(" ") > 0) { //descendant selector like "tag#id tag" s = selector.split(" "); var fs = s[0].split("#"); if (fs.length == 1) { return objlist; } return document.getElementById(fs[1]).getElementsByTagName(s[1]); } if (selector.indexOf("#") > 0) { //id selector like "tag#id" s = selector.split("#"); tag = s[0]; selid = s[1]; } if (selid != "") { objlist.push(document.getElementById(selid)); return objlist; } if (selector.indexOf(".") > 0) { //class selector like "tag.class" s = selector.split("."); tag = s[0]; selclass = s[1]; } var v = document.getElementsByTagName(tag); // tag selector like "tag" if (selclass == "") { return v; } for (i = 0; i < v.length; i++) { if (v[i].className == selclass) { objlist.push(v[i]); } } return objlist; }
(2) corner.css
/* See license.txt for terms of usage */ .firebugCanvas { position:fixed; top: 0; left: 0; display:none; border: 0 none; margin: 0; padding: 0; outline: 0; min-width: 0; max-width: none; min-height: 0; max-height: none; -moz-transform: rotate(0deg); -moz-transform-origin: 50% 50%; } .firebugCanvas:before, .firebugCanvas:after { content: ""; } .firebugHighlight { z-index: 2147483646; position: fixed; background-color: #3875d7; opacity: 1; margin: 0; padding: 0; outline: 0; border: 0 none; min-width: 0; max-width: none; min-height: 0; max-height: none; } .firebugHighlight:before, .firebugHighlight:after { content: ""; } .firebugLayoutBoxParent { z-index: 2147483646; position: fixed; background-color: transparent; border-top: 0 none; border-right: 1px dashed #E00 !important; border-bottom: 1px dashed #E00 !important; border-left: 0 none; margin: 0; padding: 0; outline: 0; min-width: 0; max-width: none; min-height: 0; max-height: none; -moz-transform: rotate(0deg); -moz-transform-origin: 50% 50%; } .firebugRuler { position: absolute; margin: 0; padding: 0; outline: 0; border: 0 none; opacity: 1; min-width: 0; max-width: none; min-height: 0; max-height: none; -moz-transform: rotate(0deg); -moz-transform-origin: 50% 50%; } .firebugRuler:before, .firebugRuler:after { content: ""; } .firebugRulerH { top: -15px; left: 0; width: 100%; height: 14px; background: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%13%88%00%00%00%0E%08%02%00%00%00L%25a%0A%00%00%00%04gAMA%00%00%D6%D8%D4OX2%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%00%04%F8IDATx%DA%EC%DD%D1n%E2%3A%00E%D1%80%F8%FF%EF%E2%AF2%95%D0D4%0E%C1%14%B0%8Fa-%E9%3E%CC%9C%87n%B9%81%A6W0%1C%A6i%9A%E7y%0As8%1CT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AATE9%FE%FCw%3E%9F%AF%2B%2F%BA%97%FDT%1D~K(%5C%9D%D5%EA%1B%5C%86%B5%A9%BDU%B5y%80%ED%AB*%03%FAV9%AB%E1%CEj%E7%82%EF%FB%18%BC%AEJ8%AB%FA'%D2%BEU9%D7U%ECc0%E1%A2r%5DynwVi%CFW%7F%BB%17%7Dy%EACU%CD%0E%F0%FA%3BX%FEbV%FEM%9B%2B%AD%BE%AA%E5%95v%AB%AA%E3E5%DCu%15rV9%07%B5%7F%B5w%FCm%BA%BE%AA%FBY%3D%14%F0%EE%C7%60%0EU%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5JU%88%D3%F5%1F%AE%DF%3B%1B%F2%3E%DAUCNa%F92%D02%AC%7Dm%F9%3A%D4%F2%8B6%AE*%BF%5C%C2Ym~9g5%D0Y%95%17%7C%C8c%B0%7C%18%26%9CU%CD%13i%F7%AA%90%B3Z%7D%95%B4%C7%60%E6E%B5%BC%05%B4%FBY%95U%9E%DB%FD%1C%FC%E0%9F%83%7F%BE%17%7DkjMU%E3%03%AC%7CWj%DF%83%9An%BCG%AE%F1%95%96yQ%0Dq%5Dy%00%3Et%B5'%FC6%5DS%95pV%95%01%81%FF'%07%00%00%00%00%00%00%00%00%00%F8x%C7%F0%BE%9COp%5D%C9%7C%AD%E7%E6%EBV%FB%1E%E0(%07%E5%AC%C6%3A%ABi%9C%8F%C6%0E9%AB%C0'%D2%8E%9F%F99%D0E%B5%99%14%F5%0D%CD%7F%24%C6%DEH%B8%E9rV%DFs%DB%D0%F7%00k%FE%1D%84%84%83J%B8%E3%BA%FB%EF%20%84%1C%D7%AD%B0%8E%D7U%C8Y%05%1E%D4t%EF%AD%95Q%BF8w%BF%E9%0A%BF%EB%03%00%00%00%00%00%00%00%00%00%B8vJ%8E%BB%F5%B1u%8Cx%80%E1o%5E%CA9%AB%CB%CB%8E%03%DF%1D%B7T%25%9C%D5(%EFJM8%AB%CC'%D2%B2*%A4s%E7c6%FB%3E%FA%A2%1E%80~%0E%3E%DA%10x%5D%95Uig%15u%15%ED%7C%14%B6%87%A1%3B%FCo8%A8%D8o%D3%ADO%01%EDx%83%1A~%1B%9FpP%A3%DC%C6'%9C%95gK%00%00%00%00%00%00%00%00%00%20%D9%C9%11%D0%C0%40%AF%3F%EE%EE%92%94%D6%16X%B5%BCMH%15%2F%BF%D4%A7%C87%F1%8E%F2%81%AE%AAvzr%DA2%ABV%17%7C%E63%83%E7I%DC%C6%0Bs%1B%EF6%1E%00%00%00%00%00%00%00%00%00%80cr%9CW%FF%7F%C6%01%0E%F1%CE%A5%84%B3%CA%BC%E0%CB%AA%84%CE%F9%BF)%EC%13%08WU%AE%AB%B1%AE%2BO%EC%8E%CBYe%FE%8CN%ABr%5Dy%60~%CFA%0D%F4%AE%D4%BE%C75%CA%EDVB%EA(%B7%F1%09g%E5%D9%12%00%00%00%00%00%00%00%00%00H%F6%EB%13S%E7y%5E%5E%FB%98%F0%22%D1%B2'%A7%F0%92%B1%BC%24z3%AC%7Dm%60%D5%92%B4%7CEUO%5E%F0%AA*%3BU%B9%AE%3E%A0j%94%07%A0%C7%A0%AB%FD%B5%3F%A0%F7%03T%3Dy%D7%F7%D6%D4%C0%AAU%D2%E6%DFt%3F%A8%CC%AA%F2%86%B9%D7%F5%1F%18%E6%01%F8%CC%D5%9E%F0%F3z%88%AA%90%EF%20%00%00%00%00%00%00%00%00%00%C0%A6%D3%EA%CFi%AFb%2C%7BB%0A%2B%C3%1A%D7%06V%D5%07%A8r%5D%3D%D9%A6%CAu%F5%25%CF%A2%99%97zNX%60%95%AB%5DUZ%D5%FBR%03%AB%1C%D4k%9F%3F%BB%5C%FF%81a%AE%AB'%7F%F3%EA%FE%F3z%94%AA%D8%DF%5B%01%00%00%00%00%00%00%00%00%00%8E%FB%F3%F2%B1%1B%8DWU%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*UiU%C7%BBe%E7%F3%B9%CB%AAJ%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5*%AAj%FD%C6%D4%5Eo%90%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5%86%AF%1B%9F%98%DA%EBm%BBV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%ADV%AB%D5j%B5Z%AD%D6%E4%F58%01%00%00%00%00%00%00%00%00%00%00%00%00%00%40%85%7F%02%0C%008%C2%D0H%16j%8FX%00%00%00%00IEND%AEB%60%82") repeat-x; border-top: 1px solid #BBBBBB; border-right: 1px dashed #BBBBBB; border-bottom: 1px solid #000000; } .firebugRulerV { top: 0; left: -15px; width: 14px; height: 100%; background: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0E%00%00%13%88%08%02%00%00%00%0E%F5%CB%10%00%00%00%04gAMA%00%00%D6%D8%D4OX2%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%00%06~IDATx%DA%EC%DD%D1v%A20%14%40Qt%F1%FF%FF%E4%97%D9%07%3BT%19%92%DC%40(%90%EEy%9A5%CB%B6%E8%F6%9Ac%A4%CC0%84%FF%DC%9E%CF%E7%E3%F1%88%DE4%F8%5D%C7%9F%2F%BA%DD%5E%7FI%7D%F18%DDn%BA%C5%FB%DF%97%BFk%F2%10%FF%FD%B4%F2M%A7%FB%FD%FD%B3%22%07p%8F%3F%AE%E3%F4S%8A%8F%40%EEq%9D%BE8D%F0%0EY%A1Uq%B7%EA%1F%81%88V%E8X%3F%B4%CEy%B7h%D1%A2E%EBohU%FC%D9%AF2fO%8BBeD%BE%F7X%0C%97%A4%D6b7%2Ck%A5%12%E3%9B%60v%B7r%C7%1AI%8C%BD%2B%23r%00c0%B2v%9B%AD%CA%26%0C%1Ek%05A%FD%93%D0%2B%A1u%8B%16-%95q%5Ce%DCSO%8E%E4M%23%8B%F7%C2%FE%40%BB%BD%8C%FC%8A%B5V%EBu%40%F9%3B%A72%FA%AE%8C%D4%01%CC%B5%DA%13%9CB%AB%E2I%18%24%B0n%A9%0CZ*Ce%9C%A22%8E%D8NJ%1E%EB%FF%8F%AE%CAP%19*%C3%BAEKe%AC%D1%AAX%8C*%DEH%8F%C5W%A1e%AD%D4%B7%5C%5B%19%C5%DB%0D%EF%9F%19%1D%7B%5E%86%BD%0C%95%A12%AC%5B*%83%96%CAP%19%F62T%86%CAP%19*%83%96%CA%B8Xe%BC%FE)T%19%A1%17xg%7F%DA%CBP%19*%C3%BA%A52T%86%CAP%19%F62T%86%CA%B0n%A9%0CZ%1DV%C6%3D%F3%FCH%DE%B4%B8~%7F%5CZc%F1%D6%1F%AF%84%F9%0F6%E6%EBVt9%0E~%BEr%AF%23%B0%97%A12T%86%CAP%19%B4T%86%CA%B8Re%D8%CBP%19*%C3%BA%A52huX%19%AE%CA%E5%BC%0C%7B%19*CeX%B7h%A9%0C%95%E1%BC%0C%7B%19*CeX%B7T%06%AD%CB%5E%95%2B%BF.%8F%C5%97%D5%E4%7B%EE%82%D6%FB%CF-%9C%FD%B9%CF%3By%7B%19%F62T%86%CA%B0n%D1R%19*%A3%D3%CA%B0%97%A12T%86uKe%D0%EA%B02*%3F1%99%5DB%2B%A4%B5%F8%3A%7C%BA%2B%8Co%7D%5C%EDe%A8%0C%95a%DDR%19%B4T%C66%82fA%B2%ED%DA%9FC%FC%17GZ%06%C9%E1%B3%E5%2C%1A%9FoiB%EB%96%CA%A0%D5qe4%7B%7D%FD%85%F7%5B%ED_%E0s%07%F0k%951%ECr%0D%B5C%D7-g%D1%A8%0C%EB%96%CA%A0%A52T%C6)*%C3%5E%86%CAP%19%D6-%95A%EB*%95q%F8%BB%E3%F9%AB%F6%E21%ACZ%B7%22%B7%9B%3F%02%85%CB%A2%5B%B7%BA%5E%B7%9C%97%E1%BC%0C%EB%16-%95%A12z%AC%0C%BFc%A22T%86uKe%D0%EA%B02V%DD%AD%8A%2B%8CWhe%5E%AF%CF%F5%3B%26%CE%CBh%5C%19%CE%CB%B0%F3%A4%095%A1%CAP%19*Ce%A8%0C%3BO*Ce%A8%0C%95%A12%3A%AD%8C%0A%82%7B%F0v%1F%2FD%A9%5B%9F%EE%EA%26%AF%03%CA%DF9%7B%19*Ce%A8%0C%95%A12T%86%CA%B8Ze%D8%CBP%19*Ce%A8%0C%95%D1ae%EC%F7%89I%E1%B4%D7M%D7P%8BjU%5C%BB%3E%F2%20%D8%CBP%19*Ce%A8%0C%95%A12T%C6%D5*%C3%5E%86%CAP%19*Ce%B4O%07%7B%F0W%7Bw%1C%7C%1A%8C%B3%3B%D1%EE%AA%5C%D6-%EBV%83%80%5E%D0%CA%10%5CU%2BD%E07YU%86%CAP%19*%E3%9A%95%91%D9%A0%C8%AD%5B%EDv%9E%82%FFKOee%E4%8FUe%A8%0C%95%A12T%C6%1F%A9%8C%C8%3D%5B%A5%15%FD%14%22r%E7B%9F%17l%F8%BF%ED%EAf%2B%7F%CF%ECe%D8%CBP%19*Ce%A8%0C%95%E1%93~%7B%19%F62T%86%CAP%19*Ce%A8%0C%E7%13%DA%CBP%19*Ce%A8%0CZf%8B%16-Z%B4h%D1R%19f%8B%16-Z%B4h%D1R%19%B4%CC%16-Z%B4h%D1R%19%B4%CC%16-Z%B4h%D1%A2%A52%CC%16-Z%B4h%D1%A2%A52h%99-Z%B4h%D1%A2%A52h%99-Z%B4h%D1%A2EKe%98-Z%B4h%D1%A2EKe%D02%5B%B4h%D1%A2EKe%D02%5B%B4h%D1%A2E%8B%96%CA0%5B%B4h%D1%A2E%8B%96%CA%A0e%B6h%D1%A2E%8B%96%CA%A0e%B6h%D1%A2E%8B%16-%95a%B6h%D1%A2E%8B%16-%95A%CBl%D1%A2E%8B%16-%95A%CBl%D1%A2E%8B%16-Z*%C3l%D1%A2E%8B%16-Z*%83%96%D9%A2E%8B%16-Z*%83%96%D9%A2E%8B%16-Z%B4T%86%D9%A2E%8B%16-Z%B4T%06-%B3E%8B%16-Z%B4T%06-%B3E%8B%16-Z%B4h%A9%0C%B3E%8B%16-Z%B4h%A9%0CZf%8B%16-Z%B4h%A9%0CZf%8B%16-Z%B4h%D1R%19f%8B%16-Z%B4h%D1R%19%B4%CC%16-Z%B4h%D1R%19%B4%CC%16-Z%B4h%D1%A2%A52%CC%16-Z%B4h%D1%A2%A52h%99-Z%B4h%D1%A2%A52h%99-Z%B4h%D1%A2EKe%98-Z%B4h%D1%A2EKe%D02%5B%B4h%D1%A2EKe%D02%5B%B4h%D1%A2E%8B%96%CA0%5B%B4h%D1%A2E%8B%96%CA%A0e%B6h%D1%A2E%8B%96%CA%A0e%B6h%D1%A2E%8B%16-%95a%B6h%D1%A2E%8B%16-%95A%CBl%D1%A2E%8B%16-%95A%CBl%D1%A2E%8B%16-Z*%C3l%D1%A2E%8B%16-Z*%83%96%D9%A2E%8B%16-Z*%83%96%D9%A2E%8B%16-Z%B4T%86%D9%A2E%8B%16-Z%B4T%06-%B3E%8B%16-Z%B4T%06-%B3E%8B%16-Z%B4h%A9%0C%B3E%8B%16-Z%B4h%A9%0CZf%8B%16-Z%B4h%A9%0CZf%8B%16-Z%B4h%D1R%19f%8B%16-Z%B4h%D1R%19%B4%CC%16-Z%B4h%D1R%19%B4%CC%16-Z%B4h%D1%A2%A52%CC%16-Z%B4h%D1%A2%A52h%99-Z%B4h%D1%A2%A52h%99-Z%B4h%D1%A2EKe%98-Z%B4h%D1%A2EKe%D02%5B%B4h%D1%A2EKe%D02%5B%B4h%D1%A2E%8B%96%CA0%5B%B4h%D1%A2E%8B%96%CA%A0e%B6h%D1%A2E%8B%96%CA%A0e%B6h%D1%A2E%8B%16-%95a%B6h%D1%A2E%8B%16-%95A%CBl%D1%A2E%8B%16-%95A%CBl%D1%A2E%8B%16-Z*%C3l%D1%A2E%8B%16-Z*%83%96%D9%A2E%8B%16-Z*%83%96%D9%A2E%8B%16-Z%B4T%86%D9%A2E%8B%16-Z%B4T%06-%B3E%8B%16-Z%B4%AE%A4%F5%25%C0%00%DE%BF%5C'%0F%DA%B8q%00%00%00%00IEND%AEB%60%82") repeat-y; border-left: 1px solid #BBBBBB; border-right: 1px solid #000000; border-bottom: 1px dashed #BBBBBB; } .overflowRulerX > .firebugRulerV { left: 0; } .overflowRulerY > .firebugRulerH { top: 0; } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ .firebugLayoutBox { margin: 0; padding: 0; border: 0 none; opacity: 1; outline: 0; width: auto; min-width: 0; max-width: none; min-height: 0; max-height: none; -moz-transform: rotate(0deg); -moz-transform-origin: 50% 50%; } .firebugLayoutBox:before, .firebugLayoutBox:after { content: ""; } .firebugLayoutBoxOffset { z-index: 2147483646; position: fixed; opacity: 0.8; } .firebugLayoutBoxMargin { background-color: #EDFF64; } .firebugLayoutBoxBorder { background-color: #666666; } .firebugLayoutBoxPadding { background-color: SlateBlue; } .firebugLayoutBoxContent { background-color: SkyBlue; } .firebugLayoutLine { z-index: 2147483646; background-color: #000000; opacity: 0.4; margin: 0; padding: 0; outline: 0; border: 0 none; min-width: 0; max-width: none; min-height: 0; max-height: none; -moz-transform: rotate(0deg); -moz-transform-origin: 50% 50%; } .firebugLayoutLine:before, .firebugLayoutLine:after { content: ""; } .firebugLayoutLineLeft, .firebugLayoutLineRight { position: fixed; width: 1px; height: 100%; } .firebugLayoutLineTop, .firebugLayoutLineBottom { position: fixed; width: 100%; height: 1px; } .firebugLayoutLineTop { margin-top: -1px; border-top: 1px solid #999999; } .firebugLayoutLineRight { border-right: 1px solid #999999; } .firebugLayoutLineBottom { border-bottom: 1px solid #999999; } .firebugLayoutLineLeft { margin-left: -1px; border-left: 1px solid #999999; } .fbProxyElement { position: absolute; background-color: transparent; z-index: 2147483646; margin: 0; padding: 0; outline: 0; border: 0 none; }
(3) corner.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>css&js Corner</title> <link rel="stylesheet" type="text/css" href="corner.css" /> <style type="text/css"> body { padding: 20px; background-color: #377CB1; font: 100.01% "Trebuchet MS", Verdana, Arial, sans-serif; } h1, p, form { margin: 0 10px; } h1 { font-size: 250%; color: #FFF; } div#nifty { margin: 0 10%; background: #9BD1FA; } div.rounded div { height: 1px; overflow: hidden; } #radiusx, #radiusy { text-align: right; width: 30px; } </style> <script type="text/javascript" src="corner.js"></script> <script type="text/javascript"> window.onload = function () { if (!NiftyCheck()) { return; } Rounded("div#nifty", "#377CB1", "#9BD1FA", 30, 30); } function adjustRadius() { d = getElementsBySelector("div.rounded"); for (var i = 0; i < d.length; ++i) { d[i].parentNode.removeChild(d[i]); } var x = document.getElementById("radiusx").value; var y = document.getElementById("radiusy").value; Rounded("div#nifty", "#377CB1", "#9BD1FA", x, y); return false; } </script> </head> <body> <div id="nifty"> <h1>Nifty Anti-aliased Corners</h1> </div> </body> </html>
转载于:https://www.cnblogs.com/psunny/archive/2011/03/28/1997616.html