| <!DOCTYPE html> | |
| <style> | |
| #alignSelfBaseline { | |
| align-self: baseline; | |
| } | |
| #alignSelfFirstBaseline { | |
| align-self: first baseline; | |
| } | |
| #alignSelfLastBaseline { | |
| align-self: last baseline; | |
| } | |
| #alignSelfStretch { | |
| align-self: stretch; | |
| } | |
| #alignSelfNormal { | |
| align-self: normal; | |
| } | |
| #alignSelfStart { | |
| align-self: start; | |
| } | |
| #alignSelfEnd { | |
| align-self: end; | |
| } | |
| #alignSelfCenter { | |
| align-self: center; | |
| } | |
| #alignSelfSelfStart { | |
| align-self: self-start; | |
| } | |
| #alignSelfSelfEnd { | |
| align-self: self-end; | |
| } | |
| #alignSelfFlexStart { | |
| align-self: flex-start; | |
| } | |
| #alignSelfFlexEnd { | |
| align-self: flex-end; | |
| } | |
| #alignSelfUnsafeEnd { | |
| align-self: unsafe end ; | |
| } | |
| #alignSelfUnsafeCenter { | |
| align-self: unsafe center ; | |
| } | |
| #alignSelfSafeSelfEnd { | |
| align-self: safe self-end; | |
| } | |
| #alignSelfSafeSelfStart { | |
| align-self: safe self-start; | |
| } | |
| #alignSelfUnsafeFlexStart { | |
| align-self: unsafe flex-start; | |
| } | |
| #alignSelfSafeFlexEnd { | |
| align-self: safe flex-end; | |
| } | |
| </style> | |
| <p>Test that setting and getting align-self works as expected</p> | |
| <div id="alignSelfBaseline"></div> | |
| <div id="alignSelfFirstBaseline"></div> | |
| <div id="alignSelfLastBaseline"></div> | |
| <div id="alignSelfStretch"></div> | |
| <div id="alignSelfNormal"></div> | |
| <div id="alignSelfStart"></div> | |
| <div id="alignSelfEnd"></div> | |
| <div id="alignSelfCenter"></div> | |
| <div id="alignSelfSelfStart"></div> | |
| <div id="alignSelfSelfEnd"></div> | |
| <div id="alignSelfFlexStart"></div> | |
| <div id="alignSelfFlexEnd"></div> | |
| <div id="alignSelfUnsafeEnd"></div> | |
| <div id="alignSelfUnsafeCenter"></div> | |
| <div id="alignSelfSafeSelfEnd"></div> | |
| <div id="alignSelfSafeSelfStart"></div> | |
| <div id="alignSelfUnsafeFlexStart"></div> | |
| <div id="alignSelfSafeFlexEnd"></div> | |
| <script src="../resources/testharness.js"></script> | |
| <script src="../resources/testharnessreport.js"></script> | |
| <script src="resources/alignment-parsing-utils-th.js"></script> | |
| <script> | |
| test(function() { | |
| var alignSelfBaseline = document.getElementById("alignSelfBaseline"); | |
| checkValues(alignSelfBaseline, "alignSelf", "align-self", "", "baseline"); | |
| var alignSelfFirstBaseline = document.getElementById("alignSelfFirstBaseline"); | |
| checkValues(alignSelfFirstBaseline, "alignSelf", "align-self", "", "baseline"); | |
| var alignSelfLastBaseline = document.getElementById("alignSelfLastBaseline"); | |
| checkValues(alignSelfLastBaseline, "alignSelf", "align-self", "", "last baseline"); | |
| var alignSelfStretch = document.getElementById("alignSelfStretch"); | |
| checkValues(alignSelfStretch, "alignSelf", "align-self", "", "stretch"); | |
| var alignSelfNormal = document.getElementById("alignSelfNormal"); | |
| checkValues(alignSelfNormal, "alignSelf", "align-self", "", "normal"); | |
| var alignSelfStart = document.getElementById("alignSelfStart"); | |
| checkValues(alignSelfStart, "alignSelf", "align-self", "", "start"); | |
| var alignSelfEnd = document.getElementById("alignSelfEnd"); | |
| checkValues(alignSelfEnd, "alignSelf", "align-self", "", "end"); | |
| var alignSelfCenter = document.getElementById("alignSelfCenter"); | |
| checkValues(alignSelfCenter, "alignSelf", "align-self", "", "center"); | |
| var alignSelfSelfEnd = document.getElementById("alignSelfSelfEnd"); | |
| checkValues(alignSelfSelfEnd, "alignSelf", "align-self", "", "self-end"); | |
| var alignSelfSelfStart = document.getElementById("alignSelfSelfStart"); | |
| checkValues(alignSelfSelfStart, "alignSelf", "align-self", "", "self-start"); | |
| var alignSelfFlexStart = document.getElementById("alignSelfFlexStart"); | |
| checkValues(alignSelfFlexStart, "alignSelf", "align-self", "", "flex-start"); | |
| var alignSelfFlexEnd = document.getElementById("alignSelfFlexEnd"); | |
| checkValues(alignSelfFlexEnd, "alignSelf", "align-self", "", "flex-end"); | |
| var alignSelfUnsafeEnd = document.getElementById("alignSelfUnsafeEnd"); | |
| checkValues(alignSelfUnsafeEnd, "alignSelf", "align-self", "", "unsafe end"); | |
| var alignSelfUnsafeCenter = document.getElementById("alignSelfUnsafeCenter"); | |
| checkValues(alignSelfUnsafeCenter, "alignSelf", "align-self", "", "unsafe center"); | |
| var alignSelfSafeSelfEnd = document.getElementById("alignSelfSafeSelfEnd"); | |
| checkValues(alignSelfSafeSelfEnd, "alignSelf", "align-self", "", "safe self-end"); | |
| var alignSelfSafeSelfStart = document.getElementById("alignSelfSafeSelfStart"); | |
| checkValues(alignSelfSafeSelfStart, "alignSelf", "align-self", "", "safe self-start"); | |
| var alignSelfUnsafeFlexStart = document.getElementById("alignSelfUnsafeFlexStart"); | |
| checkValues(alignSelfUnsafeFlexStart, "alignSelf", "align-self", "", "unsafe flex-start"); | |
| var alignSelfSafeFlexEnd = document.getElementById("alignSelfSafeFlexEnd"); | |
| checkValues(alignSelfSafeFlexEnd, "alignSelf", "align-self", "", "safe flex-end"); | |
| }, "Test getting align-self set through CSS."); | |
| test(function() { | |
| element = document.createElement("div"); | |
| document.body.appendChild(element); | |
| checkValues(element, "alignSelf", "align-self", "", "auto"); | |
| }, "Test initial value of align-self through JS"); | |
| test(function() { | |
| container = document.createElement("div"); | |
| element = document.createElement("div"); | |
| container.appendChild(element); | |
| document.body.appendChild(container); | |
| element.style.alignSelf = "center"; | |
| checkValues(element, "alignSelf", "align-self", "center", "center"); | |
| element.style.alignSelf = "unsafe start"; | |
| checkValues(element, "alignSelf", "align-self", "unsafe start", "unsafe start"); | |
| element.style.alignSelf = "safe flex-end"; | |
| checkValues(element, "alignSelf", "align-self", "safe flex-end", "safe flex-end"); | |
| element.style.alignSelf = "center"; | |
| checkValues(element, "alignSelf", "align-self", "center", "center"); | |
| element.style.alignSelf = "self-start"; | |
| checkValues(element, "alignSelf", "align-self", "self-start", "self-start"); | |
| element.style.alignSelf = "normal"; | |
| checkValues(element, "alignSelf", "align-self", "normal", "normal"); | |
| element.style.alignSelf = "auto"; | |
| checkValues(element, "alignSelf", "align-self", "auto", "auto"); | |
| container.style.display = "flex"; | |
| element.style.alignSelf = "auto"; | |
| checkValues(element, "alignSelf", "align-self", "auto", "auto"); | |
| container.style.display = "grid"; | |
| element.style.alignSelf = "auto"; | |
| checkValues(element, "alignSelf", "align-self", "auto", "auto"); | |
| element.style.alignSelf = "self-end"; | |
| checkValues(element, "alignSelf", "align-self", "self-end", "self-end"); | |
| }, "Test getting and setting align-self through JS"); | |
| test(function() { | |
| document.documentElement.style.alignSelf = "auto"; | |
| checkValues(document.documentElement, "alignSelf", "align-self", "auto", "auto"); | |
| }, "Test 'auto' value resolution for the root node"); | |
| test(function() { | |
| container = document.createElement("div"); | |
| element = document.createElement("div"); | |
| container.appendChild(element); | |
| document.body.appendChild(container); | |
| checkBadValues(element, "alignSelf", "align-self", "left"); | |
| checkBadValues(element, "alignSelf", "align-self", "right"); | |
| checkBadValues(element, "alignSelf", "align-self", "safe auto"); | |
| checkBadValues(element, "alignSelf", "align-self", "auto left"); | |
| checkBadValues(element, "alignSelf", "align-self", "safe right"); | |
| checkBadValues(element, "alignSelf", "align-self", "normal unsafe"); | |
| checkBadValues(element, "alignSelf", "align-self", "normal stretch"); | |
| checkBadValues(element, "alignSelf", "align-self", "baseline normal"); | |
| checkBadValues(element, "alignSelf", "align-self", "baseline safe"); | |
| checkBadValues(element, "alignSelf", "align-self", "baseline center"); | |
| checkBadValues(element, "alignSelf", "align-self", "first baseline center"); | |
| checkBadValues(element, "alignSelf", "align-self", "last baseline center"); | |
| checkBadValues(element, "alignSelf", "align-self", "baseline last"); | |
| checkBadValues(element, "alignSelf", "align-self", "baseline first"); | |
| checkBadValues(element, "alignSelf", "align-self", "stretch unsafe"); | |
| checkBadValues(element, "alignSelf", "align-self", "stretch right"); | |
| checkBadValues(element, "alignSelf", "align-self", "unsafe unsafe"); | |
| checkBadValues(element, "alignSelf", "align-self", "unsafe safe"); | |
| checkBadValues(element, "alignSelf", "align-self", "center start"); | |
| checkBadValues(element, "alignSelf", "align-self", "stretch unsafe"); | |
| checkBadValues(element, "alignSelf", "align-self", "safe stretch"); | |
| checkBadValues(element, "alignSelf", "align-self", "baseline safe"); | |
| checkBadValues(element, "alignSelf", "align-self", "unsafe baseline"); | |
| checkBadValues(element, "alignSelf", "align-self", "unsafe safe left"); | |
| checkBadValues(element, "alignSelf", "align-self", "unsafe left safe"); | |
| checkBadValues(element, "alignSelf", "align-self", "left safe unsafe safe"); | |
| checkBadValues(element, "alignSelf", "align-self", "legacy start"); | |
| checkBadValues(element, "alignSelf", "align-self", "legacy end"); | |
| checkBadValues(element, "alignSelf", "align-self", "legacy right unsafe"); | |
| checkBadValues(element, "alignSelf", "align-self", "legacy auto"); | |
| checkBadValues(element, "alignSelf", "align-self", "legacy stretch"); | |
| checkBadValues(element, "alignSelf", "align-self", "legacy"); | |
| checkBadValues(element, "alignSelf", "align-self", "legacy left right"); | |
| checkBadValues(element, "alignSelf", "align-self", "start safe"); | |
| checkBadValues(element, "alignSelf", "align-self", "end unsafe"); | |
| }, "Test bad combinations of align-self"); | |
| test(function() { | |
| container.style.display = ""; | |
| checkInitialValues(element, "alignSelf", "align-self", "center", "auto"); | |
| }, "Test the value 'initial'"); | |
| test(function() { | |
| container.style.display = "grid"; | |
| checkInitialValues(element, "alignSelf", "align-self", "safe start", "auto"); | |
| }, "Test the value 'initial' for grid containers"); | |
| test(function() { | |
| container.style.display = "flex"; | |
| checkInitialValues(element, "alignSelf", "align-self", "unsafe end", "auto"); | |
| }, "Test the value 'initial' for flex containers"); | |
| test(function() { | |
| container.style.display = ""; | |
| element.style.position = "absolute"; | |
| checkInitialValues(element, "alignSelf", "align-self", "start", "auto"); | |
| }, "Test the value 'initial' for positioned elements"); | |
| test(function() { | |
| container.style.display = "grid"; | |
| element.style.position = "absolute"; | |
| checkInitialValues(element, "alignSelf", "align-self", "end", "auto"); | |
| }, "Test the value 'initial' for positioned elements in grid containers"); | |
| test(function() { | |
| container.style.display = "flex"; | |
| element.style.position = "absolute"; | |
| checkInitialValues(element, "alignSelf", "align-self", "end", "auto"); | |
| }, "Test the value 'initial' for positioned elements in flex containers"); | |
| test(function() { | |
| checkInheritValues("alignSelf", "align-self", "end"); | |
| checkInheritValues("alignSelf", "align-self", "safe start"); | |
| checkInheritValues("alignSelf", "align-self", "unsafe center"); | |
| }, "Test the value 'inherit'"); | |
| </script> |