| <!doctype html> |
| <title>CSSOM test: no side effects from setting "height"</title> |
| <link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty"> |
| <link rel="help" href="https://bugs.webkit.org/show_bug.cgi?id=107380"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <p> |
| Historically, the Apple Safari web browser has added an "intrinsic margin" to |
| form controls which do not specify a `height`. It removed this margin following |
| modification of the `height`. <a |
| href="https://bugs.webkit.org/show_bug.cgi?id=107380">This non-standard |
| behavior was identified as a source of confusion for web developers.</a> |
| </p> |
| |
| <script> |
| function makeElement(tagName) { |
| var element = document.createElement(tagName); |
| document.body.appendChild(element); |
| return element; |
| } |
| function makeInputElement(type) { |
| var element = makeElement('input'); |
| element.setAttribute('type', type); |
| return element; |
| } |
| function measure(element) { |
| var computed = getComputedStyle(element); |
| return [computed.marginTop, computed.marginBottom]; |
| } |
| |
| test(function() { |
| var element = makeInputElement('text'); |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'text input element'); |
| |
| test(function() { |
| var element = makeInputElement('button'); |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'button input element'); |
| |
| test(function() { |
| var element = makeInputElement('submit'); |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'submit input element'); |
| |
| test(function() { |
| var element = makeInputElement('radio'); |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'radio input element'); |
| |
| test(function() { |
| var element = makeInputElement('checkbox'); |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'checkbox input element'); |
| |
| test(function() { |
| var element = makeElement('textarea'); |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'textarea element'); |
| |
| test(function() { |
| var element = makeElement('select'); |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'select element'); |
| |
| test(function() { |
| var element = makeElement('button') |
| var initial = measure(element); |
| |
| element.style.setProperty('height', '12px'); |
| |
| assert_array_equals(measure(element), initial); |
| }, 'button element'); |
| </script> |