| <!doctype html> |
| <title>CSS Selectors Test: Tests the style attribute used in an attribute selector</title> |
| <link rel="help" href="https://drafts.csswg.org/selectors/#attribute-selectors"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <style> |
| #container { font-size: 16px; color: black; } |
| .test[style] { color: green } |
| .test[style=""] { font-size: 100px } |
| .test[style*="text-decoration"] { background-color: lime } |
| .test[style] + #sibling { color: green; } |
| .test[style*="text-decoration"] + #sibling { background-color: lime; } |
| </style> |
| <div id="container"> |
| <div id="t1" class="test" style></div> |
| <div id="t2" class="test" style=""></div> |
| <div id="t3" class="test" style="text-decoration:underline"></div> |
| <div id="t4" class="test"></div> |
| <div id="sibling"></div> |
| </div> |
| <script> |
| const no_match_bgcolor = "rgba(0, 0, 0, 0)"; |
| const no_match_color = "rgb(0, 0, 0)"; |
| const no_match_font_size = "16px"; |
| const match_bgcolor = "rgb(0, 255, 0)"; |
| const match_color = "rgb(0, 128, 0)"; |
| const match_font_size = "100px"; |
| |
| test(() => { |
| assert_equals(getComputedStyle(t1).backgroundColor, no_match_bgcolor); |
| assert_equals(getComputedStyle(t1).color, match_color); |
| assert_equals(getComputedStyle(t1).fontSize, match_font_size); |
| }, "Match style attribute with no value"); |
| |
| test(() => { |
| assert_equals(getComputedStyle(t2).backgroundColor, no_match_bgcolor); |
| assert_equals(getComputedStyle(t2).color, match_color); |
| assert_equals(getComputedStyle(t2).fontSize, match_font_size); |
| }, "Match style attribute with empty value"); |
| |
| test(() => { |
| assert_equals(getComputedStyle(t3).backgroundColor, match_bgcolor); |
| assert_equals(getComputedStyle(t3).color, match_color); |
| assert_equals(getComputedStyle(t3).fontSize, no_match_font_size); |
| }, "Match style attribute with background value"); |
| |
| test(() => { |
| assert_equals(getComputedStyle(t4).backgroundColor, no_match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, no_match_color); |
| assert_equals(getComputedStyle(t4).fontSize, no_match_font_size); |
| assert_equals(getComputedStyle(sibling).color, no_match_color); |
| }, "Initially no style attribute to match"); |
| |
| function reset_style(element) { |
| element.removeAttribute("style"); |
| element.offsetTop; |
| } |
| |
| function set_style(element) { |
| element.setAttribute("style", "text-decoration: underline"); |
| element.offsetTop; |
| } |
| |
| test(() => { |
| reset_style(t4); |
| t4.setAttribute("style", "text-decoration: underline"); |
| assert_equals(getComputedStyle(t4).backgroundColor, match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, match_color); |
| assert_equals(getComputedStyle(t4).fontSize, no_match_font_size); |
| assert_equals(getComputedStyle(sibling).color, match_color); |
| }, "Dynamically change style with Element.setAttribute"); |
| |
| test(() => { |
| reset_style(t4); |
| t4.style = "text-decoration: underline"; |
| assert_equals(getComputedStyle(t4).backgroundColor, match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, match_color); |
| assert_equals(getComputedStyle(t4).fontSize, no_match_font_size); |
| assert_equals(getComputedStyle(sibling).color, match_color); |
| }, "Dynamically change style with Element.style"); |
| |
| test(() => { |
| reset_style(t4); |
| t4.style.textDecoration = "underline"; |
| assert_equals(getComputedStyle(t4).backgroundColor, match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, match_color); |
| assert_equals(getComputedStyle(t4).fontSize, no_match_font_size); |
| assert_equals(getComputedStyle(sibling).color, match_color); |
| }, "Dynamically change style with Element.style.property"); |
| |
| test(() => { |
| set_style(t4); |
| t4.removeAttribute("style"); |
| assert_equals(getComputedStyle(t4).backgroundColor, no_match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, no_match_color); |
| assert_equals(getComputedStyle(t4).fontSize, no_match_font_size); |
| assert_equals(getComputedStyle(sibling).color, no_match_color); |
| assert_equals(getComputedStyle(sibling).backgroundColor, no_match_bgcolor); |
| }, "Dynamically remove style with Element.removeAttribute"); |
| |
| test(() => { |
| set_style(t4); |
| t4.style = ""; |
| assert_equals(getComputedStyle(t4).backgroundColor, no_match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, match_color); |
| assert_equals(getComputedStyle(t4).fontSize, match_font_size); |
| assert_equals(getComputedStyle(sibling).color, match_color); |
| assert_equals(getComputedStyle(sibling).backgroundColor, no_match_bgcolor); |
| }, "Dynamically remove style with Element.style"); |
| |
| test(() => { |
| set_style(t4); |
| t4.style.textDecoration = ""; |
| assert_equals(getComputedStyle(t4).backgroundColor, no_match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, match_color); |
| assert_equals(getComputedStyle(t4).fontSize, match_font_size); |
| assert_equals(getComputedStyle(sibling).color, match_color); |
| assert_equals(getComputedStyle(sibling).backgroundColor, no_match_bgcolor); |
| }, "Dynamically remove style with Element.style.property"); |
| |
| test(() => { |
| set_style(t4); |
| t4.style.removeProperty("text-decoration"); |
| assert_equals(getComputedStyle(t4).backgroundColor, no_match_bgcolor); |
| assert_equals(getComputedStyle(t4).color, match_color); |
| assert_equals(getComputedStyle(t4).fontSize, match_font_size); |
| assert_equals(getComputedStyle(sibling).color, match_color); |
| assert_equals(getComputedStyle(sibling).backgroundColor, no_match_bgcolor); |
| }, "Dynamically remove style with Element.style.removeProperty"); |
| </script> |