نظرًا لأنه لم يعد بإمكاننا استخدام ::selection
لم يعد هذا ممكنًا كما هو الحال مع الإصدار الحالي من VS Code.
هناك نوعان من التحديات عند التعامل مع هذه المشكلة:
فكرة واحدة:
.xterm-rows
xterm-invert-selection
بفئة z-index: 1
ويتم إضافة المحتوى الفعلي للصف إلى التحديد. يمكن بعد ذلك إضافة aria-hidden
كمقياس جيد لضمان عدم قراءته مرتين.لست متأكدًا مما إذا كان هذا هو الحل الصحيح ، فأنا لا أحب حقًا تكرار النص في الحل أعلاه ولكنه على الأقل في صفين فقط.
Tyriar إعطاء هذه بعض الأفكار ، أخشى أن فكرتك أعلاه لن تنجح بمجرد شحن دعم اللون الحقيقي. أخشى أنه يتعين علينا تقسيم الخلفية / التحديد / المقدمة إلى طبقات منفصلة ، ثم التعامل مع عمودي المقدمة والخلفية ضمن التحديد. سأقوم بتقسيمها إلى طبقات بمجرد دمج الألوان الحقيقية.
هذا شيء لطيف أكثر ، لا أعتقد أننا نرغب في التنازل عن الأداء / الهندسة أو أي شيء لجعل هذا ممكنًا. https://github.com/sourcelair/xterm.js/issues/720 هو أكثر أهمية من المنظمة البحرية الدولية.
ليس لدي وقت للعلاقات العامة في الوقت الحالي ، لكنني اكتشفت أننا قد نستخدم خاصية css mix-blend-mode
لإنجاز ذلك مع العارض بجهد ضئيل للغاية:
.xterm-selection-layer {
mix-blend-mode: exclusion;
}
بالإضافة إلى ذلك ، حتى مع لون التحديد غير المعتم ، فإن هذا سيجعل المقدمة والتحديد والخلفية مرئية:
.xterm-selection-layer {
mix-blend-mode: multiply;
}
لسوء الحظ ، لا يبدو أنه مدعوم من Edge atm.
الختام لأن هذا أكثر تعقيدًا مما يبدو في البداية أنه صحيح ولم يصوت أحد لصالحه. بالإضافة إلى أنه سيكون خيارًا آخر.
التعليق الأكثر فائدة
ليس لدي وقت للعلاقات العامة في الوقت الحالي ، لكنني اكتشفت أننا قد نستخدم خاصية css
mix-blend-mode
لإنجاز ذلك مع العارض بجهد ضئيل للغاية:بالإضافة إلى ذلك ، حتى مع لون التحديد غير المعتم ، فإن هذا سيجعل المقدمة والتحديد والخلفية مرئية:
لسوء الحظ ، لا يبدو أنه مدعوم من Edge atm.