moziar_obsidian-external-li.../styles.css

663 lines
14 KiB
CSS
Raw Normal View History

2025-02-08 12:17:38 +00:00
/***
通用样式正文链接图标
2025-02-08 12:17:38 +00:00
***/
2025-02-06 08:32:50 +00:00
:root {
--external-link-icon-size: 0.8em;
--external-link-icon-margin: 3px;
}
/*
所有真正应用了图标的链接都会被扫描器加上
.external-links-icon-enabled
并在元素行内样式上注入
--external-link-icon-image: url("data:image/svg+xml;utf8,...");
静态 CSS 只负责
- 去掉主题自带的默认箭头样式
- ::after 根据变量显示 SVG 图标
*/
.external-link.external-links-icon-enabled.external-links-icon-enabled,
.internal-link.external-links-icon-enabled.external-links-icon-enabled {
background: none;
background-image: none;
padding-right: 0;
}
.external-link.external-links-icon-enabled::after,
.internal-link.external-links-icon-enabled::after {
content: " ";
display: inline-block;
width: var(--external-link-icon-size);
height: var(--external-link-icon-size);
margin-left: var(--external-link-icon-margin);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
vertical-align: middle;
background-image: var(--external-link-icon-image, none);
}
2025-03-09 07:05:06 +00:00
2026-06-04 06:12:51 +00:00
/* Icon position: before link */
.external-links-icon-position-before .external-link.external-links-icon-enabled::before,
.external-links-icon-position-before .internal-link.external-links-icon-enabled::before {
content: " ";
display: inline-block;
width: var(--external-link-icon-size);
height: var(--external-link-icon-size);
margin-right: var(--external-link-icon-margin);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
vertical-align: middle;
background-image: var(--external-link-icon-image, none);
}
.external-links-icon-position-before .external-link.external-links-icon-enabled::after,
.external-links-icon-position-before .internal-link.external-links-icon-enabled::after {
display: none;
}
/***
Live Preview 图标样式
***/
.cm-line .external-links-icon-inline {
pointer-events: none;
user-select: none;
display: inline-block;
width: var(--external-link-icon-size, 0.8em);
height: var(--external-link-icon-size, 0.8em);
margin-left: var(--external-link-icon-margin, 3px);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
vertical-align: middle;
background-image: var(--external-link-icon-image, none);
}
2026-06-04 06:12:51 +00:00
.cm-line .external-links-icon-inline.external-links-icon-position-before {
margin-left: 0;
margin-right: var(--external-link-icon-margin, 3px);
}
.cm-line.cm-line .external-links-icon-enabled.external-links-icon-enabled {
background: none;
background-image: none;
padding-right: 0;
}
.cm-formatting.cm-formatting-link-string.cm-string.cm-url.external-link {
display: none;
}
2025-10-01 12:38:52 +00:00
/***
模态窗口样式
***/
.external-links-icon-modal-input {
width: 100%;
padding: 8px 12px;
border: 1px solid var(--interactive-accent);
border-radius: 4px;
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
font-size: 14px;
transition: border-color 0.2s ease;
box-sizing: border-box;
margin-top: 8px;
margin-bottom: 16px;
}
.external-links-icon-modal-input:focus {
outline: none;
border-color: var(--interactive-accent-hover);
box-shadow: 0 0 0 2px var(--background-modifier-active);
}
.external-links-icon-modal-input::placeholder {
color: var(--text-muted);
}
.external-links-icon-preview-div {
width: 48px;
height: 24px;
overflow: hidden;
flex-shrink: 0;
border-radius: 2px;
display: inline-flex;
align-items: center;
justify-content: center;
vertical-align: middle;
}
.external-links-icon-preview-div img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
box-shadow: none;
margin: 0;
}
.svg-preview-container .external-links-icon-preview-div {
width: 16px;
height: 16px;
flex-shrink: 0;
}
.svg-preview-container .external-links-icon-preview-div img[data-icon-variant="dark"] {
display: none;
}
body.theme-dark .svg-preview-container .external-links-icon-preview-div img[data-icon-variant="light"] {
display: none;
}
body.theme-dark .svg-preview-container .external-links-icon-preview-div img[data-icon-variant="dark"] {
display: block;
}
.website-item .item-icon img[data-icon-variant="dark"],
.scheme-item .item-icon img[data-icon-variant="dark"] {
display: none;
}
body.theme-dark .website-item .item-icon img[data-icon-variant="light"],
body.theme-dark .scheme-item .item-icon img[data-icon-variant="light"] {
display: none;
}
body.theme-dark .website-item .item-icon img[data-icon-variant="dark"],
body.theme-dark .scheme-item .item-icon img[data-icon-variant="dark"] {
display: inline-block;
}
.external-links-icon-preview-div.small {
width: 20px;
height: 20px;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-section-body {
display: flex;
gap: 14px;
align-items: center;
margin-top: 8px;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge {
width: 72px;
height: 72px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
position: relative;
overflow: hidden;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-light {
background: #f6f6f6;
}
2026-05-23 07:14:58 +00:00
body:not(.theme-dark) .external-links-icon-badge-light {
background: var(--background-secondary);
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-dark {
background: #262626;
}
2026-05-23 07:14:58 +00:00
body.theme-dark .external-links-icon-badge-dark {
background: var(--background-modifier-hover);
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-icon {
width: 32px;
height: 32px;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-icon img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
box-shadow: none;
margin: 0;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-empty {
opacity: 0.35;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-empty .external-links-icon-badge-icon::after {
content: "—";
font-size: 22px;
line-height: 32px;
text-align: center;
display: block;
width: 32px;
height: 32px;
color: var(--text-muted);
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-dl {
position: absolute;
bottom: 0;
right: 0;
width: 36px;
height: 36px;
cursor: pointer;
opacity: 0;
transition: opacity 0.15s ease;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge:hover .external-links-icon-badge-dl {
opacity: 1;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-dl::before {
content: "";
position: absolute;
bottom: 0;
right: 0;
width: 0;
height: 0;
border-style: solid;
border-width: 0 0 36px 36px;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-light .external-links-icon-badge-dl::before {
border-color: transparent transparent rgba(0,0,0,0.12) transparent;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-dark .external-links-icon-badge-dl::before {
border-color: transparent transparent rgba(255,255,255,0.12) transparent;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-dl-icon {
position: absolute;
bottom: 3px;
right: 3px;
z-index: 1;
pointer-events: none;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-dl-icon svg {
width: 14px;
height: 14px;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-light .external-links-icon-badge-dl-icon svg {
color: rgba(0,0,0,0.5);
}
2026-05-23 07:14:58 +00:00
.external-links-icon-badge-dark .external-links-icon-badge-dl-icon svg {
color: rgba(255,255,255,0.5);
}
2026-05-23 07:14:58 +00:00
.external-links-icon-controls-col {
flex: 1;
display: flex;
2026-05-23 07:14:58 +00:00
flex-direction: column;
gap: 6px;
justify-content: center;
min-width: 0;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-control-row {
display: flex;
align-items: center;
gap: 8px;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-btn {
background: var(--interactive-accent);
2026-05-23 05:44:06 +00:00
color: var(--text-on-accent);
border: none;
2026-05-23 07:14:58 +00:00
padding: 4px 10px;
2026-05-23 05:44:06 +00:00
border-radius: 4px;
cursor: pointer;
font-size: 12px;
display: inline-flex;
align-items: center;
gap: 4px;
2026-05-23 07:14:58 +00:00
flex-shrink: 0;
white-space: nowrap;
2026-05-23 05:44:06 +00:00
}
2026-05-23 07:14:58 +00:00
.external-links-icon-btn:hover {
background: var(--interactive-accent-hover);
2026-05-23 05:44:06 +00:00
}
2026-05-23 07:14:58 +00:00
.external-links-icon-btn svg {
width: 13px;
height: 13px;
2026-05-23 05:44:06 +00:00
}
2026-05-23 07:14:58 +00:00
.external-links-icon-btn-copy {
margin-left: auto;
2026-05-23 05:44:06 +00:00
}
2026-05-23 07:14:58 +00:00
.external-links-icon-btn-danger {
background: transparent;
color: var(--text-muted);
border: 1px solid var(--interactive-muted);
margin-left: auto;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-btn-danger:hover {
background: var(--text-error);
color: var(--text-on-accent);
border-color: var(--text-error);
}
2026-05-23 07:14:58 +00:00
.external-links-icon-btn-danger.is-active {
background: var(--text-error);
color: var(--text-on-accent);
border-color: var(--text-error);
}
2026-05-23 07:14:58 +00:00
.external-links-icon-hidden-input { display: none; }
.external-links-icon-desc { margin-bottom: 10px; }
.external-links-icon-upload-columns {
display: flex;
gap: 16px;
}
.external-links-icon-upload-columns > .external-links-icon-upload-section {
flex: 1;
min-width: 0;
}
2026-05-23 07:14:58 +00:00
.external-links-icon-upload-section {
margin-bottom: 16px;
}
.external-links-icon-upload-label {
font-weight: 600;
margin-bottom: 8px;
color: var(--text-normal);
}
.external-links-icon-upload-hint {
color: var(--text-muted);
font-size: 12px;
margin-top: 4px;
font-style: italic;
}
.external-links-icon-remove-indicator {
color: var(--text-error);
font-size: 12px;
}
2025-10-01 12:38:52 +00:00
.external-links-icon-modal-actions {
display: flex;
justify-content: flex-end;
gap: 12px;
padding: 16px 20px 20px;
border-top: 1px solid var(--divider-color);
}
.external-links-icon-modal-actions button {
padding: 8px 16px;
border-radius: 4px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
2025-10-01 12:38:52 +00:00
border: 1px solid transparent;
}
.external-links-icon-cancel-btn {
background-color: var(--background-secondary);
color: var(--text-normal);
border-color: var(--divider-color);
}
.external-links-icon-cancel-btn:hover {
background-color: var(--background-modifier-hover);
}
.external-links-icon-add-btn {
background-color: var(--interactive-accent);
color: var(--text-on-accent);
}
.external-links-icon-add-btn:hover {
background-color: var(--interactive-accent-hover);
}
.external-links-icon-modal-actions button:active {
transform: translateY(1px);
}
/***
设置页面按钮样式
***/
.add-buttons {
display: flex;
gap: 8px;
margin: 12px 0;
}
.add-buttons button {
background: var(--interactive-accent);
color: var(--text-on-accent);
border: none;
padding: 6px 8px;
2025-10-01 12:38:52 +00:00
border-radius: 4px;
cursor: pointer;
font-size: 14px;
font-weight: 500;
transition: background-color 0.2s ease;
}
.add-buttons button:hover {
background: var(--interactive-accent-hover);
}
2025-09-24 18:33:42 +00:00
.svg-preview-container {
display: flex;
align-items: center;
gap: 8px;
}
.svg-preview-container svg {
max-width: 100%;
max-height: 100%;
}
/* Controls area: make buttons fixed width so right-side length stays consistent */
.icon-setting-item .setting-item-control .mod-cta,
.icon-setting-item .setting-item-control button {
min-width: 36px;
}
.icon-setting-item .setting-item-control button[disabled],
.icon-setting-item .setting-item-control .mod-cta[disabled] {
opacity: 0.45;
cursor: default;
}
/* details styling for built-in lists */
2026-05-29 15:40:53 +00:00
.builtin-list-row {
flex-wrap: wrap;
}
.builtin-list-row > .setting-item-info {
display: none;
}
.builtin-list-row > .setting-item-control {
display: none;
}
2025-09-24 18:33:42 +00:00
details.builtin-list {
2026-05-29 15:40:53 +00:00
flex-basis: 100%;
2025-09-24 18:33:42 +00:00
}
details.builtin-list summary {
cursor: pointer;
2026-05-29 15:40:53 +00:00
color: var(--text-muted);
font-size: 0.9em;
2025-09-24 18:33:42 +00:00
}
/* Built-in icons container */
.builtin-list > div {
display: flex;
gap: 8px;
padding: 6px 0;
}
.builtin-row {
display: flex;
flex-wrap: wrap;
gap: 8px;
padding: 6px 0;
}
2025-09-24 18:33:42 +00:00
.website-item, .scheme-item {
display: flex;
align-items: center;
gap: 8px;
padding: 6px;
border: 1px solid var(--interactive-muted);
border-radius: 6px;
}
.website-item .item-icon,
.scheme-item .item-icon {
width: 20px;
height: 20px;
flex-shrink: 0;
display: inline-block;
}
.website-item .item-icon img,
.scheme-item .item-icon img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
box-shadow: none;
margin: 0;
}
2026-06-12 09:29:37 +00:00
/***
2026-06-12 12:02:36 +00:00
Domain list (multi-target UI in Modal)
2026-06-12 09:29:37 +00:00
***/
2026-06-12 12:02:36 +00:00
.external-links-icon-domain-input-row {
2026-06-12 09:29:37 +00:00
display: flex;
2026-06-12 12:02:36 +00:00
gap: 4px;
2026-06-12 09:29:37 +00:00
align-items: center;
2026-06-12 12:02:36 +00:00
margin-bottom: 8px;
2026-06-12 09:29:37 +00:00
}
2026-06-12 12:02:36 +00:00
.external-links-icon-domain-input-row + .external-links-icon-domain-list {
max-width: calc(100% - 30px);
}
.external-links-icon-domain-input {
2026-06-12 09:29:37 +00:00
flex: 1;
min-width: 0;
2026-06-12 12:02:36 +00:00
padding: 6px 10px;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
background: var(--background-modifier-form-field);
color: var(--text-normal);
font-size: 13px;
2026-06-12 09:29:37 +00:00
}
2026-06-12 12:02:36 +00:00
.external-links-icon-domain-input:focus {
outline: none;
border-color: var(--interactive-accent);
box-shadow: 0 0 0 2px var(--background-modifier-active);
}
.external-links-icon-domain-input::placeholder {
color: var(--text-faint);
2026-06-12 09:29:37 +00:00
}
2026-06-12 12:02:36 +00:00
.external-links-icon-domain-add-btn {
background: none;
border: none;
padding: 6px;
cursor: pointer;
color: var(--text-muted);
2026-06-12 09:29:37 +00:00
display: inline-flex;
align-items: center;
2026-06-12 12:02:36 +00:00
justify-content: center;
2026-06-12 09:29:37 +00:00
border-radius: 4px;
2026-06-12 12:02:36 +00:00
flex-shrink: 0;
}
.external-links-icon-domain-add-btn:hover {
color: var(--interactive-accent);
2026-06-12 09:29:37 +00:00
background: var(--background-modifier-hover);
2026-06-12 12:02:36 +00:00
}
.external-links-icon-domain-add-btn svg {
width: 18px;
height: 18px;
}
.external-links-icon-domain-list {
list-style: none;
padding: 0;
margin: 0 0 12px 0;
border-radius: 6px;
overflow: hidden;
}
.external-links-icon-domain-item {
display: flex;
align-items: center;
padding: 6px 10px;
font-size: 13px;
2026-06-12 09:29:37 +00:00
color: var(--text-normal);
2026-06-12 12:02:36 +00:00
background: var(--setting-items-background);
border-bottom: 1px solid var(--background-modifier-border);
}
.external-links-icon-domain-item:last-child {
border-bottom: none;
}
.external-links-icon-domain-item span {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
2026-06-12 09:29:37 +00:00
}
2026-06-12 12:02:36 +00:00
.external-links-icon-domain-item-remove {
2026-06-12 09:29:37 +00:00
background: none;
border: none;
2026-06-12 12:02:36 +00:00
padding: 2px;
2026-06-12 09:29:37 +00:00
cursor: pointer;
2026-06-12 12:02:36 +00:00
color: var(--text-faint);
2026-06-12 09:29:37 +00:00
display: inline-flex;
align-items: center;
2026-06-12 12:02:36 +00:00
flex-shrink: 0;
opacity: 0;
transition: opacity 0.15s ease, color 0.15s ease;
}
.external-links-icon-domain-item:hover .external-links-icon-domain-item-remove {
opacity: 1;
2026-06-12 09:29:37 +00:00
}
2026-06-12 12:02:36 +00:00
.external-links-icon-domain-item-remove:hover {
2026-06-12 09:29:37 +00:00
color: var(--text-error);
}
2026-06-12 12:02:36 +00:00
.external-links-icon-domain-item-remove svg {
width: 14px;
height: 14px;
2026-06-12 09:29:37 +00:00
}