Tracker made in React for keeping track of HP and MP and so on.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
fabula-ultima-react/src/ui/CharacterStatus.css

365 lines
7.1 KiB

.characterStatus {
height: 7.5em;
width: 27.25em;
position: relative;
box-sizing: content-box;
}
.characterStatus.minion {
margin-left: 6.8125em;
font-size: 0.80em;
}
.characterHeader {
position: absolute;
left: 10.25em;
bottom: 2.75em;
z-index: 4;
}
.characterLevel {
display: inline;
color: white;
-webkit-text-stroke: 0.05em rgba(0, 0, 0, 0.2);
text-shadow: 0 0 0.1em black;
margin-right: 0.2em;
user-select: none;
}
.characterLevelLabel {
font-size: 0.65em;
font-variant: small-caps;
user-select: none;
}
.characterName {
display: inline;
color: white;
font-family: sans-serif;
font-weight: bold;
font-size: 1.5em;
text-align: left;
-webkit-text-stroke: 0.0333em rgba(0, 0, 0, 0.5);
text-shadow: 0.0333em 0.0333em 0.0667em rgba(0, 0, 0, 0.5);
user-select: none;
}
.characterHpBar, .characterMpBar, .characterIpBar {
box-shadow: 0.1em 0.1em 0.1em rgba(0, 0, 0, 0.5);
border: 0.1em solid black;
transform: skewX(-30deg) translateX(0.75em);
border-radius: 0.25em;
position: absolute;
width: calc(100% - 1.5em);
margin: 0.1em 0.1em 0.4em 0.25em;
bottom: 0;
box-sizing: content-box;
}
.characterHpValue, .characterMpValue, .characterIpValue, .characterHealthText {
color: white;
font-family: sans-serif;
font-weight: bold;
font-style: italic;
text-align: right;
position: absolute;
bottom: 0;
pointer-events: none;
user-select: none;
}
.characterHp {
position: absolute;
height: 3em;
left: 7.85em;
right: 0;
bottom: 1.4em;
overflow: visible;
z-index: 1;
box-sizing: content-box;
}
.characterHpBar {
height: 1.25em;
}
.characterHpValue {
font-size: 3em;
right: 0.0833em;
-webkit-text-stroke: 0.01667em black;
text-shadow: 0.0333em 0.0333em rgba(0, 0, 0, 0.5);
transition: color 0.3s ease-in;
}
.characterHealthText {
font-size: 1.5em;
right: 0.1667em;
bottom: 0.5em;
transition: color 0.3s ease-in;
}
.characterMp, .characterIp {
position: absolute;
bottom: 0;
height: 2em;
box-sizing: content-box;
}
.characterMp {
left: 7em;
right: 7.75em;
z-index: 3;
}
.characterIp {
width: 7.5em;
right: 1em;
z-index: 2;
}
.characterMpBar, .characterIpBar {
height: 1em;
}
.characterMpValue, .characterIpValue {
font-size: 2em;
-webkit-text-stroke: 0.025em black;
text-shadow: 0.05em 0.05em rgba(0, 0, 0, 0.5);
right: 0.25em;
}
.characterPortrait {
position: absolute;
top: 0.5em;
bottom: 0.75em;
left: 4.5em;
width: 6.25em;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
background-blend-mode: soft-light;
z-index: 0;
}
.characterZeroGauge {
position: absolute;
top: 0.25em;
bottom: 0.5em;
left: 2.5em;
width: 3.75em;
}
.characterZeroBar, .characterZeroBarBack, .characterZeroBarPulse{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-repeat: no-repeat;
background-position: left bottom;
background-size: auto 6.75em;
z-index: 0;
}
.characterZeroBarBack {
background-image: url("./zero-bar-empty.svg");
}
.characterZeroBar {
background-image: url("./zero-bar.svg");
}
@keyframes zeroBarPulse {
from {
opacity: 75%;
transform: scaleX(100%) scaleY(100%) translateX(1%);
}
50% {
opacity: 60%;
transform: scaleX(120%) scaleY(110%) translateX(-3%);
}
to {
opacity: 0;
transform: scaleX(150%) scaleY(120%) translateX(-6%);
}
}
.characterZeroBarPulse {
background-image: url("./zero-bar-full-pulse.svg");
transform-origin: 10% 50%;
opacity: 0;
pointer-events: none;
transition: opacity 0.5s;
}
.characterZeroBarPulse.active {
animation: 0.75s ease-out infinite zeroBarPulse;
pointer-events: none;
}
.characterKOBar {
position: absolute;
top: 1.592em;
bottom: 2.518em;
left: 3.333em;
width: 4.629em;
background-color: black;
z-index: 0;
transform: rotate(-20deg);
text-align: center;
font-size: 1.35em;
line-height: 1.5;
font-weight: bold;
color: white;
user-select: none;
border-radius: 0.555em 0;
}
.characterTurns {
position: absolute;
top: 0.125em;
left: 0.125em;
width: 1em;
height: 1em;
font-size: 2em;
font-weight: bold;
-webkit-text-stroke: 0.05em black;
text-shadow: 0.05em 0.05em 0.05em black;
line-height: 1;
text-align: center;
box-sizing: border-box;
border: 0.05em solid black;
border-radius: 0.225em 0;
color: white;
transition: background-color 0.3s;
user-select: none;
}
.characterTurnsNone {
display: none;
}
.characterTurnsReady {
background-color: deepskyblue;
}
.characterTurnsDone {
background-color: mediumblue;
}
.characterTurnsDowned {
background-color: #333;
}
.characterTurnsCantAct {
background-color: #666;
}
.characterTurnsActive {
background-color: mediumspringgreen;
}
.characterTurnsHighTurns {
background-color: paleturquoise;
}
.characterSp, .characterBp {
position: absolute;
color: white;
line-height: 1.333;
-webkit-text-stroke: 0.06667em black;
text-shadow: 0.06667em 0.06667em 0.06667em black;
font-size: 1.5em;
letter-spacing: -0.1em;
text-align: center;
font-weight: bold;
user-select: none;
left: 0.16667em;
width: 1.3333em;
height: 1.3333em;
opacity: 50%;
transition: opacity 0.3s ease-out;
}
.characterBp {
top: 3.16667em;
background: url("blood-points.svg")
}
.characterSp {
top: 1.6667em;
}
.characterSpFabula {
background: url("fabula-points.svg");
}
.characterSpUltima {
background: url("ultima-points.svg");
}
.characterSp:hover, .characterBp:hover {
opacity: 100%;
}
.characterStatuses {
position: absolute;
top: 0.25em;
right: 0.25em;
left: 11.25em;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
}
.characterStatusIcon {
position: relative;
flex: 0 0 1.8em;
width: 1.8em;
height: 2.4em;
background-size: contain;
background-repeat: no-repeat;
margin-left: 0.25em;
overflow: visible;
}
.characterStatusIconCountBadge {
display: block;
color: white;
text-shadow: 0.08em 0.08em 0 black;
-webkit-text-stroke: 0.04em black;
font-size: 1.25em;
letter-spacing: -0.15em;
text-align: center;
font-weight: bold;
position: absolute;
top: 0;
right: 0;
user-select: none;
pointer-events: none;
}
.characterStatusName, .characterHelpName {
font-weight: bold;
}
.characterStatusCount, .characterHelpValue {
margin-left: 0.3125em;
font-style: italic;
font-size: 0.8rem;
}
.characterStatusHeader, .characterHelpHeader {
text-align: left;
}
.characterStatusDescription, .characterHelpDescription {
text-align: left;
font-size: 0.8em;
}
.characterStatusCount::before, .characterHelpValue::before {
content: "("
}
.characterStatusCount::after, .characterHelpValue::after {
content: ")"
}