تظليل StackBlur للخلفيات

:warning: هذا ليس مفترضًا أن يُستخدم كسمة بحد ذاته.

هذا مكون سمة مفترض أن يتعامل مع الخلفية فقط. من المفترض دمجه في تصميم سمعتك.


المستودع: GitHub - hnb-ku/StackBlur-backgrounds-discourse-theme-component · GitHub

يستخدم هذا المكون مكتبة StackBlur الخاصة بـ ماريو كليمان (2kb مضغوطة - رخصة MIT) لتوليد خلفيات ضبابية ذات أداء تمرير عالي بناءً على صورة تختارها في عنصر <canvas>.

أمثلة: (هذه مضغوطة لذا تحتوي على تشوهات - الخلفيات ناعمة)

إذا استخدمت هذه الصورة:

ستبدو خلفية Discourse الناتجة كالتالي:

وعلى الهاتف المحمول:

عينة أكثر مع صور أخرى:

جودة الصورة التي تستخدمها لا تهم حقًا لأن الضبابية متسامحة جدًا، لذا أوصي بصور jpg مضغوطة بشدة لا تتجاوز 1080p - كل ما تريده هو الألوان.


التثبيت

قم بتثبيت المستودع كما تفعل مع أي مكون سمة آخر:

بمجرد الانتهاء من ذلك، اتبع الخطوات التالية:

1- أنشئ سمة جديدة
2- سمّها كما تريد
3- أضف هذا في قسم رأس الصفحة المشترك:

<canvas 
id="background_b" 
data-src='BACKGROUND_URL_GOES_HERE'
data-blur="BLUR_AMOUNT" 
></canvas> 

4- غيّر BACKGROUND_URL_GOES_HERE إلى رابط صورتك
(يجب أن يكون مستضافًا على نطاقك أو على نطاق مُعد بشكل صحيح CORS)

5- غيّر BLUR_AMOUNT إلى مقدار الضبابية المطلوب (0 - 180)، فكلما زاد الرقم زاد الضباب.

6- أضف خلفيات StackBlur كمكون سمة تحت سمعتك الجديدة.


:warning: مهم

تستخدم عينات العرض مخطط الألوان “داكن بسيط”.

قد تكون لاحظت الخلفية الداكنة الخفيفة خلف قائمة المواضيع.

هذا ليس جزءًا من مكون السمة

تم تحقيق ذلك باستخدام CSS التالي:

#main-outlet {
    background: rgba(0, 0, 0, .5);
    padding-left: 2em;
    padding-right: 2em;
}

أيضًا، تضيف السمة الافتراضية للهاتف المحمول خلفية بلون صلب لعنصر <body>، لذا ستحتاج إلى إزالتها إذا كنت تريد أن تظهر الخلفية الضبابية على الهواتف المحمولة. يمكنك فعل ذلك كالتالي:

.mobile-view {
	body {
		background: none;
	}
}

27 إعجابًا

I’m using 1920x1080 image & no matter what theme I try using with this component, the image is being stretched. The blur appears to be working fine. Any thoughts on what could cause this?

Wouldn’t it be easier and faster to simply generate the blurred image and use that as the background? Why have the source JPG at all, plus an extra dependency…?

I guess if you are changing the background dynamically, that’s all I can think of?

7 إعجابات

I saw this in my logs today:

StackBlurBackground@https://forum.duelistsunite.org/theme-javascripts/7cca6d0005bbe0e73e1acff07a8802eb7ec3a2e3.js?__ws=forum.duelistsunite.org:29:22

start@https://forum.duelistsunite.org/theme-javascripts/7cca6d0005bbe0e73e1acff07a8802eb7ec3a2e3.js?__ws=forum.duelistsunite.org:24:32

Everything works, so I’m not sure if this a reference error or warning of some kind. I just thought I would report it.

لقد حاولت تطبيق ذلك، لكن مكونات المنتدى تبدو شفافة تمامًا ويصبح من الصعب جدًا قراءة النص.

@Johani

للأسف لا يزال هذا معطّلًا. @Johani، ربما إذا لم نكن ندعم هذا على المدى الطويل، فيجب أن نحذف هذا الموضوع؟ أنا مستعد أيضًا إذا أردت إصلاحه، الأمر يعود لك.

إعجابَين (2)

أستخدمه على موقعي وكل شيء يبدو على ما يرام. لا توجد مشاكل من جهتي. ومع ذلك، قمت بتعديل الـ CSS قليلاً. لقد كنت أستخدمه منذ أن حصلت على Discourse.

إعجاب واحد (1)

يبدو واعدًا، لكنني أحصل على:
Uncaught ReferenceError: assignment to undeclared variable img

          var blur = $(\"#background_b\").data(\"blur\");
          img = new Image();
          c = document.getElementById(\"background_b\");
          ctx = c.getContext(\"2d\");
          w = window.innerWidth;
          h = window.innerHeight;

أعتقد أنك قصدت استخدام الفواصل بدلاً من الفواصل المنقوطة هنا.

تحتوي الإضافة على علامة #broken، ولن تعمل بشكل صحيح. فقط للعلم :slight_smile:

إعجاب واحد (1)

لاحظت ذلك للتو، شكراً لك!

إعجاب واحد (1)