зеркало из https://github.com/mozilla/gecko-dev.git
736 строки
15 KiB
CSS
736 строки
15 KiB
CSS
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
:root {
|
|
--flex-basis-outline-border-color: var(--blue-40);
|
|
--flex-basis-outline-background-color: rgba(69, 161, 255, 0.25);
|
|
--flex-growing-delta-outline-background-color: rgba(221, 0, 169, 0.13);
|
|
--flex-shrinking-delta-outline-background-color: #E9E3FF;
|
|
--flex-min-max-properties-color: var(--purple-60);
|
|
}
|
|
|
|
:root.theme-dark {
|
|
--flex-basis-outline-border-color: rgba(10, 132, 255, 0.85);
|
|
--flex-basis-outline-background-color: rgba(10, 132, 255, 0.3);
|
|
--flex-growing-delta-outline-background-color: rgba(255, 26, 217, 0.25);
|
|
--flex-shrinking-delta-outline-background-color: #322952;
|
|
--flex-min-max-properties-color: var(--theme-highlight-purple);
|
|
}
|
|
|
|
.layout-container {
|
|
height: 100%;
|
|
width: 100%;
|
|
overflow-y: auto;
|
|
overflow-x: auto;
|
|
min-width: 200px;
|
|
}
|
|
|
|
.layout-container .accordion ._content {
|
|
padding: 0;
|
|
}
|
|
|
|
#layout-container .accordion ._header {
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/**
|
|
* Common styles for the layout container
|
|
*/
|
|
|
|
.layout-content ul {
|
|
list-style: none;
|
|
}
|
|
|
|
.layout-content li {
|
|
padding: 3px 0;
|
|
user-select: none;
|
|
}
|
|
|
|
.layout-content input {
|
|
margin-inline-end: 7px;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.layout-content label {
|
|
margin-inline-start: -3px;
|
|
}
|
|
|
|
.layout-color-swatch {
|
|
width: 12px;
|
|
height: 12px;
|
|
margin-inline-start: -1px;
|
|
border: 1px solid var(--theme-highlight-gray);
|
|
border-radius: 50%;
|
|
cursor: pointer;
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.layout-color-value {
|
|
display: none;
|
|
}
|
|
|
|
/* Layout Properties: Common styles used for the Box Model and Flexbox Properties */
|
|
|
|
.layout-properties-header {
|
|
font-size: 12px;
|
|
padding: 2px 3px;
|
|
user-select: none;
|
|
}
|
|
|
|
.layout-properties-expander {
|
|
vertical-align: middle;
|
|
display: inline-block;
|
|
margin-inline-start: 2px;
|
|
margin-inline-end: 1px;
|
|
}
|
|
|
|
.layout-properties-wrapper {
|
|
column-width: 250px;
|
|
column-gap: 20px;
|
|
column-rule: 1px solid var(--theme-splitter-color);
|
|
}
|
|
|
|
.layout-properties-wrapper .computed-property-view {
|
|
padding-inline-start: 20px;
|
|
}
|
|
|
|
.layout-properties-wrapper .computed-property-name-container {
|
|
flex: 1;
|
|
}
|
|
|
|
.layout-properties-wrapper .computed-property-value-container {
|
|
flex: 1;
|
|
display: block;
|
|
}
|
|
|
|
/**
|
|
* Flex Container
|
|
*/
|
|
|
|
#layout-flexbox-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
/**
|
|
* Header
|
|
*/
|
|
|
|
.flex-header {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 3px;
|
|
border-block-end: 1px solid var(--theme-splitter-color);
|
|
}
|
|
|
|
.flex-header-button-prev {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.flex-header-button-prev::before {
|
|
background-image: url("chrome://devtools/skin/images/arrowhead-left.svg");
|
|
background-size: 16px;
|
|
}
|
|
|
|
html[dir="rtl"] .flex-header-button-prev::before {
|
|
background-image: url("chrome://devtools/skin/images/arrowhead-right.svg");
|
|
}
|
|
|
|
.flex-header-content {
|
|
display: flex;
|
|
flex: 1;
|
|
padding: 2px 0;
|
|
padding-inline-start: 20px;
|
|
user-select: none;
|
|
}
|
|
|
|
.flex-header-content:not(.flex-item-shown) {
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.flex-header-content:not(.flex-item-shown) .objectBox {
|
|
max-width: calc(100% - 20px);
|
|
margin-inline-end: 5px;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.flex-header-content.flex-item-shown {
|
|
justify-content: center;
|
|
padding: 0;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.flex-header-container-properties {
|
|
display: flex;
|
|
}
|
|
|
|
.flex-header-container-properties .inspector-badge:first-child {
|
|
margin-inline-start: 0;
|
|
}
|
|
|
|
.flex-header-container-label,
|
|
.flex-header-container-properties {
|
|
display: flex;
|
|
padding: 3px 0;
|
|
}
|
|
|
|
/**
|
|
* Flex Item List
|
|
*/
|
|
|
|
.flex-item-list {
|
|
font-size: 12px;
|
|
margin: 0;
|
|
padding-top: 5px;
|
|
padding-bottom: 5px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.flex-item-list .flex-item-list-header {
|
|
color: var(--theme-comment);
|
|
padding-inline-start: 23px;
|
|
margin-bottom: 4px;
|
|
user-select: none;
|
|
}
|
|
|
|
.flex-item-list .devtools-button {
|
|
background-color: transparent;
|
|
cursor: pointer;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
inline-size: 100%;
|
|
text-align: start;
|
|
height: 24px;
|
|
margin: 0;
|
|
padding-inline-start: 28px;
|
|
padding-inline-end: 16px;
|
|
position: relative;
|
|
}
|
|
|
|
.flex-item-list .devtools-button::after {
|
|
content: "";
|
|
background-image: url(chrome://devtools/skin/images/arrowhead-right.svg);
|
|
background-size: 16px;
|
|
background-repeat: no-repeat;
|
|
background-position: center -1px;
|
|
fill: var(--theme-comment);
|
|
-moz-context-properties: fill;
|
|
position: absolute;
|
|
right: 7px;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
html[dir="rtl"] .flex-item-list .devtools-button::after {
|
|
background-image: url(chrome://devtools/skin/images/arrowhead-left.svg);
|
|
right: unset;
|
|
left: 7px;
|
|
}
|
|
|
|
.flex-item-list .flex-item-index {
|
|
font-size: 12px;
|
|
font-weight: bold;
|
|
float: inline-start;
|
|
}
|
|
|
|
.flex-item-list .objectBox-node {
|
|
padding-inline-start: 8px;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
/**
|
|
* Flex Item Selector
|
|
*/
|
|
|
|
#flex-item-selector {
|
|
cursor: pointer;
|
|
font-size: 12px;
|
|
}
|
|
|
|
/**
|
|
* Flex Item Sizing Outline
|
|
*/
|
|
|
|
.flex-outline-container {
|
|
display: flex;
|
|
justify-content: center;
|
|
/* The flex outline is always drawn in ltr. Whether the UI of DevTools is in RTL or some
|
|
other writing mode doesn't have an impact on whether the outline should face left,
|
|
right, top or bottom. This should only be dictated by which direction does the flex
|
|
item currently face in the page. */
|
|
direction: ltr;
|
|
}
|
|
|
|
.flex-outline {
|
|
display: grid;
|
|
margin: 2em 0;
|
|
grid-auto-rows: 35px;
|
|
flex-basis: 80%;
|
|
max-width: 450px;
|
|
}
|
|
|
|
.flex-outline > * {
|
|
/* To make sure very small distances on the outline still have enough room to be
|
|
represented and to avoid overlapping labels, we make sure each grid item is at least
|
|
10px wide. This might sometimes render the outline in a different way than the item
|
|
but the information shown will still be correct, and will be more easily visible */
|
|
min-width: 10px;
|
|
}
|
|
|
|
.flex-outline.vertical-tb {
|
|
transform: translate(50%, -2em) rotate(.25turn);
|
|
}
|
|
|
|
.flex-outline.vertical-bt {
|
|
transform:translate(50%, 12em) rotate(0.75turn);
|
|
}
|
|
|
|
.flex-outline.vertical-tb,
|
|
.flex-outline.vertical-bt {
|
|
transform-origin: center left;
|
|
flex-basis: 150px;
|
|
margin-bottom: 120px;
|
|
}
|
|
|
|
.flex-outline-final,
|
|
.flex-outline-basis,
|
|
.flex-outline-delta {
|
|
grid-row: 1;
|
|
}
|
|
|
|
.flex-outline-final {
|
|
border: 2px solid currentColor;
|
|
position: relative;
|
|
grid-column: final-start / final-end;
|
|
}
|
|
|
|
.flex-outline-final.clamped::after {
|
|
content: "";
|
|
background-image: url(chrome://devtools/skin/images/lock.svg);
|
|
background-size: 16px;
|
|
background-repeat: no-repeat;
|
|
background-position: center 1px;
|
|
fill: var(--flex-min-max-properties-color);
|
|
-moz-context-properties: fill;
|
|
width: 20px;
|
|
height: 20px;
|
|
position: absolute;
|
|
right: -10px;
|
|
top: 6px;
|
|
/* Making sure the icon is visible against any background by creating a plain background
|
|
around its shape, using a drop-shadow filter. */
|
|
filter:
|
|
drop-shadow(1px 0px 0px var(--theme-body-background))
|
|
drop-shadow(0px 1px 0px var(--theme-body-background))
|
|
drop-shadow(-1px 0px 0px var(--theme-body-background))
|
|
drop-shadow(0px -1px 0px var(--theme-body-background));
|
|
}
|
|
|
|
.flex-outline.vertical-tb .flex-outline-final.clamped::after {
|
|
transform: rotate(-.25turn);
|
|
}
|
|
|
|
.flex-outline.vertical-bt .flex-outline-final.clamped::after {
|
|
transform: rotate(-.75turn);
|
|
}
|
|
|
|
.flex-outline-basis {
|
|
position: relative;
|
|
border: 3px dotted var(--flex-basis-outline-border-color);
|
|
margin: 2px;
|
|
grid-column: basis-start / basis-end;
|
|
}
|
|
|
|
/* Fills the basis outline with a blue background color that is contained inside the
|
|
dotted border. This gives the impression the dotted border alternates between
|
|
white and blue. */
|
|
.flex-outline-basis::before {
|
|
content: "";
|
|
position: absolute;
|
|
height: 100%;
|
|
width: 100%;
|
|
top: 0;
|
|
left: 0;
|
|
background-color: var(--flex-basis-outline-background-color);
|
|
}
|
|
|
|
.flex-outline-basis.zero-basis {
|
|
border-width: 0 0 0 3px;
|
|
}
|
|
|
|
.flex-outline-delta {
|
|
grid-column: delta-start / delta-end;
|
|
position: relative;
|
|
}
|
|
|
|
.flex-outline.growing .flex-outline-delta {
|
|
background-color: var(--flex-growing-delta-outline-background-color);
|
|
right: 2px;
|
|
}
|
|
|
|
.flex-outline.shrinking .flex-outline-delta {
|
|
background-color: var(--flex-shrinking-delta-outline-background-color);
|
|
margin: 5px 5px 5px 0px;
|
|
}
|
|
|
|
.flex-outline-delta::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 2px;
|
|
right: 2px;
|
|
top: calc(50% - .5px);
|
|
height: 1px;
|
|
background: var(--theme-highlight-red);
|
|
}
|
|
|
|
.flex-outline-delta::after {
|
|
content: "";
|
|
position: absolute;
|
|
width: 5px;
|
|
height: 5px;
|
|
top: 50%;
|
|
border: 1px solid var(--theme-highlight-red);
|
|
}
|
|
|
|
.flex-outline.growing .flex-outline-delta:after {
|
|
right: 2px;
|
|
border-width: 1px 1px 0 0;
|
|
transform-origin: top right;
|
|
transform: rotate(.125turn);
|
|
}
|
|
|
|
.flex-outline.shrinking .flex-outline-delta:after {
|
|
left: 2px;
|
|
border-width: 1px 0 0 1px;
|
|
transform-origin: top left;
|
|
transform: rotate(-.125turn);
|
|
}
|
|
|
|
.flex-outline-point {
|
|
position: relative;
|
|
user-select: none;
|
|
grid-row: 1;
|
|
display: grid;
|
|
}
|
|
|
|
.flex-outline.horizontal-rl .flex-outline-point {
|
|
justify-self: start;
|
|
}
|
|
|
|
.flex-outline.vertical-bt .flex-outline-point {
|
|
transform: rotate(180deg);
|
|
justify-content: end;
|
|
}
|
|
|
|
.flex-outline-point.basis,
|
|
.flex-outline-point.basisfinal,
|
|
.flex-outline.horizontal-rl .flex-outline-point.basis,
|
|
.flex-outline.horizontal-rl .flex-outline-point.basisfinal {
|
|
grid-column-end: basis-end;
|
|
justify-self: end;
|
|
color: var(--theme-highlight-blue);
|
|
}
|
|
|
|
.flex-outline.shrinking .flex-outline-point.basis {
|
|
grid-column-start: basis-end;
|
|
justify-self: start;
|
|
}
|
|
|
|
.flex-outline.horizontal-rl.shrinking .flex-outline-point.basis {
|
|
grid-column-start: basis-start;
|
|
justify-self: unset;
|
|
}
|
|
|
|
.flex-outline-point.final {
|
|
grid-column-start: final-end;
|
|
left: -1px;
|
|
}
|
|
|
|
.flex-outline.shrinking .flex-outline-point.final {
|
|
grid-column-end: final-end;
|
|
grid-column-start: unset;
|
|
justify-self: end;
|
|
}
|
|
|
|
.flex-outline-point.min,
|
|
.flex-outline-point.max {
|
|
color: var(--flex-min-max-properties-color);
|
|
}
|
|
|
|
.flex-outline-point.min {
|
|
grid-column: min;
|
|
place-self: end;
|
|
left: -4px;
|
|
}
|
|
|
|
.flex-outline.shrinking .flex-outline-point.min {
|
|
place-self: end start;
|
|
left: -1px;
|
|
}
|
|
|
|
.flex-outline-point.max {
|
|
grid-column: max;
|
|
align-self: end;
|
|
left: -1px;
|
|
}
|
|
|
|
.flex-outline-point::before {
|
|
content: attr(data-label);
|
|
display: block;
|
|
position: relative;
|
|
padding: 0 3px;
|
|
height: 10px;
|
|
border-color: currentColor;
|
|
border-style: solid;
|
|
border-width: 0;
|
|
line-height: 1;
|
|
}
|
|
|
|
.flex-outline.vertical-tb .flex-outline-point::before,
|
|
.flex-outline.vertical-bt .flex-outline-point::before {
|
|
padding: 0;
|
|
writing-mode: sideways-lr;
|
|
}
|
|
|
|
.flex-outline-point.basis::before,
|
|
.flex-outline-point.final::before,
|
|
.flex-outline-point.basisfinal::before {
|
|
top: -12px;
|
|
}
|
|
|
|
.flex-outline-point.min::before,
|
|
.flex-outline-point.max::before {
|
|
bottom: -12px;
|
|
}
|
|
|
|
.flex-outline.horizontal-rl .flex-outline-point.min::before,
|
|
.flex-outline.horizontal-rl .flex-outline-point.max::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.min::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.max::before {
|
|
bottom: -37px;
|
|
}
|
|
|
|
.flex-outline.vertical-tb .flex-outline-point.max::before,
|
|
.flex-outline.vertical-tb .flex-outline-point.min::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.max::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.min::before {
|
|
text-indent: -12px;
|
|
}
|
|
|
|
.flex-outline-point.final::before,
|
|
.flex-outline-point.min::before,
|
|
.flex-outline-point.max::before,
|
|
.flex-outline.shrinking .flex-outline-point.basis::before,
|
|
.flex-outline.horizontal-rl .flex-outline-point.basis::before,
|
|
.flex-outline.horizontal-rl .flex-outline-point.basisfinal::before,
|
|
.flex-outline.horizontal-rl.shrinking .flex-outline-point.final::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.basis::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.basisfinal::before,
|
|
.flex-outline.vertical-bt.shrinking .flex-outline-point.final::before {
|
|
border-left-width: 1px;
|
|
border-right-width: 0;
|
|
}
|
|
|
|
.flex-outline-point.basis::before,
|
|
.flex-outline.shrinking .flex-outline-point.final::before,
|
|
.flex-outline-point.basisfinal::before,
|
|
.flex-outline.horizontal-rl .flex-outline-point.final::before,
|
|
.flex-outline.horizontal-rl .flex-outline-point.min::before,
|
|
.flex-outline.horizontal-rl .flex-outline-point.max::before,
|
|
.flex-outline.vertical-bt.shrinking .flex-outline-point.basis::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.final::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.min::before,
|
|
.flex-outline.vertical-bt .flex-outline-point.max::before {
|
|
border-right-width: 1px;
|
|
border-left-width: 0;
|
|
}
|
|
|
|
.flex-outline.horizontal-rl,
|
|
.flex-outline.horizontal-rl .flex-outline-point,
|
|
.flex-outline.horizontal-rl .flex-outline-final.clamped::after {
|
|
transform: rotate(.5turn);
|
|
}
|
|
|
|
/**
|
|
* Flex Item Sizing Properties
|
|
*/
|
|
|
|
.flex-item-sizing {
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.flex-item-sizing .section {
|
|
--padding: 10px;
|
|
padding: var(--padding);
|
|
border-block-start: 1px solid var(--theme-splitter-color);
|
|
display: grid;
|
|
grid-template-columns: 1fr max-content;
|
|
grid-column-gap: var(--padding);
|
|
}
|
|
|
|
.flex-item-sizing .section:first-child {
|
|
border: 0;
|
|
}
|
|
|
|
.flex-item-sizing .name {
|
|
font-weight: 600;
|
|
grid-column: 1;
|
|
display: grid;
|
|
grid-template-columns: max-content max-content;
|
|
gap: .5em;
|
|
}
|
|
|
|
.flex-item-sizing .flexibility .name {
|
|
color: var(--theme-highlight-red);
|
|
}
|
|
|
|
.flex-item-sizing .base .name {
|
|
color: var(--theme-highlight-blue);
|
|
}
|
|
|
|
.flex-item-sizing .min .name,
|
|
.flex-item-sizing .max .name {
|
|
color: var(--flex-min-max-properties-color);
|
|
}
|
|
|
|
.flex-item-sizing .value {
|
|
text-align: end;
|
|
font-weight: 600;
|
|
direction: ltr;
|
|
}
|
|
|
|
.flex-item-sizing .value .unit {
|
|
color: var(--theme-comment);
|
|
font-weight: normal;
|
|
}
|
|
|
|
.flex-item-sizing .css-property-link {
|
|
font-weight: normal;
|
|
margin-inline-start: .5em;
|
|
}
|
|
|
|
.flex-item-sizing .reasons,
|
|
.flex-item-sizing .reasons li {
|
|
grid-column: 1 / 3;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
/**
|
|
* Grid Container
|
|
*/
|
|
|
|
#layout-grid-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 5px;
|
|
}
|
|
|
|
.grid-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex: 1 auto;
|
|
min-width: 140px;
|
|
margin-inline-start: 16px;
|
|
}
|
|
|
|
.grid-container:first-child {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.grid-container > span {
|
|
font-weight: 600;
|
|
margin-bottom: 5px;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.grid-container > ul {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
#grid-list ul {
|
|
padding-inline-start: 20px;
|
|
}
|
|
|
|
/**
|
|
* Grid Content
|
|
*/
|
|
|
|
.grid-content {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
flex: 1;
|
|
padding: 5px 0;
|
|
}
|
|
|
|
/**
|
|
* Grid Outline
|
|
*/
|
|
|
|
.grid-outline-container {
|
|
margin: 5px;
|
|
}
|
|
|
|
.grid-outline-container svg {
|
|
overflow: visible;
|
|
}
|
|
|
|
.grid-outline-border {
|
|
fill: none;
|
|
stroke: currentColor;
|
|
stroke-width: 0.75;
|
|
vector-effect: non-scaling-stroke;
|
|
}
|
|
|
|
.grid-outline-cell {
|
|
pointer-events: all;
|
|
stroke: currentColor;
|
|
stroke-dasharray: 0.5, 2;
|
|
vector-effect: non-scaling-stroke;
|
|
}
|
|
|
|
.grid-outline-cell:hover {
|
|
opacity: 0.45;
|
|
fill: currentColor;
|
|
}
|
|
|
|
.grid-outline-line {
|
|
opacity: 0;
|
|
stroke-width: 10;
|
|
}
|
|
|
|
.grid-outline-text {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: var(--theme-graphs-full-red);
|
|
}
|
|
|
|
.grid-outline-text-icon {
|
|
background: url("chrome://devtools/skin/images/sad-face.svg");
|
|
margin-inline-end: 5px;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
/**
|
|
* Settings Item
|
|
*/
|
|
|
|
.grid-settings-item label {
|
|
line-height: 16px;
|
|
}
|