/* * holygrail.c * (c) 2006 Steve Parker http://steve-parker.org/ * Based upon http://www.alistapart.com/articles/holygrail * (by Matthew Levine) * * The idea of this program is to provide your own values for * the column width and padding in order to create the necessary * CSS for the "Holy Grail" of a fixed left and right column with * a fluid center column, and a full-width header and footer. */ #include #include int main(int argc, char *argv[]) { int LC, RC; int LCpad, CCxpad, CCypad, RCpad; if (argc!=7) { printf("Usage: %s \\\r\n LC RC # Left, Right width \\\r\n LCpad CCxpad CCypad RCpad # Left, Center X, Center Y, Right padding\r\n", basename(argv[0])); printf("No input provided; Using defaults.\r\n\r\n\r\n"); LC=200; RC=150; LCpad=10; CCxpad=20; CCypad=10; RCpad=10; } else { LC=atoi(argv[1]); RC=atoi(argv[2]); LCpad=atoi(argv[3]); CCxpad=atoi(argv[4]); CCypad=atoi(argv[5]); RCpad=atoi(argv[6]); } printf("/*\r\n* Based upon http://www.alistapart.com/articles/holygrail\r\n"); printf("* (c) 2006 Steve Parker, http://steve-parker.org/code/c/holygrail.c\r\n"); printf("* (naturally, no copyright is claimed for the generated CSS)\r\n"); printf("*\r\n* Settings: \r\n* LC=%d RC=%d LCpad=%d CCxpad=%d CCypad=%d RCpad=%d\r\n*/\r\n\r\n", LC, RC, LCpad, CCxpad, CCypad, RCpad); printf("body {\r\n"); printf(" min-width: %dpx;\r\n", 2*(LC + 2*CCxpad) + RC); printf("}\r\n"); printf("#container {\r\n"); printf(" padding-left: %dpx;\r\n", LC); printf(" padding-right: %dpx;\r\n", RC + 2*CCxpad); printf("}\r\n"); printf("#containter .column {\r\n position: relative;\r\n float: left;\r\n}\r\n"); printf("#center {\r\n padding: %dpx %dpx;\r\n", CCypad, CCxpad); printf(" width: 100%;\r\n}\r\n"); printf("#left {\r\n width: %dpx;\r\n", LC-2*LCpad); printf(" padding: 0 %dpx;\r\n", LCpad); printf(" right: %dpx;\r\n", LC + 2*CCxpad); printf(" margin-left: -100%;\r\n}\r\n"); printf("#right {\r\n width: %dpx;\r\n", RC-2*RCpad); printf(" padding: 0 %dpx;\r\n", RCpad); printf(" margin-right: -%dpx;\r\n}\r\n", RC+2*CCxpad); /* He actually uses "margin-right=-100%;" in Eg2 */ printf("#footer {\r\n clear: both;\r\n}\r\n"); printf("/*** IE Fix ***/\r\n"); printf("* html #left {\r\n left: %dpx;\r\n}\r\n", RC); }