From d7671a0d58824bcc421e89e8b4323f92fe00e6df Mon Sep 17 00:00:00 2001 From: Jesse Hallett Date: Thu, 19 Dec 2013 14:51:58 -0800 Subject: Wikipedia guideline: checks for floating content on both sides of screen --- guidelines/wikipedia/floatSandwiches.js | 29 +++++++++++++++++++++++++++++ guidelines/wikipedia/wikipedia.json | 1 + 2 files changed, 30 insertions(+) create mode 100644 guidelines/wikipedia/floatSandwiches.js diff --git a/guidelines/wikipedia/floatSandwiches.js b/guidelines/wikipedia/floatSandwiches.js new file mode 100644 index 0000000..ecdcdba --- /dev/null +++ b/guidelines/wikipedia/floatSandwiches.js @@ -0,0 +1,29 @@ +exports.name = "Floating content on both sides of screen"; +exports.description = "Be careful not to add images or other floating content on both sides of the screen simultaneously."; + +exports.rule = function(report) { + var $topElems = $5('#mw-content-text > *'); + var left = floating($topElems, 'left').toArray().map($); + var right = floating($topElems, 'right').toArray().map($); + + left.forEach(function($l) { + var ltop = $l.offset().top; + var lbottom = ltop + $l.outerHeight(); + + if (right.some(function($r) { + var rtop = $r.offset().top; + var rbottom = rtop + $r.outerHeight(); + + return (rtop > ltop && rtop < lbottom) || + (rbottom > ltop && rbottom < lbottom); + })) { + report.warning('Left and right floating elements overlap vertically.', $l.get(0)); + } + }); +}; + +function floating($elems, leftOrRight) { + return $elems.filter(function() { + return $(this).css('float') === leftOrRight; + }); +} diff --git a/guidelines/wikipedia/wikipedia.json b/guidelines/wikipedia/wikipedia.json index 67adf30..a2b24bc 100644 --- a/guidelines/wikipedia/wikipedia.json +++ b/guidelines/wikipedia/wikipedia.json @@ -11,5 +11,6 @@ , "imageSize.js" , "horizontalRule.js" , "pseudoHeadings.js" + , "floatSandwiches.js" ] } -- cgit v1.2.3