fix(admin): keep image previews at natural aspect ratio
Media/gallery previews no longer stretch or crop: use object-fit contain, natural sizing for single media, and the uncropped medium size instead of the square thumbnail for gallery and native meta-box previews. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
fa89f43ac9
commit
7d61de70e3
6 files changed
+25
-9
No files matched your search
@@ -124,7 +124,7 @@ async function hydratePreviews() {
|
|||||||
|
|
||||||
const sizes = attachment.get('sizes') || {}
|
const sizes = attachment.get('sizes') || {}
|
||||||
return [attachmentId, {
|
return [attachmentId, {
|
||||||
url: sizes.thumbnail?.url || sizes.medium?.url || attachment.get('url') || '',
|
url: sizes.medium?.url || attachment.get('url') || '',
|
||||||
alt: attachment.get('alt') || attachment.get('title') || '',
|
alt: attachment.get('alt') || attachment.get('title') || '',
|
||||||
}]
|
}]
|
||||||
}))
|
}))
|
||||||
@@ -185,14 +185,19 @@ watch(attachmentIds, hydratePreviews, { immediate: true })
|
|||||||
background: var(--aksrt-color-canvas);
|
background: var(--aksrt-color-canvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
.aksrt-gallery-field__image,
|
.aksrt-gallery-field__image {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
aspect-ratio: 4 / 3;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
.aksrt-gallery-field__placeholder {
|
.aksrt-gallery-field__placeholder {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
aspect-ratio: 4 / 3;
|
aspect-ratio: 4 / 3;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
object-fit: cover;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.aksrt-gallery-field__placeholder {
|
.aksrt-gallery-field__placeholder {
|
||||||
|
|||||||
@@ -97,20 +97,29 @@ function clearMedia() {
|
|||||||
<style scoped>
|
<style scoped>
|
||||||
.aksrt-media-field__preview {
|
.aksrt-media-field__preview {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 80px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 1px solid var(--aksrt-color-border);
|
border: 1px solid var(--aksrt-color-border);
|
||||||
|
background: var(--aksrt-color-canvas);
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aksrt-media-field__image {
|
.aksrt-media-field__image {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
max-width: 100%;
|
||||||
max-height: 200px;
|
max-height: 200px;
|
||||||
object-fit: cover;
|
object-fit: contain;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aksrt-media-field__file {
|
.aksrt-media-field__file {
|
||||||
|
flex: 1;
|
||||||
|
align-self: stretch;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
|||||||
@@ -112,7 +112,8 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
aspect-ratio: 1;
|
aspect-ratio: 1;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
object-fit: cover;
|
object-fit: contain;
|
||||||
|
background: #f6f7f7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aksrt-pay-meta__group {
|
.aksrt-pay-meta__group {
|
||||||
|
|||||||
@@ -88,7 +88,8 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
aspect-ratio: 1;
|
aspect-ratio: 1;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
object-fit: cover;
|
object-fit: contain;
|
||||||
|
background: #f6f7f7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aksrt-post-extension__radios {
|
.aksrt-post-extension__radios {
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
wp.media.attachment(id).fetch().then(function () {
|
wp.media.attachment(id).fetch().then(function () {
|
||||||
var data = wp.media.attachment(id).toJSON();
|
var data = wp.media.attachment(id).toJSON();
|
||||||
var image = document.createElement('img');
|
var image = document.createElement('img');
|
||||||
image.src = (data.sizes && data.sizes.thumbnail ? data.sizes.thumbnail.url : data.url) || '';
|
image.src = (data.sizes && data.sizes.medium ? data.sizes.medium.url : data.url) || '';
|
||||||
image.alt = data.alt || '';
|
image.alt = data.alt || '';
|
||||||
preview.appendChild(image);
|
preview.appendChild(image);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
wp.media.attachment(id).fetch().then(function () {
|
wp.media.attachment(id).fetch().then(function () {
|
||||||
var data = wp.media.attachment(id).toJSON();
|
var data = wp.media.attachment(id).toJSON();
|
||||||
var img = document.createElement('img');
|
var img = document.createElement('img');
|
||||||
img.src = (data.sizes && data.sizes.thumbnail ? data.sizes.thumbnail.url : data.url) || '';
|
img.src = (data.sizes && data.sizes.medium ? data.sizes.medium.url : data.url) || '';
|
||||||
img.alt = data.alt || '';
|
img.alt = data.alt || '';
|
||||||
preview.appendChild(img);
|
preview.appendChild(img);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in new issue
Block a user