Здравствуй, друг! Пожалуйста, добавь к картинке background-size: cover;
Бобро поржаловать. Здесь можно найти FAQ по CSS вообще и на шики в частности, несколько простых инструкций и готовые шаблоны для ленивых. В комментариях можно задавать вопросы по поводу содержимого в шапке, предлагать свои шаблоны и обсуждать интересные (и не очень) решения.
Прежде, чем задавать вопрос, будь любезен прочитать хотя бы разделы с вводной в CSS и часто задаваемыми вопросами. Мы не отвечаем на то, что уже здесь расписано. Имей совесть.
И да, у нас тут образовательный клуб, так что будь готов к тому, что вместо готовых решений тебя начнут учить и заставлять что-то читать. Если же ну очень лень разбираться, то есть раздел с готовыми примерами и фичами и даже полностью готовыми стилями как для профиля, так и для всего сайта.
Если ты хочешь привести в пример свой код, сделай это так:
Для вашего сведения: все изображения, которые вы отправляете в личных сообщениях в закрытых клубах и т.п., могут быть доступны третьим лицам, поскольку есть люди которые их парсит, а админы даже не знают об этом. Если вы хотите обезопасить себя, я оставлю вам юзерскрипт, с помощью которого можно напрямую загружать изображения без dere\nyaa и никто не сможет спарсить.
В результате у вас появится загрузчик изображений в редакторах (старом и в новом), а также возможность самостоятельно удалять изображения через свой аккаунт.
Обратите внимание, что в шики (dere\nyaa) изображение сохраняется даже после удаления комментария.
Еще вместо того чтобы использовать мой pirateimg.vercel.app/ вы сможете загружать изображения в отличном качестве сразу через шики а также через аккаунт удалять, если захотите.
Пример работы:
// ==UserScript==
// @name imgbb uploader
// @namespace http://shikimori.me/
// @version 1.0
// @description Загрузчик изображений
// @author
// @match *://shikimori.tld/*
// @match *://shikimori.one/*
// @match *://shikimori.me/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function insertBBCodeForEditor(editorContainer, imageUrl) {
var bbcode = '[img]' + imageUrl + '[/img]';
var field = editorContainer.querySelector('textarea[name="comment[body]"]') || editorContainer.querySelector('input[name="comment[body]"]');
if (field) {
if (field.tagName.toLowerCase() === 'textarea') {
var start = field.selectionStart, end = field.selectionEnd;
field.value = field.value.slice(0, start) + bbcode + field.value.slice(end);
field.selectionStart = field.selectionEnd = start + bbcode.length;
field.focus();
} else {
field.value += bbcode;
field.dispatchEvent(new Event('input', { bubbles: true }));
}
return;
}
var proseMirror = editorContainer.querySelector('.ProseMirror');
if (proseMirror) {
proseMirror.focus();
document.execCommand('insertText', false, bbcode);
var hiddenInput = editorContainer.querySelector('input[name="comment[body]"]');
if (hiddenInput) {
hiddenInput.value += bbcode;
hiddenInput.dispatchEvent(new Event('input', { bubbles: true }));
}
}
}
function createUploadButton(editorContainer, parentElement) {
var btn = document.createElement('span');
btn.classList.add('imgbb');
btn.style.cursor = 'pointer';
btn.style.marginLeft = '5px';
btn.textContent = '[img]';
btn.addEventListener('click', function() {
var fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = 'image/*';
fileInput.style.display = 'none';
document.body.appendChild(fileInput);
fileInput.addEventListener('change', function() {
if (fileInput.files && fileInput.files[0]) {
var file = fileInput.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var dataUrl = e.target.result;
var base64Index = dataUrl.indexOf('base64,') + 7;
var base64Data = dataUrl.substring(base64Index);
var formData = new FormData();
formData.append('key', 'СЮДА ВАШ API КЛЮЧ'); //< ----------------|
formData.append('image', base64Data);
formData.append('name', file.name);
fetch('https://api.imgbb.com/1/upload', { method: 'POST', body: formData })
.then(response => response.json())
.then(data => {
if (data.success) {
insertBBCodeForEditor(editorContainer, data.data.url);
} else {
alert('ошибка загрузки: ' + (data.error.message || 'неизвестная ошибка'));
}
})
.catch(error => {
console.error('ошибка запроса:', error);
alert('ошибка загрузки изображения');
})
.finally(() => { fileInput.remove(); });
};
reader.readAsDataURL(file);
}
});
fileInput.click();
});
parentElement.appendChild(btn);
}
function addButtonToEditors() {
var classicEditors = document.querySelectorAll('.b-shiki_editor:not(.b-shiki_editor-v2)');
classicEditors.forEach(editor => {
var controls = editor.querySelector('.editor-controls');
if (controls && !controls.querySelector('.imgbb')) {
createUploadButton(editor, controls);
}
});
var v2Editors = document.querySelectorAll('.vue-node');
v2Editors.forEach(editor => {
var menubar = editor.querySelector('.menubar');
if (menubar && !menubar.querySelector('.imgbb')) {
createUploadButton(editor, menubar);
}
});
}
document.addEventListener('DOMContentLoaded', addButtonToEditors);
setInterval(addButtonToEditors, 1000);
})();
Не забудьте в коде ввести тут апи ключ:
formData.append('key', 'СЮДА ВАШ API КЛЮЧ'); //< ----------------|
@Dedonych, спасибо, а то я редко читаю предыдущие комментарии по теме, если таковы имеются, а теперь ситуация мне ясна@sandlord @DocintarДля этого:
В результате у вас появится загрузчик изображений в редакторах (старом и в новом), а также возможность самостоятельно удалять изображения через свой аккаунт.
Обратите внимание, что в шики (dere\nyaa) изображение сохраняется даже после удаления комментария.
Еще вместо того чтобы использовать мой pirateimg.vercel.app/ вы сможете загружать изображения в отличном качестве сразу через шики а также через аккаунт удалять, если захотите.
Пример работы:
Не забудьте в коде ввести тут апи ключ:
@pirate-, спасибо от души